Spaces:
Running
Running
| /* ===================================================== | |
| AdaptiveAuth UI β Professional Light Theme | |
| ===================================================== */ | |
| *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } | |
| :root { | |
| /* Background */ | |
| --bg: #f0f4f8; | |
| --surface: #ffffff; | |
| --surface-2: #f8fafc; | |
| /* Borders */ | |
| --border: #e2e8f0; | |
| --border-2: #cbd5e1; | |
| /* Text */ | |
| --text: #0f172a; | |
| --text-2: #334155; | |
| --muted: #64748b; | |
| --placeholder: #94a3b8; | |
| /* Primary β Blue-600 */ | |
| --primary: #2563eb; | |
| --primary-h: #1d4ed8; | |
| --primary-50: #eff6ff; | |
| --primary-100: #dbeafe; | |
| --primary-text: #1e40af; | |
| /* Success β Green-600 */ | |
| --success: #16a34a; | |
| --success-h: #15803d; | |
| --success-50: #f0fdf4; | |
| --success-100: #dcfce7; | |
| --success-border: #86efac; | |
| /* Warning β Amber-600 */ | |
| --warn: #d97706; | |
| --warn-h: #b45309; | |
| --warn-50: #fffbeb; | |
| --warn-100: #fef3c7; | |
| --warn-border: #fcd34d; | |
| /* Danger β Red-600 */ | |
| --danger: #dc2626; | |
| --danger-h: #b91c1c; | |
| --danger-50: #fef2f2; | |
| --danger-100: #fee2e2; | |
| --danger-border: #fca5a5; | |
| /* Info β Sky-600 */ | |
| --info: #0284c7; | |
| --info-50: #f0f9ff; | |
| --info-100: #e0f2fe; | |
| --info-border: #7dd3fc; | |
| /* Layout */ | |
| --r: 8px; | |
| --r-sm: 5px; | |
| --r-lg: 12px; | |
| --shadow-sm: 0 1px 2px rgba(0,0,0,.05); | |
| --shadow: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.05); | |
| --shadow-md: 0 4px 6px rgba(0,0,0,.06), 0 2px 4px rgba(0,0,0,.05); | |
| } | |
| /* ββ Base βββββββββββββββββββββββββββββββββββββββββββ */ | |
| body { | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; | |
| background: var(--bg); | |
| color: var(--text); | |
| line-height: 1.6; | |
| font-size: 14px; | |
| -webkit-font-smoothing: antialiased; | |
| } | |
| /* ββ Topbar βββββββββββββββββββββββββββββββββββββββββ */ | |
| .topbar { | |
| background: var(--surface); | |
| border-bottom: 1px solid var(--border); | |
| height: 56px; | |
| padding: 0 28px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| position: sticky; | |
| top: 0; | |
| z-index: 100; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .topbar-logo { | |
| font-size: 18px; | |
| font-weight: 800; | |
| color: var(--primary); | |
| letter-spacing: -.3px; | |
| display: flex; | |
| align-items: center; | |
| gap: 7px; | |
| } | |
| .topbar-logo em { color: var(--text); font-style: normal; font-weight: 600; } | |
| .topbar-status { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 12px; | |
| color: var(--muted); | |
| } | |
| .status-dot { | |
| width: 8px; height: 8px; | |
| border-radius: 50%; | |
| background: var(--danger); | |
| flex-shrink: 0; | |
| transition: background .3s; | |
| } | |
| .status-dot.online { background: var(--success); } | |
| .status-dot.checking { background: var(--warn); animation: pulse 1s ease-in-out infinite; } | |
| /* ββ Container ββββββββββββββββββββββββββββββββββββββ */ | |
| .container { max-width: 1280px; margin: 0 auto; padding: 28px 28px 60px; } | |
| /* ββ Hero βββββββββββββββββββββββββββββββββββββββββββ */ | |
| .hero { | |
| padding-bottom: 20px; | |
| margin-bottom: 24px; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .hero h1 { | |
| font-size: 24px; | |
| font-weight: 800; | |
| color: var(--text); | |
| letter-spacing: -.4px; | |
| margin-bottom: 4px; | |
| } | |
| .hero h1 span { color: var(--primary); } | |
| .hero p { color: var(--muted); font-size: 13px; } | |
| /* ββ Token Bar ββββββββββββββββββββββββββββββββββββββ */ | |
| .token-bar { | |
| background: var(--surface); | |
| border: 1px solid var(--border); | |
| border-radius: var(--r); | |
| padding: 10px 16px; | |
| margin-bottom: 20px; | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .token-label { | |
| font-size: 10px; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: .8px; | |
| color: var(--muted); | |
| white-space: nowrap; | |
| } | |
| .token-val { | |
| flex: 1; | |
| font-family: 'Consolas', 'Cascadia Code', monospace; | |
| font-size: 12px; | |
| color: var(--primary-text); | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| /* ββ Main Tabs ββββββββββββββββββββββββββββββββββββββ */ | |
| .main-tabs { | |
| display: flex; | |
| gap: 0; | |
| border-bottom: 2px solid var(--border); | |
| margin-bottom: 24px; | |
| overflow-x: auto; | |
| } | |
| .main-tabs button { | |
| background: none; | |
| border: none; | |
| border-bottom: 2px solid transparent; | |
| margin-bottom: -2px; | |
| color: var(--muted); | |
| padding: 10px 20px; | |
| font-size: 13px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| white-space: nowrap; | |
| transition: color .15s, border-color .15s; | |
| font-family: inherit; | |
| } | |
| .main-tabs button.active { color: var(--primary); border-bottom-color: var(--primary); } | |
| .main-tabs button:hover:not(.active) { color: var(--text-2); } | |
| /* ββ Cards ββββββββββββββββββββββββββββββββββββββββββ */ | |
| .card { | |
| background: var(--surface); | |
| border: 1px solid var(--border); | |
| border-radius: var(--r); | |
| padding: 20px 22px; | |
| margin-bottom: 16px; | |
| box-shadow: var(--shadow); | |
| } | |
| .card-header { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 11px; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: .7px; | |
| color: var(--muted); | |
| padding-bottom: 12px; | |
| margin-bottom: 14px; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .card-header-row { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding-bottom: 12px; | |
| margin-bottom: 14px; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .card-header-row .card-title { | |
| font-size: 11px; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: .7px; | |
| color: var(--muted); | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| /* ββ Buttons ββββββββββββββββββββββββββββββββββββββββ */ | |
| button, .btn { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 5px; | |
| padding: 8px 16px; | |
| border: 1px solid transparent; | |
| border-radius: var(--r-sm); | |
| font-size: 13px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: background .12s, filter .1s, transform .08s, box-shadow .12s; | |
| white-space: nowrap; | |
| font-family: inherit; | |
| text-align: center; | |
| } | |
| button:active:not(:disabled) { transform: scale(.97); } | |
| button:disabled { opacity: .45; cursor: not-allowed; } | |
| .btn-primary { background: var(--primary); color: #fff; border-color: var(--primary-h); } | |
| .btn-primary:hover:not(:disabled) { background: var(--primary-h); } | |
| .btn-success { background: var(--success); color: #fff; border-color: var(--success-h); } | |
| .btn-success:hover:not(:disabled) { background: var(--success-h); } | |
| .btn-warn { background: var(--warn); color: #fff; border-color: var(--warn-h); } | |
| .btn-warn:hover:not(:disabled) { background: var(--warn-h); } | |
| .btn-danger { background: var(--danger); color: #fff; border-color: var(--danger-h); } | |
| .btn-danger:hover:not(:disabled) { background: var(--danger-h); } | |
| .btn-ghost { | |
| background: var(--surface); | |
| color: var(--text-2); | |
| border-color: var(--border); | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .btn-ghost:hover:not(:disabled) { background: var(--bg); border-color: var(--border-2); } | |
| .btn-sm { padding: 5px 11px; font-size: 12px; } | |
| .btn-full { width: 100%; } | |
| /* ββ Forms ββββββββββββββββββββββββββββββββββββββββββ */ | |
| .form-group { margin-bottom: 13px; } | |
| .form-group label { | |
| display: block; | |
| font-size: 11px; | |
| font-weight: 600; | |
| color: var(--muted); | |
| margin-bottom: 5px; | |
| text-transform: uppercase; | |
| letter-spacing: .5px; | |
| } | |
| input, select, .form-input { | |
| width: 100%; | |
| background: var(--surface); | |
| border: 1px solid var(--border); | |
| border-radius: var(--r-sm); | |
| color: var(--text); | |
| padding: 8px 11px; | |
| font-size: 13px; | |
| font-family: inherit; | |
| transition: border-color .15s, box-shadow .15s; | |
| } | |
| input:focus, select:focus, .form-input:focus { | |
| outline: none; | |
| border-color: var(--primary); | |
| box-shadow: 0 0 0 3px var(--primary-100); | |
| } | |
| input::placeholder { color: var(--placeholder); } | |
| input[readonly] { background: var(--surface-2); color: var(--muted); cursor: default; } | |
| /* ββ Response Box βββββββββββββββββββββββββββββββββββ */ | |
| .resp-box { | |
| margin-top: 10px; | |
| padding: 12px 14px; | |
| border-radius: var(--r-sm); | |
| font-size: 12px; | |
| font-family: 'Consolas', 'Cascadia Code', monospace; | |
| background: var(--surface-2); | |
| border: 1px solid var(--border); | |
| white-space: pre-wrap; | |
| word-break: break-all; | |
| max-height: 280px; | |
| overflow-y: auto; | |
| line-height: 1.6; | |
| color: var(--text-2); | |
| } | |
| .resp-box.ok { border-color: var(--success-border); color: var(--success); background: var(--success-50); } | |
| .resp-box.err { border-color: var(--danger-border); color: var(--danger); background: var(--danger-50); } | |
| /* ββ Callouts βββββββββββββββββββββββββββββββββββββββ */ | |
| .callout { | |
| padding: 12px 15px; | |
| border-radius: var(--r-sm); | |
| font-size: 13px; | |
| line-height: 1.65; | |
| margin-bottom: 14px; | |
| border-left: 3px solid; | |
| } | |
| .callout-info { background: var(--info-50); border-color: var(--info); color: #0c4a6e; } | |
| .callout-success { background: var(--success-50); border-color: var(--success); color: #14532d; } | |
| .callout-warn { background: var(--warn-50); border-color: var(--warn); color: #78350f; } | |
| .callout-danger { background: var(--danger-50); border-color: var(--danger); color: #7f1d1d; } | |
| /* ββ Badges & Tags ββββββββββββββββββββββββββββββββββ */ | |
| .badge { | |
| display: inline-flex; | |
| align-items: center; | |
| padding: 2px 9px; | |
| border-radius: 4px; | |
| font-size: 11px; | |
| font-weight: 700; | |
| letter-spacing: .4px; | |
| text-transform: uppercase; | |
| } | |
| .badge-success { background: var(--success-100); color: var(--success); border: 1px solid var(--success-border); } | |
| .badge-warn { background: var(--warn-100); color: var(--warn); border: 1px solid var(--warn-border); } | |
| .badge-danger { background: var(--danger-100); color: var(--danger); border: 1px solid var(--danger-border); } | |
| .badge-info { background: var(--info-100); color: var(--info); border: 1px solid var(--info-border); } | |
| .badge-muted { background: var(--surface-2); color: var(--muted); border: 1px solid var(--border); } | |
| .tag { | |
| display: inline-block; | |
| padding: 1px 7px; | |
| border-radius: 4px; | |
| font-size: 11px; | |
| background: var(--primary-50); | |
| color: var(--primary-text); | |
| margin: 2px; | |
| font-weight: 600; | |
| border: 1px solid var(--primary-100); | |
| } | |
| /* ββ Pill βββββββββββββββββββββββββββββββββββββββββββ */ | |
| .pill { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 4px; | |
| padding: 3px 9px; | |
| border-radius: 4px; | |
| font-size: 11px; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: .3px; | |
| } | |
| .pill-ok { background: var(--success-100); color: var(--success); border: 1px solid var(--success-border); } | |
| .pill-err { background: var(--danger-100); color: var(--danger); border: 1px solid var(--danger-border); } | |
| .pill-warn{ background: var(--warn-100); color: var(--warn); border: 1px solid var(--warn-border); } | |
| /* ββ Step Bar βββββββββββββββββββββββββββββββββββββββ */ | |
| .step-bar { | |
| display: flex; | |
| gap: 8px; | |
| margin-bottom: 20px; | |
| overflow-x: auto; | |
| } | |
| .step-item { | |
| flex: 1; | |
| min-width: 120px; | |
| background: var(--surface); | |
| border: 1px solid var(--border); | |
| border-radius: var(--r); | |
| padding: 11px 14px; | |
| text-align: center; | |
| box-shadow: var(--shadow-sm); | |
| transition: border-color .2s; | |
| } | |
| .step-item.active { border-color: var(--primary); background: var(--primary-50); } | |
| .step-item.done { border-color: var(--success-border); background: var(--success-50); } | |
| .step-num { | |
| width: 26px; height: 26px; | |
| border-radius: 50%; | |
| background: var(--border); | |
| color: var(--muted); | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 12px; | |
| font-weight: 700; | |
| margin-bottom: 5px; | |
| } | |
| .step-item.active .step-num { background: var(--primary); color: #fff; } | |
| .step-item.done .step-num { background: var(--success); color: #fff; font-size: 14px; } | |
| .step-label { font-size: 12px; font-weight: 700; color: var(--text-2); } | |
| .step-sub { font-size: 11px; color: var(--muted); margin-top: 2px; } | |
| /* ββ Compare Grid βββββββββββββββββββββββββββββββββββ */ | |
| .compare-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; } | |
| .compare-side { | |
| background: var(--surface); | |
| border-radius: var(--r); | |
| padding: 16px; | |
| border: 1px solid var(--border); | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .compare-side.success { border-top: 3px solid var(--success); } | |
| .compare-side.danger { border-top: 3px solid var(--danger); } | |
| .compare-title { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; margin-bottom: 10px; } | |
| .compare-title.success { color: var(--success); } | |
| .compare-title.danger { color: var(--danger); } | |
| .context-list { display: flex; flex-direction: column; gap: 5px; font-size: 13px; margin-bottom: 10px; } | |
| .context-list > div { color: var(--text-2); } | |
| /* ββ Risk Gauge βββββββββββββββββββββββββββββββββββββ */ | |
| .gauge-wrap { text-align: center; padding: 10px 0 4px; } | |
| .gauge-val { | |
| font-size: 32px; | |
| font-weight: 800; | |
| letter-spacing: -1px; | |
| line-height: 1; | |
| margin-top: 2px; | |
| } | |
| .gauge-label { | |
| font-size: 11px; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: .8px; | |
| color: var(--muted); | |
| margin-top: 4px; | |
| } | |
| /* ββ Level Bar ββββββββββββββββββββββββββββββββββββββ */ | |
| .level-bar { display: flex; gap: 4px; margin-top: 8px; } | |
| .level-seg { | |
| flex: 1; height: 7px; border-radius: 4px; | |
| background: var(--border); | |
| transition: background .4s; | |
| } | |
| .level-seg.seg-0 { background: var(--success); } | |
| .level-seg.seg-1 { background: #84cc16; } | |
| .level-seg.seg-2 { background: var(--warn); } | |
| .level-seg.seg-3 { background: #f97316; } | |
| .level-seg.seg-4 { background: var(--danger); } | |
| /* ββ Factor Bars ββββββββββββββββββββββββββββββββββββ */ | |
| .factor-row { margin-bottom: 8px; } | |
| .factor-label { | |
| font-size: 12px; | |
| color: var(--muted); | |
| margin-bottom: 4px; | |
| display: flex; | |
| justify-content: space-between; | |
| } | |
| .factor-bar-wrap { height: 8px; background: var(--border); border-radius: 4px; overflow: hidden; } | |
| .factor-bar { height: 100%; border-radius: 4px; transition: width .7s ease; } | |
| /* ββ Decision Panel βββββββββββββββββββββββββββββββββ */ | |
| .decision-panel { | |
| border-radius: var(--r-sm); | |
| overflow: hidden; | |
| border: 1px solid var(--border); | |
| margin-top: 8px; | |
| } | |
| .decision-header { | |
| padding: 11px 14px; | |
| font-size: 14px; | |
| font-weight: 800; | |
| text-align: center; | |
| letter-spacing: .3px; | |
| } | |
| .decision-header.success { background: var(--success-50); color: var(--success); border-bottom: 1px solid var(--success-border); } | |
| .decision-header.challenge{ background: var(--warn-50); color: var(--warn); border-bottom: 1px solid var(--warn-border); } | |
| .decision-header.blocked { background: var(--danger-50); color: var(--danger); border-bottom: 1px solid var(--danger-border); } | |
| .decision-body { padding: 12px 14px; font-size: 13px; background: var(--surface); color: var(--text-2); } | |
| /* ββ Attack Log βββββββββββββββββββββββββββββββββββββ */ | |
| .attack-log { | |
| background: #1e1b4b; | |
| border-radius: var(--r-sm); | |
| padding: 10px 13px; | |
| font-family: 'Consolas', monospace; | |
| font-size: 12px; | |
| height: 190px; | |
| overflow-y: auto; | |
| margin-top: 12px; | |
| } | |
| .attack-line { margin: 2px 0; color: #c7d2fe; } | |
| .attack-detected { color: #fcd34d; font-weight: 700; } | |
| .attack-blocked { color: #f9a8d4; font-weight: 700; } | |
| /* ββ Anomaly Feed βββββββββββββββββββββββββββββββββββ */ | |
| .anomaly-item { | |
| background: var(--danger-50); | |
| border: 1px solid var(--danger-border); | |
| border-radius: var(--r-sm); | |
| padding: 10px 13px; | |
| margin-bottom: 8px; | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 10px; | |
| animation: slideIn .25s ease; | |
| } | |
| .anomaly-type { font-weight: 700; font-size: 13px; color: var(--danger); } | |
| .anomaly-meta { font-size: 11px; color: var(--muted); margin-top: 3px; } | |
| /* ββ Monitor Badge ββββββββββββββββββββββββββββββββββ */ | |
| .monitor-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 5px; | |
| padding: 3px 10px; | |
| border-radius: 4px; | |
| font-size: 11px; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: .4px; | |
| transition: all .2s; | |
| } | |
| .monitor-badge.mon-on { background: var(--danger-100); color: var(--danger); border: 1px solid var(--danger-border); animation: pulse 1.4s ease-in-out infinite; } | |
| .monitor-badge.mon-off { background: var(--surface-2); color: var(--muted); border: 1px solid var(--border); } | |
| /* ββ Monitor Stats ββββββββββββββββββββββββββββββββββ */ | |
| .monitor-stats { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 8px; | |
| padding: 10px 14px; | |
| background: var(--surface-2); | |
| border: 1px solid var(--border); | |
| border-radius: var(--r-sm); | |
| font-size: 12px; | |
| margin-bottom: 10px; | |
| } | |
| .ms-item { display: flex; flex-direction: column; align-items: center; min-width: 56px; } | |
| .ms-val { font-size: 20px; font-weight: 800; line-height: 1; letter-spacing: -.3px; } | |
| .ms-lbl { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: .4px; margin-top: 2px; } | |
| /* ββ Monitor Log ββββββββββββββββββββββββββββββββββββ */ | |
| .monitor-log { | |
| background: #0f172a; | |
| border-radius: var(--r-sm); | |
| padding: 10px 13px; | |
| font-family: 'Consolas', monospace; | |
| font-size: 11.5px; | |
| height: 140px; | |
| overflow-y: auto; | |
| line-height: 1.7; | |
| margin-top: 10px; | |
| } | |
| .ml-ok { color: #86efac; } | |
| .ml-threat { color: #fca5a5; font-weight: 700; } | |
| .ml-warn { color: #fcd34d; } | |
| .ml-info { color: #93c5fd; } | |
| /* ββ Stat Boxes βββββββββββββββββββββββββββββββββββββ */ | |
| .stat-box { | |
| background: var(--surface); | |
| border: 1px solid var(--border); | |
| border-radius: var(--r); | |
| padding: 18px 12px; | |
| text-align: center; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .stat-num { font-size: 32px; font-weight: 800; line-height: 1; letter-spacing: -.5px; } | |
| .stat-label { font-size: 10px; color: var(--muted); margin-top: 6px; text-transform: uppercase; letter-spacing: .6px; } | |
| /* ββ Trust Gauge ββββββββββββββββββββββββββββββββββββ */ | |
| .trust-label { font-size: 11px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .6px; margin-top: 4px; text-align: center; } | |
| /* ββ Behavior Bars ββββββββββββββββββββββββββββββββββ */ | |
| .behavior-bar-group { margin-bottom: 10px; } | |
| .behavior-bar-header { | |
| display: flex; | |
| justify-content: space-between; | |
| font-size: 12px; | |
| margin-bottom: 4px; | |
| color: var(--text-2); | |
| } | |
| .behavior-bar-track { height: 8px; background: var(--border); border-radius: 4px; overflow: hidden; } | |
| .behavior-bar-fill { height: 100%; border-radius: 4px; transition: width .5s, background .5s; } | |
| /* ββ Code inline ββββββββββββββββββββββββββββββββββββ */ | |
| code { | |
| background: var(--primary-50); | |
| border: 1px solid var(--primary-100); | |
| border-radius: 3px; | |
| padding: 1px 5px; | |
| font-size: 11.5px; | |
| color: var(--primary-text); | |
| font-family: 'Consolas', monospace; | |
| } | |
| /* ββ QR Code ββββββββββββββββββββββββββββββββββββββββ */ | |
| .qr-img { | |
| max-width: 180px; | |
| border: 3px solid var(--border); | |
| border-radius: var(--r); | |
| display: block; | |
| margin: 10px auto; | |
| } | |
| /* ββ Compare (side-by-side) βββββββββββββββββββββββββ */ | |
| .side-compare { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 10px; } | |
| .side-item { border: 1px solid var(--border); border-radius: var(--r-sm); padding: 14px; background: var(--surface); } | |
| .side-title { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; margin-bottom: 8px; } | |
| /* ββ Email Status βββββββββββββββββββββββββββββββββββ */ | |
| .env-row { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 5px 0; | |
| border-bottom: 1px solid var(--border); | |
| font-size: 12px; | |
| } | |
| .env-key { font-family: 'Consolas', monospace; color: var(--text-2); } | |
| /* ββ Grids ββββββββββββββββββββββββββββββββββββββββββ */ | |
| .grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } | |
| .grid-3 { display: grid; grid-template-columns: repeat(3,1fr); gap: 16px; } | |
| .grid-4 { display: grid; grid-template-columns: repeat(4,1fr); gap: 12px; } | |
| /* ββ Utilities ββββββββββββββββββββββββββββββββββββββ */ | |
| .flex { display: flex; } | |
| .flex-wrap { flex-wrap: wrap; } | |
| .flex-col { flex-direction: column; } | |
| .items-center { align-items: center; } | |
| .items-start { align-items: flex-start; } | |
| .justify-between{ justify-content: space-between; } | |
| .justify-center{ justify-content: center; } | |
| .gap-1 { gap: 4px; } | |
| .gap-2 { gap: 8px; } | |
| .gap-3 { gap: 12px; } | |
| .gap-4 { gap: 16px; } | |
| .flex-1 { flex: 1; } | |
| .min-w-0{ min-width: 0; } | |
| .mt-1 { margin-top: 4px; } | |
| .mt-2 { margin-top: 8px; } | |
| .mt-3 { margin-top: 12px; } | |
| .mt-4 { margin-top: 16px; } | |
| .mb-1 { margin-bottom: 4px; } | |
| .mb-2 { margin-bottom: 8px; } | |
| .mb-3 { margin-bottom: 12px; } | |
| .mb-4 { margin-bottom: 16px; } | |
| .ml-auto{ margin-left: auto; } | |
| .ml-4 { margin-left: 16px; } | |
| .p-3 { padding: 12px; } | |
| .p-4 { padding: 16px; } | |
| .text-sm { font-size: 12px; } | |
| .text-xs { font-size: 11px; } | |
| .text-muted{ color: var(--muted); } | |
| .text-2 { color: var(--text-2); } | |
| .text-primary { color: var(--primary); } | |
| .text-success { color: var(--success); } | |
| .text-warn { color: var(--warn); } | |
| .text-danger { color: var(--danger); } | |
| .text-center { text-align: center; } | |
| .font-bold { font-weight: 700; } | |
| .font-600 { font-weight: 600; } | |
| .font-800 { font-weight: 800; } | |
| .w-full { width: 100%; } | |
| .uppercase { text-transform: uppercase; } | |
| .letter-wide { letter-spacing: .5px; } | |
| .mono { font-family: 'Consolas', monospace; } | |
| .border-t { border-top: 1px solid var(--border); padding-top: 12px; margin-top: 12px; } | |
| /* ββ Animations βββββββββββββββββββββββββββββββββββββ */ | |
| @keyframes slideIn { from { opacity:0; transform:translateY(-6px); } to { opacity:1; transform:translateY(0); } } | |
| @keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.35} } | |
| @keyframes fadeIn { from { opacity:0; } to { opacity:1; } } | |
| /* ββ Scrollbars βββββββββββββββββββββββββββββββββββββ */ | |
| ::-webkit-scrollbar { width: 6px; height: 6px; } | |
| ::-webkit-scrollbar-track { background: var(--surface-2); } | |
| ::-webkit-scrollbar-thumb { background: var(--border-2); border-radius: 3px; } | |
| ::-webkit-scrollbar-thumb:hover { background: var(--muted); } | |
| /* ββ Responsive βββββββββββββββββββββββββββββββββββββ */ | |
| @media (max-width: 900px) { | |
| .grid-4, .grid-3 { grid-template-columns: 1fr 1fr; } | |
| .compare-grid { grid-template-columns: 1fr; } | |
| .side-compare { grid-template-columns: 1fr; } | |
| } | |
| @media (max-width: 600px) { | |
| .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } | |
| .container { padding: 16px; } | |
| .topbar { padding: 0 16px; } | |
| } | |