:root{--bg-0: #0a0e14;--bg-1: #0f1620;--bg-2: #151d29;--bg-3: #1c2734;--border: #232f3e;--border-strong: #30404f;--text-1: #e6edf3;--text-2: #9fb0c0;--text-3: #5f7488;--up: #16d9a3;--up-dim: rgba(22, 217, 163, .14);--down: #ff5d6c;--down-dim: rgba(255, 93, 108, .14);--accent: #2dd4bf;--accent-press: #14b8a6;--accent-dim: rgba(45, 212, 191, .16);--radius: 10px;--radius-sm: 7px;--shadow: 0 1px 0 rgba(255, 255, 255, .02), 0 10px 30px rgba(0, 0, 0, .45);--mono: "JetBrains Mono", "SF Mono", ui-monospace, Menlo, Consolas, monospace;color:var(--text-1);background:var(--bg-0);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}:root[data-theme=light]{--bg-0: #eef1f6;--bg-1: #ffffff;--bg-2: #f1f4f9;--bg-3: #e6ebf2;--border: #e3e8ef;--border-strong: #cfd7e3;--text-1: #18212f;--text-2: #4b5666;--text-3: #7b8799;--up: #0ca678;--up-dim: rgba(12, 166, 120, .12);--down: #e5384d;--down-dim: rgba(229, 56, 77, .12);--accent: #0d9488;--accent-press: #0f766e;--accent-dim: rgba(13, 148, 136, .14);--shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 10px 28px rgba(16, 24, 40, .08)}:root[data-theme=light] body{background-image:radial-gradient(1200px 600px at 80% -10%,rgba(13,148,136,.06),transparent 60%)}:root[data-theme=light] .appbar{background:#ffffffd9}:root[data-theme=light] .chart-loading{background:#ffffff9e}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg-0);background-image:radial-gradient(1200px 600px at 80% -10%,rgba(45,212,191,.05),transparent 60%)}button,input,select{font:inherit}button{border:1px solid var(--border-strong);background:var(--bg-2);color:var(--text-1);border-radius:var(--radius-sm);height:38px;padding:0 14px;cursor:pointer;transition:background .15s,border-color .15s,color .15s}button:hover:not(:disabled){background:var(--bg-3);border-color:var(--accent)}button:disabled{color:var(--text-3);cursor:default;opacity:.7}button.primary{border-color:transparent;background:linear-gradient(180deg,var(--accent),var(--accent-press));color:#042620;font-weight:700}button.primary:hover:not(:disabled){background:linear-gradient(180deg,#3ee0cd,var(--accent));border-color:transparent}button.ghost{background:transparent;border-color:var(--border-strong);color:var(--text-2)}button.ghost:hover:not(:disabled){color:var(--text-1)}button.ghost.danger:hover:not(:disabled){color:var(--down);border-color:var(--down)}input,select{height:38px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:0 10px;background:var(--bg-2);color:var(--text-1);transition:border-color .15s,box-shadow .15s}select{padding:0 28px 0 10px}input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}input::placeholder{color:var(--text-3)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app-frame{min-height:100vh}.appbar{position:sticky;top:0;z-index:50;height:56px;display:flex;align-items:center;gap:22px;padding:0 22px;background:#0f1620d9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.appbar-brand{display:flex;align-items:center;gap:10px;color:var(--text-1)}.appbar-brand:hover{text-decoration:none}.brand-mark{width:18px;height:18px;border-radius:5px;background:linear-gradient(135deg,var(--accent),var(--up));box-shadow:0 0 12px var(--accent-dim)}.brand-text{font-weight:800;letter-spacing:.2px;display:flex;align-items:baseline;gap:8px}.brand-sub{font-size:12px;font-weight:600;color:var(--text-3)}.appbar-nav{display:flex;gap:4px;margin-left:6px}.appbar-nav a{color:var(--text-2);font-size:14px;font-weight:600;padding:7px 12px;border-radius:var(--radius-sm)}.appbar-nav a:hover{color:var(--text-1);background:var(--bg-2);text-decoration:none}.appbar-nav a.active{color:var(--accent);background:var(--accent-dim)}.appbar-user{margin-left:auto;display:flex;align-items:center;gap:14px}.theme-toggle{width:36px;height:36px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--text-2);background:var(--bg-2);border:1px solid var(--border-strong);border-radius:999px}.theme-toggle:hover:not(:disabled){color:var(--accent);border-color:var(--accent);background:var(--bg-3)}.appbar-username{display:flex;align-items:center;gap:8px;color:var(--text-2);font-size:14px;font-weight:600}.role-badge{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);background:var(--accent-dim);padding:2px 7px;border-radius:999px}.dashboard{width:min(1680px,calc(100vw - 36px));margin:0 auto;padding:18px 0 30px}.statusbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}h1{margin:0;font-size:22px;line-height:1.15;font-weight:800;letter-spacing:.2px}.status-strip{display:flex;align-items:center;gap:10px;color:var(--text-2);font-size:13px;white-space:nowrap}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--up);box-shadow:0 0 8px var(--up)}.status-dot.error{background:var(--down);box-shadow:0 0 8px var(--down)}.status-sep{width:1px;height:12px;background:var(--border-strong)}.market-bar{display:flex;flex-direction:column;gap:10px;background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:12px 18px;margin-bottom:12px;box-shadow:var(--shadow);font-variant-numeric:tabular-nums}.mkt-row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px 18px}.mkt-metrics{border-top:1px solid var(--border);padding-top:10px}.mkt-index{display:flex;align-items:baseline;gap:8px;white-space:nowrap}.mkt-index-name{color:var(--text-2);font-size:12px;font-weight:700}.mkt-index-price{color:var(--text-1);font-size:14px;font-family:var(--mono);font-weight:700}.mkt-index-pct{font-size:12px;font-family:var(--mono);font-weight:700}.mkt-chip{display:flex;align-items:baseline;gap:8px;white-space:nowrap}.mkt-chip-label{color:var(--text-3);font-size:11px;font-weight:700}.mkt-daily-tag{margin-left:4px;padding:0 4px;border:1px solid var(--border-strong);border-radius:4px;color:var(--text-3);font-size:9px;font-weight:700}.mkt-chip-val{color:var(--text-1);font-size:14px;font-family:var(--mono);font-weight:700}.mkt-chip-val.mkt-strong{font-size:16px;font-weight:800}.mkt-slash{color:var(--text-3);margin:0 3px}.mkt-empty{color:var(--text-3);font-size:13px}.toolbar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow)}label{display:grid;gap:6px;color:var(--text-3);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}label.search{min-width:220px;flex:1}.segmented{display:flex;height:38px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden;background:var(--bg-2)}.segmented button{height:36px;border:0;border-radius:0;background:transparent;color:var(--text-2)}.segmented button:hover:not(.active){background:var(--bg-3);color:var(--text-1)}.segmented button.active{background:var(--accent-dim);color:var(--accent);font-weight:700}.error-banner{margin-top:12px;border:1px solid var(--down);background:var(--down-dim);color:var(--down);padding:10px 12px;border-radius:var(--radius-sm);font-size:14px}.info-banner{margin-top:12px;border:1px solid var(--accent);background:var(--accent-dim);color:var(--accent);padding:10px 12px;border-radius:var(--radius-sm);font-size:14px}.summary-grid{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));gap:12px;margin-top:12px}.metric{min-height:74px;background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:13px 14px;display:grid;align-content:center;gap:5px}.metric span{color:var(--text-3);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}.metric strong{color:var(--text-1);font-size:24px;font-family:var(--mono);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.metric.wide strong{font-size:13px;line-height:1.4;font-weight:600;font-family:inherit}.content-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:12px;margin-top:12px}.chart-shell,.rank-panel{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.chart-shell{display:grid;grid-template-rows:auto minmax(0,1fr);position:relative}.chart-loading{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;gap:10px;background:#0a0e149e;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);color:var(--text-2);font-size:14px;font-weight:600}.chart-refreshing{position:absolute;top:12px;right:16px;z-index:10;padding:3px 10px;border-radius:999px;background:var(--accent-dim);color:var(--accent);font-size:12px;pointer-events:none}.spinner{width:18px;height:18px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.chart-head{height:48px;padding:10px 12px 0 14px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;border-bottom:1px solid var(--border)}.chart-head strong{display:block;color:var(--text-1);font-size:14px;font-weight:700}.chart-head span{display:block;color:var(--text-3);font-size:12px;margin-top:2px}.flow-chart{width:100%;height:1280px;min-height:0}.chart-shell:fullscreen{border-radius:0;border:none;background:var(--bg-0)}.chart-shell:fullscreen .flow-chart{height:calc(100vh - 48px)}.rank-panel{padding:14px;display:grid;gap:18px;align-content:start}.panel-title{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--text-2);margin-bottom:10px}.rank-list{display:grid;gap:7px}.rank-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--border);background:var(--bg-2);border-radius:var(--radius-sm);padding:9px 11px;transition:background .12s,border-color .12s}.rank-row:hover{background:var(--bg-3);border-color:var(--border-strong)}.rank-name{color:var(--text-1);font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-meta{margin-top:2px;color:var(--text-3);font-size:12px;font-family:var(--mono);font-variant-numeric:tabular-nums}.rank-value{font-size:14px;font-weight:800;white-space:nowrap;font-family:var(--mono);font-variant-numeric:tabular-nums}.positive{color:var(--down)}.negative{color:var(--up)}.empty{color:var(--text-3);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);padding:18px 12px;text-align:center}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(900px 500px at 50% -5%,rgba(45,212,191,.08),transparent 60%),var(--bg-0)}.auth-card{width:min(400px,94vw);background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:30px;box-shadow:var(--shadow);display:grid;gap:16px}.auth-brand{display:flex;align-items:center;gap:10px;color:var(--text-2);font-weight:700;font-size:14px}.auth-card h1{margin:0;font-size:24px}.auth-sub{margin:-8px 0 0;color:var(--text-3);font-size:13px}.auth-sub.setup-hint strong{color:var(--accent)}.auth-card label{text-transform:none;letter-spacing:0;font-size:13px;color:var(--text-2)}.auth-card .primary{height:42px;margin-top:4px}.auth-foot{text-align:center;color:var(--text-3);font-size:13px}.splash{min-height:100vh;display:grid;place-items:center;background:var(--bg-0)}.splash-spinner{width:34px;height:34px;border:3px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.admin-page{width:min(1100px,calc(100vw - 36px));margin:0 auto;padding:22px 0 30px;display:grid;gap:18px}.page-head h1{margin:0 0 4px}.page-head p{margin:0;color:var(--text-3);font-size:13px}.panel{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.panel-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:16px 18px;border-bottom:1px solid var(--border)}.panel-head h2{margin:0;font-size:16px}.muted{color:var(--text-3);font-size:13px}.invite-create{display:flex;align-items:flex-end;gap:10px}.invite-create label{text-transform:none;letter-spacing:0}.data-table{width:100%;border-collapse:collapse;font-size:14px}.data-table th{text-align:left;padding:11px 18px;background:var(--bg-2);color:var(--text-3);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.data-table td{padding:12px 18px;border-top:1px solid var(--border);color:var(--text-1)}.data-table tbody tr:hover{background:var(--bg-2)}.data-table td.empty{border:none;color:var(--text-3)}.code-cell{font-family:var(--mono);font-size:13px;background:var(--bg-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);height:auto;padding:4px 10px;color:var(--accent)}.pill{display:inline-block;font-size:12px;font-weight:700;padding:2px 9px;border-radius:999px;border:1px solid var(--border-strong);color:var(--text-2)}.pill.open{color:var(--up);background:var(--up-dim);border-color:transparent}.pill.used{color:var(--text-3)}.pill.expired{color:var(--down);background:var(--down-dim);border-color:transparent}.pill.admin{color:var(--accent);background:var(--accent-dim);border-color:transparent}@media(max-width:1180px){.content-grid{grid-template-columns:1fr}.rank-panel{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.appbar{gap:12px;padding:0 14px}.brand-sub{display:none}.dashboard{width:min(100vw - 20px,1680px);padding-top:14px}.statusbar{align-items:flex-start;flex-direction:column;gap:8px}.status-strip{white-space:normal}.summary-grid,.rank-panel{grid-template-columns:1fr}.mkt-row{justify-content:flex-start;gap:8px 16px}.toolbar{align-items:stretch}.toolbar>*{width:100%}.segmented button{flex:1}.flow-chart{height:980px;min-height:0}.chart-shell:fullscreen .flow-chart{height:calc(100vh - 48px);min-height:0}}
