:root,[data-theme="dark"]{--bg:#05080a;--card:#0e1417;--card2:#152026;--line:#1f2f36;--text:#f4f3ef;--muted:#8fa3ab;--snek:#18f2b2;--snek2:#12c995;--red:#fc4c61;--yellow:#f2c94c;--cyan:#88eaff;--blue:#5491d9;--purple:#c684f0;--onSnek:#05080a;--skel1:#152026;--skel2:#1f2f36;--glow:#18f2b222;--hdr:#05080acc}
[data-theme="light"]{--bg:#f4f3ef;--card:#ffffff;--card2:#eef3f2;--line:#d9e2e0;--text:#151515;--muted:#5a6a70;--snek:#08805e;--snek2:#0fae80;--red:#d92c43;--yellow:#a86a00;--cyan:#1f8fb3;--blue:#3d6fb8;--purple:#8a45c0;--onSnek:#ffffff;--skel1:#e9efee;--skel2:#d9e2e0;--glow:#18f2b233;--hdr:#f4f3efe6}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:120px}
body{margin:0;background:radial-gradient(1200px 600px at 10% -10%,var(--glow),transparent),var(--bg);color:var(--text);font:15px/1.5 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;padding-bottom:calc(76px + env(safe-area-inset-bottom))}
a{color:var(--snek)}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;z-index:99;background:var(--card);padding:8px}
.top{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px clamp(12px,4vw,40px);position:sticky;top:0;background:var(--hdr);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);z-index:20;border-bottom:1px solid var(--line)}
.brand{display:flex;gap:10px;align-items:center;min-width:0}.logo{width:34px;height:32px;flex:none}
.fanbadge{display:inline-block;margin-top:2px;font-size:11px;line-height:1.25;font-weight:600;color:var(--text);background:var(--card2);border:1px dashed var(--snek2);border-radius:8px;padding:2px 7px}
.fanbadge.big{font-size:13px;padding:5px 10px;margin-top:10px}
h1{margin:0;font-size:17px;white-space:nowrap}h2{margin:0 0 12px;font-size:17px}h3{margin:16px 0 8px;font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.6px}
.top p{margin:0}
.ticker{display:flex;flex-direction:column;align-items:flex-end;font-variant-numeric:tabular-nums;font-weight:700;line-height:1.2;margin-left:auto}
#tPrice{color:var(--snek);font-size:16px}#tChg{font-size:12px}
.actions{display:flex;gap:6px}
.icon-btn{min-width:44px;min-height:44px;border-radius:12px;border:1px solid var(--line);background:var(--card2);color:var(--text);font-size:18px;cursor:pointer}
.icon-btn:hover{border-color:var(--snek2)}
.statusbar{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);padding:6px clamp(12px,4vw,40px)}
.dot{width:9px;height:9px;border-radius:50%;background:var(--yellow);flex:none}.dot.live{background:var(--snek);box-shadow:0 0 8px var(--snek)}
.tabs{position:fixed;bottom:0;left:0;right:0;z-index:30;display:grid;grid-template-columns:repeat(6,1fr);background:var(--hdr);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
.tabs a{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:56px;font-size:11px;color:var(--muted);text-decoration:none;gap:2px}
.tabs a span{font-size:18px;line-height:1}.tabs a.on{color:var(--snek)}
@media(min-width:900px){
  body{padding-bottom:0}
  .tabs{position:sticky;top:65px;bottom:auto;display:flex;justify-content:center;gap:4px;border-top:0;border-bottom:1px solid var(--line);padding:4px}
  .tabs a{flex-direction:row;min-height:44px;padding:0 16px;font-size:14px;border-radius:999px;gap:8px}.tabs a span{font-size:15px}.tabs a.on{background:var(--card2)}
}
@media(max-width:520px){.hide-sm{display:none}h1{font-size:15px}.actions .icon-btn{min-width:44px}#shareBtn{display:none}}
main{max-width:1240px;margin:0 auto;padding:12px clamp(10px,3vw,32px);display:flex;flex-direction:column;gap:16px}
.sect{display:flex;flex-direction:column;gap:16px}
@media(min-width:900px){#overview,#pools{display:grid;grid-template-columns:1.4fr 1fr}}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;min-width:0}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}.grid2.inner{gap:20px}
.muted{color:var(--muted)}.small{font-size:12.5px}.mono{font-family:ui-monospace,Menlo,monospace;word-break:break-all}.mt{margin-top:12px}
.row{display:flex;align-items:center}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.gap{gap:8px}.grow{flex:1;min-width:180px}
.btn,.seg button,.chips button{min-height:44px;background:var(--card2);color:var(--text);border:1px solid var(--line);border-radius:12px;padding:0 16px;cursor:pointer;font:inherit;font-size:14px}
.btn:hover{border-color:var(--snek2)}.btn.primary{background:var(--snek);color:var(--onSnek);border-color:transparent;font-weight:700}
.seg,.chips{display:flex;flex-wrap:wrap;gap:4px;background:var(--card2);border:1px solid var(--line);border-radius:14px;padding:3px}
.seg button,.chips button{border:0;background:transparent;border-radius:10px;padding:0 14px;min-width:48px}
.seg button.on,.chips button.on{background:var(--snek);color:var(--onSnek);font-weight:700}
.hero{display:grid;grid-template-columns:1fr;gap:16px}
.price{font-size:clamp(34px,8vw,48px);font-weight:800;color:var(--snek);font-variant-numeric:tabular-nums;line-height:1.15}
.sub{font-size:15px}.chg.up{color:var(--snek)}.chg.down{color:var(--red)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}
.kpi{background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:10px 12px}.kpi .l{font-size:12px;color:var(--muted)}.kpi .v{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums}
.props{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;margin:0}.props dt{color:var(--muted);font-size:13px}.props dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.tvchart{width:100%;height:clamp(320px,55vh,520px);position:relative;touch-action:none}
.legend-ohlc{font-size:12.5px;font-variant-numeric:tabular-nums;min-height:22px;margin:10px 0 6px;display:flex;flex-wrap:wrap;gap:4px 12px}.legend-ohlc b{font-weight:600}
.hcount{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}#holderCount{font-size:28px;font-weight:800}
.bars{display:grid;gap:8px}.bar{display:grid;grid-template-columns:minmax(80px,130px) 1fr minmax(64px,auto);gap:10px;align-items:center;font-size:13px}
.bar .track{background:var(--card2);border-radius:6px;height:14px;overflow:hidden}.bar .fill{height:100%;border-radius:6px;background:linear-gradient(90deg,var(--snek2),var(--snek))}.bar .val{text-align:right;font-variant-numeric:tabular-nums}
.donut{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.donut svg{width:150px;height:150px}.legend{display:grid;gap:6px;font-size:13px}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:8px}
.treemap svg{width:100%;height:auto;display:block}.treemap text{font-size:11px;fill:var(--onSnek);pointer-events:none}
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse;font-size:13.5px;font-variant-numeric:tabular-nums}
th,td{padding:10px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}th:first-child,td:first-child{text-align:left}th{color:var(--muted);font-weight:600;font-size:12px}
td a{color:var(--snek);text-decoration:none}.buy{color:var(--snek)}.sell{color:var(--red)}
tr.whale td{background:color-mix(in srgb,var(--yellow) 12%,transparent)}tr.whale td:first-child{box-shadow:inset 3px 0 0 var(--yellow)}
label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--muted)}label.inline{flex-direction:row;align-items:center;gap:8px}
input,select{min-height:44px;background:var(--card2);border:1px solid var(--line);color:var(--text);border-radius:12px;padding:8px 12px;font:inherit;font-size:16px;width:100%}
label.inline select{width:auto}input[type=checkbox]{width:22px;min-height:22px;height:22px;accent-color:var(--snek)}
input:focus,select:focus,button:focus-visible,a:focus-visible{outline:2px solid var(--snek2);outline-offset:1px}
.form2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form3{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end}
@media(max-width:520px){.form2,.form3{grid-template-columns:1fr}}
.out{margin-top:12px;display:grid;gap:8px}.out div{display:flex;justify-content:space-between;gap:10px;background:var(--card2);border-radius:10px;padding:10px 14px;font-variant-numeric:tabular-nums}.out b{color:var(--snek)}.out b.down{color:var(--red)}
details summary{cursor:pointer;min-height:44px;display:flex;align-items:center;color:var(--snek)}
.alerts{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:8px}.alerts li{display:flex;justify-content:space-between;align-items:center;background:var(--card2);border-radius:10px;padding:4px 4px 4px 14px}
.links{display:flex;flex-wrap:wrap;gap:8px}.links a{display:inline-flex;align-items:center;min-height:44px;color:var(--text);text-decoration:none;background:var(--card2);border:1px solid var(--line);padding:0 16px;border-radius:999px}.links a:hover{border-color:var(--snek);color:var(--snek)}
footer{max-width:1240px;margin:0 auto;padding:4px clamp(12px,3vw,32px) 28px}
.na{color:var(--muted);font-style:italic}
.skel{display:inline-block;border-radius:8px;background:linear-gradient(90deg,var(--skel1),var(--skel2),var(--skel1));background-size:200% 100%;animation:sh 1.2s infinite linear;color:transparent!important}
.skel.w80{width:80px}.skel.w120{width:120px}.skel.w160{width:160px}.skel.h56{height:56px;display:block}.skel.h120{height:120px;display:block}.skel.h160{height:160px;display:block}.skel.fill{position:absolute;inset:0;display:block}
@keyframes sh{to{background-position:-200% 0}}
@media(prefers-reduced-motion:reduce){.skel{animation:none}html{scroll-behavior:auto}}
.toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(20px);background:var(--card);border:1px solid var(--snek2);color:var(--text);padding:10px 16px;border-radius:12px;opacity:0;transition:.25s;z-index:50;pointer-events:none;max-width:90vw}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
@media(min-width:900px){.toast{bottom:24px}}
@media(max-width:430px){.brand h1{display:none}.fanbadge{font-size:10px;max-width:118px;margin-top:0}.ticker{align-items:flex-start;margin-left:4px;margin-right:auto}#tPrice{font-size:18px}}

.splash{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg);transition:opacity .35s;text-align:center;padding:20px}
.splash.hide{opacity:0;pointer-events:none}.splash img{width:180px;height:auto;animation:bob 1.6s ease-in-out infinite}
.splash-title{font-size:22px;font-weight:800;margin-top:12px}
.splash-bar{width:160px;height:4px;border-radius:4px;background:var(--card2);overflow:hidden;margin-top:18px}.splash-bar i{display:block;height:100%;width:40%;background:var(--snek);animation:load 1.1s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-6px)}}@keyframes load{0%{transform:translateX(-100%)}100%{transform:translateX(260%)}}
@media(prefers-reduced-motion:reduce){.splash img,.splash-bar i{animation:none}}
.notice{display:flex;gap:12px;align-items:center;flex-wrap:wrap;max-width:1240px;margin:6px auto 0;padding:10px 14px;background:var(--card);border:1px dashed var(--snek2);border-radius:14px;width:calc(100% - 2*clamp(10px,3vw,32px))}
.notice[hidden]{display:none}.notice p{margin:0;flex:1;min-width:200px;font-size:13.5px}.notice img{width:48px;height:auto}
.empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:18px 8px;text-align:center;color:var(--muted);font-size:13.5px}
.empty img{width:96px;height:auto;opacity:.95}.empty .fan{font-size:11px;border:1px dashed var(--line);border-radius:6px;padding:1px 6px}
.fanbadge.big{max-width:none!important;font-size:13px!important}

