@font-face{font-family:Libre Franklin;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/libre-franklin-latin-500-normal-Cbta7Jiu.woff2)format("woff2"),url(/assets/libre-franklin-latin-500-normal-BQKhRarp.woff)format("woff")}@font-face{font-family:Libre Franklin;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/libre-franklin-latin-700-normal-TBBKpXzk.woff2)format("woff2"),url(/assets/libre-franklin-latin-700-normal-CP58KLQO.woff)format("woff")}@font-face{font-family:Libre Franklin;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/libre-franklin-latin-800-normal-IoztdYMZ.woff2)format("woff2"),url(/assets/libre-franklin-latin-800-normal-C1oVkKH1.woff)format("woff")}@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/newsreader-latin-500-normal-B66TYsaK.woff2)format("woff2"),url(/assets/newsreader-latin-500-normal-DFwuUcdu.woff)format("woff")}@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/newsreader-latin-600-normal-30OJ_TG_.woff2)format("woff2"),url(/assets/newsreader-latin-600-normal-DUnT2r2g.woff)format("woff")}@font-face{font-family:Newsreader;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/newsreader-latin-500-italic-Bsgye1qA.woff2)format("woff2"),url(/assets/newsreader-latin-500-italic-m-xI0GeS.woff)format("woff")}:root{--bg:#111214;--panel:#191a1e;--panel2:#202227;--line:#2b2d33;--line2:#383b43;--fg:#f4f4f2;--mute:#8d909a;--dim:#5a5d66;--cream:#e9e3d6;--ink:#17181b;--amber:#f5a43f;--red:#f0482a;--green:#7bd389;--safe-b:env(safe-area-inset-bottom,0px);--ui:"Libre Franklin", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--serif:"Newsreader", Georgia, "Times New Roman", serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);height:100%;color:var(--fg);overscroll-behavior:none;margin:0}body{font:500 15px/1.4 var(--ui);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;touch-action:manipulation}#app{max-width:480px;min-height:100vh;min-height:100svh;padding:0 10px calc(6px + var(--safe-b));flex-direction:column;align-items:center;margin:0 auto;display:flex;position:relative}.hidden{display:none!important}button{font-family:var(--ui);color:inherit}.top{grid-template-columns:44px 1fr 44px;align-items:center;width:100%;padding:12px 4px 4px;display:grid}.icon{border:1px solid var(--line);background:var(--panel);width:40px;height:40px;color:var(--fg);font:700 17px var(--ui);cursor:pointer;border-radius:12px;place-items:center;display:grid}.icon:active{transform:scale(.94)}.brand{text-align:center}.logo{font:600 31px/1 var(--serif);letter-spacing:.005em}.sub{font:700 10.5px var(--ui);letter-spacing:.16em;color:var(--mute);text-transform:uppercase;margin-top:5px}.sub b{color:var(--amber);font-weight:700}.banner{background:var(--panel);border:1px solid var(--line);text-align:center;width:100%;color:var(--mute);border-radius:12px;margin:6px 0 0;padding:8px 14px;font-size:13px}.banner b{color:var(--fg);font-weight:800}.strip{grid-template-columns:1fr auto 1fr;align-items:center;width:100%;max-width:380px;min-height:30px;margin:10px 0 4px;display:grid}.slips{font:700 10px var(--ui);letter-spacing:.14em;color:var(--mute);text-transform:uppercase;align-items:center;gap:5px;display:flex}.slips span{margin-right:3px}.slips i{background:var(--fg);border-radius:50%;width:9px;height:9px;transition:background-color .3s,transform .3s}.slips i.used{background:var(--red);opacity:.85;transform:scale(.8)}.secret{text-align:center;font:500 italic 15px var(--serif);color:var(--mute);padding:0 8px}.secret b{font:600 normal 16px var(--serif);color:var(--fg);letter-spacing:.01em}.secret.named b{color:var(--amber)}.count{text-align:right;font:700 10px var(--ui);letter-spacing:.14em;color:var(--mute);text-transform:uppercase}.count b{color:var(--fg);letter-spacing:.02em;font-size:13px}.board{flex-direction:column;flex:1;justify-content:center;gap:7px;width:100%;padding:6px 0;display:flex}.row{flex-direction:column;align-items:center;display:flex}.tiles{gap:5px;display:flex;position:relative}.tile{--s:40px;width:var(--s);height:var(--s);border:1px solid var(--line2);background:var(--panel);font:700 calc(var(--s) * .5)/1 var(--ui);letter-spacing:0;text-transform:uppercase;cursor:pointer;border-radius:7px;place-items:center;padding:0;transition:background-color .15s,border-color .15s,color .15s,transform .12s;display:grid;position:relative}.board.dense .tile{--s:36px}.board.tight .tile{--s:33px}.tile:active{transform:scale(.95)}.row.solved .tile{background:var(--cream);color:var(--ink);border-color:var(--cream);cursor:default}.row.solved .tile.changed{background:var(--amber);border-color:var(--amber);color:var(--ink)}.row.solved .tile{animation:.42s both flip;animation-delay:calc(var(--i) * 45ms)}@keyframes flip{0%{transform:rotateX(0)}50%{transform:rotateX(90deg)}to{transform:rotateX(0)}}.row.lost .tile{border-color:var(--line);color:var(--dim);background:0 0}.row.lost .tile.changed{color:var(--red);border-color:var(--red)}.tile.sel{border-color:var(--amber);box-shadow:0 0 0 2px var(--amber) inset}.tile.pending{color:var(--amber);background:#2a2117}.tile.rowfocus{border-color:#4a4d56}.row.shake .tiles{animation:.36s shake}.row.slip .tile{border-color:var(--red)}@keyframes shake{20%{transform:translate(-6px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.tries{min-height:0;font:600 10.5px var(--ui);letter-spacing:.1em;color:var(--dim);text-transform:uppercase;gap:8px;margin-top:2px;display:flex}.tries s{-webkit-text-decoration-color:var(--red);text-decoration-color:var(--red);text-decoration-thickness:1.5px}.reveal{font:500 italic 13px var(--serif);color:var(--mute);letter-spacing:.02em;margin-top:3px}.reveal b{color:var(--fg);font-style:normal;font-weight:600}.board.win .row.solved .tile{animation:.42s both flip,.5s both wave;animation-delay:calc(var(--i) * 45ms), calc(.45s + var(--r) * 70ms + var(--i) * 25ms)}@keyframes wave{40%{transform:translateY(-5px)}}.callbar{justify-content:center;align-items:center;width:100%;max-width:380px;min-height:44px;margin:4px 0 6px;display:flex}.callbtn{border:1px solid var(--line2);font:700 12px var(--ui);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;color:var(--fg);background:0 0;border-radius:99px;align-items:center;gap:7px;padding:9px 16px;display:inline-flex}.callbtn:active{transform:scale(.97)}.callbtn:disabled{opacity:.4;cursor:default}.callbtn.won{border-color:var(--amber);color:var(--amber);opacity:1}.callin{border:1px solid var(--amber);background:var(--panel);border-radius:12px;flex:1;align-items:center;gap:8px;height:44px;padding:0 6px 0 14px;display:flex}.callq{font:700 11px var(--ui);letter-spacing:.14em;text-transform:uppercase;color:var(--amber)}.calltext{font:600 18px var(--serif);color:var(--fg);white-space:pre;overflow:hidden}.caret{background:var(--amber);width:2px;height:20px;margin-left:-6px;animation:1s step-end infinite blink}.callin .x{color:var(--mute);cursor:pointer;background:0 0;border:0;margin-left:auto;padding:6px 8px;font-size:16px}@keyframes blink{50%{opacity:0}}.kb{flex-direction:column;gap:7px;width:100%;max-width:480px;padding:2px 0 4px;display:flex}.kb .kr{justify-content:center;gap:5px;display:flex}.key{max-width:42px;height:54px;color:var(--fg);font:700 15px var(--ui);text-transform:uppercase;cursor:pointer;background:#3a3c42;border:0;border-radius:6px;flex:1;place-items:center;padding:0;display:grid}.key.wide{letter-spacing:.06em;flex:1.5;max-width:66px;font-size:11.5px}.key.space{letter-spacing:.12em;flex:5;max-width:200px;font-size:11px}.key:active,.key.down{background:#55585f}.key.enter.ready{background:var(--amber);color:var(--ink)}.kb.off .key{opacity:.35}.toast{background:var(--fg);color:var(--bg);font:700 13.5px var(--ui);z-index:40;white-space:nowrap;pointer-events:none;border-radius:10px;padding:9px 15px;animation:.2s ease-out rise;position:fixed;top:78px;left:50%;transform:translate(-50%)}.toast.bad{background:var(--red);color:#fff}.toast.good{background:var(--amber);color:var(--ink)}@keyframes rise{0%{opacity:0;transform:translate(-50%,8px)}}.toast.brief{animation:rise .18s ease-out, fadeout .3s ease-in calc(var(--ms,1.5s) - .3s) forwards;box-shadow:0 6px 18px #00000073}@keyframes fadeout{to{opacity:0}}.row.nope .tile{border-color:var(--mute)}.row.nope.shake .tiles{animation:.45s nudge}@keyframes nudge{15%{transform:translate(-8px)}35%{transform:translate(7px)}55%{transform:translate(-5px)}75%{transform:translate(3px)}90%{transform:translate(-1px)}}.sr-only{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes fadein{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.row.shake .tiles,.row.nope.shake .tiles{animation:none}.toast,.toast.brief{animation-name:fadein,fadeout}.toast:not(.brief){animation:.2s ease-out fadein}}.btn{font:800 15px var(--ui);cursor:pointer;color:var(--bg);background:var(--fg);border:0;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:14px 18px;display:inline-flex}.btn.ghost{color:var(--fg);border:1px solid var(--line2);background:0 0}.btn.small{border-radius:99px;padding:10px 16px;font-size:13px}.btn.primary{background:var(--fg);color:var(--bg)}.btn.wide{width:100%}.scrim{z-index:20;background:#0009;position:fixed;top:0;bottom:0;left:0;right:0}.sheet{background:var(--panel);border:1px solid var(--line);width:100%;max-width:480px;max-height:94vh;padding:16px 20px calc(20px + var(--safe-b));z-index:30;border-radius:22px 22px 0 0;transition:transform .32s cubic-bezier(.2,.9,.3,1);position:fixed;bottom:0;left:50%;overflow-y:auto;transform:translate(-50%,105%)}.sheet.open{transform:translate(-50%)}.sheet .grab{background:var(--line2);border-radius:2px;width:40px;height:4px;margin:0 auto 12px}.sheet h2{font:600 30px/1.1 var(--serif);text-align:center;margin:0 0 4px}.sheet .kicker{text-align:center;font:700 10.5px var(--ui);letter-spacing:.16em;text-transform:uppercase;color:var(--mute);margin-bottom:10px}.rule{text-align:center;font:500 20px/1.35 var(--serif);color:var(--fg);margin:6px 4px 12px}.rule b{color:var(--amber);font-weight:600}.demo{flex-direction:column;align-items:center;gap:6px;margin:4px 0;display:flex}.demo .tile{--s:38px;cursor:default}.demo-cap{text-align:center;min-height:26px;font:500 italic 16px var(--serif);color:var(--mute);margin:6px 0 10px}.demo-cap b{font:600 normal 17px var(--serif);color:var(--amber);letter-spacing:.06em}.howto{color:#c9cbd2;margin:6px 0 16px;padding:0;font-size:13.5px;list-style:none}.howto li{grid-template-columns:26px 1fr;align-items:start;gap:10px;margin:0 0 9px;line-height:1.4;display:grid}.privacy{color:#8d909a;margin:0 0 14px;font-size:11.5px;line-height:1.45}.howto .ic{background:var(--panel2);border:1px solid var(--line);width:22px;height:22px;font:800 11px var(--ui);color:var(--fg);border-radius:6px;place-items:center;display:grid}.howto b{color:var(--fg)}.grp{text-align:center;margin:2px 0 10px}.grp small{font:700 10px var(--ui);letter-spacing:.16em;text-transform:uppercase;color:var(--mute);display:block}.grp b{font:600 26px/1.15 var(--serif);color:var(--amber);margin-top:2px;display:block}.pairs{font:600 12.5px var(--ui);letter-spacing:.06em;grid-template-columns:1fr 1fr;gap:4px 14px;margin:0 4px 12px;display:grid}.pairs div{border-bottom:1px solid var(--line);justify-content:space-between;gap:6px;padding:4px 0;display:flex}.pairs s{color:var(--dim);-webkit-text-decoration-color:var(--dim);text-decoration-color:var(--dim)}.pairs span{color:var(--fg)}.pairs .miss span{color:var(--red)}.res-big{text-align:center;grid-template-columns:repeat(4,1fr);gap:6px;margin:4px 0 12px;display:grid}.res-big b{font:600 26px/1.1 var(--serif);display:block}.res-big small{font:700 9.5px var(--ui);letter-spacing:.14em;color:var(--mute);text-transform:uppercase}.share-pre{background:var(--bg);border:1px solid var(--line);font:600 13.5px/1.45 var(--ui);white-space:pre-wrap;color:#d6d8de;border-radius:12px;margin:0 0 12px;padding:12px 14px}.actions{grid-template-columns:1fr 1fr;gap:10px;margin:0 0 10px;display:grid}.card{background:var(--panel2);border:1px solid var(--line);border-radius:14px;margin:10px 0;padding:14px}.card h3{font:700 10.5px var(--ui);letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin:0 0 10px}.statgrid{text-align:center;grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.statgrid b{font:600 28px/1.1 var(--serif);display:block}.statgrid small{color:var(--mute);font-size:11px}.dist{gap:5px;display:grid}.dist div{font:700 11px var(--ui);color:var(--mute);grid-template-columns:54px 1fr;align-items:center;gap:8px;display:grid}.dist i{background:var(--line2);min-width:22px;height:18px;color:var(--fg);font:700 11px/18px var(--ui);text-align:right;border-radius:4px;padding-right:6px;font-style:normal;display:block}.dist i.today{background:var(--amber);color:var(--ink)}.countdown{text-align:center;color:var(--mute);margin:10px 0 2px;font-size:13px}.countdown b{font:700 16px var(--ui);color:var(--fg);letter-spacing:.02em}.vs{text-align:center;color:var(--mute);grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;font-size:12px;display:grid}.vs b{font:600 22px var(--serif);color:var(--fg);display:block}.name-in{border:1px solid var(--line);background:var(--bg);width:100%;color:var(--fg);font:inherit;-webkit-user-select:text;user-select:text;border-radius:12px;margin:0 0 8px;padding:12px 14px}.toggle{border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding:10px 2px;font-size:14px;display:flex}.switch{background:var(--line);cursor:pointer;border:0;border-radius:99px;width:46px;height:28px;position:relative}.switch:after{content:"";background:var(--fg);border-radius:50%;width:22px;height:22px;transition:left .2s;position:absolute;top:3px;left:3px}.switch.on{background:var(--amber)}.switch.on:after{left:21px}.foot{text-align:center;color:var(--dim);margin-top:12px;font-size:11px;line-height:1.5}@media (max-height:740px){.key{height:48px}.board{gap:5px}.tile{--s:36px}}:root{--bulb:#ffd54a}.callbar{gap:8px}.callbar .callbtn{letter-spacing:.07em;padding:9px 13px}.bulbbtn .bi{filter:saturate(1.1);font-size:13px;line-height:1}.bulbbtn{border-color:#5a4a1d}.bulbbtn:not(:disabled):hover{border-color:var(--bulb);color:var(--bulb)}.bulbbtn.used{border-color:var(--bulb);color:var(--bulb);opacity:.55}.revealq{border:1px solid var(--bulb);background:var(--panel);border-radius:12px;flex:1;align-items:center;gap:8px;height:44px;padding:0 6px 0 12px;animation:.18s rise;display:flex}.revealq .rq{font:600 13px/1.25 var(--ui);color:var(--fg)}.revealq .x{color:var(--mute);cursor:pointer;background:0 0;border:0;margin-left:2px;padding:6px 8px;font-size:16px}.revealq .btn.bulb{background:var(--bulb);color:var(--ink);border-color:var(--bulb);margin-left:auto}.row.revealed .tile{background:#f3ead2;border-color:#f3ead2}.row.solved.revealed .tile.changed{background:var(--bulb);border-color:var(--bulb);color:var(--ink);box-shadow:0 0 10px #ffd54a73}.row.revealed .tiles:after{content:"💡";font-size:14px;position:absolute;top:50%;right:-24px;transform:translateY(-50%)}.tile.bulbpre{border-color:var(--bulb);box-shadow:0 0 0 2px var(--bulb) inset, 0 0 14px #ffd54a99;animation:.5s infinite alternate bulbpulse}@keyframes bulbpulse{to{transform:scale(1.08)}}.row.solved .tile.bulbswap{animation:.8s both bulbswap}@keyframes bulbswap{0%{transform:rotateY(0)scale(1)}45%{transform:rotateY(90deg)scale(1.15)}to{transform:rotateY(0)scale(1);box-shadow:0 0 18px #ffd54acc}}.toast.bulb{background:var(--bulb);color:var(--ink)}.pairs .rev span{color:var(--bulb)}.revnote{color:var(--bulb);text-align:center;margin:-4px 0 10px;font-size:12.5px}.legend{color:var(--mute);text-align:center;letter-spacing:.02em;margin:-6px 0 12px;font-size:11px}.sheet .howto+.legend{text-align:left;margin:-8px 0 12px}
