/* Signed-in app shell (appshell.py): left sidebar, drawer on phones. Uses the site tokens from style.css. */
.as-page{min-height:100vh}
.as{display:grid;grid-template-columns:232px 1fr;min-height:100vh}
.as-side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:var(--accent);color:#e6edf6;padding:14px 12px;overflow-y:auto;z-index:30}
.as-brandrow{display:flex;align-items:center;justify-content:space-between;padding:4px 6px 14px}
.as-side .brand,.as-top .brand{color:#e6edf6}
.as-collapse,.as-burger{display:grid;place-items:center;width:32px;height:32px;border:1px solid #2b3a58;border-radius:8px;background:transparent;color:#e6edf6;cursor:pointer;padding:0}
.as-collapse svg,.as-burger svg{width:18px;height:18px}
.as-nav{display:flex;flex-direction:column;gap:2px;flex:1}
.as-nav a{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:10px;text-decoration:none;color:#b6c3d6;font-weight:600;font-size:.93rem;white-space:nowrap}
.as-nav a svg{width:19px;height:19px;flex:none}
.as-nav a:hover{background:#16213a;color:#fff}
.as-nav a.on{background:rgba(34,197,94,.14);color:#4ade80}
.as-sec{height:1px;margin:10px 6px;background:#1f2b44;font-size:0;overflow:hidden}  /* group divider; no heading text (user, 2026-10-20) */
.as-foot{display:flex;flex-direction:column;gap:10px;border-top:1px solid #1f2b44;padding-top:12px}
.as-mkt{display:flex;align-items:center;gap:8px;margin:0;padding:7px 10px;border-radius:999px;background:#16213a;font-size:.8rem;font-weight:600}
.as-mkt i{width:8px;height:8px;border-radius:50%;background:#64748b;flex:none}
.as-mkt.open i{background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.25)}
.as-mkt span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.as-row{display:flex;align-items:center;gap:8px}
.as-user{display:flex;align-items:center;gap:8px;min-width:0;text-decoration:none;color:#e6edf6;font-weight:600;font-size:.88rem}
.as-user span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.as-av{display:grid;place-items:center;width:30px;height:30px;flex:none;border-radius:50%;font-size:.72rem;font-weight:800;color:#fff;background:#16a34a}
.as-signin{padding:6px 12px;font-size:.88rem}
.as-user[hidden],.as-signin[hidden],.as-mkt[hidden],.as-scrim[hidden]{display:none}
.as-main{min-width:0;display:flex;flex-direction:column}
.as-top{display:none}
.as-body{width:100%;max-width:1180px;margin:0 auto;padding:24px 24px 48px}
.as-body.as-full{max-width:none;padding:0}
.as-gate{max-width:520px;margin:40px auto;text-align:center}
.as-gate[hidden]{display:none}
.as-soon{max-width:560px;margin:40px auto;text-align:center}
.as-soon a:not(.btn){color:var(--brand)}
[data-signed-in][hidden],[data-signed-out][hidden]{display:none!important}
/* collapsed (desktop) */
.as.mini{grid-template-columns:68px 1fr}
.as.mini .as-nav a span,.as.mini .as-sec,.as.mini .as-user span,.as.mini .as-mkt span,.as.mini .as-side .brand{display:none}
.as.mini .as-sec{display:block;height:1px;margin:10px 6px;background:#1f2b44;font-size:0}
.as.mini .as-nav a{justify-content:center;padding:10px 0}
.as.mini .as-brandrow{justify-content:center}
.as.mini .as-collapse svg{transform:rotate(180deg)}
.as.mini .as-row{flex-direction:column}
.as.mini .as-mkt{justify-content:center;padding:8px}
.as.mini .as-signin{padding:6px 8px;font-size:.75rem}
/* phones / small tablets: sidebar becomes a drawer */
@media (max-width:900px){
 .as,.as.mini{grid-template-columns:1fr}
 .as-side{position:fixed;left:0;top:0;bottom:0;width:260px;transform:translateX(-102%);transition:transform .2s ease;box-shadow:0 0 40px rgba(0,0,0,.4)}
 .as.open .as-side{transform:none}
 .as-collapse{display:none}
 .as.mini .as-nav a span,.as.mini .as-user span,.as.mini .as-mkt span,.as.mini .as-side .brand{display:revert}
 .as-scrim{position:fixed;inset:0;background:rgba(2,6,23,.5);z-index:25}
 .as-top{display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:20;height:54px;padding:0 14px;background:var(--accent)}
 .as-body{padding:16px 16px 40px}
}
@media (prefers-reduced-motion:reduce){.as-side{transition:none}}
/* ---- /app/ Home dashboard (apphome.py / apphome.js) ---- */
.ah-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin:0 0 14px}
.ah-head h1{font-size:1.7rem;margin:0}
.ah-sub{color:var(--mute);margin:4px 0 0}
.ah-mkt,.ah-mkt[hidden]{display:flex;align-items:center;gap:8px;margin:0;padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--card);font-size:.85rem;font-weight:600}
.ah-mkt[hidden]{display:none}
.ah-mkt i{width:8px;height:8px;border-radius:50%;background:var(--mute)}.ah-mkt.open i{background:var(--up)}
.ah-quick{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.ah-quick a{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:8px 14px;text-decoration:none;font-weight:600;font-size:.9rem}
.ah-quick a.on{background:var(--brand);border-color:var(--brand);color:#fff}
.ah-quick a:hover{border-color:var(--brand)}
.ah-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:16px}
.ah-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;min-width:0}
.ah-depth{grid-column:span 2}.ah-tops{grid-column:span 4}.ah-secs{grid-column:span 3}.ah-journal,.ah-learn{grid-column:span 3}
.ah-guide{grid-column:span 6}
.ah-ch{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin:0 0 12px}
.ah-ch h2{margin:0;font-size:1rem}.ah-ch small{color:var(--mute);font-size:.78rem}
.ah-ch a{color:var(--brand);text-decoration:none;font-weight:600;font-size:.85rem}
.ah-card h3{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;margin:0 0 8px}
.ah-split{display:flex;justify-content:space-between;font-weight:700;font-size:.85rem;margin:0 0 8px}
.ah-hist{display:grid;grid-template-columns:repeat(12,1fr);gap:3px;align-items:end;height:120px}
.ah-bar{height:100%;display:flex;flex-direction:column;justify-content:flex-end}
.ah-bar i{display:block;width:100%;border-radius:4px 4px 0 0}
.ah-bar.up i{background:var(--up)}.ah-bar.dn i{background:var(--dn)}
.ah-bar b{text-align:center;font-size:.62rem;color:var(--mute);line-height:1.4}
.ah-axis{display:flex;justify-content:space-between;color:var(--mute);font-size:.72rem;margin:4px 0 0}
.ah-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ah-stock{display:block;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:0 0 8px;text-decoration:none}
.ah-stock:hover{border-color:var(--brand)}
.ah-st{display:flex;align-items:center;gap:8px}
.ah-st em{margin-left:auto;font-style:normal;font-weight:800}
.ah-stock small{display:block;color:var(--mute);font-size:.76rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ah-badge{font-size:.65rem;font-weight:800;border-radius:6px;padding:1px 6px;text-transform:uppercase}
.ah-badge.up{background:rgba(22,163,74,.14)}.ah-badge.dn{background:rgba(220,38,38,.12)}
.ah-spark{display:block;width:100%;height:40px;margin:6px 0 4px}
.ah-spark polyline,.ah-eq polyline,#ah-secchart polyline{fill:none;stroke-width:1.6;vector-effect:non-scaling-stroke}
polyline.up{stroke:var(--up)}polyline.dn{stroke:var(--dn)}
.ah-zone.up{fill:rgba(22,163,74,.18)}.ah-zone.dn{fill:rgba(220,38,38,.16)}
.ah-px{display:flex;justify-content:space-between;font-weight:700;font-size:.85rem}
.ah-note,.ah-foot{color:var(--mute);font-size:.78rem;margin:6px 0 0}
.ah-foot{margin-top:18px}
#ah-secchart{display:block;width:100%;height:90px;margin:0 0 10px}
#ah-secchart .ah-faint{stroke:var(--line);stroke-width:1}
.ah-zero{stroke:var(--mute);stroke-dasharray:3 3;stroke-width:1;opacity:.5;vector-effect:non-scaling-stroke}
.ah-seclists{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ah-seclists ol{list-style:none;margin:0;padding:0}
.ah-seclists li{display:grid;grid-template-columns:1fr auto;gap:0 8px;padding:6px 0;border-top:1px solid var(--line);font-size:.86rem}
.ah-seclists li small{grid-column:1/-1;color:var(--mute);font-size:.74rem}
.ah-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 8px}
.ah-kpis span{display:block;color:var(--mute);font-size:.75rem}.ah-kpis b{font-size:1.15rem}
.ah-eq{display:block;width:100%;height:40px;margin:0 0 8px}
.ah-link{color:var(--brand);text-decoration:none;font-weight:600;font-size:.88rem}
.ah-empty{color:var(--mute);margin:0 0 10px}
.ah-prog{display:flex;justify-content:space-between;margin:0 0 6px}
.ah-pbar{height:8px;border-radius:4px;background:var(--bg);overflow:hidden;margin:0 0 12px}.ah-pbar i{display:block;height:100%;background:var(--brand)}
.ah-guide .bl-card{display:grid;grid-template-columns:240px 1fr;gap:16px;align-items:center}
.ah-guide .bl-card>*{min-width:0}
@media (max-width:1100px){.ah-depth,.ah-tops,.ah-secs,.ah-journal,.ah-learn{grid-column:span 3}.ah-tops{grid-column:span 6}}
@media (max-width:700px){.ah-grid{grid-template-columns:1fr}.ah-grid>*{grid-column:auto!important}.ah-cols,.ah-seclists{grid-template-columns:1fr}
 .ah-guide .bl-card{grid-template-columns:1fr}.ah-head h1{font-size:1.4rem}}
/* ---- Settings (/account/, accounts.py + settings.js) ---- */
.st{max-width:720px}
.st h1{margin:0 0 4px}
.st-card h2{margin:0 0 12px}
.st-card form{display:flex;flex-direction:column;gap:6px}
.st-card label,.st-lab{font-size:.85rem;color:var(--mute);margin:10px 0 2px}
.st-card input[type=text],.st-card input:not([type]),.st-card input[type=tel],.st-card input[type=password]{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);font:inherit;width:100%}
.st-card .hint{color:var(--mute);font-size:.8rem}
.st-card .stat{padding:8px 0;border-bottom:1px solid var(--line)}
.st-card .btn{align-self:flex-start;border:0;cursor:pointer;font:inherit;font-weight:700;margin-top:10px}
.st-card .btn:disabled{opacity:.6}
.st-card .msg{min-height:1.2em;margin:4px 0 0;font-size:.9rem;color:var(--up)}.st-card .msg.err{color:var(--dn)}
.st-avs{display:flex;flex-wrap:wrap;gap:10px}
.st-av{width:44px;height:44px;border:0;border-radius:50%;color:#fff;font-weight:800;font-size:.85rem;cursor:pointer;outline-offset:3px}
.st-av[aria-pressed="true"]{outline:3px solid var(--brand)}
.st-seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;align-self:flex-start}
.st-seg-o{margin:0!important;color:var(--ink)!important;font-size:.9rem!important}
.st-seg-o input{position:absolute;opacity:0;pointer-events:none}
.st-seg-o span{display:block;padding:8px 16px;cursor:pointer}
.st-seg-o+.st-seg-o span{border-left:1px solid var(--line)}
.st-seg-o input:checked+span{background:var(--brand);color:#fff;font-weight:700}
.st-seg-o input:focus-visible+span{outline:2px solid var(--brand);outline-offset:-2px}
.st-tog{display:flex!important;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-top:1px solid var(--line);margin:8px 0 0!important;cursor:pointer}
.st-tog b{display:block;color:var(--ink);font-size:.95rem}.st-tog small{color:var(--mute)}
.st-tog input{position:absolute;opacity:0;pointer-events:none}
.st-tog i{flex:none;width:44px;height:24px;border-radius:12px;background:var(--line);position:relative;transition:background .15s}
.st-tog i::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .15s}
.st-tog input:checked+i{background:var(--brand)}.st-tog input:checked+i::after{left:23px}
.st-tog input:focus-visible+i{outline:2px solid var(--brand);outline-offset:2px}
/* 44px tap targets in Settings (2026-10-20) */
.st-seg-o span{min-height:44px;display:flex;align-items:center;justify-content:center;padding:0 18px}
.st-tog{min-height:52px}
.st button.ghost{min-height:44px;padding:10px 18px}
.st .danger{border-color:#dc262655}.st .danger h2{color:var(--dn)}
.st #del-form{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.st #del-form input{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);font:inherit}
.st .btn-danger{background:var(--dn);color:#fff}
.st .unverified{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:8px 0}
.st .note a,.st .card a:not(.btn){color:var(--brand)}
/* ---- Premium (paid) state, 2026-10-19: locks, upsell card, paywall ---- */
.as-lock{display:inline-grid;place-items:center;margin-left:auto;opacity:.7}
.as-lock svg{width:14px;height:14px}
.as-premium .as-nav .as-lock{display:none}
.as-up{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;text-decoration:none;color:#e6edf6;background:linear-gradient(135deg,rgba(34,197,94,.22),rgba(14,165,233,.14));border:1px solid rgba(34,197,94,.35)}
.as-up[hidden]{display:none}
.as-up .as-lock{margin:0;opacity:1;width:30px;height:30px;border-radius:8px;background:rgba(34,197,94,.25);color:#4ade80;flex:none}
.as-up b{display:block;font-size:.88rem}.as-up small{display:block;color:#b6c3d6;font-size:.74rem;line-height:1.3}
.as-up:hover{border-color:#4ade80}
.as-who{display:flex;flex-direction:column;min-width:0;line-height:1.2}
.as-who .as-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.as-plan{color:#93a3ba;font-weight:500;font-size:.72rem}
.as.mini .as-up span,.as.mini .as-who{display:none}
.as.mini .as-up{justify-content:center;padding:8px}
@media (max-width:900px){.as.mini .as-up span,.as.mini .as-who{display:revert}}
/* collapsed sidebar (desktop): icons only, no lock badges and no lock-only upsell tile (user, 2026-10-20) */
@media (min-width:901px){.as.mini .as-nav .as-lock,.as.mini .as-up{display:none}}
.as-pay{max-width:560px;margin:0 auto;text-align:center;position:relative}
.as-pay[hidden]{display:none}
.as-pay>.as-lock{margin:0 auto 8px;width:44px;height:44px;border-radius:12px;background:rgba(22,163,74,.14);color:var(--brand);opacity:1;display:grid}
.as-pay>.as-lock svg{width:22px;height:22px}
.as-pay h2{margin:0 0 8px}
.as-pay a:not(.btn){color:var(--brand)}
.ah-lockwrap{position:relative}
.ah-lockwrap[hidden]{display:none}
.ah-skel{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;filter:blur(5px);opacity:.55;pointer-events:none;user-select:none}
.ah-skel i{display:block;height:170px;border-radius:14px;background:linear-gradient(180deg,var(--card),var(--line));border:1px solid var(--line)}
.ah-skel i:nth-child(2){height:220px}.ah-skel i:nth-child(4){height:120px}
.ah-lockwrap .as-pay{position:absolute;left:50%;top:40px;transform:translateX(-50%);width:min(560px,calc(100% - 16px));box-shadow:0 20px 50px rgba(2,6,23,.35)}
@media (max-width:700px){.ah-skel{grid-template-columns:1fr}.ah-lockwrap .as-pay{top:16px}}
/* ---- signed-out visitors (html.as-anon, appshell ANON_SCRIPT / app.js): public header + footer, no app menu ---- */
.as-pub,.as-pubfoot{display:none}
.as-anon .as-pub,.as-anon .as-pubfoot{display:block}
.as-anon .as-side,.as-anon .as-top,.as-anon .as-scrim{display:none!important}
.as-anon .as,.as-anon .as.mini{grid-template-columns:1fr;min-height:0}
.as-anon .as-body{max-width:1080px}
.as-anon .as-body.as-full{max-width:none}
/* ---- /app/ preview for signed-in members without a plan (apphome.js preview(); user, 2026-10-19) ----
   same treatment as Live Flow's preview: gold PREVIEW bar + green Unlock, names/numbers blur(4px), charts blur(1.2px) */
.ah-hr{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ah-pv{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 14px;padding:10px 14px;
 border-radius:12px;background:#fbf0d9;border-bottom:1px solid rgba(180,120,20,.25);font-size:.9rem}
:root[data-theme="dark"] .ah-pv{background:rgba(245,184,61,.12);border-bottom-color:rgba(245,184,61,.25)}
:root[data-theme="dark"] .ah-pv{background:rgba(245,184,61,.12);border-bottom-color:rgba(245,184,61,.25)}
.ah-pv b{color:#d4930d;text-transform:uppercase;letter-spacing:.06em;font-weight:800}
.ah-pv[hidden]{display:none}
.ah-unlock{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;background:#16a34a;color:#fff;font-weight:800;
 text-decoration:none;box-shadow:0 6px 16px -6px rgba(22,163,74,.55)}
.ah-unlock:hover{background:#15803d}
.ah-fake{user-select:none;-webkit-user-select:none}
.ah-preview .ah-stock b,.ah-preview .ah-stock small,.ah-preview .ah-stock em,.ah-preview .ah-px,.ah-preview .ah-split,
.ah-preview #ah-secsum,.ah-preview #ah-asof,.ah-preview .ah-bar b,.ah-preview .ah-seclists li,.ah-preview .ah-kpis b{filter:blur(4px);user-select:none;-webkit-user-select:none}
.ah-preview .ah-spark,.ah-preview #ah-secchart,.ah-preview .ah-eq,.ah-preview .ah-bar i{filter:blur(1.2px)}
.ah-preview .ah-stock{pointer-events:none}.st [hidden]{display:none!important}  /* e.g. the hidden delete-form stubs: .st #del-form{display:flex} must not show them */
.st-card .btn{min-height:44px}

/* ---- sidebar look (2026-10-20): light = light-grey panel + white active pill; dark = same layout, dark tokens ---- */
.as-nav a{border-radius:10px;transition:background .12s,color .12s}
.as-nav a .as-lock{color:#64748b;opacity:.8}
.as-up{position:relative}
.as-up::after{content:"\2192";margin-left:auto;padding-left:6px;font-weight:800;opacity:.7}
.as.mini .as-up::after{display:none}
.as-row2{display:flex;align-items:center;gap:8px}
.as-row2 .as-mkt{flex:1;min-width:0}
.as-tsw{display:inline-flex;flex:none;gap:2px;padding:2px;margin-left:auto;border:1px solid #1f2b44;border-radius:999px}
.as-tsw button{display:grid;place-items:center;width:30px;height:28px;padding:0;border:0;border-radius:999px;background:transparent;color:#8b98ad;cursor:pointer}
.as-tsw button svg{width:16px;height:16px}
.as-tsw button[aria-pressed="true"]{background:#1a2236;color:#fff}
.as.mini .as-row2{flex-direction:column}
.as.mini .as-tsw{flex-direction:column;margin:0}
@media (max-width:900px){.as.mini .as-row2{flex-direction:row}.as.mini .as-tsw{flex-direction:row;margin-left:auto}}
:root[data-theme="dark"] .as-nav a.on{background:#151d2e;color:#fff;box-shadow:0 1px 2px rgba(0,0,0,.45)}
:root[data-theme="dark"] .as-nav a.on svg{color:#4ade80}
:root:not([data-theme="dark"]) .as-side,:root:not([data-theme="dark"]) .as-top{background:#f4f5f7;color:#1e293b;border-right:1px solid #e5e7eb}
:root:not([data-theme="dark"]) .as-top{border-right:0;border-bottom:1px solid #e5e7eb}
:root:not([data-theme="dark"]) .as-side .brand,:root:not([data-theme="dark"]) .as-top .brand,:root:not([data-theme="dark"]) .as-user{color:#0f172a}
:root:not([data-theme="dark"]) .as-collapse,:root:not([data-theme="dark"]) .as-burger{background:#fff;border-color:#e2e5ea;color:#334155}
:root:not([data-theme="dark"]) .as-nav a{color:#334155}
:root:not([data-theme="dark"]) .as-nav a:hover{background:rgba(15,23,42,.05);color:#0f172a}
:root:not([data-theme="dark"]) .as-nav a.on{background:#fff;color:#0f172a;box-shadow:0 1px 2px rgba(15,23,42,.08),0 3px 10px rgba(15,23,42,.06)}
:root:not([data-theme="dark"]) .as-nav a.on svg{color:#16a34a}
:root:not([data-theme="dark"]) .as-nav a .as-lock{color:#94a3b8}
:root:not([data-theme="dark"]) .as-sec,:root:not([data-theme="dark"]) .as.mini .as-sec{background:#e3e6ea}
:root:not([data-theme="dark"]) .as-foot{border-top-color:#e5e7eb}
:root:not([data-theme="dark"]) .as-mkt{background:#fff;color:#334155;border:1px solid #e5e7eb}
:root:not([data-theme="dark"]) .as-up{background:linear-gradient(135deg,#ffffff,#f4f1ff);border:1px solid #e9e4fb;color:#1e293b;box-shadow:0 1px 3px rgba(15,23,42,.06)}
:root:not([data-theme="dark"]) .as-up:hover{border-color:#c4b5fd}
:root:not([data-theme="dark"]) .as-up .as-lock{background:#ede9fe;color:#7c3aed}
:root:not([data-theme="dark"]) .as-up small{color:#64748b}
:root:not([data-theme="dark"]) .as-plan{color:#64748b}
:root:not([data-theme="dark"]) .as-tsw{background:#fff;border-color:#e5e7eb}
:root:not([data-theme="dark"]) .as-tsw button{color:#64748b}
:root:not([data-theme="dark"]) .as-tsw button[aria-pressed="true"]{background:#eef0f3;color:#0f172a}
@media (max-width:900px){:root:not([data-theme="dark"]) .as.open .as-side{box-shadow:0 0 40px rgba(15,23,42,.18)}}

/* market status gets its own line so its text is not cut off (user 2026-10-24) */
.as-row2{flex-wrap:wrap}
.as-row2 .as-mkt{flex:1 1 100%}
.as-mkt span{white-space:normal;line-height:1.3}
.as-row2 .as-tsw{margin-left:auto}
.as.mini .as-mkt span{display:none}

/* light/dark switch next to the StoxGud logo, not at the bottom of the sidebar (user 2026-10-25) */
.as-brandrow .as-tsw{margin-left:auto;margin-right:8px}
.as.mini .as-brandrow{flex-direction:column;gap:10px}
.as.mini .as-brandrow .as-tsw{flex-direction:column;margin:0}
@media (max-width:900px){.as.mini .as-brandrow{flex-direction:row}.as.mini .as-brandrow .as-tsw{flex-direction:row;margin:0 8px 0 auto}}
.as-brandrow{gap:8px}

/* sidebar top (user 2026-10-25): collapse arrow on top beside the logo, light/dark switch underneath it */
@media (min-width:901px){
.as-brandrow{flex-wrap:wrap}
.as-brandrow .as-collapse{order:1;margin-left:auto}
.as-brandrow::after{content:"";order:2;flex-basis:100%;height:0}
.as-brandrow .as-tsw{order:3;margin:8px 0 0 auto}
.as.mini .as-brandrow{flex-wrap:nowrap}
.as.mini .as-brandrow::after{display:none}
.as.mini .as-brandrow .as-collapse{margin:0}
.as.mini .as-brandrow .as-tsw{margin:0}
}

/* tighter sidebar (user 2026-10-25): less space at the top, theme switch under the logo, menus closer together */
.as-side{padding-top:10px}
.as-brandrow{padding:2px 6px 4px}
@media (min-width:901px){.as-brandrow .as-tsw{margin:6px auto 0 0}}
.as-nav{gap:0}
.as-nav a{padding:7px 10px}
.as-sec{margin:5px 6px}
.as.mini .as-sec{margin:5px 6px}
.as.mini .as-nav a{padding:8px 0}
/* phones: the switch in the top bar, right after the logo (user 2026-10-25) */
.as-top .as-tsw{margin-left:2px}

/* /app/: the page has its own Previous-session bar (2026-10-25) */
.ah-board #gf-dlbar{display:none}
/* collapsed sidebar shows the logo mark only (2026-10-26) */
.as.mini .as-side .brand{display:inline-flex;font-size:0}
.as.mini .as-side .brand .brand-mk{width:28px;height:28px;margin:0}
/* Live Flow's views under it in the sidebar (2026-10-29) */
.as-nav a[data-sub]{padding-left:30px;font-size:.86rem;padding-top:6px;padding-bottom:6px}
.as-nav a[data-sub] svg{width:16px;height:16px}
.as.mini .as-nav a[data-sub]{padding-left:0}

/* ---------- app frame neon look (user 2026-10-30) ---------- */
:root[data-theme="dark"] .as-side { background:
  radial-gradient(120% 30% at 0% 0%, rgba(34, 197, 94, .14), transparent 70%),
  radial-gradient(120% 30% at 100% 100%, rgba(139, 92, 246, .14), transparent 70%),
  linear-gradient(180deg, #070b11, #05080c); border-right: 0;
  box-shadow: inset -1px 0 0 rgba(34, 197, 94, .18), 1px 0 0 rgba(56, 189, 248, .10); }
:root:not([data-theme="dark"]) .as-side { background:
  radial-gradient(120% 30% at 0% 0%, rgba(34, 197, 94, .10), transparent 70%),
  radial-gradient(120% 30% at 100% 100%, rgba(139, 92, 246, .08), transparent 70%), #f6f8f9; }
.as-side .brand-mk { filter: drop-shadow(0 0 8px rgba(34, 197, 94, .55)); }
.as-nav a { position: relative; transition: background .15s, color .15s, box-shadow .15s; }
.as-nav a svg { transition: filter .15s, color .15s; }
:root[data-theme="dark"] .as-nav a:hover { background: linear-gradient(90deg, rgba(56, 189, 248, .12), rgba(56, 189, 248, .02)); color: #fff; }
:root:not([data-theme="dark"]) .as-nav a:hover { background: linear-gradient(90deg, rgba(34, 197, 94, .10), rgba(34, 197, 94, .01)); }
.as-nav a.on::before { content: ""; position: absolute; left: -12px; top: 7px; bottom: 7px; width: 3px; border-radius: 0 3px 3px 0;
  background: linear-gradient(180deg, #4ade80, #16a34a); box-shadow: 0 0 10px rgba(34, 197, 94, .9); }
:root[data-theme="dark"] .as-nav a.on { background: linear-gradient(90deg, rgba(34, 197, 94, .22), rgba(34, 197, 94, .04)); color: #fff;
  box-shadow: inset 0 0 0 1px rgba(34, 197, 94, .35), 0 0 18px rgba(34, 197, 94, .12); }
:root:not([data-theme="dark"]) .as-nav a.on { background: linear-gradient(90deg, rgba(34, 197, 94, .16), #fff); color: #0f172a;
  box-shadow: inset 0 0 0 1px rgba(34, 197, 94, .35), 0 3px 12px rgba(34, 197, 94, .12); }
:root[data-theme="dark"] .as-nav a.on svg { color: #4ade80; filter: drop-shadow(0 0 5px rgba(74, 222, 128, .8)); }
:root:not([data-theme="dark"]) .as-nav a.on svg { color: #16a34a; }
.as-nav a[data-sub] { margin-left: 10px; }
.as-nav a[data-sub]::after { content: ""; position: absolute; left: -2px; top: 0; bottom: 0; width: 1px; background: linear-gradient(180deg, rgba(34, 197, 94, .5), rgba(56, 189, 248, .25)); }
.as-nav a[data-sub].on::before { left: -3px; }
:root[data-theme="dark"] .as-sec { background: linear-gradient(90deg, rgba(34, 197, 94, .45), rgba(56, 189, 248, .25) 50%, transparent) !important; }
:root:not([data-theme="dark"]) .as-sec { background: linear-gradient(90deg, rgba(34, 197, 94, .35), rgba(56, 189, 248, .2) 50%, transparent) !important; }
:root[data-theme="dark"] .as-mkt { background: rgba(255, 255, 255, .04); border: 1px solid rgba(148, 163, 184, .18); }
.as-mkt.open { border-color: rgba(34, 197, 94, .5); box-shadow: 0 0 14px rgba(34, 197, 94, .18); }
.as-mkt.open i { animation: asmktpulse 1.6s ease-in-out infinite; }
@keyframes asmktpulse { 50% { box-shadow: 0 0 0 6px rgba(34, 197, 94, 0), 0 0 10px rgba(34, 197, 94, .9); } }
@media (prefers-reduced-motion: reduce) { .as-mkt.open i { animation: none; } }
.as-up { border: 1px solid rgba(139, 92, 246, .45) !important; box-shadow: 0 0 18px rgba(139, 92, 246, .22); }
/* phone top bar */
:root[data-theme="dark"] .as-top { background: linear-gradient(180deg, rgba(8, 12, 18, .92), rgba(5, 8, 12, .86)); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); border-bottom: 0; }
:root:not([data-theme="dark"]) .as-top { background: rgba(246, 248, 249, .9); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.as-top::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; pointer-events: none;
  background: linear-gradient(90deg, rgba(34, 197, 94, .8), rgba(56, 189, 248, .5) 50%, rgba(139, 92, 246, .6)); }
.as-top .brand-mk { filter: drop-shadow(0 0 8px rgba(34, 197, 94, .55)); }
@media (max-width: 900px) { .as-nav a.on::before { left: -12px; } }

/* speed (2026-10-30): the open-market dot fades (opacity is cheap) instead of animating a glow shadow every frame */
.as-mkt.open i { animation: asmktfade 1.6s ease-in-out infinite; }
@keyframes asmktfade { 50% { opacity: .35; } }
@media (prefers-reduced-motion: reduce) { .as-mkt.open i { animation: none; } }
