/* GODMODE VIP: design system (Material 3 dark structure, GMLABS brand accent). */
:root{
  --bg:#0a090e; --surface:#100f15; --s1:#15131c; --s2:#1a1823; --s3:#211e2b; --s4:#2a2636;
  --line:#26222f; --line2:#363042;
  --text:#eeeaf6; --text2:#b4acc4; --text3:#7f7792;
  --primary:#c6a6ff; --primary-strong:#a970ff; --on-primary:#170d29; --primary-c:#2a2042; --on-primary-c:#e6d9ff;
  --up:#81c995; --up-c:#13281b; --down:#f28b82; --down-c:#2e1514; --warn:#fdd663; --warn-c:#2c2610; --blue:#8ab4f8; --blue-c:#13213a;
  --hl:linear-gradient(100deg,#c7b3ff 0%,#9fb4ff 50%,#f0a8e4 100%);
  --r-sm:8px; --r:12px; --r-lg:16px; --r-xl:24px;
  --ease:cubic-bezier(.2,0,0,1); --ease-emph:cubic-bezier(.05,.7,.1,1);
  --font:"Google Sans Flex","Google Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --mono:"Google Sans Code","Roboto Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --rail:88px; --top:64px;
  color-scheme:dark;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:80px}
body{margin:0;background:var(--bg);color:var(--text);font:400 14px/20px var(--font);font-variation-settings:"opsz" 14;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none;padding:0}
a{color:var(--primary);text-decoration:none}
img{display:block;max-width:100%}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:6px}
::selection{background:#a970ff55}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.2px}
.up{color:var(--up)} .down{color:var(--down)} .muted{color:var(--text2)} .dim{color:var(--text3)}
.ms{font-family:"Material Symbols Rounded";font-weight:400;font-style:normal;font-size:20px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;flex:none;user-select:none}
.ms.fill{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}


/* GODMODE wordmark: the store's exact rainbow logo (SVG letter mask over an animated gradient) */
.gmw{display:inline-block;height:.74em;aspect-ratio:697/64;vertical-align:-.02em;flex:none;background:linear-gradient(100deg,#d966ff,#816aff,#56dced,#92f287,#ffd475,#ff729d,#d966ff);background-size:300% 100%;animation:gm-rainbow 8s linear infinite;-webkit-mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20697%2064%22%3E%3Cg%20fill%3D%22black%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M13%200H82Q96%200%2096%2010V24H80V16H16V48H80V40H48V32H96V54Q96%2064%2082%2064H13Q0%2064%200%2054V10Q0%200%2013%200Z%22%2F%3E%3Cpath%20d%3D%22M113%200H182Q196%200%20196%2010V54Q196%2064%20182%2064H113Q100%2064%20100%2054V10Q100%200%20113%200ZM116%2016V48H180V16Z%22%2F%3E%3Cpath%20d%3D%22M200%200H282Q296%200%20296%2010V54Q296%2064%20282%2064H200ZM216%2016V48H280V16Z%22%2F%3E%3Cpath%20d%3D%22M301%200H325L339%2048H358L373%200H397V64H381V31L372%2064H329L317%2031V64H301Z%22%2F%3E%3Cpath%20d%3D%22M415%200H484Q498%200%20498%2010V54Q498%2064%20484%2064H415Q402%2064%20402%2054V10Q402%200%20415%200ZM418%2016V48H482V16Z%22%2F%3E%3Cpath%20d%3D%22M502%200H584Q598%200%20598%2010V54Q598%2064%20584%2064H502ZM518%2016V48H582V16Z%22%2F%3E%3Cpath%20d%3D%22M615%200H697V16H618V24H666V40H618V48H697V64H615Q602%2064%20602%2054V10Q602%200%20615%200Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20697%2064%22%3E%3Cg%20fill%3D%22black%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M13%200H82Q96%200%2096%2010V24H80V16H16V48H80V40H48V32H96V54Q96%2064%2082%2064H13Q0%2064%200%2054V10Q0%200%2013%200Z%22%2F%3E%3Cpath%20d%3D%22M113%200H182Q196%200%20196%2010V54Q196%2064%20182%2064H113Q100%2064%20100%2054V10Q100%200%20113%200ZM116%2016V48H180V16Z%22%2F%3E%3Cpath%20d%3D%22M200%200H282Q296%200%20296%2010V54Q296%2064%20282%2064H200ZM216%2016V48H280V16Z%22%2F%3E%3Cpath%20d%3D%22M301%200H325L339%2048H358L373%200H397V64H381V31L372%2064H329L317%2031V64H301Z%22%2F%3E%3Cpath%20d%3D%22M415%200H484Q498%200%20498%2010V54Q498%2064%20484%2064H415Q402%2064%20402%2054V10Q402%200%20415%200ZM418%2016V48H482V16Z%22%2F%3E%3Cpath%20d%3D%22M502%200H584Q598%200%20598%2010V54Q598%2064%20584%2064H502ZM518%2016V48H582V16Z%22%2F%3E%3Cpath%20d%3D%22M615%200H697V16H618V24H666V40H618V48H697V64H615Q602%2064%20602%2054V10Q602%200%20615%200Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") center/contain no-repeat}
@keyframes gm-rainbow{from{background-position:0% 50%}to{background-position:300% 50%}}
.gmw-lg{height:24px;max-width:calc(100% - 64px)}

/* ---------- shell ---------- */
.topbar{position:fixed;inset:0 0 auto 0;height:var(--top);z-index:30;display:flex;align-items:center;gap:16px;padding:0 16px 0 24px;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid transparent;transition:border-color .2s}
.topbar.scrolled{border-bottom-color:var(--line)}
.wordmark{display:flex;align-items:center;gap:10px;flex:none;text-decoration:none;min-width:0}
.wordmark .gmw{height:17px}
.vip{font:700 10px/1 var(--font);letter-spacing:1.2px;padding:4px 7px;border-radius:6px;color:#150b24;background:var(--hl)}
.search{flex:1;max-width:680px;margin:0 auto;position:relative}
.search-box{display:flex;align-items:center;gap:10px;height:48px;padding:0 16px;border-radius:999px;background:var(--s2);border:1px solid transparent;transition:background .2s,border-color .2s}
.search-box:focus-within{background:var(--s3);border-color:var(--line2)}
.search-box input{flex:1;min-width:0;border:0;outline:0;background:none;font-size:15px}
.search-box input::placeholder{color:var(--text3)}
.kbd{font:500 11px/1 var(--mono);color:var(--text3);border:1px solid var(--line2);border-radius:6px;padding:4px 6px}
.suggest{position:absolute;top:54px;left:0;right:0;background:var(--s2);border:1px solid var(--line2);border-radius:var(--r-lg);box-shadow:0 18px 48px #000a;padding:6px;display:none;max-height:420px;overflow:auto}
.suggest.open{display:block}
.suggest button{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border-radius:10px;text-align:left}
.suggest button[aria-selected="true"],.suggest button:hover{background:var(--s3)}
.top-actions{display:flex;align-items:center;gap:6px;margin-left:auto}
.live{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 12px;border-radius:999px;background:var(--s2);font:500 12px/1 var(--font);color:var(--text2);white-space:nowrap}
.live i{width:7px;height:7px;border-radius:50%;background:var(--up);box-shadow:0 0 0 0 #81c99588;animation:ping 2s infinite}
.live.stale i{background:var(--warn);animation:none}
@keyframes ping{70%{box-shadow:0 0 0 7px #81c99500}100%{box-shadow:0 0 0 0 #81c99500}}
.icon-btn{position:relative;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;color:var(--text2);transition:background .15s}
.icon-btn:hover{background:var(--s2);color:var(--text)}
.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;font:600 14px/1 var(--font);color:#150b24;background:var(--hl)}

.rail{position:fixed;top:var(--top);bottom:0;left:0;width:var(--rail);z-index:20;display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0 16px}
.nav-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;width:72px;padding:4px 0 6px;color:var(--text2);font:500 12px/16px var(--font)}
.nav-item .pill{display:grid;place-items:center;width:56px;height:32px;border-radius:16px;transition:background .2s var(--ease)}
.nav-item:hover .pill{background:var(--s2)}
.nav-item[aria-current="page"]{color:var(--text)}
.nav-item[aria-current="page"] .pill{background:var(--primary-c);color:var(--on-primary-c)}
.nav-item[aria-current="page"] .ms{font-variation-settings:"FILL" 1,"wght" 500,"GRAD" 0,"opsz" 24}
.badge{position:absolute;top:0;left:calc(50% + 8px);min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--down);color:#2a0d0b;font:700 10px/16px var(--font);text-align:center}
.badge.dot{min-width:8px;width:8px;height:8px;top:4px;left:calc(50% + 10px);padding:0}
.rail-spacer{flex:1}
.bottomnav{display:none}

main{padding:calc(var(--top) + 8px) 24px 48px calc(var(--rail) + 8px);min-height:100vh}
.view{max-width:1240px;margin:0 auto;animation:viewIn .35s var(--ease-emph)}
@keyframes viewIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ---------- type ---------- */
.h-display{font:500 34px/42px var(--font);font-variation-settings:"opsz" 40;letter-spacing:-.6px;margin:0}
.h1{font:500 24px/32px var(--font);font-variation-settings:"opsz" 28;letter-spacing:-.2px;margin:0}
.h2{font:500 18px/24px var(--font);margin:0}
.h3{font:500 15px/20px var(--font);margin:0}
.label{font:500 12px/16px var(--font);letter-spacing:.2px;color:var(--text2)}
.overline{font:600 11px/16px var(--font);letter-spacing:1px;text-transform:uppercase;color:var(--text3)}
.caption{font:400 12px/16px var(--font);color:var(--text3)}
.lede{font:400 15px/22px var(--font);color:var(--text2);margin:4px 0 0}

/* ---------- layout ---------- */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:16px 0 20px}
.section{margin-top:28px}
.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px}
.section-head .h2{display:flex;align-items:center;gap:8px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.split{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:16px;align-items:start}
.stack{display:flex;flex-direction:column;gap:16px}
.row{display:flex;align-items:center;gap:12px}
.wrap{flex-wrap:wrap}
.grow{flex:1;min-width:0}
.right{margin-left:auto}
.hscroll{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:6px;margin:0 -24px;padding-inline:24px;scroll-padding-inline:24px;scrollbar-width:none}
.hscroll::-webkit-scrollbar{display:none}
.hscroll > *{scroll-snap-align:start;flex:none}

/* ---------- surfaces ---------- */
.card{background:var(--s1);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px}
.card.flush{padding:0;overflow:hidden}
.card.tonal{background:var(--s2);border-color:transparent}
.card.hero{background:radial-gradient(120% 140% at 0% 0%,#2a1d45 0%,#15121d 55%,#121018 100%);border-color:#2f2741}
.card-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.card-head .h3{flex:1}
.list > *{border-top:1px solid var(--line)}
.list > *:first-child{border-top:0}
.clickable{cursor:pointer;transition:background .15s}
.clickable:hover{background:var(--s2)}
.divider{height:1px;background:var(--line);margin:16px 0}

/* ---------- buttons, chips ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 20px;border-radius:999px;font:500 14px/1 var(--font);letter-spacing:.1px;transition:background .15s,box-shadow .15s,transform .1s;white-space:nowrap}
.btn:active{transform:scale(.98)}
.btn.filled{background:var(--primary);color:var(--on-primary)}
.btn.filled:hover{background:#d4bbff;box-shadow:0 2px 10px #a970ff44}
.btn.tonal{background:var(--primary-c);color:var(--on-primary-c)}
.btn.tonal:hover{background:#33284f}
.btn.outlined{border:1px solid var(--line2);color:var(--primary)}
.btn.outlined:hover{background:#c6a6ff12}
.btn.text{padding:0 12px;color:var(--primary)}
.btn.text:hover{background:#c6a6ff12}
.btn.lg{height:52px;padding:0 28px;font-size:15px}
.btn .ms{font-size:18px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chips.scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -24px;padding:0 24px}
.chips.scroll::-webkit-scrollbar{display:none}
.chip{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:8px;border:1px solid var(--line2);color:var(--text2);font:500 13px/1 var(--font);white-space:nowrap;transition:background .15s,border-color .15s,color .15s;flex:none}
.chip:hover{background:var(--s2)}
.chip[aria-pressed="true"]{background:var(--primary-c);border-color:transparent;color:var(--on-primary-c)}
.chip[aria-pressed="true"]::before{content:"check";font-family:"Material Symbols Rounded";font-size:18px;margin-left:-4px}
.chip .ms{font-size:18px}
.seg{display:inline-flex;border:1px solid var(--line2);border-radius:999px;overflow:hidden;height:36px}
.seg button{display:inline-flex;align-items:center;gap:6px;padding:0 16px;font:500 13px/1 var(--font);color:var(--text2);border-left:1px solid var(--line2);transition:background .15s}
.seg button:first-child{border-left:0}
.seg button[aria-pressed="true"]{background:var(--primary-c);color:var(--on-primary-c)}
.seg button[aria-pressed="true"]::before{content:"check";font-family:"Material Symbols Rounded";font-size:16px}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:20px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{position:relative;display:inline-flex;align-items:center;gap:8px;height:48px;padding:0 16px;color:var(--text2);font:500 14px/1 var(--font);white-space:nowrap}
.tab:hover{color:var(--text)}
.tab[aria-selected="true"]{color:var(--primary)}
.tab[aria-selected="true"]::after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:3px;border-radius:3px 3px 0 0;background:var(--primary)}
.tag{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:6px;font:600 11px/1 var(--font);letter-spacing:.3px;background:var(--s3);color:var(--text2);white-space:nowrap}
.tag.up{background:var(--up-c);color:var(--up)}
.tag.down{background:var(--down-c);color:var(--down)}
.tag.warn{background:var(--warn-c);color:var(--warn)}
.tag.blue{background:var(--blue-c);color:var(--blue)}
.tag.primary{background:var(--primary-c);color:var(--on-primary-c)}
.tag .ms{font-size:14px}

/* signal pill */
.sig{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:8px;font:700 12px/1 var(--font);letter-spacing:.4px;white-space:nowrap}
.sig.buy{background:var(--up-c);color:var(--up)}
.sig.sell{background:var(--down-c);color:var(--down)}
.sig.wait{background:var(--s3);color:var(--text2)}
.sig .num{font-weight:600;opacity:.9}
.sig.new::after{content:"NEW";margin-left:2px;padding:2px 5px;border-radius:4px;background:var(--up);color:#0a1a10;font:800 9px/1 var(--font);letter-spacing:.5px}
.sig.sell.new::after{background:var(--down);color:#2a0d0b}
.sigwrap{min-width:84px;text-align:right}

/* change */
.chg{display:inline-flex;align-items:center;gap:2px;font:500 13px/1 var(--mono);font-variant-numeric:tabular-nums}
.chg .ms{font-size:16px}
.chg.box{padding:4px 8px 4px 6px;border-radius:6px}
.chg.box.up{background:var(--up-c)} .chg.box.down{background:var(--down-c)}

/* asset row */
.asset{display:flex;align-items:center;gap:12px;padding:12px 16px;min-height:64px}
.logo{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;flex:none;font:700 12px/1 var(--font);letter-spacing:-.2px;color:#0d0b12;overflow:hidden}
.logo img{width:100%;height:100%;object-fit:cover}
.asset .sym{font:600 14px/18px var(--font)}
.asset .nm{font:400 12px/16px var(--font);color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.asset .px{text-align:right;min-width:86px}
.asset .px .num{display:block;font-size:14px;font-weight:500}
.flash-up{animation:flashUp .9s var(--ease)}
.flash-down{animation:flashDown .9s var(--ease)}
@keyframes flashUp{0%{background:#81c99533}100%{background:transparent}}
@keyframes flashDown{0%{background:#f28b8233}100%{background:transparent}}

/* index card */
.qcard{width:212px;padding:14px 16px 12px;border-radius:var(--r-lg);background:var(--s1);border:1px solid var(--line);cursor:default}
.qcard .label{display:flex;justify-content:space-between}
.qcard .price{font:500 20px/28px var(--mono);font-variant-numeric:tabular-nums;margin-top:6px;letter-spacing:-.4px}
.qcard svg{display:block;width:100%;height:36px;margin-top:6px}

/* stat tile */
.stat{padding:16px;border-radius:var(--r-lg);background:var(--s1);border:1px solid var(--line)}
.stat .v{font:500 26px/32px var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.6px;margin-top:6px}
.stat .s{margin-top:4px}

/* meters */
.bar{height:6px;border-radius:3px;background:var(--s3);overflow:hidden}
.bar i{display:block;height:100%;border-radius:inherit;background:var(--primary);transition:width .6s var(--ease)}
.bar.up i{background:var(--up)} .bar.down i{background:var(--down)}
.split-bar{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--s3)}
.split-bar i{display:block;height:100%}
.ring{position:relative;display:grid;place-items:center;flex:none}
.ring svg{transform:rotate(-90deg)}
.ring .v{position:absolute;inset:0;display:grid;place-items:center;text-align:center;font:600 18px/1 var(--mono)}
.ring .v small{display:block;font:500 10px/1.2 var(--font);color:var(--text3);letter-spacing:.4px}
.factor{display:grid;grid-template-columns:118px 1fr 32px;align-items:center;gap:12px;padding:6px 0;font-size:13px}
.factor .num{text-align:right;color:var(--text2)}

/* tables */
.table{width:100%;border-collapse:collapse}
.table th{background:var(--s1);text-align:left;font:500 12px/16px var(--font);color:var(--text3);padding:12px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.table th:first-child,.table td:first-child{padding-left:16px}
.table th:last-child,.table td:last-child{padding-right:16px}
.table th.r,.table td.r{text-align:right}
.table td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle;white-space:nowrap}
.table tr:last-child td{border-bottom:0}
.table tbody tr{cursor:pointer;transition:background .15s}
.table tbody tr:hover{background:var(--s2)}

/* news */
.news-item{display:flex;gap:14px;padding:14px 16px}
.news-item .src{display:flex;align-items:center;gap:8px;font:500 12px/16px var(--font);color:var(--text2)}
.news-item .src .fav{width:16px;height:16px;border-radius:4px;background:var(--s3)}
.news-item .title{font:500 15px/21px var(--font);color:var(--text);margin:6px 0 8px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.news-item:hover .title{color:#fff;text-decoration:underline;text-decoration-color:var(--line2);text-underline-offset:3px}
.sent{display:inline-flex;align-items:center;gap:5px;font:500 12px/1 var(--font)}
.sent i{width:8px;height:8px;border-radius:50%}
.sent.bullish{color:var(--up)} .sent.bullish i{background:var(--up)}
.sent.bearish{color:var(--down)} .sent.bearish i{background:var(--down)}
.sent.neutral{color:var(--text3)} .sent.neutral i{background:var(--text3)}

/* world */
.event{display:flex;flex-direction:column;gap:12px}
.event .ehead{display:flex;gap:12px;align-items:flex-start}
.event .eimg{width:44px;height:44px;border-radius:10px;flex:none;background:var(--s3) center/cover}
.outcome{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:4px 10px;align-items:center;font-size:13px}
.outcome .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.outcome .p{font:600 14px/1 var(--mono);min-width:44px;text-align:right}
.outcome .bar{grid-column:1/-1;height:4px}
.outcome .d{min-width:52px;text-align:right}

/* insiders */
.trade{display:flex;gap:14px;padding:14px 16px;align-items:flex-start}
.trade .who{font:500 14px/20px var(--font)}
.trade .meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.trade .amt{text-align:right;flex:none}
.trade .amt .num{display:block;font-size:15px;font-weight:600}

/* gauge */
.gauge{position:relative;width:100%;max-width:260px;margin:0 auto}
.gauge svg{display:block;width:100%}
.gauge .gv{position:absolute;left:0;right:0;bottom:4px;text-align:center}
.gauge .gv .num{font-size:34px;line-height:38px;font-weight:600;letter-spacing:-1px}

/* heatmap */
.heat{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.heat > div{border-radius:10px;padding:12px;min-height:76px;display:flex;flex-direction:column;justify-content:space-between;cursor:pointer;transition:transform .15s}
.heat > div:hover{transform:translateY(-2px)}
.heat .hn{font:500 12px/16px var(--font);color:#ffffffd9}
.heat .hv{font:600 16px/20px var(--mono);color:#fff}

/* skeleton */
.sk{position:relative;overflow:hidden;background:var(--s2);border-radius:8px}
.sk::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,#ffffff0d,transparent);animation:shimmer 1.4s infinite}
@keyframes shimmer{to{transform:translateX(100%)}}

/* brief */
.brief li{margin:0 0 10px;padding-left:4px;color:var(--text);line-height:22px}
.brief li::marker{color:var(--primary)}
.ai-chip{display:inline-flex;align-items:center;gap:6px;font:600 12px/1 var(--font);letter-spacing:.3px;background:var(--hl);-webkit-background-clip:text;background-clip:text;color:transparent}
.ai-chip .ms{color:var(--primary);font-size:18px}

/* streak */
.streak{display:inline-flex;align-items:center;gap:10px;height:36px;padding:0 14px 0 10px;border-radius:999px;background:var(--s2);border:1px solid var(--line)}
.streak .ms{color:#ffab5e}
.streak .days{display:flex;gap:4px}
.streak .days i{width:6px;height:6px;border-radius:50%;background:var(--s4)}
.streak .days i.on{background:#ffab5e}

/* reveal */
.reveal{position:relative;overflow:hidden}
.reveal .veil{position:absolute;inset:0;z-index:2;display:grid;place-items:center;text-align:center;padding:20px;background:#15121dcc;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);transition:opacity .5s var(--ease)}
.reveal.open .veil{opacity:0;pointer-events:none}

/* sheet */
.scrim{position:fixed;inset:0;z-index:60;background:#0008;opacity:0;pointer-events:none;transition:opacity .25s var(--ease)}
.scrim.open{opacity:1;pointer-events:auto}
.sheet{position:fixed;top:0;right:0;bottom:0;z-index:61;width:min(560px,100vw);background:var(--surface);border-left:1px solid var(--line);transform:translateX(100%);transition:transform .35s var(--ease-emph);display:flex;flex-direction:column}
.sheet.open{transform:none}
.sheet-head{display:flex;align-items:center;gap:12px;padding:12px 12px 12px 20px;border-bottom:1px solid var(--line);min-height:64px}
.sheet-body{flex:1;overflow:auto;padding:20px;overscroll-behavior:contain}
.chart{height:340px;margin:0 -8px}
.kv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border-radius:var(--r);overflow:hidden;border:1px solid var(--line)}
.kv > div{background:var(--s1);padding:12px 14px}
.kv .k{font:500 11px/14px var(--font);color:var(--text3);letter-spacing:.3px}
.kv .v{font:500 15px/20px var(--mono);font-variant-numeric:tabular-nums;margin-top:4px}

/* dialog / onboarding */
.dialog{position:fixed;inset:0;z-index:80;display:none;place-items:center;padding:16px;background:#05040899;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.dialog.open{display:grid}
.dialog-card{width:min(560px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--s1);border:1px solid var(--line2);border-radius:28px;padding:32px;box-shadow:0 30px 80px #000c;animation:pop .35s var(--ease-emph)}
@keyframes pop{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
.steps-dots{display:flex;gap:6px;margin-bottom:24px}
.steps-dots i{height:4px;flex:1;border-radius:2px;background:var(--s4)}
.steps-dots i.on{background:var(--primary)}
.field{display:flex;flex-direction:column;gap:6px;margin-top:20px}
.field input{height:56px;padding:0 16px;border-radius:var(--r);border:1px solid var(--line2);background:var(--s2);font-size:16px;outline:0}
.field input:focus{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}
.choice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:20px}
.choice button{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:16px;border-radius:var(--r-lg);border:1px solid var(--line2);text-align:left;transition:border-color .15s,background .15s}
.choice button:hover{background:var(--s2)}
.choice button[aria-pressed="true"]{border-color:var(--primary);background:var(--primary-c);box-shadow:0 0 0 1px var(--primary)}
.choice .ms{font-size:24px;color:var(--primary)}
.choice b{font:500 15px/20px var(--font)}
.choice span:not(.ms){font:400 12px/16px var(--font);color:var(--text2)}

@media (max-width:520px){.ob-foot{flex-direction:column-reverse;align-items:stretch;gap:8px}.ob-foot .btn{width:100%;margin:0}.ob-foot .caption{text-align:center;justify-content:center;display:flex;gap:4px}}


/* auth + welcome */
.pw{position:relative}
.pw input{width:100%;padding-right:52px}
.pw .icon-btn{position:absolute;right:8px;top:50%;transform:translateY(-50%)}
.form-err{display:flex;align-items:center;gap:8px;margin:14px 0 0;padding:10px 12px;border-radius:10px;background:var(--down-c);color:var(--down);font:500 13px/18px var(--font)}
.form-err .ms{font-size:18px}
.dialog-card.compact{width:min(440px,100%)}
.dialog-card.congrats{position:relative;overflow:hidden;width:min(520px,100%)}
.cg-badge{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;background:#2fd27f1a;border:1px solid #81c99544;color:var(--up);font:700 11px/1 var(--font);letter-spacing:1.4px}
.cg-badge .ms{font-size:16px}
.cg-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.cg-foot{position:sticky;bottom:-32px;margin:20px -32px -32px;padding:16px 32px 24px;background:linear-gradient(180deg,transparent,var(--s1) 30%)}
.cg-list li{display:flex;align-items:center;gap:10px;padding:10px;border-radius:12px;background:var(--s2);border:1px solid var(--line);opacity:0;animation:cgIn .45s var(--ease-emph) forwards}
.cg-list b{display:block;font:500 14px/18px var(--font)}
.cg-list span:not(.ms):not(.cg-check):not(.cg-ic):not(.gmw){display:block;font:400 12px/16px var(--font);color:var(--text2)}
.cg-check{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--up);color:#0b1a10;flex:none}
.cg-check .ms{font-size:16px;font-variation-settings:"FILL" 1,"wght" 700,"GRAD" 0,"opsz" 20}
.cg-ic{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--primary-c);color:var(--on-primary-c);flex:none}
.cg-ic .ms{font-size:19px}
@keyframes cgIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.confetti{position:absolute;inset:0 0 auto 0;height:100%;pointer-events:none;overflow:hidden}
.confetti i{position:absolute;top:-12px;width:7px;height:12px;border-radius:2px;opacity:0;animation:fall 2.6s cubic-bezier(.2,.6,.4,1) forwards}
@keyframes fall{0%{opacity:1;transform:translateY(0) rotate(0)}100%{opacity:0;transform:translateY(520px) rotate(540deg)}}
.save-banner{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.save-banner > .grow{flex:1 1 220px}
.save-actions{display:flex;align-items:center;gap:4px;flex:none}
@media (max-width:600px){
  .save-banner{align-items:flex-start}
  .save-banner > .ms{margin-top:2px}
  .save-banner > .grow{flex:1 1 0}
  .save-actions{width:100%;flex-direction:column;align-items:stretch;gap:6px}
  .save-actions .btn{width:100%}
}
@keyframes spin{to{transform:rotate(360deg)}}

/* toast */
.toast{position:fixed;left:50%;bottom:24px;z-index:90;transform:translate(-50%,24px);opacity:0;pointer-events:none;display:flex;align-items:center;gap:12px;min-height:48px;max-width:min(560px,calc(100vw - 32px));padding:12px 16px;border-radius:var(--r-sm);background:#e9e4f2;color:#1b1626;font:500 14px/20px var(--font);box-shadow:0 10px 30px #000a;transition:opacity .2s,transform .25s var(--ease-emph)}
.toast.open{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.toast .btn.text{color:#6b3fd1;height:32px}

/* footer */
.legal{margin:48px auto 0;max-width:1240px;padding:20px 0 0;border-top:1px solid var(--line);font:400 12px/18px var(--font);color:var(--text3)}
.legal p{margin:0 0 8px}
.legal a{color:var(--text2);text-decoration:underline;text-underline-offset:2px}
.note{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--r);background:var(--s1);border:1px solid var(--line);font:400 12px/18px var(--font);color:var(--text2)}
.note .ms{font-size:18px;color:var(--text3)}
.empty{padding:32px 16px;text-align:center;color:var(--text3)}

/* ---------- responsive ---------- */
@media (max-width:1300px){.hide-l{display:none!important}}
@media (max-width:1100px){
  .split{grid-template-columns:minmax(0,1fr)}
  .g4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:840px){
  :root{--rail:0px;--top:60px}
  .wordmark .gmw{height:12.5px}
  .wordmark{gap:7px}
  .wordmark .vip{padding:3px 5px;font-size:9px}
  .top-actions{gap:2px}
  .top-actions .icon-btn{width:36px;height:36px}
  #notif-btn{display:none}
  .topbar{padding:0 8px 0 16px;gap:8px}
  .rail{display:none}
  .search{display:none;position:fixed;inset:0 0 auto 0;z-index:40;max-width:none;padding:8px;background:var(--bg)}
  .search.open{display:block}
  .search .suggest{top:62px;left:8px;right:8px}
  .live .lbl{display:none}
  main{padding:calc(var(--top) + 4px) 16px calc(96px + env(safe-area-inset-bottom))}
  .hscroll,.chips.scroll{margin:0 -16px;padding-inline:16px;scroll-padding-inline:16px}
  .bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;justify-content:space-around;height:calc(72px + env(safe-area-inset-bottom));padding:8px 4px env(safe-area-inset-bottom);background:var(--s1);border-top:1px solid var(--line)}
  .bottomnav .nav-item{width:auto;flex:1;font-size:11px}
  .bottomnav .nav-item .pill{width:52px}
  .g2,.g3{grid-template-columns:minmax(0,1fr)}
  .g4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .h-display{font-size:28px;line-height:34px}
  .card{padding:16px}
  .sheet{width:100vw;border-left:0;top:0;transform:translateY(100%)}
  .sheet.open{transform:none}
  .chart{height:280px}
  .dialog-card{padding:24px;border-radius:24px}
  .heat{grid-template-columns:repeat(3,minmax(0,1fr))}
  .kv{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hide-m{display:none!important}
  .sigwrap{min-width:0}
  .asset .sig .num,.asset .sig.new::after{display:none}
  .asset .grow{min-width:56px}
  .asset{gap:10px;padding:12px 14px}
  .asset .px{min-width:78px}
  .toast{bottom:calc(84px + env(safe-area-inset-bottom))}
  .cg-list{grid-template-columns:minmax(0,1fr);gap:6px}
  .cg-list li{padding:8px 10px}
  .cg-ic{display:none}
  .cg-foot{bottom:-24px;margin:16px -24px -24px;padding:14px 24px 20px}
  .qcard{width:172px}
}
@media (min-width:841px){.hide-d{display:none!important}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
