@import url('https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@500;700&family=JetBrains+Mono:wght@400;700&display=swap');
:root{--bg:#050a14;--panel:#0a1426;--line:#1d3a7a;--blue:#2f6bff;--gold:#e0a030;--ok:#2ee59d;--bad:#ff4d5e;--tx:#cfe0ff;--mut:#7f95bf;
 --fs:clamp(14px,.55vw + 11px,21px)}
*{box-sizing:border-box;margin:0}html{font-size:var(--fs);-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--tx);font-family:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace;min-height:100vh;min-height:100dvh;line-height:1.5;overflow-x:hidden}
h1,h2,h3,.hd{font-family:'Chakra Petch',system-ui,sans-serif;letter-spacing:.02em}
a{color:var(--blue)}.wrap{width:min(94%,1500px);margin:0 auto;padding:2% 0}
canvas#rain{position:fixed;inset:0;width:100%;height:100%;z-index:0;opacity:.55}
.layer{position:relative;z-index:1}
.card{background:rgba(10,20,38,.88);border:1px solid var(--line);border-radius:.6rem;padding:min(4%,1.6rem)}
.btn,button{font:inherit;font-family:'Chakra Petch',sans-serif;font-weight:700;background:var(--blue);color:#fff;border:0;border-radius:.45rem;padding:.7em 1.3em;cursor:pointer;min-height:2.8rem}
.btn.gold{background:var(--gold);color:#201400}.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--tx)}.btn.red{background:var(--bad)}
.btn.sm{padding:.35em .8em;min-height:0;font-size:.85rem}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
input,select,textarea{font:inherit;width:100%;background:#06101f;color:var(--tx);border:1px solid var(--line);border-radius:.4rem;padding:.65em .8em;min-height:2.8rem}
label{display:block;font-size:.8rem;color:var(--mut);margin:.7em 0 .25em}
.grid{display:grid;gap:3%;grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr))}
.tag{display:inline-block;padding:.1em .6em;border-radius:99px;font-size:.75rem;font-weight:700}
.buy{background:rgba(46,229,157,.15);color:var(--ok)}.sell{background:rgba(255,77,94,.15);color:var(--bad)}
.run{background:rgba(224,160,48,.18);color:var(--gold)}.win{background:var(--ok);color:#012}.loss{background:var(--bad);color:#fff}
.tblw{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.85rem}th,td{padding:.5em .6em;border-bottom:1px solid #12264d;text-align:left;white-space:nowrap}
.flash{border:1px solid var(--gold);color:var(--gold);padding:.6em .9em;border-radius:.4rem;margin-bottom:1em}
.mut{color:var(--mut)}.row{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.pager{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:center;justify-content:center;margin-top:2%}.pbtns{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;justify-content:center}.pinfo{font-size:.8rem}
.filters{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));align-items:end}.filters label{margin-top:0}

/* ===================== Desktop shell (like X/Twitter): left rail | centre column | right rail =====================
   Below 1000px nothing here applies: phones keep their own top bar and a single column. */
.rail,.mhead{display:none}
.app.ord{display:flex;flex-direction:column}
.app.ord>.mid,.app.ord>.side{display:contents}
.o1{order:1}.o2{order:2}.o3{order:3}.o4{order:4}.o5{order:5}.o6{order:6}.o7{order:7}.o8{order:8}.o9{order:9}
@media(min-width:1000px){
 html.shell{font-size:15px}
 .wrap.app{width:100%;max-width:1380px;margin:0 auto;padding:0;display:grid;grid-template-columns:var(--rail) minmax(0,var(--mid)) var(--side);justify-content:center;align-items:start;min-height:100vh;--rail:260px;--mid:660px;--side:360px}
 .wrap.app.full{--mid:1060px;--side:0px}
 .wrap.app.adm{--rail:240px;--mid:1220px;--side:0px;max-width:1520px}
 .wrap.app.wide{--mid:760px}
 .app.ord>.mid,.app.ord>.side{display:block}
 .app.ord{display:grid}
 .o1,.o2,.o3,.o4,.o5,.o6,.o7,.o8,.o9{order:0}
 .top,.tabs-m{display:none!important}
 /* left rail */
 .rail{display:flex;flex-direction:column;gap:.15rem;position:sticky;top:0;height:100vh;padding:.7rem .6rem 1rem;overflow-y:auto}
 .rail .brand{display:block;padding:.3rem .7rem .9rem}.rail .brand img{height:3.1rem;border-radius:.6rem;display:block}
 .rail .ri{display:flex;align-items:center;gap:1.1rem;padding:.8rem 1.1rem;border-radius:99px;color:var(--tx);text-decoration:none;font-family:'Chakra Petch',system-ui,sans-serif;font-weight:500;font-size:1.22rem;position:relative;background:transparent;border:0;cursor:pointer;min-height:0;width:fit-content;max-width:100%;text-align:left;transition:background .15s}
 .rail .ri:hover{background:rgba(47,107,255,.14)}
 .rail .ri.on{font-weight:700;color:#fff}.rail .ri.on svg{stroke:var(--gold)}
 .rail .ri svg{flex:none}
 .rail .bdg{background:var(--gold);color:#201400;border-radius:99px;font-size:.72rem;min-width:1.3rem;text-align:center;padding:.05rem .4rem;font-weight:700;margin-left:-.3rem;align-self:flex-start;margin-top:.35rem}
 .rail .pill{margin:1rem .3rem .4rem;background:var(--gold);color:#201400;border-radius:99px;padding:.95rem 1rem;font-size:1.05rem;min-height:0}
 .rail .me{margin-top:auto;display:flex;align-items:center;gap:.7rem;padding:.6rem .7rem;border-radius:99px;overflow:hidden}
 .rail .me:hover{background:rgba(47,107,255,.1)}
 .rail .av{flex:none;width:2.5rem;height:2.5rem;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff;font-family:'Chakra Petch',sans-serif;font-weight:700}
 .rail .me .t{display:flex;flex-direction:column;line-height:1.3;min-width:0}.rail .me b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.95rem}.rail .me a{font-size:.8rem;color:var(--mut)}
 /* centre column */
 .mid{border-left:1px solid var(--line);border-right:1px solid var(--line);min-height:100vh;padding:0 1.15rem 3rem;min-width:0}
 .app.full .mid,.app.adm .mid{border-right:0}
 .mhead{display:flex;position:sticky;top:0;z-index:30;justify-content:space-between;align-items:center;gap:1rem;margin:0 -1.15rem 1.1rem;padding:.9rem 1.15rem;background:rgba(5,10,20,.82);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
 .mhead h1{font-size:1.35rem}
 .mid .stat,.mid .sigbox{margin-bottom:1rem}
 .mid .sigbox{max-height:none;overflow:visible}
 .mid #list{grid-template-columns:1fr;gap:1rem}
 /* right rail */
 .side{position:sticky;top:0;align-self:start;max-height:100vh;overflow-y:auto;padding:1rem 1.15rem 2rem;min-width:0}
 .side .card{margin-bottom:1rem;border-radius:1rem}
 .side h2{font-size:1.1rem}
 .side .stat{display:grid;grid-template-columns:repeat(3,1fr);gap:.55rem;margin-bottom:1rem}.side .stat .card{margin:0;padding:.8rem .4rem;min-width:0}.side .stat h2{font-size:1.15rem;white-space:nowrap}.side .stat p{font-size:.72rem}
 .side .refcard .row input{flex:1 1 100%}
 .mid .card{border-radius:1rem}
 .mid>.card,.mid>.hu{margin-bottom:1rem}
}
@media(min-width:1000px) and (max-width:1279px){
 .wrap.app{--rail:86px;--side:330px}
 .wrap.app.full,.wrap.app.adm{--side:0px}
 .wrap.app.adm{--rail:86px}
 .rail .t,.rail .bdg{display:none}.rail .ri{padding:.85rem;margin:0 auto}.rail .brand{padding:.3rem .2rem .9rem;text-align:center}.rail .brand img{margin:0 auto;height:2.7rem}
 .rail .pill{font-size:0;padding:.85rem;margin:1rem auto .4rem;width:2.9rem;height:2.9rem;position:relative}.rail .pill::before{content:'+';font-size:1.7rem;font-weight:700;line-height:1;position:absolute;inset:0;display:grid;place-items:center}
 .rail .me{justify-content:center;padding:.4rem}.rail .me .t{display:none}
}
@media print{.rail,.mhead{display:none!important}.wrap.app{display:block!important}}

/* ---- full screen for charts: the whole chart box fills the screen (the browser's Fullscreen API is also asked for where it exists; this layout also works on phones that refuse it) */
.fsbox.fs{position:fixed!important;top:0;left:0;right:0;bottom:0;z-index:2147483000;margin:0!important;border:0!important;border-radius:0!important;max-width:none!important;width:100%!important;height:100vh;height:100dvh;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;background:var(--bg,#050a14);padding:.55rem .65rem calc(.55rem + env(safe-area-inset-bottom));display:flex!important;flex-direction:column;gap:.35rem}
.fsbox.fs>canvas{flex:1 1 0;height:auto!important;min-height:180px;width:100%}
.fsbox.fs>.cvw{flex:1 1 0;min-height:180px;display:flex!important;margin:0!important}
.fsbox.fs>.cvw>canvas{flex:1 1 0;min-width:0;height:auto!important}
.fsbox.fs .nofs{display:none!important}
html.fs-on,html.fs-on body{overflow:hidden}
/* ---- the eyes: one per phase, tap to show or hide that phase's markings */
.eyes{display:flex;flex-wrap:wrap;gap:.3rem;margin:.45rem 0 .2rem}
.eye{display:inline-flex;align-items:center;gap:.28rem;padding:.22rem .5rem;border:1px solid var(--line);border-radius:99px;background:transparent;color:var(--mut);font-size:.72rem;line-height:1;cursor:pointer;min-height:0;width:auto;font-family:inherit}
.eye svg{display:block;flex:none}
.eye.on{color:var(--tx);background:rgba(255,210,74,.08)}
.eye.on[data-st=seen]{border-color:var(--ok)}.eye.on[data-st=partial]{border-color:var(--gold)}.eye.on[data-st=wait]{border-color:#6aa0ff}.eye.on[data-st=not_seen]{border-color:#52627f}
.eye:not(.on){opacity:.75}
