:root{--bg:#07090d;--bg2:#0d1117;--card:#11161f;--card2:#151c27;--line:#1f2a3a;--blue:#1e90ff;--blue2:#0a5bd6;--glow:rgba(30,144,255,.35);--txt:#eef3fa;--mut:#8b98ab;--grn:#22c98a;--red:#ff4d5e;--gold:#e8c26a;--r:16px}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:radial-gradient(1200px 600px at 50% -200px,#0f2240 0%,transparent 60%),var(--bg);color:var(--txt);font:16px/1.55 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;min-height:100vh}
a{color:var(--blue);text-decoration:none}
img{max-width:100%;height:auto;display:block}
.wrap{max-width:1080px;margin:0 auto;padding:0 18px}
/* top bar */
.top{position:sticky;top:0;z-index:50;background:rgba(7,9,13,.82);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:12px;height:62px}
.brand{display:flex;align-items:center;gap:10px;color:var(--txt);font-weight:800;letter-spacing:.06em;font-size:15px}
.brand img{width:34px;height:34px;border-radius:9px}
.brand b{color:var(--blue)}
.top .cta-sm{margin-left:auto}
.nav{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line);background:rgba(7,9,13,.7)}
.nav::-webkit-scrollbar{display:none}
.nav a{flex:0 0 auto;color:var(--mut);padding:11px 14px;font-size:14px;font-weight:600;border-bottom:2px solid transparent;white-space:nowrap}
.nav a.on{color:var(--txt);border-color:var(--blue)}
.navwrap{position:sticky;top:62px;z-index:49}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;font-weight:800;border-radius:12px;padding:15px 22px;font-size:16px;color:#fff;background:linear-gradient(135deg,#2a9bff,#0a5bd6);box-shadow:0 10px 30px var(--glow),inset 0 1px 0 rgba(255,255,255,.25);transition:transform .15s,box-shadow .15s;text-align:center}
.btn:hover{transform:translateY(-1px);box-shadow:0 14px 38px var(--glow)}
.btn.big{font-size:18px;padding:19px 28px;width:100%;max-width:460px}
.btn.ghost{background:transparent;border:1px solid #2b3a52;box-shadow:none}
.btn.gold{background:linear-gradient(135deg,#f3d58a,#c79a3c);color:#1a1405;box-shadow:0 10px 30px rgba(232,194,106,.25)}
.btn.sm{padding:9px 14px;font-size:13px;border-radius:10px}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}
/* hero */
.hero{padding:26px 0 40px;text-align:center}
.hero .banner{border-radius:20px;overflow:hidden;border:1px solid var(--line);box-shadow:0 30px 80px rgba(0,0,0,.6),0 0 0 1px rgba(30,144,255,.08)}
.kicker{display:inline-block;margin:26px 0 10px;font-size:12px;font-weight:800;letter-spacing:.2em;color:var(--blue);background:rgba(30,144,255,.1);border:1px solid rgba(30,144,255,.3);padding:6px 12px;border-radius:99px}
h1{font-size:clamp(32px,7vw,56px);line-height:1.05;letter-spacing:-.02em;font-weight:900}
h1 span,h2 span{background:linear-gradient(90deg,#4fb0ff,#1e90ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.sub{color:var(--mut);font-size:clamp(16px,2.4vw,19px);max-width:620px;margin:16px auto 26px}
.under{font-size:13px;color:var(--mut);margin-top:12px}
section{padding:46px 0}
h2{font-size:clamp(26px,4.6vw,38px);font-weight:900;letter-spacing:-.01em;margin-bottom:8px}
.lead{color:var(--mut);margin-bottom:24px}
.center{text-align:center}
.grid{display:grid;gap:14px}
@media(min-width:760px){.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}}
.card{background:linear-gradient(180deg,var(--card2),var(--card));border:1px solid var(--line);border-radius:var(--r);padding:20px}
.step .n{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-weight:900;background:rgba(30,144,255,.14);color:var(--blue);border:1px solid rgba(30,144,255,.35);margin-bottom:12px}
.step h3{font-size:18px;margin-bottom:4px}
.step p{color:var(--mut);font-size:15px}
.feature{cursor:pointer;transition:border-color .2s,transform .2s;display:block;color:var(--txt)}
.feature:hover{border-color:#2f4b75;transform:translateY(-2px)}
.feature .ico{font-size:26px;margin-bottom:8px}
.feature h3{font-size:18px}
.feature p{color:var(--mut);font-size:14px}
.chartcard{padding:10px;overflow:hidden}
.chartcard img{border-radius:12px}
.vip{position:relative;overflow:hidden;background:radial-gradient(600px 200px at 50% 0,rgba(30,144,255,.25),transparent 70%),linear-gradient(180deg,#0f1828,#0b111b);border:1px solid #23406a;border-radius:22px;padding:30px 20px;text-align:center}
.vip h2{margin-bottom:10px}
.foot{border-top:1px solid var(--line);padding:30px 0 90px;color:var(--mut);font-size:13px;text-align:center}
.foot .disc{max-width:720px;margin:10px auto 0}
.sticky-cta{position:fixed;left:0;right:0;bottom:0;z-index:60;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:linear-gradient(0deg,rgba(7,9,13,.98),rgba(7,9,13,.85));border-top:1px solid var(--line);display:flex;justify-content:center}
.sticky-cta .btn{width:100%;max-width:520px;padding:13px}
.view{display:none}.view.on{display:block;animation:fade .25s}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1}}
.pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;letter-spacing:.08em;padding:4px 9px;border-radius:99px}
.p-long{background:rgba(34,201,138,.14);color:var(--grn);border:1px solid rgba(34,201,138,.4)}
.p-short{background:rgba(255,77,94,.13);color:var(--red);border:1px solid rgba(255,77,94,.4)}
.p-high{background:rgba(232,194,106,.14);color:var(--gold);border:1px solid rgba(232,194,106,.45)}
.p-med{background:rgba(30,144,255,.12);color:#6fb8ff;border:1px solid rgba(30,144,255,.35)}
.p-range{background:rgba(30,144,255,.16);color:#7cc0ff;border:1px solid rgba(30,144,255,.5)}
.p-run{background:rgba(34,201,138,.16);color:var(--grn);border:1px solid rgba(34,201,138,.5)}
.p-stop{background:rgba(139,152,171,.12);color:var(--mut);border:1px solid #2b3647}
.p-tp{background:rgba(232,194,106,.16);color:var(--gold);border:1px solid rgba(232,194,106,.5)}
/* signal cards */
.sig{position:relative;border-radius:18px;padding:18px;background:linear-gradient(160deg,#131b29 0%,#0d131d 60%);border:1px solid #1e2b40;overflow:hidden}
.sig:before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,transparent,var(--blue),transparent)}
.sig.high:before{background:linear-gradient(90deg,transparent,var(--gold),transparent)}
.sig .hd{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sig .coin{font-size:22px;font-weight:900;letter-spacing:.02em}
.sig .nm{color:var(--mut);font-size:13px}
.sig .live{margin:14px 0 12px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.sig .px{font-size:26px;font-weight:900;font-variant-numeric:tabular-nums}
.sig .chg{font-weight:800;font-variant-numeric:tabular-nums}
.lv{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.lv div{background:#0a0f17;border:1px solid #1a2433;border-radius:10px;padding:8px 10px}
.lv small{display:block;font-size:10px;letter-spacing:.12em;color:var(--mut);font-weight:800}
.lv b{font-size:14px;font-variant-numeric:tabular-nums}
.lv .e b{color:#7cc0ff}.lv .s b{color:var(--red)}.lv .t b{color:var(--grn)}
.sig .th{color:var(--mut);font-size:13.5px;margin-top:12px}
.sig .meta{display:flex;justify-content:space-between;font-size:12px;color:var(--mut);margin-top:10px}
.bar{height:6px;background:#0a0f17;border-radius:9px;margin-top:12px;position:relative;overflow:hidden;border:1px solid #1a2433}
.bar i{position:absolute;top:0;bottom:0;background:linear-gradient(90deg,#1e90ff,#22c98a);border-radius:9px}
.livedot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--grn);box-shadow:0 0 0 0 rgba(34,201,138,.6);animation:pulse 1.6s infinite;margin-right:6px}
@keyframes pulse{70%{box-shadow:0 0 0 8px rgba(34,201,138,0)}100%{box-shadow:0 0 0 0 rgba(34,201,138,0)}}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.chip{background:#0f1520;border:1px solid var(--line);color:var(--mut);padding:7px 12px;border-radius:99px;font-size:13px;font-weight:700;cursor:pointer}
.chip.on{color:#fff;border-color:var(--blue);background:rgba(30,144,255,.15)}
/* guides */
.guide{margin-bottom:12px}
.guide summary{cursor:pointer;list-style:none;font-weight:800;font-size:17px;display:flex;align-items:center;gap:10px}
.guide summary::-webkit-details-marker{display:none}
.guide summary:after{content:"+";margin-left:auto;color:var(--blue);font-size:22px}
.guide[open] summary:after{content:"–"}
.guide .body{color:#c7d1df;margin-top:12px;font-size:15px}
.guide .body p,.guide .body ul,.lesson p,.lesson ul{margin-bottom:10px}
.guide .body ul,.lesson ul{padding-left:20px}
.guide .body li,.lesson li{margin-bottom:5px}
.note{background:rgba(30,144,255,.08);border:1px solid rgba(30,144,255,.25);border-radius:12px;padding:12px 14px;font-size:14px;color:#c7d1df}
.warn{background:rgba(255,77,94,.07);border-color:rgba(255,77,94,.3)}
table.calc{width:100%;border-collapse:collapse;font-size:14px;margin:8px 0 12px}
table.calc td{border-bottom:1px solid var(--line);padding:6px 4px}
table.calc td:last-child{text-align:right;font-weight:700}
/* time machine */
.tm-top{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
select,input{background:#0a0f17;border:1px solid #243247;color:var(--txt);border-radius:10px;padding:10px 12px;font:inherit;font-size:15px}
input{width:100%}
label{font-size:12px;color:var(--mut);font-weight:700;letter-spacing:.05em}
.canvasbox{background:#0a0e15;border:1px solid var(--line);border-radius:16px;overflow:hidden;position:relative}
canvas{display:block;width:100%;height:340px}
.tm-panel{display:grid;gap:10px;margin-top:12px}
@media(min-width:760px){.tm-panel{grid-template-columns:1.2fr 1fr}}
.row{display:flex;gap:8px}.row>*{flex:1}
.stat{display:flex;justify-content:space-between;font-size:14px;padding:6px 0;border-bottom:1px solid var(--line)}
.stat b{font-variant-numeric:tabular-nums}
.res{font-size:22px;font-weight:900;text-align:center;padding:14px;border-radius:12px;margin-top:10px}
.res.win{background:rgba(34,201,138,.12);color:var(--grn)}.res.loss{background:rgba(255,77,94,.1);color:var(--red)}
/* academy */
.ranks{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;margin-bottom:16px}
.rank{flex:0 0 auto;text-align:center;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:#0e141e;min-width:104px;opacity:.45}
.rank.got{opacity:1;border-color:#2f5d99;background:linear-gradient(180deg,#132339,#0e141e)}
.rank.cur{box-shadow:0 0 0 2px var(--blue)}
.rank .e{font-size:28px}.rank b{display:block;font-size:13px;margin-top:4px}
.course{display:flex;gap:14px;align-items:center}
.course .ic{font-size:30px;width:52px;height:52px;display:grid;place-items:center;border-radius:14px;background:rgba(30,144,255,.1);border:1px solid rgba(30,144,255,.3);flex:0 0 auto}
.course.locked{opacity:.5}
.course .info{flex:1}
.course h3{font-size:17px}.course p{font-size:13px;color:var(--mut)}
.lesson h3{margin:6px 0 8px}
.lesson{color:#c7d1df}
.q{margin-bottom:14px}
.q p{font-weight:700;margin-bottom:8px;color:var(--txt)}
.opt{display:block;width:100%;text-align:left;background:#0e141e;border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:10px 12px;margin-bottom:6px;cursor:pointer;font:inherit;font-size:14.5px}
.opt.sel{border-color:var(--blue);background:rgba(30,144,255,.12)}
.opt.ok{border-color:var(--grn);background:rgba(34,201,138,.12)}
.opt.bad{border-color:var(--red);background:rgba(255,77,94,.1)}
.badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.badge{text-align:center;padding:14px 10px;border-radius:14px;border:1px solid var(--line);background:#0e141e;opacity:.35;filter:grayscale(1)}
.badge.got{opacity:1;filter:none;border-color:#6b5a2a;background:linear-gradient(180deg,#1d1a10,#0e141e)}
.badge .e{font-size:30px}.badge b{display:block;font-size:13px;margin-top:4px}.badge small{color:var(--mut);font-size:11px}
.cert{position:relative;text-align:center;padding:36px 22px;border-radius:20px;background:radial-gradient(500px 220px at 50% 0,rgba(232,194,106,.18),transparent 70%),linear-gradient(180deg,#14110a,#0b0d12);border:2px solid #8a7234;box-shadow:inset 0 0 0 6px #0b0d12,inset 0 0 0 7px #5d4d24}
.cert img{width:70px;height:70px;border-radius:16px;margin:0 auto 12px}
.cert h2{color:var(--gold);font-family:Georgia,serif;letter-spacing:.04em}
.cert .who{font-size:28px;font-family:Georgia,serif;font-style:italic;margin:10px 0;border-bottom:1px solid #5d4d24;display:inline-block;padding:0 20px 4px}
.toast{position:fixed;left:50%;top:80px;transform:translateX(-50%);z-index:99;background:linear-gradient(135deg,#1b2a40,#101826);border:1px solid var(--gold);color:var(--txt);padding:12px 18px;border-radius:14px;font-weight:800;box-shadow:0 20px 50px rgba(0,0,0,.6);display:none}
.muted{color:var(--mut)}
.mt{margin-top:16px}.mb{margin-bottom:16px}
@media print{body{background:#fff}.top,.navwrap,.foot,.sticky-cta,#prWrap>*:not(#cert){display:none!important}#cert{display:block!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.lang{display:flex;align-items:center;gap:2px;margin-left:auto;background:#0d1320;border:1px solid #243247;border-radius:10px;padding:3px}
.lang button{background:none;border:0;color:var(--mut);font:800 12px/1 inherit;letter-spacing:.06em;padding:7px 8px;border-radius:7px;cursor:pointer;font-family:inherit}
.lang button.on{background:var(--blue);color:#fff}
.lang span{color:#2b3a52;font-size:12px}
.top .cta-sm{margin-left:0}
@media(max-width:380px){.brand{font-size:13px;gap:7px}.brand img{width:30px;height:30px}.top .cta-sm{padding:8px 10px;font-size:12px}}
.brand{white-space:nowrap;flex:0 0 auto}.top .cta-sm{white-space:nowrap}
@media(max-width:520px){.top .wrap{gap:8px}.brand{font-size:13px;gap:7px;letter-spacing:.03em}.brand img{width:30px;height:30px}.lang button{padding:6px 6px}.lang span{display:none}.top .cta-sm{padding:8px 11px;font-size:12px}}
@media(max-width:370px){.brand .bt{display:none}}

.ba{background:linear-gradient(90deg,#f5d77a,#e0a93b 60%,#f7e3a1);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:900;letter-spacing:.06em}
#nav a[data-v=academy]{letter-spacing:.04em;font-weight:700}
.cert .ba,.kicker .ba{letter-spacing:.12em}
@media print{.ba{color:#b8860b!important;-webkit-text-fill-color:#b8860b}}
/* ===== v6: micro-interactions ===== */
.btn,.chip,.opt,.seg button,.tm-tools button,.deck-ctrl button,.qr,.nav a{transition:transform .14s cubic-bezier(.3,.7,.4,1),box-shadow .2s,background .2s,border-color .2s,color .2s}
.btn:active,.chip:active,.seg button:active,.tm-tools button:active,.qr:active,.opt:not(:disabled):active{transform:scale(.96)}
.fx-host{position:relative;overflow:hidden}
.fx-ripple{position:absolute;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(255,255,255,.35),rgba(255,255,255,0) 70%);transform:scale(0);animation:rip .55s ease-out forwards}
@keyframes rip{to{transform:scale(1);opacity:0}}
.fx-confetti{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:200}
.fx-pop{animation:pop .45s cubic-bezier(.2,1.6,.4,1)}
@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.06)}100%{transform:scale(1)}}
.fx-shake{animation:shake .38s cubic-bezier(.36,.07,.19,.97)}
@keyframes shake{20%,60%{transform:translateX(-5px)}40%,80%{transform:translateX(5px)}}
.view.on{animation:viewIn .32s cubic-bezier(.2,.7,.3,1)}
@keyframes viewIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.card,.sig{transition:transform .2s ease,box-shadow .2s ease,border-color .2s}
@media(hover:hover){.grid>.card:hover,.grid>.sig:hover,.mt-row:hover{transform:translateY(-3px);box-shadow:0 16px 40px rgba(0,0,0,.45),0 0 0 1px rgba(30,144,255,.18)}}
.skel{position:relative;overflow:hidden;background:#0d131d}
.skel:after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 20%,rgba(120,170,255,.07) 50%,transparent 80%);animation:shim 1.2s infinite;transform:translateX(-100%)}
@keyframes shim{to{transform:translateX(100%)}}
.skel-card{height:260px;border-radius:18px}
.opt.ok{animation:pop .45s}
.qfb{font-weight:800;font-size:14px;min-height:6px;margin:2px 0 10px}.qfb .good{color:var(--grn)}.qfb .nope{color:var(--red)}
.opt:disabled{cursor:default;opacity:1}.q[data-locked] .opt:not(.ok):not(.bad){opacity:.55}
/* segmented */
.seg{display:inline-flex;background:#0b1018;border:1px solid var(--line);border-radius:12px;padding:3px;gap:2px}
.seg button{background:transparent;border:0;color:var(--mut);font:700 13px Inter,system-ui,sans-serif;padding:8px 12px;border-radius:9px;cursor:pointer;white-space:nowrap}
.seg button.on{background:linear-gradient(135deg,#2a9bff,#0a5bd6);color:#fff;box-shadow:0 4px 14px var(--glow)}
.seg.sm button{padding:6px 9px;font-size:12px}
/* ===== signals: view toggle + deck ===== */
.sigview{margin:4px 0 14px}
#v-signals .deck-wrap,#v-signals #mineList{display:none}
#v-signals[data-sv="deck"] .deck-wrap{display:block}#v-signals[data-sv="deck"] #sigList{display:none}
#v-signals[data-sv="mine"] #mineList{display:grid}#v-signals[data-sv="mine"] #sigList{display:none}
.deck-wrap{max-width:440px;margin:0 auto}
.deck{position:relative;height:540px;perspective:1000px}
.dcard{position:absolute;inset:0;touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:grab;transform-origin:50% 90%;transition:transform .3s cubic-bezier(.2,.8,.3,1);box-shadow:0 18px 50px rgba(0,0,0,.55);transform:translateY(calc(var(--k)*12px)) scale(calc(1 - var(--k)*.045));will-change:transform}
.dcard:active{cursor:grabbing}
.dcard[data-k="1"],.dcard[data-k="2"]{pointer-events:none;filter:brightness(.8)}
.dcard[data-k="2"] .mini,.dcard[data-k="2"] .lv{visibility:hidden}
.mini{height:200px;margin:4px 0 12px;border-radius:12px;border:1px solid #17202e;position:relative;overflow:hidden}
.mini-err{position:absolute;inset:0;display:grid;place-items:center;color:var(--mut);font-size:13px}
.stamp{position:absolute;top:22px;z-index:5;font:900 22px Inter,system-ui,sans-serif;letter-spacing:.12em;padding:6px 14px;border:3px solid;border-radius:10px;opacity:0;pointer-events:none}
.stamp.save{left:18px;color:var(--grn);transform:rotate(-14deg)}.stamp.skip{right:18px;color:var(--red);transform:rotate(14deg)}
.deck-ctrl{display:flex;justify-content:center;align-items:center;gap:18px;margin:18px 0 8px}
.deck-ctrl button{width:62px;height:62px;border-radius:50%;border:1px solid var(--line);background:#0e141e;font-size:26px;cursor:pointer;box-shadow:0 10px 26px rgba(0,0,0,.45)}
.deck-ctrl .skip{color:var(--red)}.deck-ctrl .save{color:#ff5c8a;width:70px;height:70px;font-size:30px;border-color:rgba(255,92,138,.4)}
.deck-ctrl .undo{width:46px;height:46px;font-size:20px;color:var(--gold)}
.deck-ctrl button:hover:not(:disabled){transform:translateY(-2px) scale(1.05)}.deck-ctrl button:disabled{opacity:.35;cursor:default}
.deck-hint{text-align:center;font-size:12.5px}
.deck-end{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px}
.deck-end .big{font-size:46px}
.mt-row{cursor:pointer}
/* sheet */
.sheet{position:fixed;inset:0;z-index:120;pointer-events:none}
.sheet-bg{position:absolute;inset:0;background:rgba(3,5,9,.66);backdrop-filter:blur(4px);opacity:0;transition:opacity .25s}
.sheet-card{position:absolute;left:50%;bottom:0;width:min(560px,100%);max-height:92vh;overflow:auto;transform:translate(-50%,105%);transition:transform .34s cubic-bezier(.2,.9,.3,1);border-radius:22px 22px 0 0;padding:22px 18px calc(18px + env(safe-area-inset-bottom))}
.sheet.on{pointer-events:auto}.sheet.on .sheet-bg{opacity:1}.sheet.on .sheet-card{transform:translate(-50%,0)}
@media(min-width:760px){.sheet-card{bottom:50%;border-radius:22px;transform:translate(-50%,60%);opacity:0;transition:transform .3s,opacity .25s}.sheet.on .sheet-card{transform:translate(-50%,50%);opacity:1}}
.sheet-x{position:absolute;right:12px;top:12px;z-index:3;background:#0e141e;border:1px solid var(--line);color:var(--txt);width:34px;height:34px;border-radius:50%;cursor:pointer}
.saved-badge{display:inline-block;margin-bottom:10px;color:#ff7aa2;font-weight:800;font-size:13px}
.btn.weex{background:linear-gradient(135deg,#f3d58a,#c79a3c);color:#1a1405;box-shadow:0 10px 30px rgba(232,194,106,.25)}
body.noscroll{overflow:hidden}
/* ===== time machine ===== */
.tm-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.tm-top select{background:#0e141e;color:var(--txt);border:1px solid var(--line);border-radius:10px;padding:9px 10px;font:700 14px Inter,system-ui,sans-serif}
.tm-bal{margin-left:auto;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums}
.tm-when{font-size:13px;margin:8px 0 10px}
.tm-shell{background:#0a0e15;border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.45)}
.tm-tools{display:flex;gap:4px;align-items:center;padding:7px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none;background:#0c121b}
.tm-tools::-webkit-scrollbar{display:none}
.tm-tools button{flex:0 0 auto;min-width:38px;height:36px;border-radius:9px;border:1px solid transparent;background:transparent;color:#b7c3d4;font:700 15px Inter,system-ui,sans-serif;cursor:pointer}
.tm-tools button:hover{background:#141c28}
.tm-tools button.on{background:rgba(30,144,255,.16);border-color:var(--blue);color:#fff}
.tm-tools .ord{font-size:12px}.tm-tools .ord.e{color:#4fb0ff}.tm-tools .ord.s{color:var(--red)}.tm-tools .ord.t{color:var(--grn)}
.tm-tools .sep{width:1px;height:22px;background:var(--line);margin:0 4px;flex:0 0 auto}
.tm-tip{font-size:12px;color:var(--mut);margin-left:6px;white-space:nowrap}
.tm-chart{position:relative;height:380px}
@media(min-width:760px){.tm-chart{height:520px}}
.tm-draw{position:absolute;left:0;top:0;z-index:3;pointer-events:none}
.tm-draw.active{pointer-events:auto;touch-action:none;cursor:crosshair}
.tm-chart.dragging,.tm-chart.dragging *{cursor:ns-resize!important}
.tm-skel{position:absolute;inset:0;z-index:4}
.tm-replay{display:flex;align-items:center;gap:8px;padding:8px;border-top:1px solid var(--line);background:#0c121b;flex-wrap:wrap}
.tm-replay>button{width:40px;height:36px;border-radius:10px;border:1px solid var(--line);background:#0e141e;color:var(--txt);font-size:15px;cursor:pointer}
.tm-replay .play{background:linear-gradient(135deg,#2a9bff,#0a5bd6);border:0;box-shadow:0 6px 18px var(--glow)}
.tm-replay .play.on{background:linear-gradient(135deg,#f3d58a,#c79a3c);color:#1a1405}
.tm-prog{flex:1;min-width:80px;height:6px;border-radius:9px;background:#141c28;overflow:hidden}
.tm-prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--blue),var(--gold));transition:width .2s}
.tm-bars{font-size:12px;font-variant-numeric:tabular-nums}
.tm-grid{display:grid;gap:14px;margin-top:14px}
@media(min-width:900px){.tm-grid{grid-template-columns:1.15fr 1fr 1fr}}
.pnl-big{font-size:34px;font-weight:900;font-variant-numeric:tabular-nums;line-height:1.1;margin:6px 0 8px}
.pnl-big.up,.up{color:var(--grn)}.pnl-big.dn,.dn{color:var(--red)}.pnl-big small{font-size:15px;opacity:.85}
.btn.long{background:linear-gradient(135deg,#2bd99a,#0f9e6a);box-shadow:0 10px 26px rgba(34,201,138,.25)}
.btn.short{background:linear-gradient(135deg,#ff6b79,#d42c3e);box-shadow:0 10px 26px rgba(255,77,94,.25)}
.tm-keys{font-size:11.5px;margin-top:8px}
.tm-order input{width:100%;background:#0e141e;border:1px solid var(--line);color:var(--txt);border-radius:9px;padding:8px 10px;font:600 14px Inter,system-ui,sans-serif}
.tm-order label{display:block;font-size:10.5px;letter-spacing:.1em;color:var(--mut);font-weight:800;margin:8px 0 4px}
.lwc-attr{font-size:11px;color:#5d6b80;margin-top:6px}.lwc-attr a{color:#7d8ca3}
/* ===== Billions AI orb ===== */
.orb{position:fixed;right:16px;bottom:calc(86px + env(safe-area-inset-bottom));z-index:90;width:62px;height:62px;border-radius:50%;border:0;padding:0;background:none;cursor:pointer;filter:drop-shadow(0 10px 26px rgba(30,144,255,.45));transition:transform .25s cubic-bezier(.2,1.4,.4,1)}
.orb:hover{transform:scale(1.07)}.orb:active{transform:scale(.94)}
.orb.open{transform:scale(.86)}
.orb-core{position:absolute;inset:0;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:radial-gradient(circle at 32% 28%,#3a4b66 0%,#0b1220 38%,#020409 75%);box-shadow:inset 0 -6px 14px rgba(30,144,255,.45),inset 0 4px 10px rgba(255,255,255,.18),0 0 0 1px rgba(120,170,255,.25);animation:breathe 4s ease-in-out infinite}
.orb-core i{position:absolute;border-radius:50%;mix-blend-mode:screen;filter:blur(6px)}
.orb-core .o1{width:70%;height:70%;left:-8%;top:30%;background:radial-gradient(circle,rgba(30,144,255,.9),transparent 65%);animation:swirl 7s linear infinite}
.orb-core .o2{width:60%;height:60%;right:-10%;top:-6%;background:radial-gradient(circle,rgba(10,91,214,.95),transparent 65%);animation:swirl 9s linear infinite reverse}
.orb-core .o3{width:40%;height:40%;left:30%;top:52%;background:radial-gradient(circle,rgba(232,194,106,.55),transparent 65%);animation:swirl 11s linear infinite;transform-origin:10% 10%}
.orb-core .glint{width:22%;height:12%;left:24%;top:16%;filter:blur(1.5px);background:radial-gradient(ellipse,rgba(255,255,255,.95),rgba(255,236,190,.4) 50%,transparent 70%);animation:glint 5s ease-in-out infinite;mix-blend-mode:normal}
.orb-core b{position:relative;z-index:2;font:900 14px Inter,system-ui,sans-serif;letter-spacing:.08em;color:#f3d58a;text-shadow:0 0 10px rgba(232,194,106,.6)}
.orb.thinking .orb-core{animation-duration:1.1s}.orb.thinking .o1{animation-duration:1.4s}.orb.thinking .o2{animation-duration:1.8s}.orb.thinking .o3{animation-duration:2.2s}
.orb.thinking{filter:drop-shadow(0 0 22px rgba(232,194,106,.55))}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
@keyframes swirl{from{transform:rotate(0) translateX(8%)}to{transform:rotate(360deg) translateX(8%)}}
@keyframes glint{0%,100%{opacity:.85}50%{opacity:.45}}
.orb.mini{position:relative;right:auto;bottom:auto;width:34px;height:34px;flex:0 0 auto;cursor:default;filter:none}
/* chat panel */
.chat{position:fixed;z-index:110;right:16px;bottom:calc(156px + env(safe-area-inset-bottom));width:380px;max-width:calc(100vw - 24px);height:min(600px,calc(100vh - 200px));display:flex;flex-direction:column;background:linear-gradient(180deg,#121a27,#0a0f17);border:1px solid #23324a;border-radius:20px;box-shadow:0 30px 80px rgba(0,0,0,.65),0 0 0 1px rgba(232,194,106,.08);opacity:0;transform:translateY(16px) scale(.97);transform-origin:100% 100%;pointer-events:none;transition:opacity .22s,transform .28s cubic-bezier(.2,.9,.3,1)}
.chat.on{opacity:1;transform:none;pointer-events:auto}
@media(max-width:760px){.chat{left:0;right:0;bottom:0;width:100%;max-width:none;height:min(82vh,680px);border-radius:22px 22px 0 0;transform:translateY(100%);transform-origin:50% 100%}.chat.on{transform:none}body.chat-open .orb{opacity:0;pointer-events:none}}
.chat-h{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line)}
.chat-h b{display:block;font-size:15px;background:linear-gradient(90deg,#fff,#f3d58a);-webkit-background-clip:text;background-clip:text;color:transparent}
.chat-h small{display:block;color:var(--grn);font-size:11.5px}
.chat-x{margin-left:auto;background:transparent;border:1px solid var(--line);color:var(--txt);width:32px;height:32px;border-radius:50%;cursor:pointer}
.chat-log{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;overscroll-behavior:contain}
.msg{max-width:86%;padding:10px 13px;border-radius:16px;font-size:14.5px;line-height:1.5;animation:msgIn .25s ease-out;word-wrap:break-word}
.msg.ai{align-self:flex-start;background:#151e2c;border:1px solid #1f2b3e;border-bottom-left-radius:5px}
.msg.me{align-self:flex-end;background:linear-gradient(135deg,#2a9bff,#0a5bd6);color:#fff;border-bottom-right-radius:5px}
.msg a{color:#7cc0ff;text-decoration:underline}
@keyframes msgIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.msg.typing{display:flex;gap:4px}.msg.typing i{width:7px;height:7px;border-radius:50%;background:#7cc0ff;animation:dot 1s infinite}.msg.typing i:nth-child(2){animation-delay:.15s}.msg.typing i:nth-child(3){animation-delay:.3s}
@keyframes dot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
.qrs{display:flex;gap:6px;overflow-x:auto;padding:0 12px 8px;scrollbar-width:none}.qrs::-webkit-scrollbar{display:none}
.qr{flex:0 0 auto;background:rgba(232,194,106,.08);border:1px solid rgba(232,194,106,.35);color:#f3d58a;border-radius:99px;padding:7px 12px;font:700 12.5px Inter,system-ui,sans-serif;cursor:pointer}
.qr:hover{background:rgba(232,194,106,.16)}
.chat-in{display:flex;gap:8px;padding:8px 12px}
.chat-in input{flex:1;min-width:0;background:#0b1018;border:1px solid var(--line);color:var(--txt);border-radius:12px;padding:11px 12px;font:15px Inter,system-ui,sans-serif}
.chat-in input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(30,144,255,.18)}
.chat-in .btn{padding:0 16px}
.chat-disc{font-size:11px;color:#62708a;text-align:center;padding:0 12px calc(10px + env(safe-area-inset-bottom))}
/* ---- deck touch fix: the card owns horizontal + vertical gestures (no browser back-swipe / scroll-cancel) ---- */
.dcard{touch-action:none;-webkit-touch-callout:none}
html,body{overscroll-behavior-x:none}
.deck{overscroll-behavior:contain}
@media(max-width:760px){.deck{height:min(540px,max(380px,calc(100svh - 300px)))}.deck-ctrl{margin:12px 0 6px;position:relative;z-index:61}
 body.deckmode .sticky-cta{display:none!important}
 .dcard.sig{display:flex;flex-direction:column;padding:16px}.dcard .live{margin-bottom:0}.dcard .tprog{margin:6px 0 2px}.dcard .mini{flex:1 1 auto;height:auto;min-height:70px;margin:6px 0 10px}.dcard .lv{flex:0 0 auto}
 body.deckmode .orb{bottom:calc(14px + env(safe-area-inset-bottom));right:10px;width:52px;height:52px}
 body.deckmode main,body.deckmode .wrap{padding-bottom:24px}}
@media(max-width:760px) and (max-height:720px){.dcard .mini{display:none}.dcard .lv>div{padding-top:7px;padding-bottom:7px}}
#sigView button.pulse{animation:mtPulse .7s cubic-bezier(.3,.7,.4,1)}
@keyframes mtPulse{0%{transform:scale(1)}35%{transform:scale(1.14);box-shadow:0 0 0 6px rgba(255,92,138,.25)}100%{transform:scale(1)}}
.mt-row .mt-weex{margin-top:10px;width:100%;justify-content:center}
/* ---- live trade progress bar ---- */
.tprog{--p:0;margin:10px 0 2px}
.tp-track{position:relative;height:8px;border-radius:99px;background:#0b111a;border:1px solid #1b2638;overflow:visible}
.tp-fill{position:absolute;left:0;top:0;bottom:0;width:calc(var(--p)*100%);border-radius:99px;background:linear-gradient(90deg,#1e90ff,#22c98a);transition:width 1.1s cubic-bezier(.2,.8,.2,1),background .4s;box-shadow:0 0 calc(4px + var(--p)*14px) rgba(34,201,138,calc(.25 + var(--p)*.55))}
.tp-lbl{font-size:12px;font-weight:700;margin-top:6px;color:#8ff0c2;letter-spacing:.2px}
.tp-spark{position:absolute;right:-5px;top:50%;width:10px;height:10px;margin-top:-5px;border-radius:50%;background:#fff;box-shadow:0 0 calc(6px + var(--p)*14px) calc(1px + var(--p)*3px) rgba(160,255,214,.9);animation:spk 1.1s ease-in-out infinite}
.tp-spark b{position:absolute;left:3px;top:3px;width:4px;height:4px;border-radius:50%;background:#bfffe4;opacity:0;display:none}
.tprog.warm .tp-spark b:nth-child(-n+3),.tprog.hot .tp-spark b{display:block;animation:pt 1s ease-out infinite}
.tp-spark b:nth-child(1){--x:-14px;--y:-10px;animation-delay:0s!important}.tp-spark b:nth-child(2){--x:-18px;--y:9px;animation-delay:.33s!important}.tp-spark b:nth-child(3){--x:-8px;--y:-14px;animation-delay:.66s!important}
.tp-spark b:nth-child(4){--x:-22px;--y:-4px;animation-delay:.16s!important}.tp-spark b:nth-child(5){--x:-12px;--y:13px;animation-delay:.5s!important}.tp-spark b:nth-child(6){--x:-26px;--y:6px;animation-delay:.82s!important}
.tprog.hot .tp-spark{animation-duration:.6s;background:#fffbe0;box-shadow:0 0 22px 5px rgba(255,214,102,.95)}
.tprog.hot .tp-fill{background:linear-gradient(90deg,#22c98a,#f5d47a);box-shadow:0 0 18px rgba(245,212,122,.75)}
.tprog.hot .tp-lbl{color:#f5d47a}
@keyframes spk{0%,100%{transform:scale(.85)}50%{transform:scale(1.25)}}
@keyframes pt{0%{opacity:1;transform:translate(0,0) scale(1)}100%{opacity:0;transform:translate(var(--x),var(--y)) scale(.2)}}
.tprog[data-state="down"] .tp-fill{background:linear-gradient(90deg,#ff7a45,#ff4d5e);box-shadow:0 0 8px rgba(255,77,94,.5)}
.tprog[data-state="down"] .tp-spark,.tprog[data-state="pend"] .tp-spark,.tprog[data-state="sl"] .tp-spark,.tprog[data-state="load"] .tp-spark,.tprog[data-state="tp"] .tp-spark{display:none}
.tprog[data-state="down"] .tp-lbl,.tprog[data-state="sl"] .tp-lbl{color:var(--red)}
.tprog[data-state="sl"] .tp-fill{background:#5a2330;box-shadow:none}
.tprog[data-state="pend"] .tp-lbl,.tprog[data-state="load"] .tp-lbl{color:#8a97ad}
.tprog[data-state="pend"] .tp-track{background:repeating-linear-gradient(90deg,#0b111a 0 8px,#121a27 8px 16px)}
.tprog[data-state="tp"] .tp-fill{background:linear-gradient(90deg,#22c98a,#f5d47a);box-shadow:0 0 14px rgba(245,212,122,.7)}
.tprog[data-state="tp"] .tp-lbl{color:#f5d47a}
.sig.shimmer::after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:linear-gradient(115deg,transparent 30%,rgba(255,236,170,.10) 45%,rgba(255,255,255,.18) 50%,rgba(255,236,170,.10) 55%,transparent 70%);background-size:250% 100%;animation:shim 2.6s linear infinite;box-shadow:inset 0 0 0 1px rgba(245,212,122,.35)}
@keyframes shim{0%{background-position:120% 0}100%{background-position:-120% 0}}
@media(prefers-reduced-motion:reduce){.tp-spark,.tp-spark b,.sig.shimmer::after,#sigView button.pulse{animation:none!important}.tp-spark b{display:none!important}.tp-fill{transition:none}}
/* reduced motion */
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.orb-core,.orb-core i{animation:none!important}}
@media print{.orb,.chat,.sheet{display:none!important}}
/* engagement nudges */
.nudge{position:fixed;left:16px;bottom:calc(84px + env(safe-area-inset-bottom));z-index:95;width:min(340px,calc(100vw - 32px));padding:14px 14px 12px;border-radius:16px;background:linear-gradient(160deg,#151f30,#0d131d);border:1px solid #24344d;box-shadow:0 18px 50px rgba(0,0,0,.55);transform:translateY(16px);opacity:0;transition:transform .3s cubic-bezier(.2,.9,.3,1),opacity .25s}
.nudge.on{transform:none;opacity:1}
.nudge b{display:block;font-size:15px;margin-right:26px}.nudge p{margin:6px 0 10px;font-size:13.5px;color:#aab6c8;line-height:1.45}
.nudge-row{display:flex;gap:8px;flex-wrap:wrap}.nudge small{display:block;margin-top:8px;font-size:11px;color:#62708a}
.nudge-x{position:absolute;right:8px;top:8px;width:28px;height:28px;border-radius:50%;border:1px solid #24344d;background:#0e141e;color:#aab6c8;cursor:pointer}
.nudge-weex{border-color:rgba(232,194,106,.45)}
@media(min-width:761px){.nudge{bottom:24px}}
@media(prefers-reduced-motion:reduce){.nudge{transition:none}}
@media print{.nudge{display:none!important}}
