:root{--slate:#0f1e2e;--slate-d:#0a1622;--slate-l:#1c3145;--cream:#f4f6f8;--card:#fff;
 --ink:#16212c;--ink2:#54626f;--ink3:#8494a3;--line:#dfe4e9;
 --accent:#ff7a3d;--accent-d:#e5661f;--accent-soft:#ffe9dd;
 --up:#c03d24;--up-soft:#fde5e0;--ok:#1e7a4d;--ok-soft:#e0f2e9;--warn:#c98a1e;--warn-soft:#fcf1dd;
 --shadow:0 1px 3px rgba(15,30,46,.08),0 6px 20px rgba(15,30,46,.06)}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,sans-serif;background:#eef0f2;color:var(--ink);font-size:14.5px}
button,input{font:inherit}

/* ===== app shell: sidebar + main (the locked merged design) ===== */
.app{display:grid;grid-template-columns:212px 1fr;min-height:100vh}
nav.side{background:var(--slate);color:#aeb7c3;padding:16px 0;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{display:flex;align-items:center;gap:10px;padding:2px 16px 14px;border-bottom:1px solid var(--slate-l);margin-bottom:8px}
.brand .mark{width:32px;height:32px;border-radius:9px;background:var(--slate-d);position:relative;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.brand .mark .cn{position:absolute;right:4px;bottom:3px;font-size:8px;font-weight:800;color:var(--accent)}
.brand .word{color:#fff;font-weight:700;font-size:17px;letter-spacing:-.02em}
.brand .word s{color:var(--accent);text-decoration:none;font-style:normal}
nav.side a{display:block;padding:9px 18px;color:#aeb7c3;text-decoration:none;font-size:13.5px;cursor:pointer}
nav.side a.on{background:var(--slate-d);color:#fff;border-left:3px solid var(--accent);padding-left:15px}
nav.side .grp{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:#5c6675;padding:14px 18px 4px}
nav.side .foot{padding:14px 18px;font-size:11px;color:#5c6675;border-top:1px solid var(--slate-l);margin-top:12px}
nav.side .foot a{display:inline;padding:0;color:#8b95a3;text-decoration:underline}

/* top bar */
.top{display:flex;justify-content:space-between;align-items:center;background:var(--card);border-bottom:1px solid var(--line);padding:12px 22px;position:sticky;top:0;z-index:5;gap:12px;flex-wrap:wrap}
.top h1{font-size:17px;font-weight:650}
.top .meta{display:flex;gap:16px;align-items:center;font-size:12.5px;color:var(--ink2);flex-wrap:wrap}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;vertical-align:middle;margin-right:5px}

/* content + right rail */
.body{display:grid;grid-template-columns:1fr 300px;gap:0;align-items:start}
.body.no-rail{grid-template-columns:1fr}
.content{padding:20px 22px;min-width:0}
.rail{border-left:1px solid var(--line);background:var(--card);padding:16px;min-height:calc(100vh - 54px)}
.pane{border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:12px}
.pane h4{font-size:11px;text-transform:uppercase;color:var(--ink3);letter-spacing:.05em;margin-bottom:8px}
.pane .mv{font-size:12.5px;line-height:1.5;padding:6px 0;border-bottom:1px dashed var(--line)}
.pane .mv:last-child{border-bottom:none}
.sev{border-radius:10px;padding:11px 12px;font-weight:600;font-size:13px;margin-bottom:12px}
.sev.red{background:var(--up-soft);border:1px solid #f3c9c9;color:var(--up)}
.sev.green{background:var(--ok-soft);border:1px solid #cfe6da;color:var(--ok)}
.sev.amber{background:var(--warn-soft);border:1px solid #f0ddba;color:var(--warn)}
.ledger{font-size:12.5px;color:var(--ink2);line-height:1.7}
.ledger b{color:var(--ok);font-size:15px}

/* executive hero */
.hero{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:20px 22px;margin-bottom:18px}
.hero .eyebrow{font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink3)}
.hero h2{font-size:26px;letter-spacing:-.02em;margin:4px 0 16px}
.heronums{display:flex;gap:34px;border-top:1px solid var(--line);padding-top:14px;margin-bottom:16px;flex-wrap:wrap}
.heronums .v{font-size:28px;font-weight:700;letter-spacing:-.02em}
.heronums .v small{font-size:15px;color:var(--ink3);font-weight:500}
.heronums .l{font-size:12px;color:var(--ink2);margin-top:2px;max-width:180px}
.buys{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.buy{border:1px solid var(--line);border-radius:10px;padding:11px 12px;background:linear-gradient(180deg,#fff,#fefcfa)}
.buy .r{font-size:11px;color:var(--ink3)}
.buy .nm{font-weight:650;font-size:13.5px;margin:2px 0 6px;line-height:1.25;min-height:34px}
.buy .pc{font-size:20px;font-weight:700}
.buy .pc small{font-size:11px;color:var(--ink3);font-weight:500}
.buy .q{margin-top:7px;font-size:11.5px;background:var(--up-soft);color:var(--up);border-radius:6px;padding:4px 7px;font-weight:600}
.buy .w{font-size:11px;color:var(--ink3);margin-top:5px}

/* data grid */
.gridwrap{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden;margin-bottom:18px}
.gridbar{display:flex;gap:8px;align-items:center;padding:11px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.gridbar h3{font-size:14px;margin-right:6px}
.gridbar .note{font-size:11.5px;color:var(--ink3)}
.tablewrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
th{position:sticky;top:0;background:#f4f6f8;text-align:left;padding:8px 12px;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink2);border-bottom:2px solid var(--line);white-space:nowrap}
td{padding:8px 12px;border-bottom:1px solid #efece5;white-space:nowrap}
tr:hover td{background:#f6f8fa}
.heat{display:inline-block;min-width:42px;text-align:center;border-radius:6px;padding:2px 6px;font-weight:700;font-size:12px}
.chip{display:inline-block;padding:2px 9px;border-radius:99px;font-size:11px;font-weight:700}
.chip.buy{background:var(--up-soft);color:var(--up)}.chip.watch{background:var(--warn-soft);color:var(--warn)}
.chip.in{background:var(--ok-soft);color:var(--ok)}.chip.oos{background:var(--up-soft);color:var(--up)}
.empty{padding:26px 18px;color:var(--ink2);font-size:13.5px}

/* forms / cards / chat */
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:16px 18px;margin-bottom:14px}
input.txt,select.txt,textarea.txt{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:9px;background:#fff;margin-bottom:10px;font:inherit;color:var(--ink)}
.row2{display:flex;gap:8px}.row2 input.txt,.row2 select.txt{margin-bottom:0}
button.primary{background:var(--accent);color:#1c1208;border:none;border-radius:9px;padding:11px 16px;font-weight:700;cursor:pointer}
button.primary:active{background:var(--accent-d)}
.err{color:var(--up);font-size:13px;margin:8px 0}
.bubble{border:1px solid var(--line);border-radius:12px;padding:11px 14px;margin-bottom:10px;font-size:13.5px;line-height:1.55;background:#fff}
.bubble.you{background:#eef3f5}

/* login */
.center{max-width:390px;margin:9vh auto;padding:0 18px}
.login-card{background:var(--slate);border-radius:18px;padding:30px 26px;text-align:center;color:#fff;margin-bottom:16px}
.login-card .big{width:60px;height:60px;border-radius:15px;background:var(--slate-d);display:inline-flex;align-items:center;justify-content:center;position:relative}
.muted{color:var(--ink2);font-size:12px;text-align:center;margin-top:12px}

/* mobile: sidebar -> bottom tabs, rail stacks under content */
.tabbar{display:none}
@media(max-width:960px){
  .app{grid-template-columns:1fr}
  nav.side{display:none}
  .body{grid-template-columns:1fr}
  .rail{border-left:none;border-top:1px solid var(--line);min-height:0}
  body{padding-bottom:64px}
  .tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--slate);justify-content:space-around;padding:8px 0 10px;z-index:20}
  .tabbar a{color:#8b95a3;text-decoration:none;font-size:10.5px;text-align:center;flex:1;cursor:pointer}
  .tabbar a.on{color:#fff}
  .tabbar a .ic{display:block;font-size:17px;margin-bottom:2px}
  .heronums{gap:20px}
}


/* ===== v9 polish: consistent palette, nav focus, price-check components ===== */
nav.side a:hover{color:#fff;background:rgba(255,255,255,.05)}
nav.side a.on{background:linear-gradient(90deg,rgba(255,122,61,.18),rgba(255,122,61,.03));color:#fff;border-left:3px solid var(--accent);padding-left:15px;font-weight:600}

/* custom autocomplete (replaces the OS-styled datalist) */
.acwrap{position:relative;flex:1}
.acwrap input.txt{margin-bottom:0;width:100%}
.ac{position:absolute;top:calc(100% + 5px);left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);z-index:40;max-height:264px;overflow-y:auto;display:none}
.acclear{position:absolute;right:9px;top:50%;transform:translateY(-50%);cursor:pointer;color:var(--ink3);font-size:13px;line-height:1;padding:4px;display:none;z-index:41}
.acclear:hover{color:var(--ink2)}
.ac div{padding:9px 12px;font-size:13.5px;cursor:pointer;border-bottom:1px solid #f0f3f6}
.ac div:last-child{border-bottom:none}
.ac div.sel,.ac div:hover{background:var(--accent-soft)}

/* verdict strip */
.statrow{display:flex;gap:8px;flex-wrap:wrap;padding:12px 14px 4px}
.stat{flex:1;min-width:120px;background:#f4f7fa;border:1px solid var(--line);border-radius:10px;padding:9px 11px}
.stat .k{font-size:9.5px;color:var(--ink3);letter-spacing:.06em}
.stat .v{font-weight:800;font-size:16px;letter-spacing:-.01em}
.stat .m{font-size:11px;color:var(--ink3)}

/* result filters */
.fbar{display:flex;gap:6px;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid var(--line);align-items:center}
.fbar .fl{font-size:10.5px;color:var(--ink3);text-transform:uppercase;letter-spacing:.05em;margin-right:2px}
.fchip{border:1px solid var(--line);background:#fff;border-radius:99px;padding:4px 11px;font-size:12px;cursor:pointer;color:var(--ink2)}
.fchip.on{background:var(--slate);border-color:var(--slate);color:#fff}

/* history rail */
.histitem{cursor:pointer;padding:6px 2px;border-bottom:1px solid #eef1f4;display:flex;justify-content:space-between;gap:6px;font-size:12.5px}
.histitem:hover{color:var(--accent)}
.histitem .t{color:var(--ink3);flex-shrink:0}
.histmore{cursor:pointer;color:var(--accent);padding:7px 2px;font-size:12px;font-weight:600}


/* ===== v12: Midnight rebrand + drawn status indicators ===== */
.sdot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:9px;vertical-align:middle;background:#c6ced6;flex:0 0 auto}
.sdot.ok{background:#1e9d5a;box-shadow:0 0 0 3px rgba(30,157,90,.14)}
.sdot.err{background:#e05540;box-shadow:0 0 0 3px rgba(224,85,64,.14)}
.sdot.warnd{background:#f4a83d;box-shadow:0 0 0 3px rgba(244,168,61,.14)}
.sdot.search{background:var(--accent);animation:lbpulse 1.2s ease-out infinite}
@keyframes lbpulse{0%{box-shadow:0 0 0 0 rgba(255,122,61,.45)}75%{box-shadow:0 0 0 7px rgba(255,122,61,0)}100%{box-shadow:0 0 0 0 rgba(255,122,61,0)}}
.ck{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;background:var(--ok-soft);color:var(--ok);font-size:11px;font-weight:800;margin-right:8px;flex:0 0 auto}
.ck.pend{background:#eef1f4;color:var(--ink3)}
.pline{display:flex;align-items:center;padding:3px 0;font-size:13.5px}
.pline .plab{min-width:96px;font-weight:600;font-size:12px;letter-spacing:.03em;color:var(--ink2)}
.pline .ptxt{color:var(--ink3);font-size:12.5px}
.srow{display:flex;align-items:center;padding:5px 0;font-size:12.5px;font-weight:600;letter-spacing:.02em}
.srow .live{margin-left:auto;font-size:10px;color:var(--ok);background:var(--ok-soft);border-radius:99px;padding:1px 8px;font-weight:700}


/* v13: proper selects + usage/branches polish */
select.txt{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%2354626f' stroke-width='1.6' fill='none' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}
select.txt:focus,input.txt:focus,textarea.txt:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(255,122,61,.14)}
.upok{display:flex;align-items:center;gap:8px;padding:7px 0;font-size:12.5px;border-bottom:1px solid #eef1f4}
.upok:last-child{border-bottom:none}
.upok .fn{color:var(--ink3);font-size:11px;margin-left:auto;white-space:nowrap}
td .sub{display:block;font-size:11px;color:var(--ink3);white-space:normal}


/* v19: weight + heading normalisation, branches page */
select.txt{font-weight:400}
.card h3,.formhead{font-size:14px;font-weight:650;letter-spacing:-.01em}
.rowact{color:var(--accent);cursor:pointer;font-size:12px;font-weight:600}
.rowact:hover{text-decoration:underline}
.btn2{background:#fff;border:1px solid var(--line);border-radius:9px;padding:9px 14px;font-weight:600;cursor:pointer;color:var(--ink2)}


/* v20: usage table — centred numerics, mini pack picker */
.tnum{text-align:center}
th.tnum{text-align:center}
select.mini{border:1px solid var(--line);border-radius:7px;padding:3px 22px 3px 8px;font-size:12px;background:#fff;appearance:none;-webkit-appearance:none;cursor:pointer;font-weight:400;color:var(--ink);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='5' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%2354626f' stroke-width='1.6' fill='none' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 7px center}


/* v23: lighter type (SF/Apple feel) + classification badges + tabs */
h1,h2,h3{font-weight:640}
b,strong{font-weight:600}
th{font-weight:600}
button.primary{font-weight:650}
.stat .v{font-weight:700}
.brand .word{font-weight:650}
.tabrow{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:-6px -18px 12px;padding:0 18px}
.tabrow .tab{padding:9px 14px;font-size:13px;color:var(--ink2);cursor:pointer;border-bottom:2px solid transparent;font-weight:600}
.tabrow .tab.on{color:var(--ink);border-bottom-color:var(--accent)}
.clsb{font-size:9px;font-weight:700;letter-spacing:.05em;border-radius:5px;padding:1px 6px;margin-left:7px;vertical-align:1px;text-transform:uppercase}
.clsb.generic{background:#e8edf2;color:#41546a}
.clsb.brand{background:var(--warn-soft);color:var(--warn)}
.clsb.nutrition{background:#e3eef7;color:#2f7ea6}
.clsb.other{background:#eceff1;color:#7d8b99}


/* v25: explainer modal + radar page */
.ovl{position:fixed;inset:0;background:rgba(10,22,34,.55);z-index:60;display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;overflow-y:auto}
.sheet{background:#fff;border-radius:16px;max-width:640px;width:100%;box-shadow:0 18px 60px rgba(10,22,34,.35);padding:22px 24px;position:relative;text-align:left}
.sheet .x{position:absolute;top:12px;right:14px;cursor:pointer;color:var(--ink3);font-size:20px;line-height:1;padding:4px}
.sheet .x:hover{color:var(--ink)}
.sheet h3{font-size:17px;margin-bottom:2px}
.sheet .sec{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);margin:16px 0 6px}
.sheet ul{margin:0;padding-left:0;list-style:none}
.sheet li{padding:5px 0 5px 22px;position:relative;font-size:13.5px;line-height:1.5;color:#33414e;border-bottom:1px solid #f0f3f6}
.sheet li:before{content:"\2192";position:absolute;left:2px;color:var(--accent);font-weight:700}
.sheet .meth{font-size:12.5px;color:var(--ink2);line-height:1.65}
.mvleg{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border:1px solid var(--line);border-radius:999px;cursor:pointer;color:var(--ink2);user-select:none}
.mvleg:hover{border-color:var(--ink3)}
.mvleg.off{opacity:.45;text-decoration:line-through}
.impbar{display:flex;align-items:center;gap:8px;font-size:12px;padding:3px 0}
.impbar .nm2{width:210px;color:#33414e}
.impbar .bar{height:8px;border-radius:4px;background:var(--accent);opacity:.85}


/* v25b: Lumen AI floating layer */
.ailaunch{position:fixed;right:22px;bottom:22px;z-index:55;background:var(--slate);color:#fff;border-radius:999px;padding:11px 18px;font-weight:650;font-size:13.5px;cursor:pointer;box-shadow:0 8px 24px rgba(10,22,34,.35);display:flex;align-items:center;gap:8px;border:1px solid rgba(255,255,255,.08)}
.ailaunch:hover{transform:translateY(-1px)}
.ailaunch .spark{color:var(--accent);font-size:15px}
.aipanel{position:fixed;top:0;right:0;bottom:0;width:min(400px,100vw);background:#fff;z-index:70;box-shadow:-14px 0 44px rgba(10,22,34,.28);display:flex;flex-direction:column}
.aipanel .hd{background:var(--slate);color:#fff;padding:15px 18px;display:flex;align-items:center;gap:9px}
.aipanel .hd b{font-size:15px;font-weight:650}
.aipanel .hd .spark{color:var(--accent)}
.aipanel .hd .x{margin-left:auto;cursor:pointer;color:#9fb0c2;font-size:19px}
.aipanel .hd .x:hover{color:#fff}
.aipanel .msgs{flex:1;overflow-y:auto;padding:14px}
.aipanel .inrow{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line)}
.aipanel .inrow input{flex:1;margin-bottom:0}
@media(max-width:960px){.ailaunch{bottom:78px}}


/* v28: sortable column headers */
th.sth{cursor:pointer;user-select:none;-webkit-user-select:none}
th.sth .sic{font-size:8.5px;margin-left:4px;color:var(--ink3);opacity:.55}
th.sth:hover{color:var(--ink)}
th.sth.on{color:var(--ink)}
th.sth.on .sic{color:var(--accent);opacity:1;font-size:9.5px}


/* v29: LumenAi — messenger-style bubbles + growing composer + suggestion chips */
.ailaunch .ai{color:var(--accent)}
.aipanel .msgs{background:#f4f6f8;display:flex;flex-direction:column}
.brow{display:flex;flex-direction:column;margin-bottom:9px}
.brow.yourow{align-items:flex-end}
.brow.airow{align-items:flex-start}
.bub{max-width:86%;padding:9px 13px;font-size:13.5px;line-height:1.55;border-radius:16px;word-break:break-word}
.brow.yourow .bub{background:var(--slate);color:#fff;border-bottom-right-radius:5px}
.brow.airow .bub{background:#fff;border:1px solid var(--line);border-bottom-left-radius:5px}
.bub.typing{color:var(--ink3)}
.sugrow{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px;max-width:86%}
.sug{border:1px solid var(--accent);color:#b4531f;background:#fff4ec;border-radius:999px;padding:5px 12px;font-size:12px;font-weight:600;cursor:pointer}
.sug:hover{background:var(--accent);color:#1c1208}
.aipanel .inrow{align-items:flex-end}
textarea.aita{flex:1;margin-bottom:0;resize:none;max-height:120px;line-height:1.45;border-radius:19px;overflow-y:auto;font-family:inherit;font-size:13.5px;padding:10px 15px;background:#f4f6f8;border:1px solid var(--line)}
textarea.aita:focus{background:#fff}
.ailaunch .wm{display:inline-flex;align-items:center}
.aipanel .inrow .aisend{border-radius:50%;width:38px;height:38px;padding:0;font-size:17px;line-height:1;flex:0 0 38px}
