mohdbelal010/SecureAI-Gaurd
0
1/* ═══════════════════════════════════════════════════════════════2 SecureAI-Guard — SOC Dashboard Styles3 Premium dark-theme cybersecurity interface4 ═══════════════════════════════════════════════════════════════ */5 6/* ──── CSS Custom Properties ──── */7:root {8 /* Core palette */9 --bg-primary: #060a14;10 --bg-secondary: #0c1222;11 --bg-card: rgba(14, 22, 42, 0.75);12 --bg-card-hover: rgba(18, 28, 52, 0.85);13 --bg-sidebar: rgba(8, 14, 28, 0.92);14 --bg-input: rgba(10, 18, 36, 0.8);15 --bg-header: rgba(6, 10, 20, 0.95);16 17 /* Accent colors */18 --cyan: #00d4ff;19 --cyan-glow: rgba(0, 212, 255, 0.25);20 --cyan-dim: rgba(0, 212, 255, 0.08);21 --green: #00e68a;22 --green-glow: rgba(0, 230, 138, 0.25);23 --red: #ff4d6a;24 --red-glow: rgba(255, 77, 106, 0.25);25 --orange: #ffa726;26 --orange-glow: rgba(255, 167, 38, 0.25);27 --purple: #b388ff;28 --purple-glow: rgba(179, 136, 255, 0.25);29 --blue: #448aff;30 --blue-glow: rgba(68, 138, 255, 0.25);31 32 /* Text */33 --text-primary: #e8ecf4;34 --text-secondary: #8892a6;35 --text-muted: #4a5568;36 37 /* Borders & effects */38 --border-color: rgba(0, 212, 255, 0.12);39 --border-subtle: rgba(255, 255, 255, 0.05);40 --glass-blur: 16px;41 --shadow-glow: 0 0 30px rgba(0, 212, 255, 0.06);42 43 /* Spacing */44 --sidebar-width: 300px;45 --header-height: 64px;46 --radius: 12px;47 --radius-sm: 8px;48 --radius-xs: 6px;49 50 /* Typography */51 --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;52 --font-mono: 'JetBrains Mono', 'Fira Code', monospace;53 54 /* Gauge */55 --gauge-circumference: 326.73; /* 2 * π * 52 */56}57 58/* ──── Reset & Base ──── */59*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }60 61html {62 font-size: 14px;63 scroll-behavior: smooth;64}65 66body {67 font-family: var(--font-sans);68 background: var(--bg-primary);69 color: var(--text-primary);70 line-height: 1.5;71 overflow-x: hidden;72 min-height: 100vh;73}74 75/* Animated background grid */76body::before {77 content: '';78 position: fixed;79 inset: 0;80 background:81 radial-gradient(ellipse at 20% 50%, rgba(0, 212, 255, 0.04) 0%, transparent 50%),82 radial-gradient(ellipse at 80% 20%, rgba(179, 136, 255, 0.03) 0%, transparent 50%),83 radial-gradient(ellipse at 50% 100%, rgba(0, 230, 138, 0.02) 0%, transparent 40%);84 pointer-events: none;85 z-index: 0;86}87 88/* ═══════════════════ HEADER ═══════════════════ */89#app-header {90 position: fixed;91 top: 0;92 left: 0;93 right: 0;94 height: var(--header-height);95 background: var(--bg-header);96 backdrop-filter: blur(var(--glass-blur));97 -webkit-backdrop-filter: blur(var(--glass-blur));98 border-bottom: 1px solid var(--border-color);99 display: flex;100 align-items: center;101 justify-content: space-between;102 padding: 0 24px;103 z-index: 100;104 box-shadow: var(--shadow-glow);105}106 107.header-left { display: flex; align-items: center; }108 109.logo {110 display: flex;111 align-items: center;112 gap: 14px;113}114 115.shield-icon {116 width: 40px;117 height: 40px;118 color: var(--cyan);119 filter: drop-shadow(0 0 8px var(--cyan-glow));120 animation: shield-pulse 3s ease-in-out infinite;121}122 123@keyframes shield-pulse {124 0%, 100% { filter: drop-shadow(0 0 8px var(--cyan-glow)); }125 50% { filter: drop-shadow(0 0 16px rgba(0, 212, 255, 0.45)); }126}127 128.logo h1 {129 font-size: 1.3rem;130 font-weight: 700;131 background: linear-gradient(135deg, var(--cyan), var(--purple));132 -webkit-background-clip: text;133 -webkit-text-fill-color: transparent;134 background-clip: text;135 letter-spacing: -0.02em;136}137 138.logo .subtitle {139 display: block;140 font-size: 0.7rem;141 color: var(--text-secondary);142 letter-spacing: 0.12em;143 text-transform: uppercase;144 margin-top: -2px;145}146 147.header-center { display: flex; align-items: center; }148 149.status-pill {150 display: flex;151 align-items: center;152 gap: 8px;153 padding: 6px 16px;154 border-radius: 20px;155 background: rgba(0, 230, 138, 0.08);156 border: 1px solid rgba(0, 230, 138, 0.2);157 font-size: 0.8rem;158 font-weight: 500;159 color: var(--green);160 transition: all 0.5s ease;161}162 163.status-pill.error {164 background: rgba(255, 77, 106, 0.08);165 border-color: rgba(255, 77, 106, 0.2);166 color: var(--red);167}168 169.status-pill.running {170 background: rgba(0, 212, 255, 0.08);171 border-color: rgba(0, 212, 255, 0.2);172 color: var(--cyan);173}174 175.pulse-dot {176 width: 8px;177 height: 8px;178 border-radius: 50%;179 background: currentColor;180 animation: pulse 2s ease-in-out infinite;181}182 183@keyframes pulse {184 0%, 100% { opacity: 1; transform: scale(1); }185 50% { opacity: 0.4; transform: scale(0.8); }186}187 188.header-right {189 display: flex;190 gap: 24px;191}192 193.header-stat {194 text-align: center;195}196 197.stat-label {198 display: block;199 font-size: 0.65rem;200 color: var(--text-muted);201 text-transform: uppercase;202 letter-spacing: 0.08em;203}204 205.stat-value {206 display: block;207 font-size: 1.1rem;208 font-weight: 700;209 font-family: var(--font-mono);210 color: var(--cyan);211}212 213/* ═══════════════════ MAIN LAYOUT ═══════════════════ */214#app-main {215 display: flex;216 margin-top: var(--header-height);217 min-height: calc(100vh - var(--header-height));218 position: relative;219 z-index: 1;220}221 222/* ──── SIDEBAR ──── */223#sidebar {224 width: var(--sidebar-width);225 min-width: var(--sidebar-width);226 background: var(--bg-sidebar);227 backdrop-filter: blur(var(--glass-blur));228 border-right: 1px solid var(--border-color);229 padding: 20px 16px;230 overflow-y: auto;231 height: calc(100vh - var(--header-height));232 position: sticky;233 top: var(--header-height);234 display: flex;235 flex-direction: column;236 gap: 8px;237}238 239.sidebar-section {240 background: var(--bg-card);241 border: 1px solid var(--border-subtle);242 border-radius: var(--radius);243 padding: 18px 16px;244 transition: border-color 0.3s;245}246 247.sidebar-section:hover {248 border-color: var(--border-color);249}250 251.section-title {252 font-size: 0.85rem;253 font-weight: 600;254 color: var(--text-secondary);255 text-transform: uppercase;256 letter-spacing: 0.06em;257 margin-bottom: 14px;258 display: flex;259 align-items: center;260 gap: 8px;261}262 263.section-title .icon { font-size: 1rem; }264 265/* Form elements */266.form-group {267 margin-bottom: 14px;268}269 270.form-group label {271 display: block;272 font-size: 0.78rem;273 color: var(--text-secondary);274 margin-bottom: 6px;275 font-weight: 500;276}277 278select, input[type="number"], textarea {279 width: 100%;280 padding: 10px 12px;281 background: var(--bg-input);282 border: 1px solid var(--border-subtle);283 border-radius: var(--radius-sm);284 color: var(--text-primary);285 font-family: var(--font-sans);286 font-size: 0.85rem;287 transition: all 0.25s ease;288 outline: none;289}290 291select:focus, input[type="number"]:focus, textarea:focus {292 border-color: var(--cyan);293 box-shadow: 0 0 0 3px var(--cyan-dim);294}295 296select { cursor: pointer; -webkit-appearance: none; appearance: none; }297 298textarea { resize: vertical; min-height: 60px; }299 300/* Slider */301input[type="range"] {302 width: 100%;303 height: 6px;304 -webkit-appearance: none;305 background: rgba(255,255,255,0.06);306 border-radius: 3px;307 outline: none;308 margin-top: 4px;309}310 311input[type="range"]::-webkit-slider-thumb {312 -webkit-appearance: none;313 width: 18px;314 height: 18px;315 border-radius: 50%;316 background: var(--cyan);317 cursor: pointer;318 box-shadow: 0 0 8px var(--cyan-glow);319 transition: box-shadow 0.2s;320}321 322input[type="range"]::-webkit-slider-thumb:hover {323 box-shadow: 0 0 16px rgba(0, 212, 255, 0.5);324}325 326/* Radio Cards */327.radio-group {328 display: grid;329 grid-template-columns: 1fr 1fr;330 gap: 8px;331}332 333.radio-card {334 display: flex;335 flex-direction: column;336 align-items: center;337 gap: 4px;338 padding: 10px 8px;339 background: var(--bg-input);340 border: 1px solid var(--border-subtle);341 border-radius: var(--radius-sm);342 cursor: pointer;343 transition: all 0.25s ease;344 font-size: 0.78rem;345 font-weight: 500;346 color: var(--text-secondary);347 text-align: center;348}349 350.radio-card input { display: none; }351 352.radio-card:hover {353 border-color: rgba(255,255,255,0.15);354 background: var(--bg-card-hover);355}356 357.radio-card.active {358 border-color: var(--cyan);359 background: var(--cyan-dim);360 color: var(--cyan);361}362 363.radio-icon {364 font-size: 1.1rem;365 width: 28px;366 height: 28px;367 display: flex;368 align-items: center;369 justify-content: center;370 border-radius: 50%;371}372 373.radio-icon.safe { color: var(--green); }374.radio-icon.danger { color: var(--red); }375.radio-icon.warning { color: var(--orange); }376.radio-icon.info { color: var(--blue); }377 378/* Buttons */379.btn {380 width: 100%;381 padding: 11px 16px;382 border: none;383 border-radius: var(--radius-sm);384 font-family: var(--font-sans);385 font-size: 0.85rem;386 font-weight: 600;387 cursor: pointer;388 display: flex;389 align-items: center;390 justify-content: center;391 gap: 8px;392 transition: all 0.25s ease;393 margin-bottom: 8px;394 position: relative;395 overflow: hidden;396}397 398.btn::after {399 content: '';400 position: absolute;401 inset: 0;402 background: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, transparent 50%);403 opacity: 0;404 transition: opacity 0.25s;405}406 407.btn:hover::after { opacity: 1; }408 409.btn:disabled {410 opacity: 0.4;411 cursor: not-allowed;412}413 414.btn:disabled::after { display: none; }415 416.btn-primary {417 background: linear-gradient(135deg, #00b8d9, #0097a7);418 color: white;419 box-shadow: 0 4px 16px rgba(0, 184, 217, 0.25);420}421 422.btn-primary:hover:not(:disabled) {423 box-shadow: 0 6px 24px rgba(0, 184, 217, 0.4);424 transform: translateY(-1px);425}426 427.btn-accent {428 background: linear-gradient(135deg, #7c4dff, #651fff);429 color: white;430 box-shadow: 0 4px 16px rgba(124, 77, 255, 0.25);431}432 433.btn-accent:hover:not(:disabled) {434 box-shadow: 0 6px 24px rgba(124, 77, 255, 0.4);435 transform: translateY(-1px);436}437 438.btn-secondary {439 background: rgba(0, 212, 255, 0.1);440 color: var(--cyan);441 border: 1px solid rgba(0, 212, 255, 0.25);442}443 444.btn-secondary:hover:not(:disabled) {445 background: rgba(0, 212, 255, 0.18);446}447 448.btn-ghost {449 background: rgba(255,255,255,0.04);450 color: var(--text-secondary);451 border: 1px solid var(--border-subtle);452}453 454.btn-ghost:hover:not(:disabled) {455 background: rgba(255,255,255,0.08);456 color: var(--text-primary);457}458 459/* Task Info */460.task-info-section #task-info-content {461 font-size: 0.8rem;462 color: var(--text-secondary);463 line-height: 1.6;464}465 466.task-info-section .task-meta {467 margin-top: 10px;468 padding-top: 10px;469 border-top: 1px solid var(--border-subtle);470}471 472.task-info-section .task-meta span {473 display: block;474 margin-bottom: 4px;475}476 477/* ──── CONTENT AREA ──── */478#content {479 flex: 1;480 padding: 20px 24px;481 overflow-y: auto;482 display: flex;483 flex-direction: column;484 gap: 20px;485}486 487/* ──── Glass Card ──── */488.glass-card {489 background: var(--bg-card);490 backdrop-filter: blur(var(--glass-blur));491 border: 1px solid var(--border-subtle);492 border-radius: var(--radius);493 padding: 20px;494 transition: border-color 0.3s, box-shadow 0.3s;495}496 497.glass-card:hover {498 border-color: var(--border-color);499 box-shadow: var(--shadow-glow);500}501 502.card-title {503 font-size: 0.9rem;504 font-weight: 600;505 color: var(--text-secondary);506 margin-bottom: 16px;507 display: flex;508 align-items: center;509 gap: 8px;510}511 512/* ═══════════════════ GAUGES ═══════════════════ */513.gauges-row {514 display: grid;515 grid-template-columns: repeat(4, 1fr);516 gap: 16px;517}518 519.gauge-card {520 background: var(--bg-card);521 border: 1px solid var(--border-subtle);522 border-radius: var(--radius);523 padding: 20px 16px;524 text-align: center;525 transition: all 0.3s ease;526}527 528.gauge-card:hover {529 border-color: var(--border-color);530 box-shadow: var(--shadow-glow);531 transform: translateY(-2px);532}533 534.gauge-ring {535 position: relative;536 width: 110px;537 height: 110px;538 margin: 0 auto 12px;539}540 541.gauge-ring svg {542 transform: rotate(-90deg);543 width: 100%;544 height: 100%;545}546 547.gauge-track {548 fill: none;549 stroke: rgba(255,255,255,0.04);550 stroke-width: 8;551}552 553.gauge-fill {554 fill: none;555 stroke-width: 8;556 stroke-linecap: round;557 stroke-dasharray: var(--gauge-circumference);558 stroke-dashoffset: var(--gauge-circumference);559 transition: stroke-dashoffset 1s cubic-bezier(0.4, 0, 0.2, 1), stroke 0.5s ease;560}561 562.trust-fill { stroke: var(--green); filter: drop-shadow(0 0 4px var(--green-glow)); }563.fatigue-fill { stroke: var(--green); filter: drop-shadow(0 0 4px var(--green-glow)); }564.risk-fill { stroke: var(--green); filter: drop-shadow(0 0 4px var(--green-glow)); }565 566.gauge-value {567 position: absolute;568 top: 50%;569 left: 50%;570 transform: translate(-50%, -50%);571 font-size: 1.6rem;572 font-weight: 800;573 font-family: var(--font-mono);574 color: var(--text-primary);575}576 577.gauge-label {578 font-size: 0.8rem;579 font-weight: 600;580 color: var(--text-secondary);581 text-transform: uppercase;582 letter-spacing: 0.05em;583}584 585.gauge-sub {586 font-size: 0.72rem;587 color: var(--green);588 margin-top: 2px;589 font-weight: 500;590}591 592/* Stat card */593.stat-card {594 display: flex;595 align-items: center;596}597 598.mini-stats {599 display: grid;600 grid-template-columns: 1fr 1fr;601 gap: 16px;602 width: 100%;603}604 605.mini-stat { text-align: center; }606 607.mini-stat-value {608 display: block;609 font-size: 1.3rem;610 font-weight: 700;611 font-family: var(--font-mono);612 color: var(--cyan);613}614 615.mini-stat-value.danger-text { color: var(--red); }616 617.mini-stat-label {618 display: block;619 font-size: 0.68rem;620 color: var(--text-muted);621 text-transform: uppercase;622 letter-spacing: 0.04em;623 margin-top: 2px;624}625 626/* ═══════════════════ EVENT PREVIEW ═══════════════════ */627.event-preview-card {628 border-left: 3px solid var(--cyan);629 animation: slideIn 0.4s ease;630}631 632@keyframes slideIn {633 from { opacity: 0; transform: translateY(-10px); }634 to { opacity: 1; transform: translateY(0); }635}636 637.event-preview-header {638 display: flex;639 justify-content: space-between;640 align-items: center;641 margin-bottom: 12px;642}643 644.event-preview-header h3 {645 font-size: 0.9rem;646 font-weight: 600;647 display: flex;648 align-items: center;649 gap: 8px;650}651 652.event-badges {653 display: flex;654 gap: 6px;655}656 657.badge {658 padding: 3px 10px;659 border-radius: 20px;660 font-size: 0.7rem;661 font-weight: 600;662 text-transform: uppercase;663 letter-spacing: 0.04em;664 background: rgba(0, 212, 255, 0.1);665 color: var(--cyan);666 border: 1px solid rgba(0, 212, 255, 0.2);667}668 669.badge.threat-phishing { background: rgba(255,77,106,0.1); color: var(--red); border-color: rgba(255,77,106,0.2); }670.badge.threat-malware { background: rgba(179,136,255,0.1); color: var(--purple); border-color: rgba(179,136,255,0.2); }671.badge.threat-spam { background: rgba(255,167,38,0.1); color: var(--orange); border-color: rgba(255,167,38,0.2); }672.badge.threat-social_engineering { background: rgba(255,77,106,0.1); color: var(--red); border-color: rgba(255,77,106,0.2); }673.badge.threat-safe { background: rgba(0,230,138,0.1); color: var(--green); border-color: rgba(0,230,138,0.2); }674 675.badge.channel-sms { background: rgba(0,212,255,0.1); color: var(--cyan); }676.badge.channel-email { background: rgba(68,138,255,0.1); color: var(--blue); }677.badge.channel-web { background: rgba(179,136,255,0.1); color: var(--purple); }678 679.event-sender {680 font-size: 0.85rem;681 color: var(--text-secondary);682 margin-bottom: 8px;683}684 685.event-content {686 font-family: var(--font-mono);687 font-size: 0.82rem;688 color: var(--text-primary);689 background: rgba(0,0,0,0.3);690 padding: 12px 14px;691 border-radius: var(--radius-sm);692 border: 1px solid var(--border-subtle);693 line-height: 1.6;694 max-height: 120px;695 overflow-y: auto;696}697 698.event-preview-footer {699 margin-top: 12px;700 font-size: 0.8rem;701 color: var(--text-secondary);702}703 704.event-preview-footer strong {705 font-family: var(--font-mono);706 color: var(--cyan);707}708 709/* ═══════════════════ BOTTOM ROW ═══════════════════ */710.bottom-row {711 display: grid;712 grid-template-columns: 2fr 1fr;713 gap: 16px;714}715 716/* ──── Event Feed Table ──── */717.event-feed { overflow: hidden; }718 719.table-wrapper {720 overflow-x: auto;721 overflow-y: auto;722 max-height: 350px;723}724 725#event-table {726 width: 100%;727 border-collapse: collapse;728 font-size: 0.78rem;729}730 731#event-table thead {732 position: sticky;733 top: 0;734 z-index: 2;735}736 737#event-table th {738 padding: 10px 12px;739 text-align: left;740 font-weight: 600;741 color: var(--text-muted);742 text-transform: uppercase;743 letter-spacing: 0.05em;744 font-size: 0.7rem;745 background: var(--bg-secondary);746 border-bottom: 1px solid var(--border-color);747}748 749#event-table td {750 padding: 9px 12px;751 border-bottom: 1px solid var(--border-subtle);752 color: var(--text-secondary);753 vertical-align: middle;754}755 756#event-table tbody tr {757 transition: background 0.2s;758}759 760#event-table tbody tr:hover {761 background: rgba(0, 212, 255, 0.04);762}763 764#event-table tbody tr.flash {765 animation: rowFlash 0.8s ease;766}767 768@keyframes rowFlash {769 0% { background: rgba(0, 212, 255, 0.15); }770 100% { background: transparent; }771}772 773.empty-row td {774 text-align: center;775 padding: 40px 12px;776 color: var(--text-muted);777 font-style: italic;778}779 780/* Decision badges in table */781.decision-allow { color: var(--green); font-weight: 600; }782.decision-block { color: var(--red); font-weight: 600; }783.decision-warn { color: var(--orange); font-weight: 600; }784.decision-investigate { color: var(--blue); font-weight: 600; }785 786.reward-positive { color: var(--green); font-family: var(--font-mono); font-weight: 600; }787.reward-negative { color: var(--red); font-family: var(--font-mono); font-weight: 600; }788 789/* ──── Charts Panel ──── */790.charts-panel {791 display: flex;792 flex-direction: column;793 gap: 16px;794}795 796/* Reward bars */797.reward-bars {798 display: flex;799 flex-direction: column;800 gap: 14px;801}802 803.reward-bar-item {804 display: grid;805 grid-template-columns: 80px 1fr 50px;806 align-items: center;807 gap: 10px;808}809 810.bar-label {811 font-size: 0.78rem;812 font-weight: 500;813 color: var(--text-secondary);814}815 816.bar-track {817 height: 10px;818 background: rgba(255,255,255,0.04);819 border-radius: 5px;820 overflow: hidden;821}822 823.bar-fill {824 height: 100%;825 border-radius: 5px;826 transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1);827 min-width: 2px;828}829 830.security-bar { background: linear-gradient(90deg, #00c853, #00e676); }831.friction-bar { background: linear-gradient(90deg, #ff5252, #ff1744); }832.delay-bar { background: linear-gradient(90deg, #ff9800, #ffc107); }833.reasoning-bar { background: linear-gradient(90deg, #448aff, #82b1ff); }834 835.bar-value {836 font-family: var(--font-mono);837 font-size: 0.78rem;838 font-weight: 600;839 color: var(--text-secondary);840 text-align: right;841}842 843/* Canvas chart placeholder */844#reward-chart {845 width: 100%;846 border-radius: var(--radius-sm);847}848 849/* ═══════════════════ GRADE BANNER ═══════════════════ */850.grade-banner {851 display: flex;852 align-items: center;853 gap: 24px;854 padding: 24px 28px;855 border: 1px solid var(--cyan);856 animation: gradeIn 0.6s ease;857}858 859@keyframes gradeIn {860 from { opacity: 0; transform: scale(0.95); }861 to { opacity: 1; transform: scale(1); }862}863 864.grade-icon {865 font-size: 2.8rem;866 animation: trophy 1.5s ease-in-out infinite;867}868 869@keyframes trophy {870 0%, 100% { transform: rotate(0deg); }871 25% { transform: rotate(-5deg); }872 75% { transform: rotate(5deg); }873}874 875.grade-info { flex: 1; }876 877.grade-info h2 {878 font-size: 1.2rem;879 font-weight: 700;880 margin-bottom: 6px;881}882 883.grade-details {884 display: flex;885 gap: 24px;886 font-size: 0.9rem;887 color: var(--text-secondary);888}889 890.grade-details strong {891 color: var(--cyan);892 font-family: var(--font-mono);893}894 895.grade-banner .btn {896 width: auto;897 padding: 10px 24px;898 margin: 0;899}900 901/* ═══════════════════ TOAST ═══════════════════ */902#toast-container {903 position: fixed;904 bottom: 24px;905 right: 24px;906 z-index: 1000;907 display: flex;908 flex-direction: column;909 gap: 8px;910}911 912.toast {913 padding: 12px 20px;914 border-radius: var(--radius-sm);915 font-size: 0.82rem;916 font-weight: 500;917 backdrop-filter: blur(12px);918 animation: toastIn 0.3s ease;919 min-width: 280px;920 max-width: 400px;921 box-shadow: 0 8px 24px rgba(0,0,0,0.4);922}923 924.toast.success {925 background: rgba(0, 230, 138, 0.15);926 border: 1px solid rgba(0, 230, 138, 0.3);927 color: var(--green);928}929 930.toast.error {931 background: rgba(255, 77, 106, 0.15);932 border: 1px solid rgba(255, 77, 106, 0.3);933 color: var(--red);934}935 936.toast.info {937 background: rgba(0, 212, 255, 0.15);938 border: 1px solid rgba(0, 212, 255, 0.3);939 color: var(--cyan);940}941 942@keyframes toastIn {943 from { opacity: 0; transform: translateY(10px) scale(0.95); }944 to { opacity: 1; transform: translateY(0) scale(1); }945}946 947/* ═══════════════════ SCROLLBAR ═══════════════════ */948::-webkit-scrollbar {949 width: 6px;950 height: 6px;951}952 953::-webkit-scrollbar-track {954 background: transparent;955}956 957::-webkit-scrollbar-thumb {958 background: rgba(255,255,255,0.1);959 border-radius: 3px;960}961 962::-webkit-scrollbar-thumb:hover {963 background: rgba(255,255,255,0.2);964}965 966/* ═══════════════════ RESPONSIVE ═══════════════════ */967@media (max-width: 1200px) {968 .gauges-row { grid-template-columns: repeat(2, 1fr); }969 .bottom-row { grid-template-columns: 1fr; }970}971 972@media (max-width: 768px) {973 #sidebar {974 width: 100%;975 min-width: 100%;976 height: auto;977 position: static;978 border-right: none;979 border-bottom: 1px solid var(--border-color);980 }981 #app-main { flex-direction: column; }982 .header-right { display: none; }983 .gauges-row { grid-template-columns: 1fr 1fr; }984}985 