/* ---------- interaction layer (fx.js) ---------- */
.ticker{flex-direction:row;align-items:center;gap:8px}.tcol{display:flex;flex-direction:column;align-items:flex-end}
.spark svg{display:block}.sp-line{fill:none;stroke-width:1.6;stroke-linejoin:round}.sp-line.up,.sp-dot.up{stroke:var(--snek);fill:var(--snek)}.sp-line.down,.sp-dot.down{stroke:var(--red);fill:var(--red)}.sp-line{fill:none!important}
.sp-area.up{fill:color-mix(in srgb,var(--snek) 18%,transparent)}.sp-area.down{fill:color-mix(in srgb,var(--red) 18%,transparent)}
@media(max-width:430px){.ticker .tcol{align-items:flex-start}.spark svg{width:56px}}
.dg{display:inline-block;position:relative;overflow:hidden;vertical-align:bottom;line-height:1.15}
.dg.roll .o,.dg.roll .n{display:block}.dg.roll .o{position:absolute;inset:0;animation:rollOut .45s ease forwards}.dg.roll .n{animation:rollIn .45s ease}
@keyframes rollOut{to{transform:translateY(-100%);opacity:0}}@keyframes rollIn{from{transform:translateY(100%);opacity:0}}
.flash-up{animation:flashUp 1s ease}.flash-down{animation:flashDown 1s ease}
@keyframes flashUp{0%{background:color-mix(in srgb,var(--snek) 35%,transparent);border-radius:8px}100%{background:transparent}}
@keyframes flashDown{0%{background:color-mix(in srgb,var(--red) 35%,transparent);border-radius:8px}100%{background:transparent;}}
.btn,.icon-btn,.seg button,.chips button,.tabs a,.links a,.kpi{position:relative;overflow:hidden;transition:transform .12s ease,border-color .2s,background .2s}
.btn:active,.icon-btn:active,.seg button:active,.chips button:active,.links a:active,.kpi:active{transform:scale(.96)}
.tabs a:active span{transform:scale(.85)}.tabs a span{transition:transform .15s}
.kpi:hover{border-color:var(--snek2)}
.ripple{position:absolute;border-radius:50%;background:color-mix(in srgb,var(--snek) 35%,transparent);transform:scale(0);animation:rip .6s ease-out;pointer-events:none}
@keyframes rip{to{transform:scale(2.4);opacity:0}}
.card.reveal{opacity:0;transform:translateY(18px)}.card.reveal.in{opacity:1;transform:none;transition:opacity .5s ease,transform .5s ease}
tr.slide-in{animation:slideIn .6s ease}tr.slide-in td{animation:newGlow 2.4s ease}
@keyframes slideIn{from{transform:translateX(-24px);opacity:0}}@keyframes newGlow{0%{background:color-mix(in srgb,var(--snek) 22%,transparent)}100%{background:transparent}}
tr.whale.slide-in td{animation:whaleGlow 2.6s ease}@keyframes whaleGlow{0%{background:color-mix(in srgb,var(--yellow) 45%,transparent)}100%{background:color-mix(in srgb,var(--yellow) 12%,transparent)}}
.drop{position:fixed;z-index:60;pointer-events:none;font-size:18px;animation:drop 1s ease-out forwards}
@keyframes drop{to{transform:translate(var(--dx),var(--dy)) scale(.6);opacity:0}}
.toasts{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(84px + env(safe-area-inset-bottom));z-index:70;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:min(92vw,420px)}
@media(min-width:900px){.toasts{bottom:24px}}
.toast2{display:flex;gap:10px;align-items:center;background:var(--card);color:var(--text);border:1px solid var(--line);border-left:4px solid var(--snek);border-radius:12px;padding:10px 14px;box-shadow:0 8px 24px #0006;opacity:0;transform:translateY(16px) scale(.98);transition:.25s ease;font-size:14px;max-width:100%}
.toast2.in{opacity:1;transform:none}.toast2.warn{border-left-color:var(--yellow)}.toast2.alert{border-left-color:var(--purple)}.toast2.whale{border-left-color:var(--cyan)}
.ptr{position:fixed;top:0;left:50%;transform:translate(-50%,-60px);z-index:40;display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:6px 14px 6px 6px;opacity:0;font-size:13px;transition:opacity .2s}
.ptr img{width:34px;height:auto}.ptr.ready img{transform:rotate(-12deg) scale(1.1)}.ptr.spin img{animation:wig .6s ease-in-out infinite}
@keyframes wig{50%{transform:rotate(14deg)}}
.swipe-hint{position:fixed;top:45%;left:50%;transform:translate(-50%,-50%);z-index:45;background:var(--card);border:1px solid var(--snek2);border-radius:999px;padding:8px 16px;font-weight:700;opacity:0;pointer-events:none}
.swipe-hint.show{animation:hint 1s ease}@keyframes hint{15%{opacity:1}70%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .card.reveal{opacity:1;transform:none}
}
#tPrice,#price{white-space:nowrap}
@media(max-width:430px){.top{gap:6px;padding-left:10px;padding-right:10px}.spark svg{width:42px;height:22px}.fanbadge{max-width:104px;font-size:9.5px}#tPrice{font-size:15px}.actions{gap:4px}}
@media(max-width:350px){.spark{display:none}}
@media(max-width:430px){#refreshBtn{display:none}.fanbadge{min-width:100px}.brand{flex:none}}
.pricesrc{margin-top:4px;font-size:11.5px;line-height:1.35}
.wsdot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--muted);margin-right:5px;vertical-align:middle}
.wsdot.on{background:var(--snek);box-shadow:0 0 6px var(--snek)}
.vtag{display:inline-block;padding:2px 7px;border-radius:999px;font-size:11.5px;white-space:nowrap;border:1px solid var(--line)}
.vtag.dex{color:var(--snek)}.vtag.cex{color:var(--cyan)}
#liveVenues td:nth-child(2),#liveVenues td:nth-child(3){white-space:nowrap}#liveVenues td{vertical-align:top}
/* wallet tracker */
.wsearch{display:flex;gap:8px;margin:10px 0 6px}.wsearch input{min-width:0;flex:1;min-height:46px;font-size:16px}
.wchips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px}.wchips button{min-height:36px}
.wprofile:empty{display:none}.wprofile{margin-top:8px;border-top:1px solid var(--line);padding-top:12px}
.whead{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:10px}
.wname{font-size:20px;font-weight:700;word-break:break-word}
.kpis.wk{grid-template-columns:repeat(2,1fr)}@media(min-width:900px){.kpis.wk{grid-template-columns:repeat(5,1fr)}}
.hchips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.hchip{font-size:12px;padding:3px 8px;border-radius:999px;background:var(--card2);border:1px solid var(--line)}
.signals{list-style:none;padding:0;margin:10px 0;display:grid;gap:4px;font-size:13px;color:var(--muted)}.signals li.on{color:var(--text)}.signals li.on::first-letter{color:var(--snek)}
.vtag.ex{color:#ffb547;border-color:#ffb54766}
.linkbtn{background:none;border:0;padding:0;color:var(--snek);font:inherit;cursor:pointer;text-align:left}
.wlist{display:grid;gap:8px}.witem{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--card2);position:relative}
.witem .wspark{display:none}@media(min-width:500px){.witem{grid-template-columns:1fr 90px auto auto}.witem .wspark{display:block}}
.witem .wr{text-align:right}.witem .wv{font-weight:700}.icon-btn.sm{width:36px;height:36px;min-width:36px;font-size:14px}
.up{color:var(--snek)}.down{color:var(--red)}.warn{color:#ffb547}
#wTop td,#wTop th{white-space:nowrap}#wTop .wrow{cursor:pointer}#wTop .wrow:hover{background:var(--card2)}
/* follow card */
.follow{display:flex;gap:14px;align-items:flex-start}.follow img{flex:none;margin-top:4px}.follow .ftitle{font-weight:700;font-size:16px}.follow p{margin:6px 0}
.btn.xfollow{display:inline-flex;align-items:center;min-height:44px}
@media(max-width:899px){.tabs{grid-template-columns:repeat(7,1fr)}.tabs a{font-size:10.5px}}
.follow[hidden],.card[hidden]{display:none!important}
a.btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;min-height:44px;padding:0 16px}a.btn.primary{color:var(--onSnek)}
/* ---- movable widgets ---- */
.wgrid>.w.whid{display:none!important}
@media(min-width:900px){main.wgrid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;align-items:start}.wgrid>.w{grid-column:span var(--span,12)}}
.layoutbar{display:flex;justify-content:center;padding:4px 12px 8px}.layoutbar .btn{font-size:14px;color:var(--muted)}
.wctl{display:none}
body.editing .wgrid>.w>:not(.wctl){display:none!important}
body.editing .wgrid>.w{padding:0;display:block!important;min-height:0;border-style:dashed;border-color:var(--snek);animation:none!important;opacity:1!important;transform:none!important}
body.editing .wgrid>.w.pinned{border-style:solid;background:var(--card2)}
body.editing .wctl{display:flex;align-items:center;gap:4px;padding:6px 6px 6px 0;min-height:56px}
.wctl .wh{display:flex;align-items:center;justify-content:center;width:44px;min-height:44px;font-size:22px;color:var(--muted);cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
.w.pinned .wctl .wh{opacity:.25;cursor:default}
.wctl .wt{flex:1;min-width:0;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wctl .wb{min-width:40px;min-height:40px;padding:0 8px;border-radius:10px;border:1px solid var(--line);background:var(--card2);color:var(--text);font:inherit;font-size:14px;cursor:pointer}
.wctl .wb[aria-pressed=true]{background:var(--snek);color:var(--onSnek);border-color:transparent;font-weight:700}
.wctl .wb:disabled{opacity:.3;cursor:default}
.wctl .wsz{display:none}@media(min-width:900px){.wctl .wsz{display:inline-block;min-width:52px}}
@media(max-width:380px){.wctl .wb{min-width:36px;padding:0 6px}.wctl .wt{font-size:13px}}
.wghost{opacity:.35}.wchosen{box-shadow:0 8px 28px rgba(0,0,0,.35)}
.sortable-fallback{opacity:.9!important}
body.editing .tabs,body.editing .layoutbar,body.editing .fab{display:none!important}
body.editing{padding-bottom:calc(140px + env(safe-area-inset-bottom))}
.lbar{position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--hdr);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--snek);padding:10px clamp(10px,3vw,24px) calc(10px + env(safe-area-inset-bottom))}
.lbar[hidden]{display:none}
.lbar .lrow{display:flex;align-items:center;gap:8px;max-width:1240px;margin:0 auto}.lbar .lrow .small{line-height:1.3}
.lbar .ltray{max-width:1240px;margin:8px auto 0;align-items:center;background:transparent;border:0;padding:0;overflow-x:auto;flex-wrap:nowrap}
.lbar .ltray button{white-space:nowrap;background:var(--card2);border:1px solid var(--line)}
.lbar .ltray[hidden]{display:none}
body.editing .toasts{bottom:auto;top:calc(80px + env(safe-area-inset-top))}
/* ---- wallet tracker extras ---- */
.wacts{margin:12px 0 4px}.wacts .btn{font-size:14px}
.wsec{margin-top:14px}.wsec h3{margin:0 0 8px}
.htable td:nth-child(2),.htable td:nth-child(3),.htable th:nth-child(2),.htable th:nth-child(3){text-align:right;font-variant-numeric:tabular-nums}
.ctable td{font-variant-numeric:tabular-nums}.ctable th{text-align:left}
.wtx{display:grid;gap:6px;margin-top:8px}
.wtxr{display:grid;grid-template-columns:auto 1fr auto;gap:2px 10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card2);color:var(--text);text-decoration:none;min-height:44px}
.wtxr .wk{font-weight:700;font-size:13px}.wtxr .wv{text-align:right;display:flex;flex-direction:column;font-variant-numeric:tabular-nums}
@media(max-width:520px){.wtxr{grid-template-columns:1fr auto}.wtxr .wt{grid-column:1;grid-row:2}.wtxr .wv{grid-column:2;grid-row:1/3}}
.wfeed{display:grid;gap:6px}.wfi{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card2)}
.wfic{font-size:20px;width:28px;text-align:center}
.kpi .v.up,.up{color:var(--snek)}.kpi .v.down{color:var(--red)}
/* ---- indicator picker ---- */
.ind-btn{font-size:14px;gap:6px}.badge{display:inline-flex;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--snek);color:var(--onSnek);font-size:12px;font-weight:700;align-items:center;justify-content:center}
dialog.sheet{border:1px solid var(--line);border-radius:18px;background:var(--card);color:var(--text);padding:0;width:min(560px,96vw);max-height:84vh;overflow:hidden;display:none;flex-direction:column}
dialog.sheet[open]{display:flex}
dialog.sheet::backdrop{background:rgba(0,0,0,.5)}
@media(max-width:600px){dialog.sheet{margin:auto 0 0;width:100vw;max-width:100vw;border-radius:18px 18px 0 0;max-height:82vh;padding-bottom:env(safe-area-inset-bottom)}}
.sheet-h{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line)}.sheet-h b{font-size:16px}
.sheet-b{overflow:auto;padding:4px 14px 14px;-webkit-overflow-scrolling:touch}.sheet-b h4{margin:14px 0 6px;font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.irow{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 10px;padding:8px 0;border-bottom:1px solid var(--line)}
.itog{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer;flex:1 1 200px}.itog input{width:22px;height:22px;accent-color:var(--snek)}
.itog .iname{display:block;font-weight:600}.itog .ihelp{display:block;line-height:1.3}
.idot{width:12px;height:12px;border-radius:50%;flex:none}
.iparams{display:flex;gap:8px}.iparams label{display:flex;flex-direction:column;gap:2px}.iparams input{width:64px;min-height:40px;border-radius:10px;border:1px solid var(--line);background:var(--card2);color:var(--text);padding:0 8px;font:inherit}
.itog{flex-direction:row!important;font-size:14px;color:var(--text);gap:10px!important}.itog input[type=checkbox]{width:22px!important;min-height:0;height:22px;flex:none;margin:0}
dialog.sheet{box-sizing:border-box;max-width:96vw}
@media(max-width:600px){dialog.sheet{position:fixed;inset:auto 0 0 0;margin:0;width:100%;max-width:100%}}
.sheet-h .btn{flex:none;padding:0 14px;white-space:nowrap}.sheet-h .grow{min-width:0}
/* ---- customize: pill, fab, ⋯ menu, undo, coach, presets ---- */
.pill-btn{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid color-mix(in srgb,var(--snek) 55%,transparent);background:color-mix(in srgb,var(--snek) 14%,var(--card2));color:var(--text);font:inherit;font-size:14px;font-weight:600;cursor:pointer;transition:transform .15s,background .2s}
.pill-btn:hover{background:color-mix(in srgb,var(--snek) 24%,var(--card2))}.pill-btn:active{transform:scale(.96)}
.fab-pill{display:none}
@media(max-width:520px){#layoutBtn{display:none}
 .fab-pill{display:inline-flex;align-items:center;gap:6px;position:fixed;right:12px;bottom:calc(68px + env(safe-area-inset-bottom));z-index:35;min-height:40px;padding:0 14px;border-radius:999px;border:1px solid color-mix(in srgb,var(--snek) 60%,transparent);background:color-mix(in srgb,var(--card) 70%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--text);font:inherit;font-size:13px;font-weight:600;box-shadow:0 6px 20px rgba(0,0,0,.35);transition:transform .25s cubic-bezier(.2,.8,.2,1),opacity .25s}
 .fab-pill.tuck{transform:translateY(90px);opacity:0;pointer-events:none}}
body.editing .fab-pill{display:none!important}
.wgrid>.w{position:relative}
.wkebab{position:absolute;top:8px;right:8px;z-index:3;width:36px;height:36px;min-height:0;min-width:0;padding:0;border-radius:10px;border:1px solid transparent;background:transparent;color:var(--muted);font-size:20px;line-height:1;cursor:pointer;opacity:.55;transition:opacity .15s,background .15s}
.wkebab span{display:block;transform:translateY(-3px)}
.w:hover>.wkebab,.wkebab:focus-visible,.wkebab[aria-expanded=true]{opacity:1;background:var(--card2);border-color:var(--line)}
body.editing .wkebab{display:none}
.wgrid>.w>.row:first-child,.wgrid>.w>h2:first-child,.wgrid>.w.hero>div:first-child:not(.wctl){padding-right:34px}
.wmenu{position:fixed;z-index:80;min-width:210px;padding:6px;border-radius:14px;border:1px solid var(--line);background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 14px 40px rgba(0,0,0,.4);opacity:0;transform:translateY(-4px) scale(.98);transform-origin:top right;transition:opacity .14s,transform .14s}
.wmenu.open{opacity:1;transform:none}
.wmenu .wmh{font-size:12px;color:var(--muted);padding:6px 10px 4px}
.wmenu button{display:flex;width:100%;align-items:center;gap:8px;min-height:42px;padding:0 10px;border:0;border-radius:10px;background:transparent;color:var(--text);font:inherit;font-size:14px;text-align:left;cursor:pointer}
.wmenu button:hover:not([disabled]),.wmenu button:focus-visible{background:var(--card2)}.wmenu button[disabled]{opacity:.35;cursor:default}
.wmsep{height:1px;background:var(--line);margin:4px 6px}
.utoast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom));z-index:90;display:flex;align-items:center;gap:12px;padding:8px 8px 8px 16px;border-radius:14px;background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line);box-shadow:0 10px 30px rgba(0,0,0,.4);font-size:14px;transform:translate(-50%,140%);opacity:0;transition:transform .3s cubic-bezier(.2,.8,.2,1),opacity .3s;max-width:92vw}
.utoast.show{transform:translate(-50%,0);opacity:1}.utoast .ubtn{min-height:36px;padding:0 14px;border-radius:10px;border:0;background:var(--snek);color:var(--onSnek);font:inherit;font-weight:700;cursor:pointer}
body.editing .utoast{bottom:calc(170px + env(safe-area-inset-bottom))}
@media(min-width:900px){.utoast{bottom:24px}body.editing .utoast{bottom:150px}}
.coach{position:fixed;z-index:85;width:min(320px,calc(100vw - 20px));padding:14px 16px;border-radius:16px;background:var(--card);border:1px solid var(--snek);box-shadow:0 16px 44px rgba(0,0,0,.45),0 0 0 4px color-mix(in srgb,var(--snek) 18%,transparent);opacity:0;transform:translateY(6px);transition:opacity .25s,transform .25s}
.coach.show{opacity:1;transform:none}.coach p{margin:6px 0 12px;font-size:14px;color:var(--muted)}.coach p b{color:var(--text)}
.coach::before{content:"";position:absolute;left:calc(var(--ax) - 8px);width:14px;height:14px;background:var(--card);border:1px solid var(--snek);transform:rotate(45deg)}
.coach.down::before{top:-8px;border-right:0;border-bottom:0}.coach.up::before{bottom:-8px;border-left:0;border-top:0}
.lpresets{display:flex;align-items:center;gap:6px;max-width:1240px;margin:8px auto 0;overflow-x:auto;scrollbar-width:none}
.lpresets button,.lbar .ltray button{flex:none;min-height:38px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--card2);color:var(--text);font:inherit;font-size:13px;white-space:nowrap;cursor:pointer}
.lpresets button.on{background:var(--snek);color:var(--onSnek);border-color:transparent;font-weight:700}
.lbar .ltray{display:flex;gap:6px;align-items:center}
#layoutUndo{min-width:44px;padding:0;font-size:18px}
body.editing{padding-bottom:calc(190px + env(safe-area-inset-bottom))}
body.editing .wctl{cursor:grab;touch-action:pan-y}
.wghost{opacity:1!important;border:2px dashed var(--snek)!important;background:color-mix(in srgb,var(--snek) 10%,transparent)!important;box-shadow:none!important}
.wghost>*{visibility:hidden}.wghost::after{content:"Drop here";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--snek);font-weight:700;font-size:14px}
.wdrag,.sortable-fallback{opacity:.95!important;transform:rotate(1.5deg) scale(1.02);box-shadow:0 18px 40px rgba(0,0,0,.45)!important}
.wchosen{box-shadow:0 0 0 2px var(--snek)}
@media(prefers-reduced-motion:reduce){.wmenu,.utoast,.coach,.fab-pill{transition:none}.wdrag,.sortable-fallback{transform:none}}
body.editing .sortable-fallback{padding:0!important;min-height:0!important;height:auto!important;border:1px solid var(--snek)!important;border-radius:16px;background:var(--card)!important}
body.editing .sortable-fallback>:not(.wctl){display:none!important}
body.editing .sortable-fallback>.wctl{display:flex}
body.editing .utoast{top:calc(76px + env(safe-area-inset-top));bottom:auto;transform:translate(-50%,-180%)}body.editing .utoast.show{transform:translate(-50%,0)}
@media(min-width:900px){.wgrid>.w.hero{padding-right:52px}}
.utoast{width:max-content;max-width:min(92vw,440px)}
.lbar .lrow .btn{flex:none}.lbar .lrow .grow{min-width:0}
body.editing .wgrid>.w.hero{padding-right:0}

