/* Layout: chat-first research terminal — left rail (chats + tools), main column (conversation or tool view).
   Two calm themes, every color is a token. Night (default dark): soft off-white text on deep slate — no pure white on
   black, which glares. Paper (light): warm off-white background and charcoal text. Both pass WCAG AA contrast
   (body text ~13:1, secondary text ≥ 5:1, colored text ≥ 4.5:1). The theme follows the phone's setting unless the
   user picks one in Settings (data-theme on <html>). */
:root{color-scheme:dark;
--bg:#12171e;--panel:#181f28;--panel2:#202935;--line:#2b3542;--text:#dde3ea;--mute:#a1adbb;
--green:#55bba8;--red:#ec8a83;--amber:#e2bb68;--blue:#80b3f5;--purple:#c3a2e8;--neutral:#55606e;--ink:#12171e;
--green-rgb:85,187,168;--red-rgb:236,138,131;--shadow:rgba(0,0,0,.35);
--font:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;--mono:'IBM Plex Mono',ui-monospace,Consolas,monospace;
--rail:268px}
@media(prefers-color-scheme:light){:root:not([data-theme=dark]){color-scheme:light;
  --bg:#f3efe6;--panel:#fbf8f2;--panel2:#ece6da;--line:#ddd5c6;--text:#2a2e35;--mute:#5b6370;
  --green:#1b7c6a;--red:#b8433b;--amber:#8a5d05;--blue:#2a63b8;--purple:#7b4fb0;--neutral:#a3a9b2;--ink:#ffffff;
  --green-rgb:27,124,106;--red-rgb:184,67,59;--shadow:rgba(60,50,30,.14)}}
:root[data-theme=light]{color-scheme:light;
  --bg:#f3efe6;--panel:#fbf8f2;--panel2:#ece6da;--line:#ddd5c6;--text:#2a2e35;--mute:#5b6370;
  --green:#1b7c6a;--red:#b8433b;--amber:#8a5d05;--blue:#2a63b8;--purple:#7b4fb0;--neutral:#a3a9b2;--ink:#ffffff;
  --green-rgb:27,124,106;--red-rgb:184,67,59;--shadow:rgba(60,50,30,.14)}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.55 var(--font)}
a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}
input,select,textarea{background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:9px 11px;font:inherit}
input:focus,select:focus,textarea:focus{outline:2px solid var(--blue);outline-offset:0;border-color:transparent}
button{background:var(--blue);color:var(--ink);border:0;border-radius:8px;padding:9px 14px;font:600 14px var(--font);cursor:pointer}
button.ghost{background:var(--panel2);color:var(--text);border:1px solid var(--line)}
a.linkbtn{display:inline-block;background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:9px 14px;font:600 14px var(--font)}a.linkbtn:hover{border-color:var(--blue);text-decoration:none}
button:disabled{opacity:.5;cursor:default}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.up{color:var(--green)}.dn{color:var(--red)}.mute{color:var(--mute)}.amber{color:var(--amber)}
.mono{font-family:var(--mono)}
[hidden]{display:none!important}

/* ---------- shell */
.shell{display:flex;height:100%}
.rail{width:var(--rail);flex:none;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;
  padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
.rail .top{padding:14px 14px 8px;display:flex;flex-direction:column;gap:10px}
.logo{font-weight:700;font-size:17px;letter-spacing:.2px;display:flex;align-items:center;gap:8px}
.logo b{color:var(--green);font-weight:700}
.logo svg{flex:none}
.newchat{width:100%;display:flex;align-items:center;gap:8px;justify-content:center}
.nav{display:flex;flex-direction:column;gap:2px;padding:4px 8px}
.nav a{color:var(--text);padding:8px 10px;border-radius:8px;display:flex;align-items:center;gap:10px;font-size:13.5px}
.nav a:hover{background:var(--panel2);text-decoration:none}.nav a.on{background:var(--panel2)}
.nav a svg{opacity:.8}
.rail h5{margin:12px 18px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--mute);font-weight:600}
.convs{flex:1;overflow-y:auto;padding:0 8px 8px}
.conv{display:flex;align-items:center;border-radius:8px}
.conv a{flex:1;min-width:0;color:var(--text);padding:7px 10px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv:hover{background:var(--panel2)}.conv.on{background:var(--panel2)}.conv a:hover{text-decoration:none}
.conv button{background:none;color:var(--mute);padding:4px 8px;opacity:0;font-weight:400}
.conv:hover button,.conv.on button{opacity:1}
.acct{border-top:1px solid var(--line);padding:12px 14px;font-size:13px;display:flex;flex-direction:column;gap:8px}
.quota{height:4px;background:var(--bg);border-radius:4px;overflow:hidden}.quota i{display:block;height:100%;background:var(--green)}
.main{flex:1;min-width:0;display:flex;flex-direction:column;height:100%}
.topbar{display:none;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--panel);
  padding-top:calc(10px + env(safe-area-inset-top,0px))}
.topbar button{background:none;color:var(--text);padding:6px}
.scrim{display:none}
.view{flex:1;overflow-y:auto;min-height:0}
.wrap{max-width:1180px;margin:0 auto;padding:18px 20px 40px}
@media(max-width:860px){
  .rail{position:fixed;inset:0 auto 0 0;z-index:30;transform:translateX(-100%);transition:transform .2s ease}
  .shell.open .rail{transform:none}
  .shell.open .scrim{display:block;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:20}
  .topbar{display:flex}
  .wrap{padding:14px 16px 32px}
}

/* ---------- chat */
.chat{display:flex;flex-direction:column;height:100%}
.msgs{flex:1;overflow-y:auto;min-height:0}
.msgs .inner{max-width:880px;margin:0 auto;padding:20px 20px 12px;display:flex;flex-direction:column;gap:18px}
.msg{display:flex;gap:12px;min-width:0}
.msg .av{width:30px;height:30px;border-radius:8px;flex:none;display:grid;place-items:center;font-size:12px;font-weight:700}
.msg.user{justify-content:flex-end}
.msg.user .bubble{background:var(--panel2);border:1px solid var(--line);border-radius:14px 14px 4px 14px;padding:10px 14px;max-width:80%;white-space:pre-wrap;overflow-wrap:anywhere}
.msg.bot .av{background:var(--green);color:var(--ink)}
.msg.bot .body{flex:1;min-width:0}
.md{line-height:1.65;overflow-wrap:anywhere}.md p{margin:0 0 10px}.md ul,.md ol{margin:0 0 10px;padding-left:20px}
.md h1,.md h2,.md h3{font-size:16px;margin:14px 0 6px;text-transform:none;color:var(--text);letter-spacing:0}
.md code{font-family:var(--mono);background:var(--panel2);padding:1px 5px;border-radius:4px;font-size:12.5px}
.md blockquote{margin:8px 0;padding:6px 12px;border-left:3px solid var(--amber);color:var(--mute)}
.md table{border-collapse:collapse;margin:8px 0;display:block;overflow-x:auto}.md td,.md th{border:1px solid var(--line);padding:5px 8px}
.src{font-size:11px;color:var(--mute);margin-top:4px}
.composer{border-top:1px solid var(--line);background:var(--bg);padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))}
.composer form{max-width:880px;margin:0 auto;display:flex;gap:8px;align-items:flex-end}
.composer textarea{flex:1;resize:none;min-height:46px;max-height:180px;border-radius:12px;padding:12px 14px;background:var(--panel)}
.composer button{height:46px;border-radius:12px;padding:0 16px}
.composer .fine{max-width:880px;margin:6px auto 0;font-size:11px;color:var(--mute);text-align:center}
.hello{max-width:760px;margin:8vh auto 0;padding:0 20px;text-align:center}
.hello h1{font-size:28px;margin:0 0 6px;text-wrap:balance;letter-spacing:-.3px}
.hello p{color:var(--mute);margin:0 auto 22px;max-width:56ch}
.sugg{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:10px;text-align:left}
.sugg button{background:var(--panel);color:var(--text);border:1px solid var(--line);font-weight:400;text-align:left;padding:12px 14px;border-radius:12px}
.sugg button:hover{border-color:var(--blue)}
.typing{display:flex;gap:5px;padding:8px 0}.typing i{width:7px;height:7px;border-radius:50%;background:var(--mute);animation:blink 1.2s infinite}
.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}
@keyframes blink{0%,80%,100%{opacity:.25}40%{opacity:1}}

/* ---------- chat cards */
.cards{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 14px;min-width:0}
.card h4{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--mute);font-weight:600}
.tcard .row1{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap}
.tcard .nm{flex:1;min-width:160px}.tcard .nm b{font-family:var(--mono);font-size:15px}
.tcard .px{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}
.tcard svg.spark{flex:none}
.hz{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0}
.hz div{background:var(--bg);border-radius:8px;padding:8px 10px;border:1px solid var(--line)}
.hz div.f{border-color:var(--blue)}
.hz small{display:block;color:var(--mute);font-size:11px}.hz b{font-size:12px}
@media(max-width:520px){.hz{grid-template-columns:1fr}}
.cardbtns{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.cardbtns button{padding:7px 12px;font-size:13px}
table.mini{width:100%;border-collapse:collapse;font-size:13px}
table.mini th,table.mini td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
table.mini th{color:var(--mute);font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.4px}
table.mini td.n{text-align:right;font-variant-numeric:tabular-nums}
tr.click{cursor:pointer}tr.click:hover{background:var(--panel2)}
.scroll{overflow-x:auto}
.bkt{display:flex;flex-direction:column;gap:6px}
.bkt .r{display:grid;grid-template-columns:64px 1fr 70px;gap:8px;align-items:center;font-size:12.5px}
.bkt .r .track{height:14px;background:var(--bg);border-radius:4px;position:relative;overflow:hidden}
.bkt .r .track i{position:absolute;top:0;bottom:0;border-radius:3px}
.bkt .r .track .zero{position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--line)}

