:root{--bg: #121212;--surface: #181818;--surface-warm: #1f1f1f;--fg: #ffffff;--fg-2: #fdfdfd;--muted: #b3b3b3;--meta: #cbcbcb;--border: #4d4d4d;--border-soft: rgba(255, 255, 255, .1);--accent: #1ed760;--accent-on: #000000;--accent-hover: #1db954;--accent-active: color-mix(in oklab, var(--accent), black 10%);--success: #1ed760;--warn: #ffa42b;--danger: #f3727f;--market-up: #FF4D4F;--market-down: #3D7DFF;--market-flat: #9AA4B8;--status-info: #539df5;--font-display: "SpotifyMixUITitle", "CircularSp", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-body: "SpotifyMixUI", "CircularSp", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--text-xs: 10px;--text-sm: 11px;--text-md: 12px;--text-base: 14px;--text-lg: 16px;--text-xl: 18px;--text-2xl: 20px;--text-kpi: 22px;--leading-body: 1.5;--leading-tight: 1;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-sm: 9999px;--radius-md: 6px;--radius-lg: 8px;--radius-card: 12px;--radius-pill: 9999px;--elev-raised: rgba(0, 0, 0, .3) 0px 8px 8px;--focus-ring: 0 0 0 3px rgba(30, 215, 96, .4);--motion-fast: .15s;--motion-base: .2s;--ease-standard: ease;--sidebar-w: 240px;--topbar-h: 56px;--accent-soft: color-mix(in oklab, var(--accent) 18%, transparent);--fg-soft: color-mix(in oklab, var(--fg) 6%, transparent);--surface-elevated: #252525}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-body);-webkit-font-smoothing:antialiased}img,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}h1,h2,h3,h4{font-family:var(--font-display);margin:0;font-weight:700}p{margin:0}.num{font-variant-numeric:tabular-nums;font-family:var(--font-mono)}.mono{font-family:var(--font-mono)}.app{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--surface);border-right:1px solid var(--border-soft);display:flex;flex-direction:column;padding:var(--space-4) 0;position:fixed;inset:0 auto 0 0;z-index:20;transition:transform var(--motion-base) cubic-bezier(.23,1,.32,1)}.sidebar-brand{padding:var(--space-2) var(--space-4) var(--space-6);font-size:var(--text-2xl);font-weight:700;letter-spacing:-.02em}.sidebar-brand span{color:var(--accent)}.nav-group{padding:0 var(--space-3) var(--space-4)}.nav-group-label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:var(--space-2) var(--space-3);margin-bottom:2px}.nav-group-label .nav-group-icon{flex-shrink:0;width:14px;height:14px;color:color-mix(in oklab,var(--status-info) 55%,var(--muted));opacity:.95}.nav-group-label .nav-group-icon svg{display:block;width:100%;height:100%}.nav-group-label .nav-group-text{flex:1;min-width:0}.nav-item{display:block;padding:8px var(--space-3) 8px calc(var(--space-3) + 14px + var(--space-2));border-radius:var(--radius-md);font-size:var(--text-md);font-weight:400;color:var(--muted);position:relative}.nav-item:hover{color:var(--fg);background:color-mix(in oklab,var(--fg) 4%,transparent)}.nav-item.active{color:var(--fg);font-weight:700;background:color-mix(in oklab,var(--fg) 8%,transparent)}.nav-item.active:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:2px;background:var(--status-info)}.nav-admin-only{display:none}body[data-role=admin] .nav-admin-only{display:block}.shell{flex:1;margin-left:var(--sidebar-w);min-width:0;display:flex;flex-direction:column}.topbar{height:var(--topbar-h);flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-6);background:var(--surface);border-bottom:1px solid var(--border-soft);gap:var(--space-4)}.topbar-title{font-size:var(--text-lg);font-weight:700}.topbar-actions{display:flex;align-items:center;gap:var(--space-3)}.menu-btn{display:none;padding:var(--space-2);border-radius:var(--radius-md);color:var(--muted)}.menu-btn:hover{color:var(--fg);background:var(--surface-warm)}.global-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-6);background:color-mix(in oklab,var(--warn) 18%,var(--surface));border-bottom:1px solid color-mix(in oklab,var(--warn) 35%,transparent);font-size:var(--text-md)}.global-banner a{color:var(--fg);font-weight:700;text-decoration:underline;text-underline-offset:2px}.user-chip{display:flex;align-items:center;gap:var(--space-3);padding:6px 10px 6px 6px;border-radius:var(--radius-pill);background:var(--surface-warm);border:1px solid var(--border-soft);font-size:var(--text-sm)}.user-chip:hover{border-color:var(--border)}.user-menu-wrap{position:relative}.user-chip.open{border-color:var(--border);background:color-mix(in oklab,var(--fg) 6%,var(--surface-warm))}.user-menu-panel{position:absolute;right:0;top:calc(100% + 6px);min-width:168px;padding:var(--space-2);background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--elev-raised);z-index:40}.user-menu-link{display:block;padding:8px 12px;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:600;color:var(--fg)}.user-menu-link:hover{background:color-mix(in oklab,var(--fg) 6%,transparent)}.user-menu-link-muted{color:var(--muted);font-weight:400}.avatar{width:32px;height:32px;border-radius:50%;background:color-mix(in oklab,var(--status-info) 40%,var(--surface-warm));display:grid;place-items:center;font-size:12px;font-weight:700}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-pill);font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.badge-user{background:color-mix(in oklab,var(--muted) 25%,transparent);color:var(--meta)}.badge-admin{background:color-mix(in oklab,var(--status-info) 30%,transparent);color:var(--fg)}.badge-running{background:color-mix(in oklab,var(--success) 22%,transparent);color:var(--success)}.badge-warn{background:color-mix(in oklab,var(--warn) 22%,transparent);color:var(--warn)}.badge-info{background:color-mix(in oklab,var(--status-info) 22%,transparent);color:var(--status-info)}.badge-neutral{background:color-mix(in oklab,var(--muted) 18%,transparent);color:var(--muted)}.main{flex:1;padding:var(--space-6);overflow-x:auto}.page-header{margin-bottom:var(--space-6)}.page-header h1{font-size:var(--text-2xl)}.page-header p{margin-top:var(--space-2);color:var(--muted);font-size:var(--text-md)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:8px 16px;border-radius:var(--radius-pill);font-size:var(--text-md);font-weight:700;letter-spacing:.03em;text-transform:uppercase;transition:background var(--motion-fast) var(--ease-standard),transform .05s ease}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--surface-warm);color:var(--fg)}.btn-primary:hover{background:color-mix(in oklab,var(--fg) 12%,var(--surface-warm))}.btn-accent{background:var(--accent);color:var(--accent-on)}.btn-accent:hover{background:var(--accent-hover)}.btn-ghost{color:var(--muted);text-transform:none;letter-spacing:normal;font-weight:600}.btn-ghost:hover{color:var(--fg)}.btn-sm{padding:6px 12px;font-size:var(--text-sm)}.card{background:var(--surface);border-radius:var(--radius-card);padding:var(--space-4);box-shadow:var(--elev-raised)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4)}.card-header h2{font-size:var(--text-base);font-weight:700}.card-header .link{font-size:var(--text-sm);font-weight:600;color:var(--muted)}.card-header .link:hover{color:var(--fg);text-decoration:underline}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4);margin-bottom:var(--space-6)}.kpi-card{min-height:104px;display:flex;flex-direction:column;gap:var(--space-2)}.kpi-label{font-size:var(--text-sm);color:var(--muted);font-weight:600}.kpi-body{display:flex;flex-direction:column;gap:var(--space-1)}.kpi-value{font-size:var(--text-kpi);font-weight:700;line-height:var(--leading-tight)}.kpi-meta{font-size:var(--text-sm);color:var(--meta)}.status-dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:middle}.status-dot.on{background:var(--success);box-shadow:0 0 0 4px color-mix(in oklab,var(--success) 25%,transparent)}.status-dot.off{background:var(--muted)}.status-dot.partial{background:var(--warn);box-shadow:0 0 0 4px color-mix(in oklab,var(--warn) 25%,transparent)}.market-up{color:var(--market-up)}.market-down{color:var(--market-down)}.market-flat{color:var(--market-flat)}.layout-2-1{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:var(--space-4);align-items:start}.stack-col{display:flex;flex-direction:column;gap:var(--space-4)}.ds-table-wrap{overflow:auto;border-radius:var(--radius-md)}.ds-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.ds-table th{position:sticky;top:0;z-index:1;background:var(--surface-warm);text-align:left;padding:10px 12px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border-soft);white-space:nowrap}.ds-table td{padding:10px 12px;border-bottom:1px solid var(--border-soft);vertical-align:middle}.ds-table tbody tr:hover{background:var(--fg-soft)}.ds-table tbody tr.is-interactive{cursor:pointer}.ds-table tbody tr.is-interactive:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;background:var(--fg-soft)}.ds-table .num-col{text-align:right}.pill-strategy{display:inline-flex;padding:2px 8px;border-radius:var(--radius-pill);font-size:11px;font-weight:700;border:1px solid var(--border-soft);color:var(--meta)}.bar-chart{display:flex;flex-direction:column;gap:var(--space-3)}.bar-row{display:grid;grid-template-columns:28px 1fr 36px;gap:var(--space-2);align-items:center;font-size:var(--text-sm)}.bar-track{height:8px;background:var(--surface-warm);border-radius:var(--radius-pill);overflow:hidden}.bar-fill{height:100%;background:color-mix(in oklab,var(--status-info) 70%,var(--accent));border-radius:inherit;width:0;transition:width .4s cubic-bezier(.23,1,.32,1)}.access-list{list-style:none;margin:0;padding:0}.access-list li{display:flex;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border-soft);font-size:var(--text-sm)}.access-list li:last-child{border-bottom:none}.access-list .event{color:var(--fg);font-weight:600}.access-list .time{color:var(--muted);font-family:var(--font-mono);font-size:var(--text-sm);white-space:nowrap}.empty-state{text-align:center;padding:var(--space-8) var(--space-4);color:var(--muted)}.empty-state p{margin-top:var(--space-2);font-size:var(--text-md);max-width:32ch;margin-inline:auto}.empty-state .btn{margin-top:var(--space-4)}.skeleton{background:linear-gradient(90deg,var(--surface-warm) 0%,color-mix(in oklab,var(--fg) 8%,var(--surface-warm)) 50%,var(--surface-warm) 100%);background-size:200% 100%;animation:shimmer 1.2s ease-in-out infinite;border-radius:var(--radius-md)}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.skeleton-line{height:14px;margin-bottom:8px}.skeleton-line.lg{height:22px;width:60%}.skeleton-line.sm{width:40%}.skeleton-table-row{height:36px;margin-bottom:4px}.sparkline{height:32px;margin-top:auto;opacity:.5;background:linear-gradient(180deg,transparent,color-mix(in oklab,var(--market-down) 25%,transparent));border-radius:var(--radius-md);position:relative;overflow:hidden}.sparkline:after{content:"";position:absolute;top:40%;right:0;bottom:0;left:0;border-top:2px solid var(--market-down)}.sparkline-up{background:linear-gradient(180deg,transparent,color-mix(in oklab,var(--market-up) 22%,transparent))}.sparkline-up:after{border-top-color:var(--market-up)}.demo-chip{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);padding:4px 10px;border-radius:var(--radius-pill);border:1px solid color-mix(in oklab,var(--accent) 35%,transparent);margin-right:var(--space-2)}.login-page{min-height:100vh;display:grid;place-items:center;padding:var(--space-6)}.login-card{width:min(420px,100%);padding:var(--space-8)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--space-4)}.field label{font-size:var(--text-sm);color:var(--muted);font-weight:600}.input{width:100%;padding:12px 16px;background:var(--surface-warm);border:1px solid var(--border-soft);border-radius:var(--radius-pill);color:var(--fg)}.input:focus{outline:none;box-shadow:var(--focus-ring);border-color:var(--accent)}.input-sm{width:auto;padding:7px 12px;border-radius:var(--radius-md)}.launcher-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-4)}.launcher-card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);background:var(--surface);border-radius:var(--radius-card);transition:background var(--motion-fast) var(--ease-standard)}.launcher-card:hover{background:var(--surface-warm)}.launcher-card h3{font-size:var(--text-base)}.launcher-card p{font-size:var(--text-sm);color:var(--muted)}.launcher-card .route{font-family:var(--font-mono);font-size:11px;color:var(--meta)}.launcher-section{margin-bottom:var(--space-8)}.launcher-section h2{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:var(--space-4)}.filter-bar{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;margin-bottom:var(--space-4)}.tabs{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tab{padding:6px 14px;border-radius:var(--radius-pill);font-size:var(--text-sm);font-weight:600;color:var(--muted);background:var(--surface-warm)}.tab.active{color:var(--fg);background:color-mix(in oklab,var(--status-info) 25%,var(--surface-warm))}@media(max-width:1280px){.kpi-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:1024px){.layout-2-1{grid-template-columns:1fr}}@media(max-width:896px){.menu-btn{display:inline-flex}.sidebar{transform:translate(-100%)}body.sidebar-open .sidebar{transform:translate(0)}.shell{margin-left:0}.sidebar-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in oklab,var(--bg) 55%,transparent);z-index:15}body.sidebar-open .sidebar-overlay{display:block}}@media(max-width:430px){.main{padding:var(--space-4)}.topbar{padding:0 var(--space-4)}.global-banner{padding:var(--space-3) var(--space-4);flex-direction:column;align-items:flex-start}.kpi-grid{grid-template-columns:1fr}.user-chip .email{display:none}}
