- html/css split into tokens.css (custom properties), base.css (reset, typography, focus, skip link), components.css (buttons, inputs, tables, status cards, popups, menu, log lines) and layout.css (shell, sidebar, header, breakpoints); screen.css removed. Selectors and declarations moved as-is; three pairs of conflicting rules resolved in favour of the one that already won the cascade, two empty rules dropped. - Every literal colour outside tokens.css is now a token (category badge borders excepted). color-scheme set so native controls follow. - Light theme under prefers-color-scheme: light, with explicit data-theme="light"/"dark" overrides on :root for a future toggle. Body text 13.6:1, muted text 5.4:1, accent 5.1:1 on the light background. - HTML: lang="en" everywhere, one h1 per page, maintenance page uses <main>, an id typo fixed.
This commit is contained in:
+46
-492
@@ -1,32 +1,14 @@
|
||||
:root {
|
||||
--bg-0: #07111d;
|
||||
--bg-1: #0c1a2b;
|
||||
--bg-2: #12233a;
|
||||
--panel: #102238;
|
||||
--panel-soft: #0f1f33;
|
||||
--line: #274462;
|
||||
--line-soft: #1b334d;
|
||||
--text: #e9f5ff;
|
||||
--text-muted: #b7cee1;
|
||||
--accent: #35d2ff;
|
||||
--accent-strong: #12b9ff;
|
||||
--accent-soft: rgba(53, 210, 255, 0.2);
|
||||
--ok: #2fd18a;
|
||||
--warn: #ffc15a;
|
||||
--error: #ff6f6f;
|
||||
--radius-s: 10px;
|
||||
--radius-m: 14px;
|
||||
--radius-l: 18px;
|
||||
--shadow-1: 0 20px 45px rgba(0, 0, 0, 0.32);
|
||||
--shadow-2: 0 12px 30px rgba(0, 0, 0, 0.28);
|
||||
}
|
||||
/*
|
||||
* base.css - reset, typography, links, focus styles, skip link, generic
|
||||
* form elements and small utility classes. Loaded after tokens.css.
|
||||
*/
|
||||
|
||||
* {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
-ms-appearance: none;
|
||||
box-sizing: border-box;
|
||||
font-family: "Space Grotesk", "Avenir Next", "Trebuchet MS", sans-serif;
|
||||
font-family: var(--font-sans);
|
||||
letter-spacing: 0.02em;
|
||||
}
|
||||
|
||||
@@ -37,17 +19,17 @@
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
border-radius: 999px;
|
||||
background: rgba(7, 17, 29, 0.65);
|
||||
background: var(--scroll-track);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
border-radius: 999px;
|
||||
border: 2px solid rgba(7, 17, 29, 0.6);
|
||||
background: linear-gradient(180deg, #2d597f, #1e4060);
|
||||
border: 2px solid var(--scroll-track);
|
||||
background: linear-gradient(180deg, var(--scroll-thumb-a), var(--scroll-thumb-b));
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: linear-gradient(180deg, #3678ac, #20537c);
|
||||
background: linear-gradient(180deg, var(--scroll-thumb-hover-a), var(--scroll-thumb-hover-b));
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-corner {
|
||||
@@ -61,9 +43,9 @@ body {
|
||||
color: var(--text);
|
||||
font-size: 14px;
|
||||
background:
|
||||
radial-gradient(circle at 15% 12%, rgba(64, 132, 183, 0.22), transparent 32%),
|
||||
radial-gradient(circle at 88% 2%, rgba(18, 185, 255, 0.16), transparent 30%),
|
||||
linear-gradient(180deg, var(--bg-1) 0%, var(--bg-0) 56%, #060d17 100%);
|
||||
radial-gradient(circle at 15% 12%, var(--bg-glow-1), transparent 32%),
|
||||
radial-gradient(circle at 88% 2%, var(--bg-glow-2), transparent 30%),
|
||||
linear-gradient(180deg, var(--bg-1) 0%, var(--bg-0) 56%, var(--bg-deep) 100%);
|
||||
}
|
||||
|
||||
body {
|
||||
@@ -75,7 +57,7 @@ a {
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #8de7ff;
|
||||
color: var(--accent-hover);
|
||||
}
|
||||
|
||||
h1,
|
||||
@@ -122,7 +104,7 @@ pre {
|
||||
white-space: pre-wrap;
|
||||
line-height: 1.55;
|
||||
letter-spacing: 0.015em;
|
||||
font-family: "IBM Plex Mono", "SFMono-Regular", "Consolas", monospace;
|
||||
font-family: var(--font-mono);
|
||||
}
|
||||
|
||||
hr {
|
||||
@@ -153,7 +135,7 @@ button {
|
||||
}
|
||||
|
||||
:focus-visible {
|
||||
outline: 2px solid #91eaff;
|
||||
outline: 2px solid var(--focus-ring-soft);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
@@ -171,7 +153,7 @@ textarea {
|
||||
width: 100%;
|
||||
border-radius: var(--radius-s);
|
||||
border: 1px solid var(--line);
|
||||
background-color: rgba(10, 22, 36, 0.78);
|
||||
background-color: var(--surface-input);
|
||||
color: var(--text);
|
||||
padding: 10px 11px;
|
||||
transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
|
||||
@@ -184,45 +166,15 @@ input[type=number]:focus,
|
||||
select:focus,
|
||||
textarea:focus {
|
||||
border-color: var(--accent);
|
||||
box-shadow: 0 0 0 3px rgba(53, 210, 255, 0.17);
|
||||
background-color: rgba(9, 25, 40, 0.95);
|
||||
box-shadow: 0 0 0 3px var(--accent-ring);
|
||||
background-color: var(--surface-input-focus);
|
||||
}
|
||||
|
||||
input[type=text]::placeholder,
|
||||
input[type=search]::placeholder,
|
||||
input[type=password]::placeholder,
|
||||
textarea::placeholder {
|
||||
color: #7e9ab4;
|
||||
}
|
||||
|
||||
input[type=button],
|
||||
input[type=submit],
|
||||
button {
|
||||
cursor: pointer;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 999px;
|
||||
color: #03101a;
|
||||
padding: 10px 18px;
|
||||
margin: 8px 8px 8px 0;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.03em;
|
||||
background: linear-gradient(135deg, #67e8ff 0%, #12b9ff 100%);
|
||||
box-shadow: 0 10px 22px rgba(18, 185, 255, 0.3);
|
||||
transition: transform 0.15s ease, box-shadow 0.2s ease, filter 0.2s ease;
|
||||
}
|
||||
|
||||
input[type=button]:hover,
|
||||
input[type=submit]:hover,
|
||||
button:hover {
|
||||
transform: translateY(-1px);
|
||||
filter: brightness(1.05);
|
||||
box-shadow: 0 12px 24px rgba(18, 185, 255, 0.36);
|
||||
}
|
||||
|
||||
input[type=button]:active,
|
||||
input[type=submit]:active,
|
||||
button:active {
|
||||
transform: translateY(0);
|
||||
color: var(--text-placeholder);
|
||||
}
|
||||
|
||||
input[type=button]:focus-visible,
|
||||
@@ -236,80 +188,43 @@ input[type=text]:focus-visible,
|
||||
input[type=search]:focus-visible,
|
||||
input[type=password]:focus-visible,
|
||||
input[type=number]:focus-visible {
|
||||
outline: 2px solid #7de5ff;
|
||||
outline: 2px solid var(--focus-ring);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
input[type=button].delete {
|
||||
color: #fff;
|
||||
background: linear-gradient(135deg, #ff7f7f 0%, #e94343 100%);
|
||||
box-shadow: 0 10px 20px rgba(233, 67, 67, 0.35);
|
||||
}
|
||||
|
||||
input[type=button].cancel {
|
||||
color: #ffd8d8;
|
||||
border-color: rgba(255, 111, 111, 0.45);
|
||||
background: rgba(87, 22, 22, 0.45);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
input[type=button].black,
|
||||
input[type=submit].black {
|
||||
color: #d8ecff;
|
||||
border-color: var(--line);
|
||||
background: rgba(14, 32, 50, 0.85);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
input[type=button].center {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
input[type=button].save {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
input[type=checkbox] {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 6px;
|
||||
background-color: rgba(10, 22, 36, 0.86);
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
input[type=checkbox]:checked {
|
||||
border-color: #89ebff;
|
||||
background-color: #39d6ff;
|
||||
}
|
||||
|
||||
input[type=checkbox]:before {
|
||||
content: "";
|
||||
}
|
||||
|
||||
input[type=checkbox]:checked:before {
|
||||
content: "\2713";
|
||||
color: #032033;
|
||||
font-size: 14px;
|
||||
font-weight: 800;
|
||||
.skip-link {
|
||||
position: absolute;
|
||||
top: -1px;
|
||||
left: 3px;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
z-index: 2600;
|
||||
border-radius: 999px;
|
||||
padding: 8px 12px;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
color: var(--text-on-accent);
|
||||
background: var(--accent-gradient);
|
||||
transform: translateY(-180%);
|
||||
transition: transform 0.2s ease;
|
||||
}
|
||||
|
||||
.changed {
|
||||
border-color: #8de7ff !important;
|
||||
box-shadow: 0 0 0 3px rgba(53, 210, 255, 0.2) !important;
|
||||
.skip-link:focus-visible {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
.notAvailable {
|
||||
opacity: 0.58;
|
||||
cursor: not-allowed;
|
||||
border-color: rgba(255, 111, 111, 0.45) !important;
|
||||
.sr-only {
|
||||
border: 0 !important;
|
||||
clip: rect(0 0 0 0) !important;
|
||||
height: 1px !important;
|
||||
margin: -1px !important;
|
||||
overflow: hidden !important;
|
||||
padding: 0 !important;
|
||||
position: absolute !important;
|
||||
white-space: nowrap !important;
|
||||
width: 1px !important;
|
||||
}
|
||||
|
||||
/* Utility classes */
|
||||
|
||||
.pointer {
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -364,37 +279,6 @@ input[type=checkbox]:checked:before {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.skip-link {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
z-index: 2600;
|
||||
border-radius: 999px;
|
||||
padding: 8px 12px;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
color: #03131f;
|
||||
background: linear-gradient(135deg, #7be8ff 0%, #19c1ff 100%);
|
||||
transform: translateY(-180%);
|
||||
transition: transform 0.2s ease;
|
||||
}
|
||||
|
||||
.skip-link:focus-visible {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
.sr-only {
|
||||
border: 0 !important;
|
||||
clip: rect(0 0 0 0) !important;
|
||||
height: 1px !important;
|
||||
margin: -1px !important;
|
||||
overflow: hidden !important;
|
||||
padding: 0 !important;
|
||||
position: absolute !important;
|
||||
white-space: nowrap !important;
|
||||
width: 1px !important;
|
||||
}
|
||||
|
||||
.floatRight {
|
||||
float: right;
|
||||
}
|
||||
@@ -423,9 +307,6 @@ input[type=checkbox]:checked:before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.noBulk {
|
||||
}
|
||||
|
||||
.notVisible {
|
||||
display: none;
|
||||
opacity: 0;
|
||||
@@ -437,259 +318,10 @@ input[type=checkbox]:checked:before {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.menu-active {
|
||||
color: #011019;
|
||||
}
|
||||
|
||||
.menu-notActive {
|
||||
}
|
||||
|
||||
.menu {
|
||||
border: 1px solid var(--accent);
|
||||
}
|
||||
|
||||
.half {
|
||||
width: 45%;
|
||||
}
|
||||
|
||||
.screenLogHidden {
|
||||
transform: translate(0, -110px);
|
||||
}
|
||||
|
||||
.infoMsg {
|
||||
color: #87b0d1;
|
||||
}
|
||||
|
||||
.errorMsg {
|
||||
color: #ff8d8d;
|
||||
}
|
||||
|
||||
.warningMsg {
|
||||
color: var(--warn);
|
||||
}
|
||||
|
||||
.debugMsg {
|
||||
color: #d687ff;
|
||||
}
|
||||
|
||||
.News,
|
||||
.Movie,
|
||||
.Series,
|
||||
.Sports,
|
||||
.Kids {
|
||||
border-left: 3px solid transparent;
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
.News {
|
||||
border-color: #ff8f6e;
|
||||
}
|
||||
|
||||
.Movie {
|
||||
border-color: #46a4ff;
|
||||
}
|
||||
|
||||
.Series {
|
||||
border-color: #ffd267;
|
||||
}
|
||||
|
||||
.Sports {
|
||||
border-color: #5ee495;
|
||||
}
|
||||
|
||||
.Kids {
|
||||
border-color: #f6a8ff;
|
||||
}
|
||||
|
||||
#loading {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
z-index: 2000;
|
||||
background-color: rgba(5, 12, 20, 0.72);
|
||||
backdrop-filter: blur(1.5px);
|
||||
}
|
||||
|
||||
.loader {
|
||||
width: 52px;
|
||||
height: 52px;
|
||||
border-radius: 50%;
|
||||
border: 4px solid transparent;
|
||||
border-top-color: #58ddff;
|
||||
border-right-color: #12b9ff;
|
||||
animation: spin 0.9s linear infinite;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
#popup {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background-color: rgba(3, 9, 16, 0.72);
|
||||
backdrop-filter: blur(2px);
|
||||
z-index: 1500;
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
#popup-custom,
|
||||
#mapping-detail,
|
||||
#user-detail,
|
||||
#file-detail {
|
||||
margin: 0 auto;
|
||||
max-width: 760px;
|
||||
max-height: calc(100vh - 36px);
|
||||
overflow: auto;
|
||||
border-radius: var(--radius-l);
|
||||
border: 1px solid var(--line);
|
||||
background: linear-gradient(180deg, rgba(17, 34, 56, 0.97) 0%, rgba(12, 27, 44, 0.97) 100%);
|
||||
box-shadow: var(--shadow-1);
|
||||
padding: 16px;
|
||||
animation: popupIn 0.2s ease;
|
||||
}
|
||||
|
||||
#popup-custom h3 {
|
||||
margin-bottom: 8px;
|
||||
text-align: center;
|
||||
color: #d5efff;
|
||||
}
|
||||
|
||||
.popup-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.popup-title h3 {
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#popup-custom .popup-title h3 {
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.popup-close {
|
||||
min-width: 40px;
|
||||
min-height: 40px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border-radius: 999px;
|
||||
border: 1px solid var(--line);
|
||||
color: #d9f0ff;
|
||||
background: rgba(14, 32, 50, 0.9);
|
||||
box-shadow: none;
|
||||
font-size: 20px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.popup-close:hover {
|
||||
color: #ffffff;
|
||||
border-color: #5bc8ed;
|
||||
}
|
||||
|
||||
#popup-custom table,
|
||||
#content_settings table,
|
||||
#mapping-detail-table,
|
||||
#user-detail-table {
|
||||
width: 100%;
|
||||
table-layout: fixed;
|
||||
border-collapse: separate;
|
||||
border-spacing: 0 8px;
|
||||
}
|
||||
|
||||
#popup-custom td,
|
||||
#content_settings td,
|
||||
#mapping-detail-table td,
|
||||
#user-detail-table td {
|
||||
padding: 2px 6px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#popup-custom td.left,
|
||||
#mapping-detail-table td.left,
|
||||
#user-detail-table td.left {
|
||||
width: 38%;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
#popup-custom input[type=text],
|
||||
#popup-custom input[type=password],
|
||||
#mapping-detail input[type=text],
|
||||
#content_settings input[type=text],
|
||||
#content_settings input[type=password] {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#mapping-detail img {
|
||||
display: block;
|
||||
max-height: 44px;
|
||||
margin: 8px auto 12px;
|
||||
}
|
||||
|
||||
#file-detail input[type=text] {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.interaction,
|
||||
#interaction {
|
||||
margin-top: 16px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.interaction input[type=button],
|
||||
.interaction input[type=submit] {
|
||||
margin: 0;
|
||||
min-width: 110px;
|
||||
}
|
||||
|
||||
#popup-interaction {
|
||||
margin-top: 14px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-end;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
#notification {
|
||||
position: fixed;
|
||||
right: 12px;
|
||||
top: 12px;
|
||||
width: 260px;
|
||||
max-height: calc(100vh - 24px);
|
||||
overflow: auto;
|
||||
border-radius: var(--radius-m);
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(10, 22, 36, 0.92);
|
||||
box-shadow: var(--shadow-2);
|
||||
}
|
||||
|
||||
#notification .element {
|
||||
margin: 8px;
|
||||
border-radius: 10px;
|
||||
border-left: 4px solid var(--ok);
|
||||
background: rgba(17, 35, 56, 0.84);
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
#notification h5 {
|
||||
padding: 0;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
#notification p {
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.tableEllipsis {
|
||||
width: 150px;
|
||||
overflow: hidden;
|
||||
@@ -718,81 +350,3 @@ input[type=checkbox]:checked:before {
|
||||
transform: translateY(0) scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 619px) {
|
||||
h1 {
|
||||
font-size: 1.46rem;
|
||||
}
|
||||
|
||||
#popup {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#popup-custom,
|
||||
#mapping-detail,
|
||||
#user-detail,
|
||||
#file-detail {
|
||||
max-width: none;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
max-height: 100%;
|
||||
border-radius: 0;
|
||||
border: 0;
|
||||
padding: 10px 10px calc(14px + env(safe-area-inset-bottom));
|
||||
}
|
||||
|
||||
#popup-custom table {
|
||||
border-spacing: 0 10px;
|
||||
}
|
||||
|
||||
#popup-custom tr {
|
||||
display: block;
|
||||
border: 1px solid var(--line-soft);
|
||||
border-radius: 10px;
|
||||
padding: 8px 8px 10px;
|
||||
background: rgba(12, 26, 42, 0.8);
|
||||
}
|
||||
|
||||
#popup-custom td {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 4px 2px;
|
||||
}
|
||||
|
||||
#popup-custom td.left {
|
||||
width: 100%;
|
||||
font-size: 11px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.06em;
|
||||
}
|
||||
|
||||
#popup-interaction {
|
||||
position: sticky;
|
||||
bottom: 0;
|
||||
z-index: 5;
|
||||
margin-top: 10px;
|
||||
padding-top: 10px;
|
||||
background: linear-gradient(180deg, rgba(12, 27, 44, 0.1) 0%, rgba(12, 27, 44, 0.96) 30%);
|
||||
}
|
||||
|
||||
.interaction,
|
||||
#interaction {
|
||||
justify-content: stretch;
|
||||
}
|
||||
|
||||
.interaction input[type=button],
|
||||
.interaction input[type=submit],
|
||||
#popup-interaction input[type=button] {
|
||||
width: 100%;
|
||||
min-height: 44px;
|
||||
}
|
||||
|
||||
.popup-title h3 {
|
||||
font-size: 1.02rem;
|
||||
}
|
||||
|
||||
.popup-close {
|
||||
min-width: 44px;
|
||||
min-height: 44px;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user