/* ---------- analysis view (ported) */
.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:16px;min-width:0}
.grid{display:grid;gap:16px}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g2{grid-template-columns:2fr 1fr}
.grid>*{min-width:0}
@media(max-width:900px){.g3,.g2{grid-template-columns:1fr}}
h2{font-size:14px;margin:0 0 10px;color:var(--mute);font-weight:600;text-transform:uppercase;letter-spacing:.5px}
.hero{display:flex;gap:24px;align-items:flex-end;flex-wrap:wrap}.hero>div{min-width:0}
.hero .px{font-size:30px;font-weight:700}
.best{margin-left:auto;padding:10px 14px;border-radius:8px;background:var(--panel2);border:1px solid var(--line)}
#chart{height:420px}
@media(max-width:600px){#chart{height:320px}.hero .px{font-size:24px}.best{margin-left:0}.panel{padding:12px}}
.hcard h3{margin:0 0 6px;font-size:15px}
.verdict{display:inline-block;padding:3px 10px;border-radius:20px;font-weight:700;font-size:12px}
.v-buy{background:rgba(var(--green-rgb),.18);color:var(--green)}.v-watch{background:rgba(240,180,41,.15);color:var(--amber)}
.v-neutral{background:rgba(141,154,171,.15);color:var(--mute)}.v-avoid{background:rgba(var(--red-rgb),.15);color:var(--red)}
.bar{height:8px;background:var(--bg);border-radius:4px;margin:10px 0;overflow:hidden}.bar i{display:block;height:100%;border-radius:4px}
ul.f{list-style:none;padding:0;margin:6px 0}ul.f li{padding:3px 0;font-size:13px;display:flex;gap:6px}
ul.f li b{min-width:30px;text-align:right;font-variant-numeric:tabular-nums}
.plan{background:var(--bg);border-radius:8px;padding:10px;margin-top:10px;font-size:13px}
.plan table{width:100%;border-collapse:collapse}.plan td{padding:2px 0}
.flag{background:rgba(var(--red-rgb),.12);color:var(--red);padding:6px 10px;border-radius:6px;margin:6px 0;font-size:13px}
.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(160px,100%),1fr));gap:8px}
.kv div{background:var(--bg);border-radius:6px;padding:8px 10px;min-width:0;overflow-wrap:anywhere}
.kv span{display:block;color:var(--mute);font-size:11px;text-transform:uppercase}
.list a,.list div.it{display:block;padding:6px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
.report{line-height:1.65}.report h2{color:var(--text);text-transform:none;font-size:17px;margin-top:20px;letter-spacing:0}
table.scr{width:100%;border-collapse:collapse}table.scr th,table.scr td{padding:8px;border-bottom:1px solid var(--line);text-align:left;font-size:13px;vertical-align:top}
.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--blue);border-radius:50%;animation:s 1s linear infinite;vertical-align:middle}
@keyframes s{to{transform:rotate(360deg)}}
.decision{border-radius:10px;padding:14px 16px;margin-bottom:16px;border:1px solid var(--line);background:var(--panel);font-size:15px}
.decision b.st{display:inline-block;margin-right:8px;padding:2px 10px;border-radius:6px;font-size:12px;vertical-align:middle}
.st-ready{background:rgba(var(--green-rgb),.2);color:var(--green)}.st-wait{background:rgba(240,180,41,.18);color:var(--amber)}.st-no{background:rgba(var(--red-rgb),.18);color:var(--red)}
.ptabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.ptab{padding:8px 14px;border-radius:8px;cursor:pointer;background:var(--bg);border:1px solid var(--line);color:var(--text);font-weight:400;text-align:left}
.ptab.on{border-color:var(--blue);background:var(--panel2)}.ptab small{display:block;font-size:11px;margin-top:2px}
.sizer{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;background:var(--bg);padding:10px;border-radius:8px;margin-bottom:12px}
.sizer label{display:flex;flex-direction:column;font-size:11px;color:var(--mute);gap:3px;text-transform:uppercase}.sizer input{width:min(120px,100%)}
.ecards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:12px;margin:12px 0}
.ecard{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px;min-width:0}.ecard.prim{border-color:var(--blue)}
.ecard h3{margin:0 0 4px;font-size:14px}.ord{font-family:var(--mono);font-size:12.5px;background:var(--panel2);padding:6px 8px;border-radius:6px;margin:8px 0;overflow-wrap:anywhere}
.ecard table{width:100%;border-collapse:collapse;font-size:13px}.ecard td{padding:3px 0}.ecard td:last-child{text-align:right;font-variant-numeric:tabular-nums}
.tag{font-size:10px;padding:2px 7px;border-radius:10px;background:var(--panel2);color:var(--mute);text-transform:uppercase;font-weight:700;margin-left:6px}
.cols2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.cols2>*{min-width:0}@media(max-width:900px){.cols2{grid-template-columns:1fr}}
.ck{list-style:none;padding:0;margin:0}.ck li{display:flex;gap:8px;padding:5px 0;border-bottom:1px solid var(--line);font-size:13px}
.ck .ic{width:20px;text-align:center;flex:none}.ck .d{color:var(--mute);font-size:12px}
.blk h4{margin:14px 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--mute)}
.blk ul{margin:0;padding-left:18px;font-size:13.5px}.blk li{margin:3px 0}
.scen{display:grid;grid-template-columns:1fr 1fr;font-size:13px;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.scen div{padding:7px 10px;border-bottom:1px solid var(--line)}.scen .if{background:var(--bg)}
@media(max-width:600px){.scen{grid-template-columns:1fr}.scen .if{border-bottom:0}}
textarea.ticket{width:100%;min-height:150px;font-family:var(--mono);font-size:12.5px}
.xs{border:1px solid var(--line);border-radius:8px;margin-bottom:8px;background:var(--bg)}
.xs summary{cursor:pointer;padding:10px 12px;display:flex;gap:10px;align-items:center;list-style:none;font-weight:600}
.xs summary::-webkit-details-marker{display:none}.xs summary .mean{min-width:0;font-weight:400;color:var(--mute);font-size:13px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.xs[open] summary .mean{display:none}.xs .body{padding:0 14px 12px;font-size:13.5px}
.xs .body h4{margin:10px 0 4px;font-size:11px;color:var(--mute);text-transform:uppercase;letter-spacing:.5px}
.xs .body ul{margin:0;padding-left:18px}
.sig{font-size:11px;padding:2px 8px;border-radius:10px;font-weight:700;text-transform:uppercase;min-width:64px;text-align:center;flex:none}
.sig-bullish{background:rgba(var(--green-rgb),.18);color:var(--green)}.sig-bearish{background:rgba(var(--red-rgb),.15);color:var(--red)}
.sig-caution{background:rgba(240,180,41,.15);color:var(--amber)}.sig-neutral{background:rgba(141,154,171,.15);color:var(--mute)}
.cbar{display:flex;height:22px;border-radius:6px;overflow:hidden;margin:8px 0 4px;font-size:11px;font-weight:700}
.cbar div{display:flex;align-items:center;justify-content:center;color:var(--ink)}
.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}
.filters label{display:flex;flex-direction:column;font-size:11px;color:var(--mute);gap:3px;text-transform:uppercase}
.filters input[type=number]{width:95px}
.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--mute);margin-top:6px}.legend i{display:inline-block;width:14px;height:3px;vertical-align:middle;margin-right:4px}
.searchrow{display:flex;gap:8px;margin-bottom:16px}.searchrow input{flex:1;text-transform:uppercase;min-width:0}
.pagehead{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.pagehead h1{font-size:22px;margin:0;letter-spacing:-.2px}
.prose{max-width:72ch;line-height:1.7}.prose h2{text-transform:none;font-size:17px;color:var(--text);letter-spacing:0;margin-top:22px}

/* ---------- modal, banner, toast */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:grid;place-items:center;z-index:50;padding:16px}
.modal .box{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px;width:min(380px,100%)}
.modal h3{margin:0 0 4px}.modal form{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.modal .err{color:var(--red);font-size:13px;min-height:1em}
.banner{position:fixed;left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:40;max-width:720px;margin:0 auto;
  background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:13px}
.banner p{margin:0;flex:1;min-width:220px}
.toasts{position:fixed;top:calc(16px + env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%);z-index:60;display:flex;flex-direction:column;gap:8px;align-items:center;width:max-content;max-width:calc(100% - 32px);pointer-events:none}
.toast{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 14px;font-size:13px;box-shadow:0 6px 18px var(--shadow)}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- user-friendly features */
.railtools{display:flex;flex-wrap:wrap;gap:6px;padding:6px 14px 4px;align-items:center}
.railtools .ghost{padding:5px 10px;font-size:12px;font-weight:500}
.bell{display:inline-flex;align-items:center;gap:6px;color:var(--text);font-size:13px;padding:5px 8px;border-radius:8px;position:relative}
.bell:hover{background:var(--panel2);text-decoration:none}
.bellcount{background:var(--red);color:#fff;border-radius:10px;font-size:10.5px;font-weight:700;padding:1px 6px;line-height:1.4}
.topbell{padding:6px}.topbell .bellcount{position:absolute;top:0;right:-2px}
.term{border-bottom:1px dotted var(--blue);cursor:help}
.termpop{position:fixed;z-index:70;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:13px;box-shadow:0 8px 24px var(--shadow)}
.termpop b{display:block;margin-bottom:2px}
.fresh{font-size:11.5px;color:var(--mute)}
.card .fresh{margin-top:8px}
.heroacts{display:flex;gap:8px;align-items:center;flex-wrap:wrap;width:100%}
.heroacts .ghost{padding:6px 12px;font-size:13px}
.simple{display:flex;gap:16px;align-items:flex-start;border-color:var(--blue)}
.simple .light{font-size:44px;line-height:1}
.simple h3{margin:4px 0 8px;font-size:19px;text-wrap:balance}
.simple ul{margin:0 0 8px;padding-left:18px}.simple .act{background:var(--bg);border-radius:8px;padding:10px 12px;font-size:14px}
.why{margin-top:8px;font-size:13px;background:var(--bg);border-radius:8px;padding:8px 12px}.why ul{margin:4px 0 0;padding-left:16px}
.thumb{background:none;border:1px solid transparent;padding:2px 6px;font-size:13px;border-radius:6px;opacity:.6}
.thumb:hover{opacity:1;border-color:var(--line)}.thumb.on{opacity:1;border-color:var(--blue);background:var(--panel2)}
.box.wide{width:min(560px,100%);max-height:calc(100vh - 32px);overflow-y:auto}
.modal .q{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;margin-top:6px}
.chips{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr));gap:8px}
.chip{background:var(--bg);color:var(--text);border:1px solid var(--line);text-align:left;font-weight:400;padding:10px 12px}
.chip b{display:block;font-size:14px}.chip span{font-size:12px;color:var(--mute)}.chip.on{border-color:var(--blue);background:var(--panel2)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media(max-width:480px){.row2{grid-template-columns:1fr}}
.switch{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;cursor:pointer}
.setrow{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:10px 0;border-bottom:1px solid var(--line);cursor:pointer}
.setrow input{width:20px;height:20px;flex:none}
.formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:12px}
.formgrid label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--mute);text-transform:uppercase;letter-spacing:.3px}
.dangerbtn{background:var(--red);color:#fff}
button.ghost.dangerbtn{background:transparent;color:var(--red);border-color:var(--red)}
.plancard ul{padding-left:18px;line-height:1.8}.plancard .price{font-size:30px;font-weight:700;margin:4px 0 6px}
.plancard.pro{border-color:var(--green)}
.note{display:block;padding:10px 4px;color:var(--text)}.note.unread{border-left:3px solid var(--blue);padding-left:10px}
.note:hover{text-decoration:none;background:var(--panel2)}

.g11{grid-template-columns:1fr 1fr}@media(max-width:900px){.g11{grid-template-columns:1fr}}

/* ---------- market overview (360° view) */
.act{background:var(--bg);border-radius:8px;padding:10px 12px;font-size:13.5px}
.stancerow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:4px 0 8px}
.stance{display:inline-block;padding:3px 12px;border-radius:20px;font-weight:700;font-size:13px}
.stance.big{font-size:17px;padding:5px 14px}
.gauge{flex:1;min-width:120px;height:8px;background:var(--bg);border-radius:6px;overflow:hidden}.gauge i{display:block;height:100%;border-radius:6px}
.mhero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:20px}@media(max-width:900px){.mhero{grid-template-columns:1fr}}
.mhero .gauge{margin:2px 0 10px}
.sess{display:flex;align-items:center;gap:8px;font-size:13.5px;margin-bottom:6px}
.sess .dot{width:9px;height:9px;border-radius:50%;background:var(--mute);flex:none}.sess .dot.live{background:var(--green);box-shadow:0 0 0 3px rgba(var(--green-rgb),.25)}
.snote{font-size:12.5px;color:var(--mute);margin:4px 0}
.pb{background:var(--bg);border-radius:8px;padding:8px 12px;margin-top:8px;font-size:13.5px;border:1px solid transparent}
.pb.mine{border-color:var(--blue)}.pb b{font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--mute)}.pb.mine b{color:var(--blue)}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(150px,100%),1fr));gap:10px}
.tiles.sm{grid-template-columns:repeat(auto-fill,minmax(min(120px,100%),1fr));gap:8px}
.tile{background:var(--bg);border-radius:8px;padding:9px 11px;min-width:0}
.tile .tl{display:flex;justify-content:space-between;gap:6px;font-size:13px}.tile .tl span{font-variant-numeric:tabular-nums}
.tile .nm{color:var(--mute);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile .px{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums}
.tile svg.spark{display:block;width:100%;height:30px;margin-top:2px}
.tiles.sm .tile svg.spark{display:none}
.tile .trend{display:flex;gap:4px;margin-top:4px}.tile .trend i{font-style:normal;font-size:10px;padding:1px 6px;border-radius:8px;background:rgba(var(--red-rgb),.15);color:var(--red)}
.tile .trend i.on{background:rgba(var(--green-rgb),.18);color:var(--green)}
.reasons{list-style:none;padding:0;margin:4px 0 0}.reasons li{display:flex;gap:8px;padding:4px 0;font-size:13.5px;border-bottom:1px solid var(--line)}
.reasons li b{min-width:28px;text-align:right;font-variant-numeric:tabular-nums;flex:none}.reasons li:last-child{border-bottom:0}
.reasons2{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:4px 20px}
.reasons2 h4,h4.sub{margin:10px 0 2px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--mute)}
.seg{display:inline-flex;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:2px;gap:2px}
.seg button{background:none;color:var(--mute);padding:4px 10px;font-size:12px;border-radius:6px;text-transform:none;letter-spacing:0}
.seg button.on{background:var(--panel2);color:var(--text)}
.heat{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(150px,100%),1fr));gap:8px}
.heat div{border-radius:8px;padding:9px 11px;display:grid;grid-template-columns:1fr auto;gap:0 8px;min-width:0}
.heat b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.heat span{font-size:11px;color:var(--mute);text-align:right}
.heat em{font-style:normal;font-weight:700;font-size:17px;font-variant-numeric:tabular-nums}.heat small{grid-column:1/-1;font-size:11px;color:var(--text);opacity:.75}
.heat.sm div{padding:7px 10px}.heat.sm em{font-size:14px}
.meter{display:grid;grid-template-columns:110px 1fr 48px;gap:10px;align-items:center;font-size:13px;margin:6px 0}
.meter>div{height:8px;background:var(--bg);border-radius:6px;overflow:hidden}.meter i{display:block;height:100%}.meter b{text-align:right;font-variant-numeric:tabular-nums}
.imp{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;vertical-align:baseline;background:var(--mute)}
.imp-high{background:var(--red)}.imp-medium{background:var(--amber)}.imp-low{background:#4b5868}.imp-holiday{background:var(--blue)}
.evday h4{margin:12px 0 4px;font-size:12px;text-transform:uppercase;letter-spacing:.5px}
.ev{border-bottom:1px solid var(--line)}.ev summary{display:flex;align-items:baseline;gap:8px;padding:6px 0;cursor:pointer;list-style:none;font-size:13.5px;flex-wrap:wrap}
.ev summary::-webkit-details-marker{display:none}.ev .t{width:58px;color:var(--mute);font-size:12px;flex:none}.ev .ti{flex:1;min-width:140px}
.ev .fc{font-size:12px;color:var(--mute)}.ev .fc b{color:var(--text)}.ev>div{padding:0 0 8px 66px;font-size:12.5px}
@media(max-width:600px){.ev>div{padding-left:0}}
.erows{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(180px,100%),1fr));gap:10px}
.eday{background:var(--bg);border-radius:8px;padding:8px 10px;min-width:0}.eday h4{margin:0;font-size:13px}
.er{display:grid;grid-template-columns:52px 1fr auto;gap:6px;font-size:12.5px;color:var(--text);padding:2px 0;align-items:baseline}
.er span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--mute)}.er small{color:var(--mute);font-size:11px}
.er:hover{text-decoration:none;background:var(--panel2)}
/* ---------- before-you-buy gate */
.gatep{border-color:var(--blue)}
.gtop{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:15px}
.gmeta{display:flex;gap:6px 16px;flex-wrap:wrap;font-size:12.5px;margin:8px 0 6px}
.ck.gate li b{font-weight:600}.ck.gate .d{margin-top:2px}
.ck.gate li.gi-fail{background:rgba(var(--red-rgb),.06)}.ck.gate li.gi-watch{background:rgba(240,180,41,.05)}
.ginfo summary{cursor:pointer;color:var(--blue);font-size:13px;margin-top:8px}

