:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:#302824;--muted:#846b5d;--cream:#f8eddc;--paper:#fffdf8;--teal:#0d827c;--teal-soft:#dff3ed;--coral:#e65f55;--coral-soft:#fde5df;--gold:#e7a92f}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:#f5ead8;min-width:300px}body{min-height:100vh;color:var(--ink);background:radial-gradient(circle at 10% 4%,#fff9e9 0 12rem,#0000 30rem),linear-gradient(145deg,#f8eedc 10%,#efd7c1 100%);margin:0;font-family:Noto Sans Ethiopic,Nyala,Abyssinica SIL,system-ui,sans-serif}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}.landing-shell{grid-template-columns:.9fr 1.1fr;align-items:center;gap:clamp(32px,7vw,90px);width:min(1160px,100%);min-height:100vh;margin:auto;padding:clamp(24px,6vw,72px);display:grid}.eyebrow{color:#9a6348;text-transform:uppercase;letter-spacing:.08em;margin:0 0 12px;font-size:.74rem;font-weight:850}.landing-copy h1{letter-spacing:-.055em;max-width:620px;margin:0;font-size:clamp(2.5rem,6.2vw,5.5rem);line-height:1.03}.landing-copy h1 em{color:var(--coral);font-family:Georgia,serif;font-weight:500}.lead{max-width:570px;margin:22px 0 3px;font-size:clamp(1rem,1.8vw,1.28rem);font-weight:720;line-height:1.65}.english-line{color:var(--muted);margin:0 0 30px;font-size:.85rem}.create-form{background:#fffdf8d6;border:1px solid #5b3e2b1f;border-radius:23px;max-width:570px;padding:18px;box-shadow:0 20px 50px #432b1b1a}.create-form label{margin-bottom:8px;font-size:.85rem;font-weight:850;display:block}.create-form label small{color:var(--muted);margin-left:5px;font-weight:600}.input-row{grid-template-columns:1fr auto;gap:8px;display:grid}.input-row input{background:#fff;border:1.5px solid #dfcbb8;border-radius:14px;outline:none;min-width:0;height:56px;padding:0 15px}.input-row input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #0d827c21}.input-row button,.share-button{color:#fff;background:var(--teal);cursor:pointer;border:0;border-radius:14px;min-height:56px;padding:8px 18px;font-weight:850;box-shadow:0 8px 20px #0d827c38}.input-row button small,.share-button small{opacity:.74;font-size:.62rem;font-weight:650;display:block}.input-row button:disabled{cursor:wait;opacity:.55}.form-error{color:#ad332f;margin:9px 2px 0;font-size:.78rem}.privacy-note{color:var(--muted);margin:14px 4px 0;font-size:.73rem}.alternate-game{max-width:570px;color:inherit;background:#dff3ed8f;border:1px solid #0d827c2b;border-radius:15px;align-items:center;gap:10px;margin-top:12px;padding:11px 13px;text-decoration:none;display:flex}.alternate-game>span{color:#fff;background:var(--teal);border-radius:10px;place-items:center;width:32px;height:32px;font-size:1.1rem;display:grid}.alternate-game p{flex:1;margin:0}.alternate-game b,.alternate-game small{display:block}.alternate-game b{font-size:.74rem}.alternate-game small{color:var(--muted);margin-top:2px;font-size:.6rem}.alternate-game strong{color:var(--teal);font-size:1.2rem}.back-link{color:var(--teal);margin-bottom:20px;font-size:.75rem;font-weight:850;text-decoration:none;display:inline-block}.pattern-landing{background:radial-gradient(circle at 80% 80%,#0d827c1a,#0000 25rem)}.signal-preview{background:linear-gradient(150deg,#173e4b,#206c6b);border:10px solid #fffdf8e0;border-radius:34px;min-width:0;padding:23px;position:relative;overflow:hidden;transform:rotate(-1.5deg);box-shadow:0 32px 80px #1e414140}.signal-preview-top{z-index:1;color:#fff;align-items:center;gap:8px;display:flex;position:relative}.signal-preview-top>span{background:#e7a92f;border-radius:12px;place-items:center;width:38px;height:38px;font-size:1.2rem;display:grid}.signal-preview-top b{font-size:1rem}.signal-preview-top small{color:#b9e7dd;margin-left:auto;font-size:.62rem}.preview-grid{z-index:1;grid-template-columns:repeat(4,1fr);gap:9px;margin:25px 0;display:grid;position:relative}.preview-grid span{aspect-ratio:1;background:#ffffff17;border:1px solid #ffffff29;border-radius:16px;place-items:center;font-size:clamp(1.5rem,4vw,2.7rem);display:grid}.preview-grid span.preview-lit{background:#f7cf5b47;border-color:#f8d66d;transform:scale(1.04);box-shadow:0 0 0 3px #f7cf5b21,0 0 24px #f7cf5b47}.signal-preview>p{z-index:1;text-align:center;color:#c8ebe3;margin:0;font-size:.75rem;position:relative}.signal-preview>p b{color:#ffe28a}.signal-shell{--signal-ink:#173e4b}.signal-card{background:#fffdf8f0;border:1px solid #fffc;border-radius:26px;padding:clamp(14px,2vw,23px);box-shadow:0 20px 55px #4128171f}.signal-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.signal-heading>div{align-items:center;gap:10px;display:flex}.signal-heading>div>span{color:#fff;background:var(--signal-ink);border-radius:14px;place-items:center;width:43px;height:43px;font-size:1.35rem;display:grid}.signal-heading p{margin:0}.signal-heading b,.signal-heading small{display:block}.signal-heading b{font-size:.95rem}.signal-heading small{color:var(--muted);margin-top:2px;font-size:.62rem}.signal-heading>strong{color:#c28713;background:#fff4c9;border-radius:15px;place-items:center;min-width:54px;padding:8px;font-size:1.25rem;line-height:1;display:grid}.signal-heading>strong small{color:#8e7540;margin-top:3px;font-size:.5rem}.memory-banner{color:#fff;background:var(--signal-ink);border-radius:14px;justify-content:space-between;align-items:center;gap:10px;padding:11px 13px;transition:background .2s;display:flex}.memory-banner.is-hidden{background:var(--teal)}.memory-banner b{font-size:.8rem}.memory-banner small{color:#cae8e1;text-align:right;font-size:.62rem}.signal-grid{grid-template-columns:repeat(4,1fr);gap:9px;margin-top:13px;display:grid}.signal-tile{aspect-ratio:1;cursor:pointer;touch-action:manipulation;background:#fffaf1;border:1.5px solid #dfd3c3;border-radius:15px;place-items:center;transition:transform .12s,background .18s,border-color .18s;display:grid;position:relative;box-shadow:0 4px #e8ddce}.signal-tile:active{transform:translateY(2px);box-shadow:0 2px #e8ddce}.signal-tile>span{filter:saturate(.82);font-size:clamp(1.35rem,5vw,2.5rem)}.signal-tile.highlighted{background:#fff2bd;border-color:#e7a92f;animation:1.1s ease-in-out infinite alternate signal-glow;box-shadow:0 0 0 3px #e7a92f2e,0 5px #e4c26a}.signal-tile.found{border-color:var(--teal);background:var(--teal-soft);box-shadow:0 4px #afd8ca}.signal-tile.found.guest{border-color:var(--coral);background:var(--coral-soft);box-shadow:0 4px #efbbb2}.signal-tile i{color:var(--teal);font-size:.55rem;font-style:normal;position:absolute;bottom:5px;right:6px}.signal-tile.found.guest i{color:var(--coral)}.signal-status{color:var(--muted);justify-content:space-between;align-items:center;gap:10px;margin-top:13px;font-size:.68rem;font-weight:800;display:flex}.signal-status b{color:var(--signal-ink);font-size:.9rem}.signal-back{text-decoration:none}.signal-empty{background:linear-gradient(145deg,#fffdf8,#e5f4ef)}.line-landing{background:radial-gradient(circle at 80% 12%,#e65f551a,#0000 25rem)}.line-preview{background:linear-gradient(150deg,#40253e,#7a3c58);border:10px solid #fffdf8e0;border-radius:34px;min-width:0;padding:23px;position:relative;overflow:hidden;transform:rotate(1.5deg);box-shadow:0 32px 80px #47233240}.line-preview-top{color:#fff;align-items:center;gap:8px;display:flex}.line-preview-top>span{color:#fff;background:var(--teal);border-radius:12px;place-items:center;width:38px;height:38px;font-size:1rem;display:grid}.line-preview-top b{font-size:1rem}.line-preview-top small{color:#f4cbd5;margin-left:auto;font-size:.62rem}.preview-line-grid{grid-template-columns:repeat(6,1fr);gap:7px;margin:25px 0;display:grid}.preview-line-grid span{aspect-ratio:1;color:#0000;background:#ffffff17;border:1px solid #ffffff29;border-radius:10px;place-items:center;font-size:1rem;display:grid}.preview-line-grid span.preview-host{color:#8ee2d0;background:#0d827c66;border-color:#54bea7;box-shadow:0 0 12px #5bd7be47}.preview-line-grid span.preview-guest{color:#ffb0aa;background:#e65f5559;border-color:#e77770}.line-preview>p{text-align:center;color:#f3dbe0;margin:0;font-size:.75rem}.line-preview>p b{color:#ffe28a}.line-shell{--line-ink:#40253e}.line-card{background:#fffdf8f0;border:1px solid #fffc;border-radius:26px;padding:clamp(14px,2vw,23px);box-shadow:0 20px 55px #4128171f}.line-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.line-heading>div{align-items:center;gap:10px;display:flex}.line-heading>div>span{color:#fff;background:var(--line-ink);border-radius:14px;place-items:center;width:43px;height:43px;font-size:1.3rem;display:grid}.line-heading p{margin:0}.line-heading b,.line-heading small{display:block}.line-heading b{font-size:.95rem}.line-heading small{color:var(--muted);margin-top:2px;font-size:.62rem}.line-heading>strong{min-width:54px;color:var(--line-ink);background:#f4e6ed;border-radius:15px;place-items:center;padding:8px;font-size:1.1rem;line-height:1;display:grid}.line-heading>strong small{color:var(--muted);margin-top:3px;font-size:.5rem}.turn-banner{background:var(--teal-soft);color:#176960;border-radius:14px;justify-content:space-between;align-items:center;gap:10px;padding:11px 13px;display:flex}.turn-banner b{font-size:.8rem}.turn-banner small{color:var(--muted);text-align:right;font-size:.62rem}.turn-banner.their-turn{background:var(--coral-soft);color:#a4433d}.turn-banner.finished{color:#8a6412;background:#fff0bd}.line-grid{grid-template-columns:repeat(6,1fr);gap:7px;width:min(650px,100%);margin:14px auto 0;display:grid}.line-cell{aspect-ratio:1;cursor:pointer;touch-action:manipulation;background:#fffaf1;border:1.5px solid #d9cdbd;border-radius:11px;place-items:center;transition:transform .12s,background .18s,border-color .18s;display:grid;position:relative;box-shadow:0 3px #e5d9ca}.line-cell:not(:disabled):hover{border-color:var(--teal);transform:translateY(-1px)}.line-cell:disabled{cursor:default}.line-cell span{border-radius:50%;place-items:center;width:72%;height:72%;font-size:clamp(.8rem,3vw,1.55rem);font-weight:950;display:grid}.line-cell.host{background:var(--teal-soft);border-color:#0d827c99}.line-cell.host span{color:var(--teal);border:3px solid var(--teal);background:#fff6}.line-cell.guest{background:var(--coral-soft);border-color:#e65f5599}.line-cell.guest span{color:var(--coral);border:3px solid var(--coral);background:#fff6;transform:rotate(45deg)}.line-cell.winning{animation:1s ease-in-out infinite alternate winning-pulse}.line-cell.winning span{box-shadow:0 0 0 5px #f7d05b,0 0 22px #e7a92f80}.line-legend{color:var(--muted);justify-content:center;align-items:center;gap:18px;margin-top:13px;font-size:.68rem;font-weight:850;display:flex}.line-legend b{color:var(--line-ink)}.host-key{color:var(--teal)}.guest-key{color:var(--coral)}.line-rule{text-align:center;color:#705c50;margin:12px 0 0;font-size:.68rem;font-weight:800}.line-rule span{color:var(--muted);font-size:.6rem}.line-empty{background:linear-gradient(145deg,#fffdf8,#f8e8ed)}@keyframes winning-pulse{to{transform:scale(1.05)}}@keyframes signal-glow{to{transform:scale(1.035);box-shadow:0 0 0 5px #e7a92f26,0 5px #e4c26a}}.dots-landing{background:radial-gradient(circle at 80% 88%,#0d827c1f,#0000 25rem)}.dots-preview{background:linear-gradient(150deg,#164c50,#0e827c);border:10px solid #fffdf8e0;border-radius:34px;min-width:0;padding:23px;position:relative;overflow:hidden;transform:rotate(-1deg);box-shadow:0 32px 80px #164e4f40}.dots-preview-top{color:#fff;align-items:center;gap:8px;display:flex}.dots-preview-top>span{letter-spacing:7px;color:#ffe28a;font-weight:950}.dots-preview-top b{font-size:1rem}.dots-preview-top small{color:#b9e7dd;margin-left:auto;font-size:.62rem}.preview-dots-grid{grid-template-columns:repeat(5,1fr);gap:13px;margin:30px 16px;display:grid}.preview-dots-grid span{aspect-ratio:1;color:#8ee2d0;border:2px solid #ffffff73;border-radius:50%;place-items:center;font-size:1rem;display:grid}.preview-dots-grid span.preview-dot-line{border-color:#f8d66d;box-shadow:0 0 0 4px #f7cf5b26,0 0 22px #f7cf5b40}.dots-preview>p{text-align:center;color:#c8ebe3;margin:0;font-size:.75rem}.dots-preview>p b{color:#ffe28a}.dots-shell{--dots-ink:#164c50}.dots-card{background:#fffdf8f0;border:1px solid #fffc;border-radius:26px;padding:clamp(14px,2vw,23px);box-shadow:0 20px 55px #4128171f}.dots-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.dots-heading>div{align-items:center;gap:10px;display:flex}.dots-heading>div>span{color:#fff;background:var(--dots-ink);letter-spacing:2px;border-radius:14px;place-items:center;width:43px;height:43px;font-size:.9rem;display:grid}.dots-heading p{margin:0}.dots-heading b,.dots-heading small{display:block}.dots-heading b{font-size:.95rem}.dots-heading small{color:var(--muted);margin-top:2px;font-size:.62rem}.dots-heading>strong{min-width:54px;color:var(--dots-ink);background:#dff3ed;border-radius:15px;place-items:center;padding:8px;font-size:1.1rem;line-height:1;display:grid}.dots-heading>strong small{color:var(--muted);margin-top:3px;font-size:.5rem}.dots-turn{background:var(--teal-soft);color:#176960;border-radius:14px;justify-content:space-between;align-items:center;gap:10px;padding:11px 13px;display:flex}.dots-turn b{font-size:.8rem}.dots-turn small{color:var(--muted);text-align:right;font-size:.62rem}.dots-turn.their-turn{background:var(--coral-soft);color:#a4433d}.dots-turn.finished{color:#8a6412;background:#fff0bd}.dots-board{aspect-ratio:1;grid-template-rows:repeat(9,1fr);grid-template-columns:repeat(9,1fr);gap:0;width:min(650px,100%);margin:14px auto 0;display:grid}.dots-dot{aspect-ratio:1;background:var(--dots-ink);border-radius:50%;place-self:center;width:clamp(8px,1.8vw,14px);display:block;box-shadow:0 1px 3px #0003}.dots-edge{cursor:pointer;touch-action:manipulation;background:0 0;border:0;border-radius:5px;place-items:center;display:grid;position:relative}.dots-edge.horizontal{margin:clamp(7px,1.5vw,12px) 0}.dots-edge.vertical{margin:0 clamp(7px,1.5vw,12px)}.dots-edge:not(:disabled):hover{background:#0d827c24}.dots-edge:disabled{cursor:default}.dots-edge.horizontal:before,.dots-edge.vertical:before{content:"";background:#ddcfbf;border-radius:99px;position:absolute}.dots-edge.horizontal:before{inset:42% 0}.dots-edge.vertical:before{inset:0 42%}.dots-edge.host:before{background:var(--teal);box-shadow:0 0 0 2px #0d827c1f}.dots-edge.guest:before{background:var(--coral);box-shadow:0 0 0 2px #e65f551f}.dots-edge span{z-index:1;font-size:.65rem;font-weight:950;position:relative}.dots-edge.host span{color:var(--teal)}.dots-edge.guest span{color:var(--coral);transform:rotate(45deg)}.dots-box{color:#0000;border-radius:5px;place-items:center;font-size:clamp(.75rem,2.5vw,1.45rem);display:grid}.dots-box.host{color:var(--teal);background:#0d827c21}.dots-box.guest{color:var(--coral);background:#e65f5521;transform:rotate(45deg)}.dots-legend{color:var(--muted);justify-content:center;align-items:center;gap:18px;margin-top:13px;font-size:.68rem;font-weight:850;display:flex}.dots-legend b{color:var(--dots-ink)}.dots-rule{text-align:center;color:#705c50;margin:12px 0 0;font-size:.68rem;font-weight:800}.dots-rule span{color:var(--muted);font-size:.6rem}.dots-empty{background:linear-gradient(145deg,#fffdf8,#e5f4ef)}.landing-art{background:#ead5ba;border:10px solid #fffdf8e0;border-radius:34px;min-width:0;position:relative;overflow:hidden;transform:rotate(1.5deg);box-shadow:0 32px 80px #492c1833}.landing-art img{aspect-ratio:4/3;object-fit:cover;width:100%;display:block}.art-label{z-index:2;background:#fffdf8eb;border-radius:99px;padding:8px 12px;font-size:.72rem;font-weight:900;position:absolute;top:14px;left:14px;box-shadow:0 3px 12px #0000001a}.sample-ring{background:#ffffff26;border:4px solid;border-radius:50%;place-items:center;width:44px;height:44px;font-size:.7rem;display:grid;position:absolute}.ring-one{color:var(--teal);top:25%;left:25%}.ring-two{color:var(--coral);top:44%;right:18%;transform:rotate(45deg)}.art-score{justify-content:center;gap:8px;display:flex;position:absolute;inset:auto 15px 15px}.art-score span{background:#fffdf8ed;border-radius:12px;padding:8px 12px;font-size:.75rem;font-weight:850;box-shadow:0 4px 14px #0000001f}.art-score span:first-child{color:var(--teal)}.art-score span:last-child{color:var(--coral)}.game-shell{width:min(1120px,100%);margin:auto;padding:18px clamp(10px,3vw,34px) 35px}.game-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:13px;display:flex}.brand{color:inherit;align-items:center;gap:9px;text-decoration:none;display:flex}.brand>span{color:#fff;background:var(--coral);border-radius:13px;place-items:center;width:38px;height:38px;display:grid;box-shadow:0 6px 15px #e65f5538}.brand b,.brand small{display:block}.brand b{font-size:.92rem}.brand small{color:var(--muted);margin-top:1px;font-size:.6rem}.connection{background:#fffae9e6;border:1px solid #e4d1b5;border-radius:99px;align-items:center;gap:7px;max-width:170px;padding:8px 11px;font-size:.7rem;font-weight:850;display:flex}.connection i{background:var(--gold);border-radius:50%;flex:none;width:9px;height:9px}.connection.connected i{background:#31a56d;box-shadow:0 0 0 3px #31a56d24}.connection.offline i{background:#b97956}.connection.invalid i{background:var(--coral)}.connection span,.connection small{display:block}.connection small{color:var(--muted);font-size:.55rem;font-weight:650}.scoreboard{background:#fffdf88c;border:1px solid #553a271a;border-radius:22px;grid-template-columns:1fr auto 1fr;gap:8px;margin-bottom:13px;padding:5px;display:grid;box-shadow:0 10px 28px #432a1917}.player-score,.round-count{background:#fffdf8e6;border:2px solid #0000;border-radius:17px;justify-content:space-between;align-items:center;min-height:70px;padding:8px 15px;display:flex;box-shadow:0 5px 14px #432a190f}.player-score p{grid-template-columns:auto auto;align-items:center;column-gap:12px;margin:0;display:grid}.player-score small{font-size:.75rem;font-weight:850}.player-score b{grid-area:1/2/span 2;font-size:2.15rem;line-height:1}.player-score em{letter-spacing:.015em;font-size:.56rem;font-style:normal;font-weight:950}.player-symbol{font-size:1.05rem}.player-score.host{color:var(--teal);background:linear-gradient(110deg,var(--teal-soft),#fffdf8f0 65%)}.player-score.guest{text-align:right;color:var(--coral);background:linear-gradient(250deg,var(--coral-soft),#fffdf8f0 65%)}.player-score.leader{border-color:currentColor;box-shadow:0 7px 20px #432a1924}.round-count{flex-direction:column;justify-content:center;min-width:70px;padding:5px 11px}.round-count small{color:var(--muted);font-size:.58rem}.round-count b{font-size:1.1rem}.play-card{background:#fffdf8ed;border:1px solid #fffc;border-radius:26px;padding:clamp(9px,1.8vw,17px);box-shadow:0 20px 55px #4128171f}.puzzle-heading{justify-content:space-between;align-items:center;gap:12px;padding:0 5px 11px;display:flex}.puzzle-name{align-items:center;gap:9px;display:flex}.puzzle-name>span{font-size:1.45rem}.puzzle-name p{margin:0}.puzzle-name b,.puzzle-name small{display:block}.puzzle-name b{font-size:.88rem}.puzzle-name small{color:var(--muted);font-size:.6rem}.remaining{color:var(--muted);align-items:center;gap:6px;display:flex}.remaining>b{width:29px;height:29px;color:var(--coral);background:var(--coral-soft);border-radius:50%;place-items:center;font-size:.82rem;display:grid}.remaining span,.remaining small{font-size:.65rem;font-weight:800;display:block}.remaining small{font-size:.52rem;font-weight:600}.puzzle-grid{grid-template-columns:1fr 1fr;gap:clamp(4px,1vw,10px);display:grid}.puzzle-panel{aspect-ratio:4/3;isolation:isolate;cursor:crosshair;touch-action:manipulation;-webkit-user-select:none;user-select:none;background:#e4ceb4;border-radius:clamp(8px,1.6vw,17px);position:relative;overflow:hidden}.puzzle-panel:first-child{box-shadow:inset 0 0 0 3px #0d827c80}.puzzle-panel:last-child{box-shadow:inset 0 0 0 3px #e65f5580}.panel-label{z-index:4;color:#fff;pointer-events:none;background:#302824bf;border-radius:99px;padding:5px 8px;font-size:.58rem;font-weight:900;position:absolute;top:8px;left:8px;box-shadow:0 2px 8px #0003}.puzzle-panel img{z-index:-1;object-fit:cover;pointer-events:none;width:100%;height:100%;display:block;position:relative}.miss-target{z-index:0;cursor:crosshair;background:0 0;border:0;width:100%;height:100%;position:absolute;inset:0}.difference-token{z-index:1;filter:drop-shadow(0 1px 1px #fff)drop-shadow(0 1px 2px #00000040);pointer-events:none;place-items:center;min-width:5%;font-size:clamp(.72rem,2.6vw,1.75rem);line-height:1;display:grid;position:absolute;transform:translate(-50%,-50%)}.spot-target{z-index:2;cursor:pointer;touch-action:manipulation;background:0 0;border:0;border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.spot-target:focus-visible{box-shadow:0 0 0 5px var(--ink);outline:3px dashed #fff}.spot-target:disabled{cursor:default}.found-marker,.pending-marker{z-index:3;aspect-ratio:1;text-shadow:0 1px 1px #fff;pointer-events:none;background:#fff3;border:3px solid;border-radius:50%;place-items:center;width:clamp(26px,5vw,48px);font-size:.58rem;display:grid;position:absolute;transform:translate(-50%,-50%);box-shadow:0 2px 10px #00000029}.found-marker.host{color:var(--teal)}.found-marker.guest{color:var(--coral);transform:translate(-50%,-50%)rotate(45deg)}.found-marker.guest:first-letter{transform:rotate(-45deg)}.pending-marker{color:#fff;border-style:dotted;animation:.8s ease-in-out infinite pulse}.tap-hint{text-align:center;color:#705c50;margin:10px 0 0;font-size:.76rem;font-weight:800}.tap-hint span{color:var(--muted);font-size:.63rem}.inline-message{text-align:center;color:#a4433d;margin:8px 0 0;font-size:.7rem}.play-card.miss{animation:.28s tiny-shake}.game-actions{justify-content:center;align-items:center;gap:9px;min-height:69px;padding-top:12px;display:flex}.share-button{justify-content:center;align-items:center;gap:9px;min-width:175px;display:flex}.share-button>span{font-size:1.1rem}.share-button small{margin-left:3px}.reset-button{cursor:pointer;background:#fffdf8b8;border:1px solid #dbc6b5;border-radius:14px;align-items:center;gap:7px;min-height:52px;padding:7px 13px;font-weight:800;display:flex}.reset-button span,.reset-button small{display:block}.reset-button small{color:var(--muted);font-size:.56rem;font-weight:600}.guest-note{color:var(--muted);margin:0;font-size:.75rem;font-weight:750}.celebration,.dialog-backdrop{z-index:20;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#31241d61;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.celebration>div,.confirm-dialog{text-align:center;background:var(--paper);border-radius:28px;width:min(390px,100%);padding:30px;box-shadow:0 25px 80px #00000038}.celebration span{font-size:3.5rem}.celebration>div>small{color:var(--muted);letter-spacing:.08em;margin-top:5px;font-size:.62rem;font-weight:950;display:block}.celebration h2,.confirm-dialog h2{margin:8px 0 3px;font-size:1.55rem}.celebration h2 strong{color:var(--ink);font-size:1.9rem;font-weight:1000;display:block}.celebration p,.confirm-dialog p{color:var(--muted);margin:0;font-size:.78rem}.final-score{justify-content:center;align-items:center;gap:13px;margin:15px 0;display:flex}.final-score b{background:#eee5da;border-radius:13px;min-width:90px;padding:9px 12px;font-size:1.35rem}.final-score b:first-child{color:var(--teal)}.final-score b:last-child{color:var(--coral)}.final-score b.winner{background:#fff;outline:3px solid}.final-score i{font-style:normal;font-weight:900}.confirm-dialog>span{width:50px;height:50px;color:var(--teal);background:var(--teal-soft);border-radius:50%;place-items:center;margin:auto;font-size:1.5rem;display:grid}.confirm-dialog>div{grid-template-columns:1fr 1fr;gap:8px;margin-top:20px;display:grid}.confirm-dialog button{cursor:pointer;background:#fff;border:1px solid #decbbb;border-radius:13px;min-height:48px;font-size:.72rem;font-weight:800}.confirm-dialog button:last-child{border-color:var(--coral);color:#fff;background:var(--coral)}.empty-state{text-align:center;place-content:center;justify-items:center;min-height:100vh;padding:24px;display:grid}.empty-state>p{margin:13px 0 0;font-weight:850}.empty-state>small{color:var(--muted)}.empty-card{background:var(--paper);border-radius:28px;width:min(400px,100%);padding:38px 26px;box-shadow:0 20px 70px #462d1b26}.empty-card>span{font-size:3rem}.empty-card h1{font-size:1.4rem}.empty-card p{color:var(--muted)}.empty-card a{color:#fff;background:var(--teal);border-radius:13px;margin-top:10px;padding:12px 17px;font-weight:800;text-decoration:none;display:inline-block}.loader{gap:7px;display:flex}.loader i{background:var(--teal);border-radius:50%;width:11px;height:11px;animation:.8s ease-in-out infinite bounce}.loader i:nth-child(2){animation-delay:.12s}.loader i:nth-child(3){animation-delay:.24s}@keyframes pulse{50%{opacity:.45;transform:translate(-50%,-50%)scale(1.2)}}@keyframes tiny-shake{25%{transform:translate(-3px)}75%{transform:translate(3px)}}@keyframes bounce{50%{transform:translateY(-7px)}}@media (max-width:760px){.landing-shell{grid-template-columns:1fr;gap:30px;padding:30px 17px 45px}.landing-copy h1{font-size:clamp(2.75rem,13vw,4.5rem)}.landing-art{border-width:7px;border-radius:24px;order:-1;width:min(560px,100%);margin:auto;transform:rotate(.6deg)}.game-shell{padding-top:11px}.brand b{font-size:.78rem}.brand>span{width:34px;height:34px}.connection{max-width:145px;padding:7px 9px}.scoreboard{z-index:10;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky;top:5px}.player-score{padding:7px 10px}.player-score p{column-gap:7px}.player-score small{font-size:.67rem}.player-score b{font-size:1.85rem}.round-count{min-width:57px}.play-card{border-radius:18px}.puzzle-grid{grid-template-columns:1fr;gap:12px}.puzzle-panel{border-radius:14px}.difference-token{font-size:clamp(.9rem,5vw,1.7rem)}.found-marker,.pending-marker{width:clamp(32px,10vw,48px)}.signal-preview{border-width:7px;border-radius:24px;order:-1;width:min(560px,100%);margin:auto;transform:rotate(.6deg)}.signal-card{border-radius:18px}.signal-grid{gap:7px}.signal-tile{border-radius:12px}.signal-tile>span{font-size:clamp(1.25rem,9vw,2.3rem)}.memory-banner{flex-direction:column;align-items:flex-start;gap:3px}.memory-banner small{text-align:left}.alternate-game{margin-top:10px}.line-preview{border-width:7px;border-radius:24px;order:-1;width:min(560px,100%);margin:auto;transform:rotate(-.6deg)}.line-card{border-radius:18px}.line-grid{gap:5px}.line-cell{border-radius:8px}.line-cell span{width:76%;height:76%}.line-legend{gap:9px;font-size:.6rem}.line-rule{font-size:.61rem}}@media (max-width:480px){.input-row{grid-template-columns:1fr}.input-row button{width:100%}.landing-copy h1{font-size:2.75rem}.game-header{margin-bottom:9px}.brand small{display:none}.connection{font-size:.61rem}.connection small{font-size:.49rem}.scoreboard{gap:5px;padding:4px}.player-score,.round-count{border-radius:14px;min-height:61px}.player-score{padding:6px 8px}.player-score p{flex-direction:column;gap:1px;display:flex}.player-score b{order:-1;font-size:1.75rem}.player-score small{font-size:.58rem}.player-score em{font-size:.45rem}.round-count{min-width:50px;padding:4px}.round-count small{text-align:center;font-size:.5rem}.puzzle-heading{padding-bottom:8px}.puzzle-name b{font-size:.78rem}.remaining{gap:4px}.remaining>b{width:26px;height:26px}.puzzle-grid{gap:10px}.tap-hint{font-size:.69rem}.game-actions{padding-top:9px}.share-button{min-height:49px}.reset-button{min-height:49px;padding:6px 10px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media (max-width:760px){.dots-preview{border-width:7px;border-radius:24px;order:-1;width:min(560px,100%);margin:auto;transform:rotate(.6deg)}.dots-card{border-radius:18px}.dots-board{width:calc(100% + 4px);margin-left:-2px}.dots-legend{gap:9px;font-size:.6rem}.dots-rule{font-size:.61rem}.dots-edge.horizontal{margin:6px 0}.dots-edge.vertical{margin:0 6px}}.math-landing{background:radial-gradient(circle at 80% 15%,#e7a92f24,#0000 25rem)}.math-preview{background:linear-gradient(150deg,#593d30,#a36b3b);border:10px solid #fffdf8e0;border-radius:34px;min-width:0;padding:23px;position:relative;overflow:hidden;transform:rotate(1deg);box-shadow:0 32px 80px #5b392540}.math-preview-top{color:#fff;align-items:center;gap:8px;display:flex}.math-preview-top>span{background:#e7a92f;border-radius:12px;place-items:center;width:38px;height:38px;font-size:1.25rem;display:grid}.math-preview-top b{font-size:1rem}.math-preview-top small{color:#f8dfba;margin-left:auto;font-size:.62rem}.math-preview-target{color:#fff;background:#ffffff1f;border-radius:17px;justify-content:space-between;align-items:center;margin:24px 14px 13px;padding:12px 16px;display:flex}.math-preview-target small{letter-spacing:.1em;font-size:.58rem}.math-preview-target b{color:#ffe28a;font-size:2.4rem}.math-preview-grid{grid-template-columns:repeat(4,1fr);gap:9px;margin:0 0 22px;display:grid}.math-preview-grid span{aspect-ratio:1;color:#fff;background:#ffffff17;border:1px solid #ffffff2e;border-radius:14px;place-items:center;font-size:1.7rem;display:grid}.math-preview-grid span.preview-math-lit{background:#f7cf5b4d;border-color:#ffe28a;box-shadow:0 0 0 3px #f7cf5b26}.math-preview>p{text-align:center;color:#f6dec3;margin:0;font-size:.75rem}.math-preview>p b{color:#ffe28a}.math-shell{--math-ink:#593d30}.math-card{background:#fffdf8f0;border:1px solid #fffc;border-radius:26px;padding:clamp(14px,2vw,23px);box-shadow:0 20px 55px #4128171f}.math-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.math-heading>div{align-items:center;gap:10px;display:flex}.math-heading>div>span{color:#fff;background:var(--math-ink);border-radius:14px;place-items:center;width:43px;height:43px;font-size:1.3rem;display:grid}.math-heading p{margin:0}.math-heading b,.math-heading small{display:block}.math-heading b{font-size:.95rem}.math-heading small{color:var(--muted);margin-top:2px;font-size:.62rem}.math-heading>strong{min-width:54px;color:var(--math-ink);background:#fff0bd;border-radius:15px;place-items:center;padding:8px;font-size:1.1rem;line-height:1;display:grid}.math-heading>strong small{color:var(--muted);margin-top:3px;font-size:.5rem}.math-target{color:#fff;background:var(--math-ink);border-radius:16px;align-items:center;gap:14px;padding:13px 16px;display:flex}.math-target small{letter-spacing:.09em;font-size:.58rem}.math-target b{color:#ffe28a;font-size:2rem}.math-target p{color:#f5dbc3;text-align:right;margin:0 0 0 auto;font-size:.68rem}.math-operation{text-align:center;color:var(--math-ink);letter-spacing:.05em;margin:13px 0;font-size:1.35rem;font-weight:950}.math-turn{background:var(--teal-soft);color:#176960;border-radius:14px;justify-content:space-between;align-items:center;gap:10px;padding:11px 13px;display:flex}.math-turn b{font-size:.8rem}.math-turn small{color:var(--muted);text-align:right;font-size:.62rem}.math-turn.their-turn{background:var(--coral-soft);color:#a4433d}.math-turn.finished{color:#8a6412;background:#fff0bd}.math-grid{grid-template-columns:repeat(4,1fr);gap:9px;width:min(560px,100%);margin:14px auto 0;display:grid}.math-tile{aspect-ratio:1;cursor:pointer;color:var(--math-ink);touch-action:manipulation;background:#fffaf1;border:1.5px solid #d9cdbd;border-radius:15px;place-items:center;font-size:clamp(1.35rem,4vw,2rem);font-weight:950;transition:transform .12s,background .18s,border-color .18s;display:grid;position:relative;box-shadow:0 4px #e5d9ca}.math-tile:not(:disabled):hover{border-color:#e7a92f;transform:translateY(-1px)}.math-tile:disabled{cursor:default}.math-tile.selected{background:#fff0bd;border-color:#e7a92f;box-shadow:0 0 0 3px #e7a92f33,0 4px #e4c26a}.math-tile.host{background:var(--teal-soft);border-color:#0d827c99}.math-tile.guest{background:var(--coral-soft);border-color:#e65f5599}.math-tile i{color:var(--teal);font-size:.58rem;font-style:normal;position:absolute;bottom:5px;right:7px}.math-tile.guest i{color:var(--coral)}.math-legend{color:var(--muted);justify-content:center;align-items:center;gap:18px;margin-top:13px;font-size:.68rem;font-weight:850;display:flex}.math-legend b{color:var(--math-ink)}.math-feedback{text-align:center;margin:10px 0 0;font-size:.75rem;font-weight:900}.math-feedback.correct{color:var(--teal)}.math-feedback.miss{color:#ad6b2f}.math-rule{text-align:center;color:#705c50;margin:12px 0 0;font-size:.68rem;font-weight:800}.math-rule span{color:var(--muted);font-size:.6rem}.math-empty{background:linear-gradient(145deg,#fffdf8,#fff0d0)}@media (max-width:760px){.math-preview{border-width:7px;border-radius:24px;order:-1;width:min(560px,100%);margin:auto;transform:rotate(.6deg)}.math-card{border-radius:18px}.math-target p{font-size:.6rem}.math-grid{gap:7px}.math-tile{border-radius:11px}.math-legend{gap:9px;font-size:.6rem}.math-rule{font-size:.61rem}}