/* ===== press-and-hold drag (no edit mode needed) ===== */
.w.wlift{transform:scale(1.015);box-shadow:0 0 0 2px var(--snek),0 16px 40px rgba(0,0,0,.4)!important;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s;z-index:5}
body.dragging,body.dragging *{user-select:none!important;-webkit-user-select:none!important;cursor:grabbing!important}
body:not(.editing) .sortable-fallback{max-height:180px!important;overflow:hidden!important;opacity:1!important;background:var(--card)!important;border:1px solid var(--snek)!important;border-radius:16px;pointer-events:none;box-shadow:0 0 0 1px var(--snek),0 22px 50px rgba(0,0,0,.55)!important}
body.dragging .wghost{max-height:160px!important;min-height:90px;overflow:hidden}
@media(pointer:fine){body:not(.editing) .w>h2:first-child,body:not(.editing) .w>.row:first-child h2{cursor:grab}}
@media(pointer:coarse){.w h2,.w h3{-webkit-touch-callout:none}}
.hold-hint{font-size:12px;color:var(--muted)}

/* ===== wallet tracker v3 ===== */
.wav{position:relative;display:inline-grid;place-items:center;flex:none;border-radius:50%;overflow:hidden;background:conic-gradient(from 200deg,hsl(var(--ah) 85% 55%),hsl(var(--ah2) 85% 50%),hsl(var(--ah) 85% 55%));box-shadow:0 0 0 2px var(--card),0 0 0 3px hsl(var(--ah) 70% 50% / .5)}
.wav-i{font-weight:800;color:#fff;font-size:15px;text-shadow:0 1px 2px rgba(0,0,0,.35);letter-spacing:.5px}
.wav img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.wcard{position:relative;isolation:isolate;border-radius:18px;padding:16px;overflow:hidden;border:1px solid color-mix(in srgb,hsl(var(--h1) 70% 50%) 40%,var(--line));background:radial-gradient(120% 140% at 0% 0%,hsl(var(--h1) 80% 45% / .28),transparent 55%),radial-gradient(120% 140% at 100% 100%,hsl(var(--h2) 80% 45% / .22),transparent 55%),var(--card2)}
.wcard::before{content:"";position:absolute;inset:-40%;z-index:-1;background:conic-gradient(from var(--fxa,0deg),transparent 0 70%,hsl(var(--h1) 90% 60% / .18) 80%,transparent 90%);animation:fxspin 9s linear infinite}
.wcard-top{display:flex;gap:12px;align-items:center}.wcard-id{min-width:0}.wcard-id .wname{font-size:18px;font-weight:800;overflow-wrap:anywhere}
.wbadges{display:flex;flex-wrap:wrap;gap:4px;margin:3px 0}.wbadges.r{justify-content:flex-end}
.wtag{font-size:11px;padding:2px 7px;border-radius:999px;background:color-mix(in srgb,var(--purple) 18%,transparent);color:var(--purple);font-weight:600}
.wtrack{flex:none}@media(max-width:420px){.wcard-top{flex-wrap:wrap}.wcard-id{flex:1 1 0}.wtrack{flex:1 1 100%}}
.wcard-bal{margin-top:14px}.wbig{font-size:clamp(28px,7vw,40px);font-weight:900;letter-spacing:-.02em;line-height:1.05;background:linear-gradient(90deg,var(--text),hsl(var(--h1) 85% 65%));-webkit-background-clip:text;background-clip:text;color:transparent}
.wsub{color:var(--muted);font-size:13px;margin-top:2px}
.wnote{margin:10px 0 0;padding:8px 10px;border-radius:10px;background:color-mix(in srgb,var(--card) 70%,transparent);font-size:13px}
.wcard-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.chipbtn{min-height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:color-mix(in srgb,var(--card) 75%,transparent);color:var(--text);font:inherit;font-size:13px;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:border-color .2s,transform .12s}
.chipbtn:hover{border-color:var(--snek)}.chipbtn:active{transform:scale(.95)}
.wnoteform{display:grid;gap:8px;margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--card2)}
.wnoteform label{display:grid;gap:4px;font-size:12px;color:var(--muted)}
.wnoteform input,.wnoteform textarea{font:inherit;font-size:16px;color:var(--text);background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.wtabs{margin-top:12px;position:relative}.wtabs button{flex:1}
.wpane{margin-top:12px}.wpane.in{animation:paneIn .35s cubic-bezier(.2,.8,.2,1)}
@keyframes paneIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.wempty{display:grid;justify-items:center;text-align:center;gap:6px;padding:18px 12px;border:1px dashed var(--line);border-radius:14px;background:color-mix(in srgb,var(--card2) 60%,transparent)}
.wempty img{opacity:.9}.wempty .btn{margin-top:4px}
.wstart{margin-top:4px}.wsk{display:flex;align-items:center;gap:8px;opacity:.6}
.wsk .sk1,.wsk .sk2{display:block;height:10px;border-radius:6px;background:linear-gradient(90deg,var(--skel1),var(--skel2),var(--skel1));background-size:200% 100%;animation:shimmer 1.6s linear infinite}
.wsk .sk1{width:90px}.wsk .sk2{width:50px}
.wprofile:has(.wstart){border-top:0;padding-top:0}
.spill{display:inline-block;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700}
.spill.on{background:color-mix(in srgb,var(--snek) 18%,transparent);color:var(--snek)}.spill.off{background:color-mix(in srgb,var(--yellow) 18%,transparent);color:var(--yellow)}
.stake-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px}
.rbars{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;align-items:end;height:110px;padding:6px 0}
.rbar{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:3px}
.rbar i{display:block;width:100%;border-radius:5px 5px 2px 2px;background:linear-gradient(var(--snek),var(--snek2));transform-origin:bottom;animation:barUp .6s cubic-bezier(.2,.8,.2,1) both}
.rbar span{font-size:9px;color:var(--muted)}
.rbar:nth-child(n){animation-delay:calc(var(--i,0)*40ms)}
@keyframes barUp{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.hdonut{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin:6px 0 12px}
.donutwrap{position:relative;width:150px;height:150px;flex:none}
.donut{width:100%;height:100%;transform:rotate(-90deg)}
.donut circle{fill:none;stroke-width:14}.donut .dbg{stroke:var(--line)}
.dseg{stroke-linecap:butt;animation:dIn .8s cubic-bezier(.2,.8,.2,1) both;transition:stroke-width .2s}
.dseg:hover{stroke-width:18}
@keyframes dIn{from{opacity:0;stroke-dasharray:0 300}}
.dcenter{position:absolute;inset:0;display:grid;place-content:center;text-align:center}.dcenter b{font-size:18px}
.dlegend{list-style:none;margin:0;padding:0;display:grid;gap:4px;font-size:13px;flex:1;min-width:150px}
.dlegend li{display:flex;align-items:center;gap:8px}.dlegend i{width:10px;height:10px;border-radius:3px;flex:none}.dlegend span{margin-left:auto}
.wvalchart{height:200px;margin-top:6px}
.seg.sm button{min-height:34px;font-size:13px;padding:0 10px}
.tline{list-style:none;margin:0;padding:0 0 0 8px;position:relative}
.tline::before{content:"";position:absolute;left:13px;top:6px;bottom:6px;width:2px;background:linear-gradient(var(--snek),var(--line))}
.tday{font-size:12px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:12px 0 4px 22px}
.titem a{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:8px 6px;border-radius:10px;color:var(--text);text-decoration:none;transition:background .2s}
.titem a:hover{background:var(--card2)}
.tdot{width:12px;height:12px;border-radius:50%;background:var(--muted);box-shadow:0 0 0 3px var(--card);position:relative;z-index:1}
.titem.in .tdot{background:var(--snek);box-shadow:0 0 0 3px var(--card),0 0 10px var(--snek)}.titem.out .tdot{background:var(--red)}
.tmain{display:grid;min-width:0}.tval{display:grid;text-align:right}
.wcardmini{grid-template-columns:auto 1fr auto auto!important;border-color:color-mix(in srgb,hsl(var(--h1) 70% 50%) 30%,var(--line));background:linear-gradient(110deg,hsl(var(--h1) 70% 45% / .12),transparent 50%),var(--card2)}
@media(min-width:500px){.wcardmini{grid-template-columns:auto 1fr 90px auto auto!important}}
.pbadge{font-size:11px;font-weight:700;padding:2px 6px;border-radius:6px;background:var(--card);color:var(--muted)}
.pbadge.up{color:var(--snek);background:color-mix(in srgb,var(--snek) 14%,transparent)}.pbadge.down{color:var(--red);background:color-mix(in srgb,var(--red) 14%,transparent)}
.tagfilter{margin-bottom:8px}
.feedf{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.wfi{border-left:3px solid var(--line)}.wfi.up{border-left-color:var(--snek)}.wfi.down{border-left-color:var(--red)}
.wfbar{height:4px;border-radius:3px;background:var(--line);margin-top:5px;overflow:hidden}.wfbar i{display:block;height:100%;background:linear-gradient(90deg,var(--snek2),var(--snek))}
.wfi.down .wfbar i{background:linear-gradient(90deg,#a3283a,var(--red))}

/* ===== site-wide effects ===== */
@property --fxa{syntax:"<angle>";initial-value:0deg;inherits:false}
@keyframes fxspin{to{--fxa:360deg;transform:rotate(360deg)}}
@keyframes shimmer{to{background-position:-200% 0}}
.card{position:relative;transition:border-color .3s,box-shadow .3s,transform .25s cubic-bezier(.2,.8,.2,1)}
/* animated gradient border on the hero and wallet search */
.hero,.w[data-w="wsearch"]{border-color:transparent;background:linear-gradient(var(--card),var(--card)) padding-box,conic-gradient(from var(--fxa),var(--snek),var(--cyan),var(--purple),var(--snek)) border-box;animation:fxborder 8s linear infinite}
@keyframes fxborder{to{--fxa:360deg}}
/* glass header + bars */
.top,.tabs,.lbar,.wmenu,.utoast,.coach{backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4)}
/* cursor spotlight + tilt (mouse only) */
@media(pointer:fine) and (prefers-reduced-motion:no-preference){
  .card:not(.wghost)::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--snek) 9%,transparent),transparent 45%)}
  .card:hover::after{opacity:1}
  .card:hover{border-color:color-mix(in srgb,var(--snek) 35%,var(--line));box-shadow:0 10px 34px rgba(0,0,0,.25),0 0 0 1px color-mix(in srgb,var(--snek) 12%,transparent)}
  .card.tilt{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(-2px)}
  .hero:hover,.w[data-w="wsearch"]:hover{border-color:transparent}
  .btn.primary:hover{box-shadow:0 0 0 3px var(--glow),0 6px 22px color-mix(in srgb,var(--snek) 35%,transparent)}
}
body.editing .card:not(.wghost)::after,body.dragging .card:not(.wghost)::after{display:none}
body.editing .card.tilt,body.dragging .card.tilt{transform:none}
/* parallax hero glow */
.hero{overflow:hidden;isolation:isolate}
.hero::before{content:"";position:absolute;width:340px;height:340px;right:-90px;top:-120px;z-index:-1;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--snek) 22%,transparent),transparent 65%);transform:translate3d(0,var(--py,0px),0);pointer-events:none}
.hero .mascot,.hero img.hero-img{transform:translate3d(0,calc(var(--py,0px)*-.5),0)}
/* sliding tab indicator */
.tabs{--ti:0}
.tabs::after{content:"";position:absolute;top:0;left:0;height:3px;width:calc(100%/6);border-radius:0 0 4px 4px;background:var(--snek);box-shadow:0 0 12px var(--snek);transform:translateX(calc(var(--ti)*100%));transition:transform .35s cubic-bezier(.2,.8,.2,1)}
@media(min-width:900px){.tabs::after{display:none}}
.tabs a.on span{animation:tabPop .35s cubic-bezier(.2,.8,.2,1)}
@keyframes tabPop{50%{transform:scale(1.25) translateY(-2px)}}
/* scroll progress */
.scrollbar{position:fixed;top:0;left:0;height:2px;width:100%;transform-origin:0 50%;transform:scaleX(var(--sp,0));background:linear-gradient(90deg,var(--snek),var(--cyan),var(--purple));z-index:60;pointer-events:none}
/* gradient text title */
.top h1{background:linear-gradient(90deg,var(--text) 30%,var(--snek),var(--cyan),var(--text) 70%);background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:titleSheen 12s ease-in-out infinite}
@keyframes titleSheen{50%{background-position:100% 0}}
.logo{transition:transform .3s cubic-bezier(.3,1.6,.5,1);cursor:pointer}.logo:hover{transform:rotate(-12deg) scale(1.1)}.logo.wiggle{animation:wig .4s}
@keyframes wig{25%{transform:rotate(-15deg)}75%{transform:rotate(15deg)}}
/* kpi hover lift + number glow on change */
.kpi{transition:transform .2s,border-color .2s}
@media(pointer:fine){.kpi:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--snek) 40%,var(--line))}}
/* confetti + snake game */
.confetti{position:fixed;inset:0;pointer-events:none;z-index:200}
.snakegame{position:fixed;inset:0;z-index:150;display:grid;place-items:center;background:rgba(0,0,0,.6);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.snakebox{background:var(--card);border:1px solid var(--snek);border-radius:18px;padding:14px;display:grid;gap:8px;justify-items:center;box-shadow:0 0 40px var(--glow);max-width:94vw}
.snakebox canvas{width:min(320px,84vw);height:min(320px,84vw);border-radius:10px;background:var(--bg);touch-action:none;image-rendering:pixelated}
.snakepad{display:grid;grid-template-columns:repeat(3,52px);gap:6px}.snakepad button{min-height:44px}
@media(prefers-reduced-motion:reduce){
  .hero,.w[data-w="wsearch"],.wcard::before,.top h1{animation:none!important}
  .wpane.in,.rbar i,.dseg,.tabs a.on span{animation:none!important}
  .tabs::after{transition:none}.hero::before{transform:none}.card{transition:none}
}

/* always-visible drag grip (instant drag on mouse and touch; no edit mode) */
.wgrip{position:absolute;top:8px;right:46px;z-index:3;width:32px;height:36px;display:grid;place-items:center;border-radius:10px;color:var(--muted);cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;opacity:.7;transition:opacity .15s,background .15s,color .15s}
.wgrip:hover,.w:hover>.wgrip{opacity:1;background:var(--card2);color:var(--snek)}
.wgrip:active{cursor:grabbing;transform:scale(.92)}
.pinned>.wgrip,body.editing .wgrip{display:none}
.wgrid>.w.pinned>.row:first-child,.wgrid>.w.pinned>h2:first-child{padding-right:34px}
@media(pointer:fine){body:not(.editing) .wgrid>.w:not(.pinned)>h2,body:not(.editing) .wgrid>.w:not(.pinned)>.row:first-child h2,body:not(.editing) .wgrid>.w:not(.pinned)>.row:first-child h3{cursor:grab;user-select:none}}
.updbar{position:fixed;left:50%;bottom:calc(76px + env(safe-area-inset-bottom));transform:translate(-50%,20px);opacity:0;z-index:120;display:flex;align-items:center;gap:10px;padding:8px 8px 8px 14px;border-radius:14px;background:var(--card);border:1px solid var(--snek);box-shadow:0 12px 30px rgba(0,0,0,.4);font-size:14px;transition:transform .3s,opacity .3s;width:max-content;max-width:92vw}
.updbar.show{transform:translate(-50%,0);opacity:1}
.updbar .btn{min-height:36px}
@media(min-width:900px){.updbar{bottom:24px}}
.wgrip::before{content:"";width:10px;height:16px;background:radial-gradient(circle,currentColor 1.7px,transparent 2.1px) 0 0/5px 5.33px;opacity:.95}
@media(pointer:coarse){.wgrip{opacity:.9;color:color-mix(in srgb,var(--snek) 55%,var(--muted))}}
/* drop slots while dragging */
body.dragging .wgrid>.w:not(.wghost):not(.pinned){outline:2px dashed color-mix(in srgb,var(--snek) 45%,transparent);outline-offset:3px;animation:dropPulse 1.4s ease-in-out infinite}
@keyframes dropPulse{50%{outline-color:color-mix(in srgb,var(--snek) 90%,transparent);box-shadow:0 0 18px var(--glow)}}
body.dragging .wgrid>.w.wtarget{outline:3px solid var(--snek)!important;outline-offset:3px;box-shadow:0 0 0 6px var(--glow),0 0 32px color-mix(in srgb,var(--snek) 45%,transparent)!important;animation:none}
body.dragging .wgrid>.w.pinned{outline:2px dashed color-mix(in srgb,var(--red) 65%,transparent);outline-offset:3px;opacity:.55;cursor:no-drop!important}
body.dragging .wgrid>.w.pinned::after{display:flex!important;content:"📌 Pinned · can’t drop here";position:absolute;inset:auto 10px 10px auto;padding:4px 10px;border-radius:999px;background:var(--card2);border:1px solid color-mix(in srgb,var(--red) 60%,transparent);color:var(--red);font-size:12px;font-weight:700;opacity:1;width:auto;height:auto;z-index:4}
body.dragging .wgrid>.w.wnodrop{opacity:.4}
body.dragging .wghost{animation:ghostPulse 1s ease-in-out infinite}
@keyframes ghostPulse{50%{background:color-mix(in srgb,var(--snek) 20%,transparent)!important}}
@media(prefers-reduced-motion:reduce){body.dragging .wgrid>.w,body.dragging .wghost{animation:none!important}}

/* ===== resize with the mouse (wide screens) ===== */
.rzlayer{position:absolute;z-index:25;pointer-events:none}
.rzlayer[hidden]{display:none}
.rzh{position:absolute;pointer-events:auto;touch-action:none}
.rz-e{top:24px;bottom:24px;right:-5px;width:10px;cursor:ew-resize}
.rz-s{left:24px;right:24px;bottom:-5px;height:10px;cursor:ns-resize}
.rz-e::after,.rz-s::after{content:"";position:absolute;border-radius:3px;background:var(--snek);opacity:0;transition:opacity .15s}
.rz-e::after{top:50%;left:3px;width:4px;height:44px;transform:translateY(-50%)}
.rz-s::after{left:50%;top:3px;height:4px;width:44px;transform:translateX(-50%)}
.rz-e:hover::after,.rz-s:hover::after{opacity:.85}
.rz-se{right:-4px;bottom:-4px;width:22px;height:22px;cursor:nwse-resize;display:grid;place-items:center}
.rz-se i{width:12px;height:12px;border-right:2.5px solid var(--muted);border-bottom:2.5px solid var(--muted);border-bottom-right-radius:4px;opacity:.75;transition:border-color .15s,opacity .15s}
.rz-se:hover i{border-color:var(--snek);opacity:1}
.rzlayer.touch .rz-se{width:44px;height:44px;right:-8px;bottom:-8px}
.rzlayer.touch .rz-se i{width:18px;height:18px;border-width:3px;border-color:var(--snek)}
body.resizing,body.resizing *{user-select:none!important;-webkit-user-select:none!important}
body.rzm-e,body.rzm-e *{cursor:ew-resize!important}body.rzm-s,body.rzm-s *{cursor:ns-resize!important}body.rzm-se,body.rzm-se *{cursor:nwse-resize!important}
.rzghost{position:absolute;z-index:26;pointer-events:none;border:2px dashed var(--snek);border-radius:16px;background:color-mix(in srgb,var(--snek) 8%,transparent);box-shadow:0 0 0 4px var(--glow),0 0 28px color-mix(in srgb,var(--snek) 30%,transparent);transition:width .08s,height .08s}
.rzlabel{position:absolute;right:10px;bottom:10px;padding:5px 10px;border-radius:999px;background:var(--snek);color:var(--onSnek);font-weight:800;font-size:13px;white-space:nowrap;box-shadow:0 4px 14px rgba(0,0,0,.35)}
body.resizing .wgrid>.w{transition:none}
@media(min-width:900px){
  .wgrid>.w.wsized{height:var(--h);overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
  .wgrid>.w.wsized[data-w="chart"]{display:flex;flex-direction:column;overflow:hidden}
  .wgrid>.w.wsized[data-w="chart"]>*{flex:none}
  .wgrid>.w.wsized[data-w="chart"]>.tvchart{flex:1 1 0;min-height:200px;height:auto!important}
}
@media(max-width:899px){.rzlayer,.rzghost{display:none!important}}
@media(prefers-reduced-motion:reduce){.rzghost{transition:none}}

/* follow card: pinned on top; "Not now" makes it a slim bar */
.follow .fexpand{display:none}
.follow.compact{align-items:center;padding-top:10px;padding-bottom:10px}
.follow.compact img{width:36px;height:auto;margin-top:0}
.follow.compact .grow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.follow.compact p,.follow.compact #followClose{display:none}
.follow.compact .fexpand{display:inline-flex;align-items:center}
.follow.compact .row{margin:0}.follow.compact .btn{min-height:36px;font-size:13px}
body.editing .wgrid>.w.wsized{height:auto}

/* portfolio history widget */
.phchart-wrap{position:relative;margin-top:10px}
.phchart{height:clamp(260px,42vh,420px)}
.wsized[data-w="whist"] .phchart{height:clamp(220px,calc(var(--h) - 330px),1200px)}
.phtip{position:absolute;z-index:4;pointer-events:none;min-width:150px;padding:8px 10px;border-radius:10px;background:color-mix(in srgb,var(--card) 92%,transparent);border:1px solid var(--line);box-shadow:0 8px 24px rgba(0,0,0,.35);font-size:12px;line-height:1.45;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.phtip b{font-size:13px}
.phlegend{display:flex;flex-wrap:wrap;gap:14px;margin:6px 0}.phlegend span{display:inline-flex;align-items:center;gap:6px}.phlegend i{width:12px;height:3px;border-radius:2px;display:inline-block}
#phPick:empty{display:none}#phPick{margin-top:8px}
.btn.sm{min-height:32px;padding:0 10px;font-size:13px}

/* grip v2: top-center pill handle (2×6 dots), 72×32 hit area, ⋯ stays at the right */
.wgrid>.w:not(.pinned){padding-top:28px}
body.editing .wgrid>.w{padding-top:0}
.wgrip{top:0;right:auto;left:50%;transform:translateX(-50%);width:76px;height:32px;border-radius:0 0 14px 14px;background:transparent!important;opacity:1;display:grid;place-items:center;color:var(--text)}
.wgrip::after{content:"";position:absolute;left:-6px;right:-6px;top:-8px;bottom:-6px}
.wgrip::before{width:48px;height:18px;border-radius:999px;opacity:1;background:radial-gradient(circle,color-mix(in srgb,var(--text) 70%,transparent) 1.5px,transparent 1.9px) 4px 2px/6.6px 7px repeat-x,radial-gradient(circle,color-mix(in srgb,var(--text) 70%,transparent) 1.5px,transparent 1.9px) 4px 9px/6.6px 7px repeat-x,var(--card2);background-size:6.6px 7px,6.6px 7px,auto;background-repeat:repeat-x,repeat-x,no-repeat;border:1px solid color-mix(in srgb,var(--text) 22%,var(--line));box-shadow:0 1px 3px rgba(0,0,0,.25);transition:background-color .15s,border-color .15s,transform .15s,box-shadow .15s}
.wgrip:hover::before,.w:hover>.wgrip::before{border-color:var(--snek);box-shadow:0 0 0 3px var(--glow)}
.wgrip:hover::before{background-color:color-mix(in srgb,var(--snek) 18%,var(--card2))}
.wgrip:active::before,.w.wlift>.wgrip::before{transform:scale(.94);background-color:color-mix(in srgb,var(--snek) 35%,var(--card2));border-color:var(--snek)}
.wgrip:active{transform:translateX(-50%)}
@media(pointer:coarse){.wgrip{color:var(--text)}.wgrip::before{border-color:color-mix(in srgb,var(--snek) 45%,var(--line))}}

/* ===== Settings: themes, density, text size, background art, no-effects ===== */
[data-theme="oled"]{--bg:#000;--card:#07090a;--card2:#0d1113;--line:#182226;--text:#f4f3ef;--muted:#8a9ca3;--skel1:#0d1113;--skel2:#182226;--glow:#18f2b214;--hdr:#000000d9}
[data-theme="green"]{--bg:#03140e;--card:#062018;--card2:#0a2b21;--line:#124434;--text:#effff8;--muted:#8fc2ae;--skel1:#0a2b21;--skel2:#124434;--glow:#18f2b233;--hdr:#03140ed9}
[data-density="compact"] .wgrid{gap:10px}
[data-density="compact"] .card{padding:12px 12px 12px}
[data-density="compact"] .wgrid>.card.w:not(.pinned){padding-top:26px}
[data-density="compact"] .kpi{padding:7px 9px}
[data-density="compact"] .card h2{font-size:16px;margin-bottom:6px}
[data-fs="s"] main{zoom:.92}[data-fs="l"] main{zoom:1.08}[data-fs="xl"] main{zoom:1.16}
html[data-bg]:not([data-bg="none"]) body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-size:cover;background-position:center;opacity:.22}
html[data-bg="space"] body::before{background-image:url(brand/bg-space.webp)}
html[data-bg="pipe"] body::before{background-image:url(brand/bg-pipe.webp);opacity:.16}
html[data-bg="faces"] body::before{background:url(brand/snek-face-grin.webp) 0 0/120px auto repeat,url(brand/snek-face-tongue.webp) 60px 70px/120px auto repeat;opacity:.06}
html[data-theme="light"][data-bg]:not([data-bg="none"]) body::before{opacity:.12}
html.nofx *,html.nofx *::before,html.nofx *::after{animation:none!important;transition:none!important}
html.nofx .card::after,html.nofx .confetti{display:none!important}

/* settings + share sheet */
.spanel{position:fixed;inset:0;z-index:120;display:flex;justify-content:flex-end}
.spanel[hidden]{display:none}
.spanel .sback{position:absolute;inset:0;background:#000a;opacity:0;transition:opacity .22s}
.spanel .ssheet{position:relative;width:min(440px,100%);height:100%;background:var(--card);border-left:1px solid var(--line);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s cubic-bezier(.2,.8,.2,1);box-shadow:-20px 0 60px #0008}
.spanel.open .sback{opacity:1}.spanel.open .ssheet{transform:none}
.spanel .shead{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line);font-size:18px}
.spanel .shead img{height:26px;width:auto}
.spanel .sbody{overflow:auto;padding:6px 16px 28px;flex:1;-webkit-overflow-scrolling:touch}
.spanel h4{margin:18px 0 6px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--snek)}
.srow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent)}
.srow .sl{display:grid;gap:1px;min-width:0}.srow .sc{flex:none;max-width:62%}
.srow select,.srow input:not([type]),.spanel input.grow,.spanel textarea{background:var(--card2);color:var(--text);border:1px solid var(--line);border-radius:10px;padding:8px 10px;font:inherit;min-height:38px}
.srow input:not([type]){width:180px}
.sseg{display:flex;flex-wrap:wrap;justify-content:flex-end}
.sseg button{min-height:34px}
.swatches{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;max-width:210px}
.sw{width:28px;height:28px;border-radius:50%;border:2px solid var(--line);background:var(--c);color:var(--onSnek);font-size:13px;cursor:pointer;padding:0}
.sw.on{outline:2px solid var(--text);outline-offset:2px}
.swc{width:28px;height:28px;border-radius:50%;overflow:hidden;border:2px dashed var(--muted);display:grid;place-items:center;cursor:pointer}
.swc input{width:40px;height:40px;border:0;padding:0;opacity:.01;cursor:pointer}
.tgl{position:relative;display:inline-block;width:46px;height:26px}
.tgl input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer;z-index:1}
.tgl span{position:absolute;inset:0;border-radius:20px;background:var(--card2);border:1px solid var(--line);transition:background .2s}
.tgl span::after{content:"";position:absolute;width:20px;height:20px;left:2px;top:2px;border-radius:50%;background:var(--muted);transition:transform .2s,background .2s}
.tgl input:checked+span{background:color-mix(in srgb,var(--snek) 35%,var(--card2))}.tgl input:checked+span::after{transform:translateX(20px);background:var(--snek)}
.tgl input:focus-visible+span{outline:2px solid var(--snek);outline-offset:2px}
.profiles{display:grid;gap:8px}.prof{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--card2);border-radius:10px}.prof b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.btn.sm{padding:6px 10px;min-height:34px;font-size:13px}.filebtn{cursor:pointer}.mt{margin-top:10px}
.spanel .gap{gap:8px}
/* share sheet sits centered as a bottom sheet on phones */
.spanel.share{justify-content:center;align-items:flex-end}
.spanel.share .ssheet{height:auto;max-height:92vh;width:min(560px,100%);border:1px solid var(--line);border-radius:20px 20px 0 0;transform:translateY(100%)}
.spanel.share.open .ssheet{transform:none}
@media(min-width:700px){.spanel.share{align-items:center}.spanel.share .ssheet{border-radius:20px}}
.shprev{border-radius:12px;overflow:hidden;border:1px solid var(--line);margin:10px 0;background:var(--card2);min-height:120px}
.shprev img{display:block;width:100%;height:auto}.h120{height:120px}
.spanel textarea{width:100%;box-sizing:border-box;resize:vertical;margin-top:8px}
.shlink{margin:6px 0 10px;color:var(--muted);word-break:break-all}
.shbtns{display:flex;flex-wrap:wrap;gap:8px}.shbtns .btn{flex:1 1 140px;min-height:44px}
.updbar.nudge span{flex:1}
/* official SNEK art: hero mascot, loading splash, section accents */
.hero-art{position:absolute;right:10px;top:8px;margin:0;width:92px;z-index:-1;pointer-events:none;opacity:.95}
.hero-art img{width:100%;height:auto;display:block;filter:drop-shadow(0 8px 24px color-mix(in srgb,var(--snek) 30%,transparent));animation:bob 3.2s ease-in-out infinite;transform:translate3d(0,calc(var(--py,0px)*-.5),0)}
.hero-art figcaption{font-size:9px;color:var(--muted);text-align:center;white-space:nowrap;margin-top:2px;opacity:.8}
@media(min-width:900px){.hero-art{width:130px;right:56px;top:12px}}
@media(min-width:900px){.hero .kpis{position:relative;z-index:1}}
.splash-art{position:relative;width:180px;height:122px}
.splash-art img{position:absolute;inset:0;width:180px;height:auto;animation:bob 1.6s ease-in-out infinite,faceswap 2.4s steps(1) infinite;opacity:0}
.splash-art .sa1{animation-delay:0s,0s}.splash-art .sa2{animation-delay:0s,.8s}.splash-art .sa3{animation-delay:0s,1.6s}
@keyframes faceswap{0%{opacity:1}33.33%{opacity:0}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.splash-art img{animation:none}.splash-art .sa1{opacity:1}}
html.nofx .splash-art .sa1{opacity:1}
.wgrid>.w[data-w="holders"] h2::after,.wgrid>.w[data-w="wallets"] h2::after,.wgrid>.w[data-w="wfeed"] h2::after,.wgrid>.w[data-w="pools"] h2::after,.wgrid>.w[data-w="whist"] h2::after{content:"";display:inline-block;width:28px;height:18px;margin-left:8px;vertical-align:-3px;background:center/contain no-repeat;opacity:.9}
.wgrid>.w[data-w="holders"] h2::after{background-image:url(brand/snek-face-smirk.webp)}
.wgrid>.w[data-w="wallets"] h2::after{background-image:url(brand/snek-face-grin.webp)}
.wgrid>.w[data-w="wfeed"] h2::after{background-image:url(brand/snek-face-shock.webp)}
.wgrid>.w[data-w="pools"] h2::after{background-image:url(brand/snek-face-tongue.webp)}
.wgrid>.w[data-w="whist"] h2::after{background-image:url(brand/snek-face-love.webp)}
.wshare{font-size:15px;padding:2px 6px}
@media(max-width:430px){#themeBtn{display:none}}
@media(max-width:560px){.srow{flex-wrap:wrap}.srow .sc{max-width:100%;width:100%}.sseg,.swatches{justify-content:flex-start;max-width:none}.srow input:not([type]){width:100%;box-sizing:border-box}.srow select{min-width:140px}}
.spanel .sseg{flex-wrap:wrap}
@media(max-width:899px){.hero>div:first-child{padding-right:78px}.hero-art{width:70px;right:8px;top:30px}}
.hero-art figcaption{font-size:8.5px;white-space:normal;line-height:1.2}
.spanel .ssheet{box-sizing:border-box;max-width:100vw;min-width:0}.spanel .sbody{min-width:0}.spanel input,.spanel select{min-width:0;max-width:100%}.spanel form.row{flex-wrap:nowrap}.spanel form .btn{flex:none}
.spanel,.spanel .ssheet{overflow:hidden}.spanel .sbody{overflow-x:hidden;overflow-y:auto}
.wfeed{min-width:0}.wfi{min-width:0;gap:8px}.wfi .grow{min-width:0;overflow-wrap:anywhere}.wfi .linkbtn{flex:none}@media(max-width:430px){.wfi{padding:9px 9px;gap:6px}.wfi .wfic{display:none}}
@media(max-width:520px){#shareBtn{display:inline-flex}#themeBtn{display:none}}
@media(max-width:380px){.top .spark{display:none}}
@media(min-width:900px){.hero-art{left:18px;right:auto;top:auto;bottom:8px;width:88px}.hero-art figcaption{text-align:left}}

/* ===== Portfolio history v2 ===== */
.phctl{display:grid;gap:8px}
.phctl .row{align-items:center}
.phctl input[type=date],.phgrid select{background:var(--card2);color:var(--text);border:1px solid var(--line);border-radius:10px;padding:6px 8px;font:inherit;min-height:34px}
.phopts{border:1px solid var(--line);border-radius:12px;padding:6px 10px;background:color-mix(in srgb,var(--card2) 50%,transparent)}
.phopts summary{cursor:pointer;font-weight:600;font-size:13px;padding:4px 0}
.phgrid{display:flex;flex-wrap:wrap;gap:10px 18px;padding:8px 0 4px}
.phgrid>div{display:grid;gap:4px}
.phtgls{display:flex!important;flex-wrap:wrap;gap:8px 14px;align-items:center}
.phtgl{display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer;min-height:32px}
.phtgl input{accent-color:var(--snek);width:18px;height:18px}
.phassets{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.phchip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card2);color:var(--muted);border-radius:999px;padding:5px 10px;font:inherit;font-size:13px;cursor:pointer;min-height:32px;text-decoration:line-through}
.phchip.on{color:var(--text);text-decoration:none;border-color:color-mix(in srgb,var(--snek) 40%,var(--line))}
.phchip i,.phtip i.dot,.phinspect i.dot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:4px}
.phprog{display:grid;gap:4px;margin:8px 0}
.phprog .phbar{height:5px;border-radius:5px;background:var(--card2);overflow:hidden}
.phprog .phbar i{display:block;height:100%;width:3%;background:var(--snek);transition:width .3s}
.phprog span{font-size:12px;color:var(--muted)}
.phchart{touch-action:pan-y;height:clamp(300px,48vh,480px)}
.phinspect{margin-top:6px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card2);min-height:40px;line-height:1.45}
.phinspect b{font-size:13px}
@media(hover:hover) and (min-width:700px){.phinspect{display:none}}
.phacts{margin-top:8px}
.phtable{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
.phtable th,.phtable td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
.phtable th:first-child,.phtable td:first-child{text-align:left}
.phtable td.up{color:var(--snek)}.phtable td.down{color:var(--red)}
.phul{margin:4px 0 8px;padding-left:18px}
.wsized[data-w="whist"] .phchart{height:clamp(240px,calc(var(--h) - 420px),1200px)}
.phctl [hidden],.w[data-w="whist"] [hidden]{display:none!important}
.phctl .seg,.phopts .seg{flex-wrap:wrap;max-width:100%;min-width:0}
#phCustom{flex:1 1 260px;min-width:0;flex-wrap:nowrap}
#phCustom input[type=date]{flex:1 1 0;min-width:0;width:auto}
@media(max-width:560px){.phctl .seg button,.phopts .seg button{padding-left:9px;padding-right:9px}.phgrid{gap:10px 12px}}
.phtgl{flex-direction:row!important;color:var(--text)}