/* ---------- news & filings sentiment */
.sentp{border-color:#3a4a5e}
.spill{font-size:11.5px;padding:2px 9px;vertical-align:1px}.spill.sm{font-size:10.5px;padding:1px 7px;margin-right:2px}
.smeter{position:relative;height:8px;border-radius:6px;margin:10px 0 18px;background:linear-gradient(90deg,var(--red),#4b5868 50%,var(--green))}
.smeter i{position:absolute;top:-4px;width:4px;height:16px;margin-left:-2px;background:var(--text);border-radius:2px;box-shadow:0 0 0 2px var(--panel)}
.smeter span{position:absolute;top:11px;font-size:10px;color:var(--mute)}.smeter span:nth-of-type(1){left:0}
.smeter span:nth-of-type(2){left:50%;transform:translateX(-50%)}.smeter span:nth-of-type(3){right:0}
.sgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:6px}@media(max-width:900px){.sgrid{grid-template-columns:1fr}}
.sbar{display:flex;height:8px;border-radius:6px;overflow:hidden;background:var(--bg);margin:6px 0 4px}.sbar i{display:block;height:100%}
.frow{display:flex;gap:8px;align-items:flex-start}.frow>div{min-width:0}.frow .spill{flex:none;margin-top:2px}
.list a.fl{color:var(--text)}.list a.fl:hover{text-decoration:none;background:var(--panel2)}

/* ---------- congress trades */
.pty{display:inline-block;font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:8px;margin-right:3px}
.pd{background:rgba(88,166,255,.18);color:var(--blue)}.pr{background:rgba(var(--red-rgb),.15);color:var(--red)}.pi{background:var(--panel2);color:var(--mute)}

/* ---------- top picks */
.pick.strong{border-color:var(--green)}.pick.near{opacity:.85}
.pick .ph{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}
.pick .conv{text-align:right;flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.pick .conv small{font-size:10px;color:var(--mute);letter-spacing:.5px}.pick .conv b{font-size:26px;line-height:1}
.pills{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(230px,100%),1fr));gap:10px 28px;margin:14px 0 10px}
.pl{display:grid;grid-template-columns:118px 1fr 28px;gap:10px;align-items:center;font-size:13px}.pl span{color:var(--mute)}
.pl .bar{height:6px;background:var(--bg);border-radius:4px;overflow:hidden}.pl .bar i{display:block;height:100%}.pl b{text-align:right}

/* ---------- phone: readable type, thumb-sized controls, bottom tab bar (iPhone home-screen app) */
.shell{height:100dvh}
.cbar div{color:#fff;text-shadow:0 0 3px rgba(0,0,0,.55)}
.tabbar{display:none}
@media(max-width:860px){
  body{font-size:16px;line-height:1.6;-webkit-text-size-adjust:100%}
  input,select,textarea{font-size:16px}                  /* 16px+ stops iOS from zooming into a field */
  button{min-height:44px;font-size:15px}                 /* Apple's minimum touch target */
  .cardbtns button,.heroacts .ghost,.railtools .ghost,.seg button{min-height:40px;font-size:14px}
  .thumb{min-height:36px}
  .nav a{padding:12px;font-size:16px}.conv a{padding:11px 10px;font-size:15px}
  .panel{border-radius:14px;padding:16px}.card{border-radius:14px;padding:14px}
  .pagehead h1{font-size:25px}h2{font-size:13.5px}
  .md{font-size:16.5px;line-height:1.7}
  table.mini,table.scr th,table.scr td{font-size:14.5px}table.mini th{font-size:12.5px}table.mini th,table.mini td{padding:9px 8px}
  .kv span{font-size:12.5px}.kv div{font-size:15px}
  .ck li,.blk ul,.reasons li,ul.f li,.ecard table,.scen{font-size:15px}.ck .d{font-size:13.5px}
  .fresh,.src,.composer .fine{font-size:13px}.verdict{font-size:13px}.tag,.sig,.pty{font-size:12px}
  .hz small,.tile .nm,.heat span,.heat small,.er,.pl,.ev .t,.ev .fc,.tile .trend i,.smeter span,.spill.sm{font-size:13px}
  .spill{font-size:13px}.legend{font-size:13px}.bkt .r{font-size:14px}
  /* small sizes written inline by the page code: lift them to readable minimums on a phone */
  [style*="font-size:10px"],[style*="font-size:10.5px"],[style*="font-size:11px"],[style*="font-size:11.5px"]{font-size:13px!important}
  [style*="font-size:12px"],[style*="font-size:12.5px"]{font-size:14px!important}
  [style*="font-size:13px"],[style*="font-size:13.5px"]{font-size:15px!important}
  .tabbar{display:flex;justify-content:space-around;flex:none;border-top:1px solid var(--line);background:var(--panel);
    padding:2px 4px env(safe-area-inset-bottom,0px)}
  .tabbar a,.tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:54px;
    padding:6px 0;background:none;border:0;border-radius:0;color:var(--mute);font:500 12px var(--font)}
  .tabbar a:hover{text-decoration:none}.tabbar .on{color:var(--blue)}.tabbar svg{width:23px;height:23px}
  .composer{padding-bottom:12px}
  .banner{bottom:calc(70px + env(safe-area-inset-bottom,0px))}
}
/* paper theme: keep the top bar dark so the iPhone status bar (white text) stays readable */
:root[data-theme=light] .topbar{background:#2f343c;color:#f3efe6;border-color:#2f343c}
:root[data-theme=light] .topbar button,:root[data-theme=light] .topbar .bell{color:#f3efe6}
@media(prefers-color-scheme:light){:root:not([data-theme=dark]) .topbar{background:#2f343c;color:#f3efe6;border-color:#2f343c}
  :root:not([data-theme=dark]) .topbar button,:root:not([data-theme=dark]) .topbar .bell{color:#f3efe6}}
@media(max-width:860px){.pick .conv small{font-size:12px}}
@media(max-width:860px){
  #view small,h4.sub,.reasons2 h4,.evday h4,.blk h4,.xs .body h4,.card h4,.rail h5,.eday h4,.ptab small,
  .filters label,.sizer label,.formgrid label,.kv span,.decision b.st,.hcard .mute,.mute[style*="font-size:12px"]{font-size:13px}
  #view b[style*="font-size:12px"]{font-size:13px!important}
}
@media(max-width:860px){.pb b{font-size:13px}.cbar{font-size:13px;height:26px}}

/* ---- ticker page: "why it's moving", key numbers, folded detail sections */
.drvtop{display:flex;gap:10px;align-items:flex-start;margin-bottom:10px;line-height:1.45;font-size:15px}
.drvtop .verdict{flex:none}
table.drvt,table.keyt{width:100%;border-collapse:collapse}
table.drvt td{padding:9px 6px;border-top:1px solid var(--line);vertical-align:top;line-height:1.4}
table.drvt tr:first-child td{border-top:0}
table.drvt td.e{width:22px;text-align:center;font-size:14px;padding-left:0;padding-right:8px}
table.drvt .f{font-size:15px;margin-bottom:2px}
table.drvt .f span{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;margin-left:4px}
table.drvt .d{font-size:14px;color:var(--text);opacity:.9;overflow-wrap:anywhere}
.mute.e,td.e.mute{color:var(--mute)}
table.keyt td{padding:8px 0;border-top:1px solid var(--line);font-size:14.5px}
table.keyt tr:first-child td{border-top:0}
table.keyt td:first-child{color:var(--mute)}
table.keyt td:last-child{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
details.more{margin-top:4px}
details.more summary{cursor:pointer;color:var(--mute);font-size:13px;padding:6px 0}
details.fold{padding:0}
details.fold>summary{list-style:none;cursor:pointer;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:10px}
details.fold>summary::-webkit-details-marker{display:none}
details.fold>summary h2{margin:0}
details.fold>summary::after{content:"";width:8px;height:8px;border-right:2px solid var(--mute);border-bottom:2px solid var(--mute);transform:rotate(45deg);transition:transform .15s;flex:none;margin-top:-4px}
details.fold[open]>summary::after{transform:rotate(-135deg);margin-top:4px}
details.fold>:not(summary){margin-left:16px;margin-right:16px}
details.fold>:last-child{margin-bottom:16px}
details.fold #sent>h2:first-child{display:none}
details.fold .grid.g3{margin-bottom:16px}
.kv.kvt{display:block}
.kv.kvt div{display:flex;justify-content:space-between;gap:12px;background:none;border-radius:0;padding:8px 0;border-top:1px solid var(--line)}
.kv.kvt div:first-child{border-top:0}
.kv.kvt span{display:inline;text-transform:none;font-size:13.5px}
@media(min-width:861px){.kv.kvt{display:grid;grid-template-columns:1fr 1fr;column-gap:28px}.kv.kvt div:nth-child(2){border-top:0}
}
@media(max-width:860px){.drvtop{flex-direction:column;gap:6px}}

/* swing plan: "buy at today's price?" */
.buynow{border:1px solid var(--line);border-left:4px solid var(--amber);border-radius:8px;padding:12px 14px;margin:12px 0;background:var(--bg)}
.buynow.ok{border-left-color:var(--green)}
.buynow .q{color:var(--mute);font-size:12px;text-transform:uppercase;letter-spacing:.5px}
.buynow .v{font-size:17px;font-weight:700;margin:4px 0}
.buynow ul{margin:6px 0 0;padding-left:18px;line-height:1.45}
.buynow .better{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.kv.kv2{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}

/* market: latest economic data */
table.rel td{vertical-align:middle}
.nowp .tile small{display:block;font-size:11.5px}
table.relt{width:100%;border-collapse:collapse}
table.relt td{padding:9px 0;border-top:1px solid var(--line);vertical-align:top}
table.relt tr:first-child td{border-top:0}
table.relt td.n{text-align:right;white-space:nowrap;padding-left:12px;font-variant-numeric:tabular-nums}
table.relt .big{font-size:17px}
table.relt .sm{font-size:12.5px;margin-top:2px}

/* notifications: alerts on this device */
.pstat{padding:10px 12px;border-radius:8px;background:var(--bg);border:1px solid var(--line);margin-bottom:10px;font-size:14px;line-height:1.5}
.pstat.ok{border-left:4px solid var(--green)}.pstat.warn{border-left:4px solid var(--amber)}
.pstat button{margin-left:8px}
.aswitches{display:flex;flex-direction:column}
.aswitch{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--line);color:var(--text);text-decoration:none}
.aswitch:first-child{border-top:0}
.aswitch small{display:block;font-size:12.5px;font-weight:400}

/* side menu: on phones (and short windows) the menu is taller than the screen — let the whole menu scroll,
   not just the chat list, so the last items and the account area can be reached */
@media (max-width:860px), (max-height:760px){
  .rail{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  .convs{flex:none;overflow:visible}
  .rail>:last-child{padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}
}

ol.steps{margin:8px 0 10px;padding-left:22px;line-height:1.7;font-size:14px}

/* notifications: our own Allow / Not now box before the phone's prompt */
.softask{text-align:center;max-width:380px}
.softask .sa-ic{font-size:34px;line-height:1;margin-bottom:6px}
.softask h3{margin:4px 0 10px}
.softask .sa-list{text-align:left;margin:0 0 10px;padding-left:20px;line-height:1.55;font-size:14px}
.softask .sa-btns{display:flex;gap:10px;margin-top:12px}
.softask .sa-btns button{flex:1;min-height:44px;font-size:15px}

/* community: votes, reactions, most watched */
.cvrow{display:flex;gap:10px}.cvrow .cv{flex:1;min-height:44px;font-size:15px}
.cvrow .cv.up:not(.ghost){background:var(--green);color:#fff}.cvrow .cv.dn:not(.ghost){background:var(--red);color:#fff}
.cbar2{height:10px;border-radius:6px;background:var(--red);overflow:hidden;margin-top:12px}.cbar2 i{display:block;height:100%;background:var(--green)}
.cvlbl{display:flex;justify-content:space-between;font-size:13px;margin-top:6px}
.reacts{display:flex;gap:8px;margin:8px 0 2px}
.reacts .rx{background:var(--bg);border:1px solid var(--line);color:var(--text);padding:5px 12px;border-radius:999px;font-size:15px;min-height:36px}
.reacts .rx.on{border-color:var(--blue);background:var(--panel2)}.reacts .rx span{font-size:13px;color:var(--mute);margin-left:2px}
.tchips{display:flex;flex-wrap:wrap;gap:8px}.tchip{display:flex;flex-direction:column;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--text)}
.tchip:hover{text-decoration:none;border-color:var(--blue)}.tchip span{font-size:12px}

/* free edition: TradingView widgets — keep their (transparent) frames from getting a white backdrop on the dark theme */
.tradingview-widget-container iframe{color-scheme:normal}
.tradingview-widget-copyright{font-size:11.5px;text-align:center;margin-top:4px}
.tradingview-widget-copyright a{color:var(--mute)}

/* Connect Alpaca: the visitor's own analysis */
.myplan{border-top:1px solid var(--line);padding-top:10px;margin-top:10px}
.myplan .mph{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* Connect Alpaca: top-right button (phone top bar + a top-right corner on wide screens) */
.main{position:relative}
.deskacts{position:absolute;top:10px;right:18px;z-index:5;display:flex;gap:8px}
.alpbtn{padding:6px 12px;border-radius:999px;font-size:13px;font-weight:600;background:var(--blue);color:#fff;border:0;white-space:nowrap}
.alpbtn.on{background:var(--panel2);color:var(--green);border:1px solid var(--line)}
.topbar .alpbtn{padding:5px 10px;font-size:12.5px}
@media(max-width:860px){.deskacts{display:none}}
.topbar .alpbtn{background:var(--blue);color:#fff;padding:5px 11px;border-radius:999px}
.topbar .alpbtn.on{background:transparent;color:var(--green);border:1px solid currentColor}

/* list + detail layout: Your setups, Watchlist */
.mdl{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:16px;align-items:start}
.md-detail{grid-column:1;grid-row:1;min-width:0}
.md-list{grid-column:2;grid-row:1;position:sticky;top:12px;max-height:calc(100vh - 110px);overflow-y:auto;
  background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:6px}
.md-item{display:grid;grid-template-columns:1fr auto 34px;gap:8px;align-items:center;width:100%;text-align:left;background:none;
  color:var(--text);border:0;border-radius:8px;padding:8px 10px;font-size:14px;font-weight:400}
.md-item:hover{background:var(--panel2)}.md-item.on{background:var(--panel2);box-shadow:inset 3px 0 0 var(--blue)}
.md-px{color:var(--mute);font-variant-numeric:tabular-nums;font-size:13px}.md-sc{text-align:right;font-weight:700}
.md-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
@media(max-width:1100px){
  .mdl{display:block}
  .md-list{position:sticky;top:0;z-index:4;display:flex;gap:6px;overflow-x:auto;max-height:none;margin:0 0 12px;padding:6px;
    -webkit-overflow-scrolling:touch;scrollbar-width:none}
  .md-list::-webkit-scrollbar{display:none}
  .md-item{display:flex;flex-direction:column;align-items:flex-start;gap:0;width:auto;min-width:76px;flex:none;padding:6px 10px;
    border:1px solid var(--line)}
  .md-item .md-sc{text-align:left;font-size:12px}.md-item .md-px{font-size:12px}
}
/* top-right account + Alpaca buttons stay on one line */
.alpslot:not([hidden]){display:inline-flex;gap:6px;align-items:center;flex-wrap:nowrap}
@media(max-width:420px){.topbar .alpbtn{padding:5px 8px;font-size:12px}.topbar .alpbtn .long{display:none}}

/* ---------- public home (trader-first) ---------- */
.home{max-width:1100px;margin:0 auto;padding:0 20px 40px}
.tape{margin:0 -20px 8px;min-height:46px}
.home .hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:28px;align-items:center;padding:26px 0 18px}
.eyebrow{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--blue);
  background:color-mix(in srgb,var(--blue) 14%,transparent);padding:5px 10px;border-radius:999px;margin-bottom:12px}
.home .hero h1{font-size:clamp(30px,4.6vw,48px);line-height:1.06;margin:0 0 14px;letter-spacing:-.02em}
.grad{background:linear-gradient(90deg,var(--green),var(--blue));-webkit-background-clip:text;background-clip:text;color:transparent}
.lede{font-size:16.5px;line-height:1.55;color:var(--mute);margin:0 0 18px;max-width:560px}
.hero-cta{display:flex;gap:10px;flex-wrap:wrap}
.hero-cta .big{font-size:15.5px;padding:12px 20px;border-radius:12px}
.hero-badges{display:flex;gap:14px;flex-wrap:wrap;margin-top:14px;font-size:13px;color:var(--mute)}
.hero-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:16px 18px;
  box-shadow:0 18px 50px -24px rgba(0,0,0,.55);min-height:200px}
.sample-tag{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--mute);margin-bottom:8px}
.hrow{display:grid;grid-template-columns:70px 1fr auto 36px;gap:10px;align-items:center;padding:9px 6px;border-bottom:1px solid var(--line);color:var(--text);text-decoration:none}
.hrow:hover{background:var(--panel2)}
.pill{font-size:11.5px;padding:2px 8px;border-radius:999px;background:var(--panel2);color:var(--mute)}
.pill.on{background:color-mix(in srgb,var(--green) 18%,transparent);color:var(--green)}
.seeall{display:block;margin-top:10px;font-weight:600}
.hh{font-size:13px;text-transform:uppercase;letter-spacing:.07em;color:var(--mute);margin:26px 0 10px}
.pulse{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.ptile{display:flex;flex-direction:column;gap:4px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px;color:var(--text);text-decoration:none}
.ptile b{font-size:24px;letter-spacing:-.01em}.ptile .sm{font-size:12.5px}.ptile:hover{border-color:var(--blue)}
.feat{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.ftile{display:flex;flex-direction:column;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;color:var(--text);text-decoration:none;font-size:13.5px;line-height:1.45}
.ftile b{font-size:15.5px}.ftile:hover{border-color:var(--blue);transform:translateY(-1px)}.fic{font-size:22px}
.askbox .chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.chip{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:999px;padding:7px 12px;font-size:13px;font-weight:400}
.fine2{font-size:12px;margin-top:28px}
@media(max-width:860px){
  .home .hero{grid-template-columns:1fr;gap:18px;padding-top:14px}
  .pulse{grid-template-columns:repeat(2,minmax(0,1fr))}
  .home{padding:0 16px 30px}.tape{margin:0 -16px 6px}
  .hero-cta .big{flex:1 1 100%}
}
/* slimmer first-visit notice */
.banner{padding:10px 12px;font-size:12.5px;gap:10px}
.banner p{min-width:0}
@media(max-width:560px){.banner{left:8px;right:8px;bottom:calc(64px + env(safe-area-inset-bottom,0px))}}
.askbox input{text-transform:none}
.askbox input::placeholder{text-transform:none}

/* Your setups: company-size tabs */
.tiers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:5px;margin:0 0 14px}
.tiers button{display:flex;flex-direction:column;align-items:center;gap:1px;background:none;border:0;border-radius:9px;padding:8px 6px;color:var(--mute);font-weight:400}
.tiers button b{font-size:14px;color:var(--text)}.tiers button span{font-size:12px}
.tiers button.on{background:var(--panel2);box-shadow:inset 0 -2px 0 var(--blue)}

/* sign in first, then Alpaca */
.steps{list-style:none;padding:0;margin:4px 0 16px;display:flex;flex-direction:column;gap:10px}
.steps li{display:flex;gap:12px;align-items:flex-start;opacity:.65}
.steps li.on,.steps li.done{opacity:1}
.steps .sn{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:13px;background:var(--panel2);border:1px solid var(--line)}
.steps li.on .sn{background:var(--blue);color:var(--ink);border-color:var(--blue)}
.steps li.done .sn{background:color-mix(in srgb,var(--green) 20%,transparent);color:var(--green);border-color:var(--green)}
.steps .mute{font-size:13px}
.hero-steps{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px;font-size:13.5px;color:var(--mute)}
.hero-steps .on{color:var(--text);font-weight:600}.hero-steps .done{color:var(--green)}.hero-steps .arrow{opacity:.6}
.alp-why{font-size:13.5px;line-height:1.5;margin:10px 0 0;max-width:560px}
.steps a{white-space:nowrap}

/* list pages: the summary card is the header, the full analysis follows without repeating name and price */
.embedded #hero .hname,.embedded #hero .px{display:none}
.embedded #hero{padding:14px 18px}
.md-detail>.panel,.embedded>div>.panel,.embedded .panel{margin-bottom:14px}
.cardhead{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.cardhead h2{margin:0}
.pick .reasons li{padding:7px 0}
.pick .act{background:var(--panel2);border-radius:10px;padding:10px 12px}
.md-detail{scroll-margin-top:84px}
.md-detail .ph .conv{text-align:right;flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:2px;background:none}
.md-detail .ph .conv small{font-size:10.5px;color:var(--mute);letter-spacing:.5px}.md-detail .ph .conv b{font-size:26px;line-height:1}
.md-detail .ph{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}

/* ---------- shared stock card (Your setups, Top picks, Screener) ---------- */
.ss{padding:18px 20px}
.ss-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
.ss-label{font-size:11.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--mute);margin-bottom:4px}
.ss-t{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.ss-t a{font-size:22px;font-weight:700;color:var(--text)}
.ss-name{color:var(--mute);font-size:14px}
.ss-px{margin-top:2px;font-size:15px;display:flex;gap:6px 10px;flex-wrap:wrap;align-items:baseline}
.ss-fact{font-size:12.5px;color:var(--mute);background:var(--panel2);border-radius:999px;padding:1px 8px}
.ss-score{flex:none;display:flex;flex-direction:column;align-items:center;gap:4px;max-width:96px;text-align:center}
.ss-score .ring{width:58px;height:58px;border-radius:50%;display:grid;place-content:center;border:3px solid var(--c);background:color-mix(in srgb,var(--c) 10%,transparent)}
.ss-score b{font-size:21px;line-height:1;color:var(--c)}.ss-score small{font-size:11px;color:var(--mute);line-height:1.2}
.ss-status{margin:14px 0 0;padding:10px 12px;border-radius:10px;border-left:4px solid;display:flex;flex-direction:column;gap:2px;font-size:13.5px}
.ss-status b{font-size:14.5px}.ss-status span{color:var(--text);opacity:.85}
.ss-status.ok{border-color:var(--green);background:color-mix(in srgb,var(--green) 10%,transparent)}.ss-status.ok b{color:var(--green)}
.ss-status.wait{border-color:var(--amber);background:color-mix(in srgb,var(--amber) 10%,transparent)}.ss-status.wait b{color:var(--amber)}
.ss-status.no{border-color:var(--red);background:color-mix(in srgb,var(--red) 10%,transparent)}.ss-status.no b{color:var(--red)}
.ss-plan{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:12px}
.ss-stat{background:var(--panel2);border-radius:10px;padding:9px 11px;display:flex;flex-direction:column;gap:1px;min-width:0}
.ss-stat span{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--mute)}
.ss-stat b{font-size:17px;font-variant-numeric:tabular-nums}.ss-stat small{font-size:12px;color:var(--mute);overflow:hidden;text-overflow:ellipsis}
.ss-cond{font-size:13px;color:var(--mute);margin:10px 0 0}
.ss-why{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:4px 24px;margin-top:12px}
.ss-why h4{margin:6px 0 4px;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}
.ss-list{list-style:none;padding:0;margin:0}.ss-list li{position:relative;padding:5px 0 5px 22px;font-size:13.5px;line-height:1.45;border-bottom:1px solid var(--line)}
.ss-list li:last-child{border-bottom:0}
.ss-list.ok li::before{content:"✓";position:absolute;left:2px;color:var(--green);font-weight:700}
.ss-list.warn li::before{content:"!";position:absolute;left:6px;color:var(--amber);font-weight:800}
.ss-pick{margin-top:12px;font-size:13.5px;color:var(--mute)}.ss-pick.ok{color:var(--green);font-weight:600}
.ss-foot{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}
.md-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:middle;background:var(--neutral)}
.md-dot.ok{background:var(--green)}.md-dot.wait{background:var(--amber)}.md-dot.no{background:var(--red)}
.pagebar{display:flex;gap:10px 16px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:12px 16px}
.pagebar-r{display:flex;gap:12px;align-items:center;font-size:12.5px}
.chips{display:inline-flex;gap:6px;flex-wrap:wrap;align-items:center}
.chip{font-size:12.5px;padding:3px 10px;border-radius:999px;background:var(--panel2);color:var(--text);border:1px solid var(--line);white-space:nowrap}
a.chip:hover{text-decoration:none;border-color:var(--blue)}
.chip.ok{color:var(--green);border-color:color-mix(in srgb,var(--green) 45%,transparent)}
.chip.wait{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 45%,transparent)}
.chip.no{color:var(--red);border-color:color-mix(in srgb,var(--red) 45%,transparent)}
.note{font-size:13px;line-height:1.5;padding:10px 14px;border-radius:10px;background:var(--panel);border:1px solid var(--line);margin:0 0 12px;color:var(--mute)}
@media(max-width:600px){.ss{padding:14px}.ss-plan{grid-template-columns:repeat(2,minmax(0,1fr))}.ss-t a{font-size:20px}.ss-score .ring{width:52px;height:52px}}
.alertline{display:flex;gap:12px;align-items:center;justify-content:space-between;color:var(--text)}.alertline button{flex:none;padding:6px 14px}
.bizline{display:flex;gap:8px 12px;align-items:center;flex-wrap:wrap;padding:12px 16px}
.ss-chart{margin:14px 0 4px}
.ss-chart>.panel{border:0;padding:0;margin:0;background:none;box-shadow:none}
.ss-chart>.panel>h2{font-size:12px;margin:0 0 6px}

/* Research lab */
.lab-rec{border-color:color-mix(in srgb,var(--green) 45%,var(--line))}
.lab-rech{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap;margin-bottom:8px}
.lab-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:14px}
.lab-f{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.lab-f>span{display:flex;flex-direction:column;gap:2px}.lab-f small{font-size:12px;line-height:1.35}
.lab-f.changed{border-color:var(--green);box-shadow:0 0 0 1px var(--green)}
.dbar{position:relative;height:8px}.dbar i{position:absolute;left:0;top:0;height:8px;border-radius:4px;background:var(--blue)}.dbar i.all{background:var(--panel2)}
.gbtn{width:100%;display:flex;justify-content:center;gap:8px;background:var(--panel2);color:var(--text);border:1px solid var(--line);font-weight:600;margin:12px 0 4px}
.or{display:flex;align-items:center;gap:10px;color:var(--mute);font-size:12px;margin:8px 0}.or::before,.or::after{content:"";flex:1;height:1px;background:var(--line)}

/* ratings panel (company pages) */
.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(150px,100%),1fr));gap:8px}
.rtile{display:flex;flex-direction:column;gap:2px;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.rt-n{font-size:12px;color:var(--mute);font-weight:600}.rt-s{font-size:26px;line-height:1.1}.rt-s small{font-size:12px;color:var(--mute);font-weight:500}
.rt-l{font-size:12.5px;font-weight:700}.rt-src{font-size:11px;color:var(--mute)}
.rt-cta{grid-column:span 2}.rt-cta button{margin-top:6px;align-self:flex-start}
.rt-why{margin-top:10px}.rt-wk{margin-top:6px}
@media (max-width:420px){.rt-cta{grid-column:auto}}

/* stock page: home-page look */
.home.co{padding:0;max-width:none}
.co .hero{padding-top:10px}
.co .hero h1 .co-tk{font-size:.42em;color:var(--mute);font-family:'IBM Plex Mono',monospace;font-weight:600;letter-spacing:0;vertical-align:middle}
.co-health{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 16px;font-size:12.5px}
.co .hero-card .keyt td{vertical-align:middle}
.rtab td:last-child{white-space:nowrap}
.ptile.static:hover{border-color:var(--line)}
.co-pulse .ptile b{font-size:22px}
@media(max-width:860px){.co-pulse{grid-template-columns:repeat(2,minmax(0,1fr))}}
.co-px{font-size:22px;margin:-4px 0 6px}.co-px b{font-size:28px;letter-spacing:-.01em}
.embedded .co #hero{padding:0}
table.keyt.rtab{display:table;width:100%}

/* stock views: wider, denser, a little more polish */
.wrap:has(.co){max-width:1560px}
.co .hero{grid-template-columns:minmax(0,1.45fr) minmax(320px,1fr);align-items:start;gap:22px;padding:22px 24px;margin-top:6px;
  background:linear-gradient(135deg,color-mix(in srgb,var(--blue) 7%,var(--panel)) 0%,var(--panel) 60%);border:1px solid var(--line);border-radius:18px}
.co .hero h1{font-size:clamp(26px,2.4vw,36px);line-height:1.12;margin:0 0 10px}
.co .eyebrow{max-width:100%}
.co .lede{max-width:none;font-size:15.5px;margin-bottom:12px}
.co .hero-card{box-shadow:0 6px 24px rgba(0,0,0,.06)}
.co{container-type:inline-size}.co-pulse{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.co-pulse .ptile{padding:12px 14px;border-top:3px solid var(--line)}
.co-pulse .ptile:has(b.up){border-top-color:var(--green)}.co-pulse .ptile:has(b.dn){border-top-color:var(--red)}
.co-pulse .ptile b{font-size:20px}
.hh-sub{text-transform:none;letter-spacing:0;font-weight:400}
.co-2{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);gap:16px;align-items:start}
.co-2>div{min-width:0}
@media(max-width:1200px){.co-2{grid-template-columns:1fr}}
@media(max-width:860px){.co .hero{grid-template-columns:1fr;padding:16px;border-radius:14px}.co-pulse{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container (min-width:1150px){.co-pulse{grid-template-columns:repeat(8,minmax(0,1fr))}}
@container (max-width:520px){.co-pulse{grid-template-columns:repeat(2,minmax(0,1fr))}}
.co-pulse{margin-bottom:6px}
.plancards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr));gap:14px;align-items:start}
.plancards .ss{margin:0}
.brief-h{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}.brief-h a{font-size:18px;color:var(--text)}
.brief-b{font-size:14.5px}.brief-b ul{margin:4px 0 10px}
.homebriefs .panel{margin:0}.homebriefs .searchrow{margin:0}
.livebadge{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--green);white-space:nowrap}
@keyframes tickflash{0%{background:color-mix(in srgb,var(--blue) 25%,transparent)}100%{background:transparent}}
.tick{animation:tickflash .9s ease-out;border-radius:4px}
.livestrip{margin:0 0 14px}
.sl{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0 0 10px;background:var(--bg)}
.sl.pend{border-color:var(--amber)}.sl.sig{border-color:var(--red);box-shadow:0 0 0 2px color-mix(in srgb,var(--red) 18%,transparent)}
.sl-h{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.sl-h a{font-size:17px;color:var(--text)}
.sl-p{font-size:13.5px;margin:6px 0}.sl-l{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12.5px;color:var(--mute)}.sl-l b{color:var(--text)}
.sl-alert{margin:8px 0 2px;padding:8px 10px;border-radius:8px;font-size:13.5px}
.sl-alert.pend{background:color-mix(in srgb,var(--amber) 14%,transparent)}.sl-alert.sig{background:color-mix(in srgb,var(--red) 14%,transparent)}
.sq{margin-top:10px;border:1px solid var(--line);border-radius:10px;padding:8px 10px}.sq-h{font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--mute);margin-bottom:4px}
.sq-r{font-size:13px;padding:3px 0}.sq-r.ok b{color:var(--green)}.sq-r.no b{color:var(--red)}
.sw{margin:8px 0;padding:6px 10px;border-radius:8px;background:color-mix(in srgb,var(--amber) 13%,transparent);font-size:13px}.sw div+div{margin-top:3px}

/* ================================================================== motion: water-bubble pages, ripples, pops
   (prefers-reduced-motion turns all of it off — see the rule near the top) */
html{touch-action:manipulation;-webkit-text-size-adjust:100%;text-size-adjust:100%}
html,body{overscroll-behavior:none;max-width:100%;overflow-x:hidden}
img,svg,video,canvas,iframe{max-width:100%}

/* tab changes, Facebook style: the page swaps instantly; a blue bar slides to the chosen tab */
.tabbar{position:relative}

.nav{position:relative}

.nav a.on{color:var(--blue);font-weight:600}.nav a.on svg{color:var(--blue)}
.tabbar a.on svg{stroke-width:2.3}

/* loading placeholders that shimmer, like Facebook's grey boxes */
.skel-wrap{display:block;width:100%;padding:4px 0}
.skel{display:block;height:12px;border-radius:6px;margin:0 0 9px;
  background:linear-gradient(90deg,var(--panel2) 0%,color-mix(in srgb,var(--panel2) 55%,var(--bg)) 40%,var(--panel2) 80%);
  background-size:300% 100%;animation:skel 1.3s ease-in-out infinite}
.skel.l1{width:72%}.skel.l2{width:94%}.skel.l3{width:58%;margin-bottom:6px}
.skel-txt{display:block;font-size:12px;color:var(--mute)}
@keyframes skel{0%{background-position:100% 0}100%{background-position:0 0}}

/* a tap sends out a ripple, like a drop on water */
.rippled{position:relative;overflow:hidden;isolation:isolate}
.ripple{position:absolute;border-radius:50%;pointer-events:none;z-index:-1;transform:scale(0);opacity:.55;
  background:radial-gradient(circle,color-mix(in srgb,var(--blue) 55%,transparent) 0%,color-mix(in srgb,var(--blue) 18%,transparent) 55%,transparent 72%);
  animation:ripple .7s cubic-bezier(.2,.8,.3,1) forwards}
@keyframes ripple{to{transform:scale(1);opacity:0}}

/* the chosen tab pops like a bubble */
@keyframes pop{0%{transform:scale(.9)}55%{transform:scale(1.07)}100%{transform:scale(1)}}
.seg button.on,.tiers button.on,.ptab.on{animation:pop .36s cubic-bezier(.34,1.4,.64,1)}
.seg button,.tiers button,.ptab,.md-item,.nav a,.tabbar a,.chip,button{transition:background-color .25s,color .25s,border-color .25s,box-shadow .25s,transform .18s}
button:active,.chip:active,.md-item:active,.tabbar a:active{transform:scale(.96)}

/* cards lift a little under the mouse */
@media(hover:hover){
  .ptile,.ftile,.ss,.rtile,.md-item,.sl,.brief,.panel.pick{transition:transform .25s cubic-bezier(.22,1,.36,1),box-shadow .25s,border-color .25s}
  .ptile:hover,.ftile:hover,.ss:hover,.sl:hover,.brief:hover{transform:translateY(-3px);box-shadow:0 10px 26px rgba(0,0,0,.08)}
  .md-item:hover{transform:translateX(2px)}
}

/* the LIVE dot breathes */
@keyframes livePulse{0%,100%{opacity:1}50%{opacity:.35}}
.livebadge{animation:livePulse 1.8s ease-in-out infinite}

/* soft shine travelling over the home / stock headers */
@keyframes sheen{0%{background-position:-150% 0}100%{background-position:250% 0}}
.co .hero,.home .hero-card{background-image:linear-gradient(110deg,transparent 35%,color-mix(in srgb,var(--blue) 6%,transparent) 50%,transparent 65%),
  linear-gradient(135deg,color-mix(in srgb,var(--blue) 7%,var(--panel)) 0%,var(--panel) 60%);background-size:250% 100%,100% 100%;
  animation:sheen 9s ease-in-out infinite}

/* ================================================================== Robinhood style
   instant tabs with no indicator bar (the chosen one is bold and dark), rolling digits, trend colour, a big price */
/* the selection drop (Robinhood-style): a soft blob behind the chosen tab that travels like a water droplet */
.tabbar,.nav{position:relative;isolation:isolate}
.tab-ind,.nav-ind{position:absolute;left:0;top:0;z-index:-1;pointer-events:none;border-radius:999px;transition:opacity .2s;
  background:color-mix(in srgb,var(--blue) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--blue) 22%,transparent)}
.nav-ind{border-radius:10px}
.drop-ring{position:absolute;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;pointer-events:none;z-index:-1;
  border:2px solid color-mix(in srgb,var(--blue) 45%,transparent);animation:dropRing .6s ease-out forwards}
@keyframes dropRing{0%{transform:scale(.4);opacity:.9}100%{transform:scale(6);opacity:0}}
.nav a.on{background:transparent}
.tabbar a,.tabbar button{color:var(--mute)}
.tabbar a.on{color:var(--text);font-weight:700}.tabbar a.on svg{stroke-width:2.6}
.nav a.on{color:var(--text);font-weight:700;background:var(--panel2)}.nav a.on svg{color:var(--text)}

.odo{display:inline-flex;align-items:flex-end;line-height:1.15em;font-variant-numeric:tabular-nums}
.odo .od{display:inline-block;height:1.15em;overflow:hidden}
.odo .oc{display:flex;flex-direction:column;transition:transform .5s cubic-bezier(.2,.9,.25,1)}
.odo .oc span{height:1.15em;line-height:1.15em}
.odo .os{display:inline-block}

/* the day's direction colours the stock page: Robinhood green up, red-orange down */
/* softer than Robinhood's neon: a calm sage green and a muted coral; buttons use a slightly deeper shade for readable text */
.co.rh-up{--trend:#2a8f69;--blue:#24855f}.co.rh-down{--trend:#cc5d35;--blue:#bf5530}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .co.rh-up{--trend:#6fd3a8;--blue:#58c295}:root:not([data-theme=light]) .co.rh-down{--trend:#f29270;--blue:#e57d58}}
:root[data-theme=dark] .co.rh-up{--trend:#6fd3a8;--blue:#58c295}:root[data-theme=dark] .co.rh-down{--trend:#f29270;--blue:#e57d58}
.co.rh-up .co-px .up,.co.rh-down .co-px .dn,.co.rh-up .co-px b,.co.rh-down .co-px b{color:var(--trend)}
.co .co-px{margin:-2px 0 8px}.co .co-px b{font-size:clamp(34px,4.4vw,46px);font-weight:700;letter-spacing:-.02em}
.co .co-px > span{font-size:17px;font-weight:600}.co .co-px > .livebadge{font-size:11px}
.co .hero{animation:none}

/* "it's working": busy buttons and progress cards */
button.busy{cursor:progress;opacity:.92;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.bspin{width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:s .8s linear infinite;flex:none}
.pgc .pg-h{display:flex;align-items:center;gap:10px;margin-bottom:10px}.pgc .pg-t{margin-left:auto;font-variant-numeric:tabular-nums}
.pg-dot{width:9px;height:9px;border-radius:50%;background:var(--blue);animation:livePulse 1.2s ease-in-out infinite;flex:none}
.pg-bar{height:8px;border-radius:999px;background:var(--panel2);overflow:hidden}
.pg-bar i{display:block;height:100%;width:0;border-radius:999px;transition:width .4s ease;
  background:repeating-linear-gradient(-45deg,var(--blue) 0 10px,color-mix(in srgb,var(--blue) 72%,#fff) 10px 20px);
  background-size:28px 28px;animation:pgStripes .9s linear infinite}
@keyframes pgStripes{to{background-position:28px 0}}
.pg-steps{list-style:none;padding:0;margin:12px 0 8px}
.pg-steps li{position:relative;padding:5px 0 5px 28px;color:var(--mute);font-size:14px;transition:color .3s}
.pg-steps li::before{content:"";position:absolute;left:4px;top:8px;width:12px;height:12px;border-radius:50%;border:2px solid var(--line)}
.pg-steps li.now{color:var(--text);font-weight:600}
.pg-steps li.now::before{border-color:var(--blue);border-right-color:transparent;animation:s .8s linear infinite}
.pg-steps li.done{color:var(--text)}
.pg-steps li.done::before{content:"✓";border:0;width:auto;height:auto;top:4px;left:5px;color:var(--green);font-weight:700;animation:none}
.pg-note{font-size:12.5px}
.pgc.pg-fail .pg-bar i{background:var(--red);animation:none}

/* Trade Brief page: one foldable card per stock */
.tb{padding:0;overflow:hidden}
.tb-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 14px;cursor:pointer;list-style:none}
.tb-h::-webkit-details-marker{display:none}
.tb-h::before{content:"";width:7px;height:7px;border-right:2px solid var(--mute);border-bottom:2px solid var(--mute);transform:rotate(-45deg);transition:transform .2s;flex:none;margin-right:2px}
.tb[open] .tb-h::before{transform:rotate(45deg)}
.tb-n{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.tb-b{padding:0 16px 14px;border-top:1px solid var(--line)}
.tb-b .brief-b{margin-top:10px}
@media(max-width:640px){.tb-n{display:none}}

/* short radar: good news is a red alert */
.sw .sw-red{margin:-2px -6px 4px;padding:6px 8px;border-radius:6px;background:color-mix(in srgb,var(--red) 16%,transparent);color:var(--text);border-left:3px solid var(--red)}

/* Insider buying */
.ins-list{padding:0}
.ins-r{display:grid;grid-template-columns:minmax(150px,1.3fr) minmax(150px,1.4fr) 120px 90px minmax(150px,1fr);gap:4px 14px;align-items:center;padding:11px 14px;border-top:1px solid var(--line)}
.ins-list .ins-r:first-child{border-top:0}
.ins-r.big{background:color-mix(in srgb,var(--green) 7%,transparent)}
.ins-t,.ins-who,.ins-v{display:flex;flex-direction:column;min-width:0}
.ins-co{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ins-who b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ins-who .mute{font-size:12.5px}
.ins-v b{font-size:16px}.ins-v .mute{font-size:12px}
.ins-d{font-size:12px;line-height:1.5}
.ins-b{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px}
.chip.ins-big{background:color-mix(in srgb,var(--green) 18%,transparent);color:var(--text);font-weight:700}
.chip.ins-large{background:color-mix(in srgb,var(--green) 11%,transparent)}
.chip.ins-cl{background:color-mix(in srgb,var(--blue) 15%,transparent);font-weight:600}
.ins-g{padding:0}.ins-g>summary{display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer;list-style:none;flex-wrap:wrap}
.ins-g>summary::-webkit-details-marker{display:none}.ins-g[open]>summary{border-bottom:1px solid var(--line)}
@media(max-width:760px){.ins-r{grid-template-columns:1fr auto;gap:4px 10px}.ins-who{grid-column:1/-1;order:3}.ins-s{text-align:right}.ins-d{grid-column:1/-1;order:4}.ins-v{text-align:right;align-items:flex-end}}

/* Insider activity: selling */
.ins-tabs{margin-bottom:12px}
.chip.ins-bigs{background:color-mix(in srgb,var(--red) 18%,transparent);color:var(--text);font-weight:700}
.chip.ins-larges{background:color-mix(in srgb,var(--red) 11%,transparent)}
.ins-plan{flex-direction:row!important;align-items:center;gap:6px;align-self:flex-end;padding-bottom:6px}
.ins-plan input{width:auto}
.ins-r.big.sell{background:color-mix(in srgb,var(--red) 7%,transparent)}

/* SEC news */
.nw-tabs{margin-bottom:12px}
.nw-list{padding:0}
.nw-r{padding:12px 14px;border-top:1px solid var(--line);border-left:3px solid transparent}
.nw-r:first-child{border-top:0}
.nw-r.pos{border-left-color:color-mix(in srgb,var(--green) 70%,transparent)}.nw-r.neg{border-left-color:color-mix(in srgb,var(--red) 70%,transparent)}
.nw-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.nw-co{font-size:12.5px}.nw-t{font-size:12px;white-space:nowrap}
.nw-tags{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.chip.nw-pos{background:color-mix(in srgb,var(--green) 15%,transparent);font-weight:600}
.chip.nw-neg{background:color-mix(in srgb,var(--red) 15%,transparent);font-weight:600}
.nw-hl{display:block;font-weight:700;font-size:15.5px;line-height:1.35;color:var(--text)}
.nw-ld{font-size:13.5px;line-height:1.5;margin-top:4px;color:color-mix(in srgb,var(--text) 82%,var(--mute))}
.nw-m{font-size:12px;margin-top:6px}

/* Trade Brief: the shortlist + one post per stock */
.tb-list{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 18px;font-size:13.5px;margin:0 2px 10px}
.tb-grp{white-space:nowrap}
.tb-pick{font-weight:700;color:var(--text);text-decoration:none}.tb-pick:hover{text-decoration:underline}
.tb-next{font-size:12.5px;margin-left:auto}
@media(max-width:640px){.tb-next{margin-left:0}}
.chip.tb-swing{background:color-mix(in srgb,var(--blue) 14%,transparent)}
.chip.tb-long{background:color-mix(in srgb,var(--green) 14%,transparent)}
.tbp.latest{box-shadow:0 0 0 2px color-mix(in srgb,var(--blue) 45%,transparent)}
.tb-when{font-size:12.5px;white-space:nowrap}
.tb-why{font-size:13px;margin:10px 0 4px}

/* quality grade on screener cards */
.qgrade{display:inline-block;margin:8px 0 2px;padding:3px 10px;border-radius:999px;font-size:13px;background:var(--panel2)}
.qgrade.qA{background:color-mix(in srgb,var(--green) 18%,transparent)}.qgrade.qB{background:color-mix(in srgb,var(--green) 10%,transparent)}
.qgrade.qFAIL{background:color-mix(in srgb,var(--red) 16%,transparent)}

/* Portfolio */
.pf-tabs{margin-bottom:12px}
.pf-sum{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px 16px}
.pf-k{display:flex;flex-direction:column;gap:2px}.pf-k span{font-size:12px}.pf-k b{font-size:18px;font-variant-numeric:tabular-nums}
.pf-list{padding:0}
.pf-r{display:grid;grid-template-columns:minmax(130px,1fr) minmax(140px,1fr) 120px 100px;gap:4px 14px;align-items:center;padding:11px 14px;border-top:1px solid var(--line)}
.pf-list .pf-r:first-child{border-top:0}
.pf-r.closed,.pf-r.expired{opacity:.8}
.pf-t{display:flex;align-items:center;gap:8px}
.pf-pos{display:flex;flex-direction:column;font-size:13.5px}.pf-pos .mute{font-size:12px}
.pf-pl{display:flex;flex-direction:column;align-items:flex-end;font-variant-numeric:tabular-nums}.pf-pl b{font-size:15px}.pf-pl span{font-size:12.5px}
.pf-d{grid-column:1/-1;font-size:12px;line-height:1.5}
@media(max-width:640px){.pf-r{grid-template-columns:1fr auto}.pf-sp{display:none}}
