@font-face{font-family:"Bebas Neue";src:url(fonts/bebas-neue-latin-400-normal.woff2) format("woff2");font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url(fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url(fonts/ibm-plex-mono-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}
:root{--bg:#0b0d12;--fg:#e8e6df;--gold:#f2c14e;--red:#ff4d3a;--muted:#8a909c;--panel:#151922;
  --display:"Bebas Neue",Impact,sans-serif;--mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;--body:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--body);overflow-x:hidden;-webkit-text-size-adjust:100%}
#app{max-width:480px;margin:0 auto;padding:10px 12px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px}
.top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.bug{background:var(--gold);color:var(--bg);padding:2px 8px 0;border-radius:4px;display:flex;flex-direction:column;line-height:1;min-width:76px}
.bug-label{font:600 9px var(--mono);letter-spacing:.1em}
.bug-score{font:32px var(--display);font-variant-numeric:tabular-nums}
.brand{font-family:var(--display);font-size:26px;letter-spacing:.04em;white-space:nowrap}
.no{color:var(--gold)}
.streak{text-align:right;font:600 20px var(--mono);line-height:1}
.streak small{display:block;font:400 9px var(--mono);color:var(--muted)}
.note{margin:0;padding:6px 10px;border:1px solid var(--gold);color:var(--gold);font:12px var(--mono);border-radius:4px}
.stage{display:flex;flex-direction:column;gap:6px}
.frame{position:relative;width:100%;max-width:min(100%, calc((100svh - 330px) * 0.5625));min-width:200px;margin:0 auto;aspect-ratio:54/96;background:#000;border-radius:4px;overflow:hidden}
.frame canvas{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges}
#full{opacity:0;transition:opacity 1.2s ease}
#full.on{opacity:1}
.locked{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:rgba(11,13,18,.92);text-align:center;padding:20px;font:13px var(--mono);color:var(--muted)}
.locked b{font:40px var(--display);color:var(--gold)}
.progress{position:relative;height:18px;background:var(--panel);border-radius:3px;overflow:hidden}
.bar{height:100%;width:0;background:linear-gradient(90deg,var(--gold),var(--red))}
.pct{position:absolute;right:6px;top:1px;font:600 12px var(--mono)}
.play{display:flex;flex-direction:column;gap:8px}
.controls{display:flex;gap:8px}
.btn{flex:1;min-height:46px;border:1px solid #2a2f3a;background:var(--panel);color:var(--fg);font:20px var(--display);letter-spacing:.05em;border-radius:6px;cursor:pointer;text-decoration:none;display:flex;align-items:center;justify-content:center;touch-action:manipulation}
.btn.gold{background:var(--gold);color:var(--bg);border-color:var(--gold)}
.btn.red{background:var(--red);color:#fff;border-color:var(--red);flex:0 0 88px}
.btn:disabled{opacity:.4}
.clues{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.clue{min-height:44px;border:1px dashed #3a4050;background:transparent;color:var(--muted);font:12px var(--mono);border-radius:6px;padding:4px;cursor:pointer;overflow-wrap:anywhere}
.clue.open{border-style:solid;color:var(--fg);background:var(--panel);cursor:default;grid-column:1/-1;text-align:left;padding:8px}
.guess{display:flex;gap:8px}
.ac{position:relative;flex:1;min-width:0}
#guess{width:100%;min-height:46px;background:#fff;color:var(--bg);border:0;border-radius:6px;padding:0 10px;font:16px var(--body)}
.suggest{position:absolute;left:0;right:0;bottom:100%;margin:0 0 4px;padding:0;list-style:none;background:var(--panel);border:1px solid #2a2f3a;border-radius:6px;max-height:220px;overflow:auto;z-index:5}
.suggest li{padding:11px 10px;font:14px var(--body);cursor:pointer;border-bottom:1px solid #1f2430}
.suggest li[aria-selected=true],.suggest li:hover{background:#232836;color:var(--gold)}
.suggest li small{color:var(--muted);font-family:var(--mono)}
.hints{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.hints li{font:13px var(--mono);padding:6px 8px;border-left:3px solid var(--red);background:var(--panel)}
.hints li.good{border-color:var(--gold)}
.link{background:none;border:0;color:var(--muted);text-decoration:underline;font:13px var(--mono);align-self:center;padding:10px;cursor:pointer}
.result{display:flex;flex-direction:column;gap:8px;text-align:center}
.res-title{font:30px var(--display);color:var(--gold)}
.res-score{font:64px var(--display);line-height:1}
.res-score small{font-size:20px;color:var(--muted);margin-left:4px}
.res-rank{font:600 14px var(--mono);color:var(--fg)}
.share-text{font:13px var(--mono);background:var(--panel);padding:10px;border-radius:6px;white-space:pre-wrap;text-align:left;margin:0}
.small{font:12px var(--mono);color:var(--muted)}
.small a,.foot a{color:var(--muted)}
.foot{text-align:center;font:11px var(--mono);padding-top:6px}
.shake{animation:shake .3s}
@keyframes shake{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
@media (prefers-reduced-motion:reduce){#full{transition:none}.shake{animation:none}}
/* --- Tasks 3-5 additions --- */
.right{display:flex;align-items:center;gap:8px}
.icon{background:none;border:1px solid #2a2f3a;color:var(--muted);width:40px;height:40px;border-radius:50%;font-size:18px;cursor:pointer}
.brand{text-align:center;line-height:1}
.twist{font:600 10px var(--mono);color:var(--muted);letter-spacing:.08em;margin-top:2px;min-height:12px}
.frame.flip canvas#grid{transform:rotate(180deg)}
.spinner{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(11,13,18,.82);gap:6px}
.spinner small{font:600 11px var(--mono);color:var(--muted);letter-spacing:.12em}
.spinner b{font:44px var(--display);color:var(--fg);letter-spacing:.04em}
.spinner b.landed{color:var(--gold);transform:scale(1.08);transition:transform .2s}
.progress{overflow:visible}
.beat{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--fg)}
.beat span{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);font:600 10px var(--mono);background:var(--fg);color:var(--bg);padding:1px 4px;border-radius:2px;white-space:nowrap}
.btn.ghost{background:transparent;border-style:dashed;font-size:16px;color:var(--gold)}
.res-score{position:relative}
.burst{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none}
.burst i{position:absolute;width:10px;height:10px;left:-5px;top:-5px;opacity:0}
.burst.go i{animation:burst .9s cubic-bezier(.2,.7,.3,1) forwards}
@keyframes burst{0%{opacity:1;transform:translate(0,0) scale(1)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.4)}}
.card{margin:0;display:flex;flex-direction:column;gap:6px;align-items:center}
.card img{width:100%;max-width:360px;border-radius:6px;border:1px solid #232836;display:block}
.card figcaption{font:11px var(--mono);color:var(--muted)}
.card a{color:var(--muted)}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.7);display:flex;align-items:flex-end;justify-content:center;z-index:20}
.sheet{background:var(--panel);width:100%;max-width:480px;padding:18px 16px calc(18px + env(safe-area-inset-bottom));border-radius:12px 12px 0 0;display:flex;flex-direction:column;gap:12px}
.sheet h2{margin:0;font:28px var(--display);letter-spacing:.05em}
.sheet .row{display:flex;gap:10px;align-items:flex-start;font-size:14px}
.sheet .row input{width:22px;height:22px;margin-top:2px}
.sheet small{color:var(--muted)}
#fpBox{display:flex;gap:8px}
#fpDate{flex:1;min-height:46px;background:var(--bg);color:var(--fg);border:1px solid #2a2f3a;border-radius:6px;font:14px var(--mono);padding:0 8px}
.sheet.ad{align-items:center;text-align:center;border-radius:12px;margin:auto 16px}
.sheet.ad b{font:72px var(--display);color:var(--gold)}
.modal:has(.ad){align-items:center}
@media (prefers-reduced-motion:reduce){.burst{display:none}}
.doc{font-size:15px;line-height:1.55}
.doc h1{font:44px var(--display);margin:4px 0;color:var(--gold);letter-spacing:.04em}
.doc h2{font:24px var(--display);margin:14px 0 0;letter-spacing:.04em}
.doc p,.doc ul{margin:4px 0}
.doc a{color:var(--gold)}
.doc code{font-family:var(--mono);font-size:13px}
/* --- v6: sets, community line, endless, archive, stats, stubs --- */
.tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.tab{min-height:44px;border:1px solid #2a2f3a;background:var(--panel);color:var(--muted);border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;cursor:pointer;padding:2px}
.tab b{font:17px var(--display);letter-spacing:.06em}
.tab small{font:10px var(--mono)}
.tab.on{border-color:var(--gold);color:var(--gold)}
.community{margin:0;font:600 13px var(--mono);color:var(--gold)}
.endless{display:flex;flex-direction:column;gap:8px}
.endless p{margin:0;font:13px var(--mono)}
.sheet.tall{max-height:86svh}
.arch{list-style:none;margin:0;padding:0;overflow:auto;display:flex;flex-direction:column;gap:4px}
.arch a{display:flex;justify-content:space-between;align-items:center;min-height:44px;padding:0 10px;background:var(--bg);border:1px solid #2a2f3a;border-radius:6px;color:var(--fg);text-decoration:none;font:13px var(--mono)}
.arch a b{font:18px var(--display);color:var(--gold);letter-spacing:.04em}
.arch a.played b{color:var(--muted)}
.arch .empty{font:13px var(--mono);color:var(--muted)}
.money{display:flex;flex-direction:column;gap:6px;border:1px dashed #3a4050;border-radius:6px;padding:10px}
.statgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0}
.statgrid div{background:var(--panel);border-radius:6px;padding:10px 4px;text-align:center}
.statgrid b{display:block;font:34px var(--display);color:var(--gold);line-height:1}
.statgrid small{font:10px var(--mono);color:var(--muted)}
.dist{display:flex;flex-direction:column;gap:5px;margin:8px 0}
.dist div{display:grid;grid-template-columns:120px 1fr 30px;gap:6px;align-items:center;font:11px var(--mono)}
.dist i{display:block;height:16px;background:var(--gold);border-radius:2px;min-width:2px}
.dist span:last-child{text-align:right}
