:root{--paper:#f3f5ee;--paper-2:#e7ebdd;--rule:#c9d2bd;--ink:#1b2a4a;--ink-soft:#5b6a85;--ink-ghost:#a8b2c2;--p1:#e23e57;--p2:#0e9e8f;--brass:#e9a82c;--brass-deep:#b67c12;--shadow:#1b2a4a2e;--card:#fff;--grid-line:#d6ddca;--f-display:"Bricolage Grotesque", "Space Grotesk", system-ui, sans-serif;--f-hand:"Caveat", "Bradley Hand", cursive;--f-ui:"Space Grotesk", system-ui, sans-serif;--r:16px}[data-theme=dark]{--paper:#171b2c;--paper-2:#10131f;--rule:#2c3350;--ink:#edf0f7;--ink-soft:#98a2c0;--ink-ghost:#4a5375;--p1:#ff6178;--p2:#26d3be;--brass:#ffc14d;--brass-deep:#c88a1a;--shadow:#00000080;--card:#1e2337;--grid-line:#313a5c}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--f-ui);background:var(--paper-2);color:var(--ink);transition:background .35s,color .35s;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}button:focus-visible,[contenteditable]:focus-visible{outline:3px solid var(--brass);outline-offset:3px;border-radius:6px}.app{flex-direction:column;gap:10px;height:100%;padding:12px;display:flex}.veil{background:color-mix(in srgb, var(--paper-2) 88%, transparent);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);z-index:40;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.sheet{background:var(--card);width:100%;max-width:600px;box-shadow:0 18px 50px var(--shadow);text-align:center;border-radius:26px;max-height:92vh;padding:clamp(22px,4vw,40px);overflow:auto}.sheet h1{font-family:var(--f-display);letter-spacing:-.03em;margin-bottom:10px;font-size:clamp(34px,6.4vw,60px);font-weight:800;line-height:.95}.sheet h1 em{color:var(--brass);font-style:normal}.sheet p{color:var(--ink-soft);margin-bottom:18px;font-size:15px;line-height:1.6}.rules{text-align:left;gap:9px;max-width:420px;margin:0 auto 22px;display:grid}.rule{align-items:flex-start;gap:11px;font-size:14px;line-height:1.45;display:flex}.rule span:first-child{font-family:var(--f-display);color:var(--brass);flex:none;width:20px;font-weight:800}.cta{background:var(--ink);color:var(--paper);font-family:var(--f-display);box-shadow:0 5px 0 var(--ink-soft);border-radius:14px;padding:15px 34px;font-size:19px;font-weight:800;transition:transform 80ms,box-shadow 80ms}.cta:active{box-shadow:0 1px 0 var(--ink-soft);transform:translateY(4px)}.mode-pick{flex-wrap:wrap;justify-content:center;gap:10px;margin-bottom:20px;display:flex}.mode-pick button{background:var(--paper-2);border:2px solid var(--rule);text-align:left;border-radius:14px;flex:150px;max-width:220px;padding:14px 12px;transition:border-color .15s,transform .1s}.mode-pick button:hover{transform:translateY(-2px)}.mode-pick button[aria-pressed=true]{border-color:var(--brass)}.mode-pick b{font-family:var(--f-display);margin-bottom:3px;font-size:15px;font-weight:800;display:block}.mode-pick span{color:var(--ink-soft);font-size:11.5px;line-height:1.35}.keys{color:var(--ink-soft);letter-spacing:.05em;margin-top:16px;font-size:11.5px}.text-link{color:var(--ink-soft);cursor:pointer;letter-spacing:.05em;background:0 0;border:none;font-size:11.5px;text-decoration:underline}.text-link:hover{color:var(--ink)}.cta-sm{padding:12px 20px;font-size:15px}.code-input{font-family:var(--f-display);letter-spacing:.24em;text-align:center;text-transform:uppercase;border:2px solid var(--rule);background:var(--paper-2);color:var(--ink);border-radius:12px;width:130px;padding:10px 8px;font-size:20px;font-weight:800}.code-input::placeholder{color:var(--ink-ghost);letter-spacing:.1em}.join-row{justify-content:center;align-items:stretch;gap:8px;margin-top:14px;display:flex}.code-big{letter-spacing:.3em;padding:18px 24px 18px 34px;font-size:40px}.lb-tabs{gap:8px;margin-bottom:14px;display:flex}.lb-tabs button{border:2px solid var(--rule);font-family:var(--f-display);border-radius:10px;flex:1;padding:9px 8px;font-size:13px;font-weight:800}.lb-tabs button[aria-pressed=true]{border-color:var(--brass);background:color-mix(in srgb, var(--brass) 9%, transparent)}.lb-me{background:var(--paper-2);border-radius:10px;margin-bottom:10px;padding:9px 12px;font-size:13px}.lb-list{gap:3px;max-height:52vh;list-style:none;display:grid;overflow-y:auto}.lb-list li{border-radius:8px;grid-template-columns:28px 1fr auto;grid-template-areas:"rank name val""rank sub sub";align-items:baseline;column-gap:8px;padding:7px 10px;display:grid}.lb-list li:nth-child(odd){background:var(--paper-2)}.lb-list li.mine{background:color-mix(in srgb, var(--brass) 14%, transparent);outline:1.5px solid var(--brass)}.lb-rank{font-family:var(--f-display);color:var(--ink-soft);grid-area:rank;font-weight:800}.lb-name{font-family:var(--f-display);text-overflow:ellipsis;white-space:nowrap;grid-area:name;font-size:14px;font-weight:700;overflow:hidden}.lb-val{font-family:var(--f-display);grid-area:val;font-weight:800}.lb-sub{color:var(--ink-soft);grid-area:sub;font-size:11px}.lb-tag{font-family:var(--f-ui);letter-spacing:.1em;text-transform:uppercase;color:var(--brass-deep);background:color-mix(in srgb, var(--brass) 20%, transparent);vertical-align:middle;border-radius:4px;margin-left:6px;padding:1px 5px;font-size:9px;font-weight:700}.help-sheet{max-height:92vh;overflow-y:auto}.help-section{margin-top:20px}.help-section h2{font-family:var(--f-display);letter-spacing:.02em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:10px;font-size:15px;font-weight:800}.help-section p{color:var(--ink);margin-bottom:0;font-size:14px;line-height:1.55}.help-list{gap:9px;list-style:none;display:grid}.help-list li{padding-left:14px;font-size:13.5px;line-height:1.5;position:relative}.help-list li:before{content:"";background:var(--brass);border-radius:50%;width:5px;height:5px;position:absolute;top:.6em;left:0}.help-def{background:var(--paper-2);border-radius:12px;margin-bottom:8px;padding:11px 13px}.help-def-head{align-items:baseline;gap:10px;margin-bottom:4px;display:flex}.help-def-head b{font-family:var(--f-display);font-size:15px;font-weight:800}.help-def-head span{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);font-size:10px;font-weight:700}.help-def p{color:var(--ink-soft);margin:0;font-size:13px;line-height:1.5}.help-def p b{color:var(--ink)}.tool-q{font-family:var(--f-hand);font-size:26px;font-weight:700;line-height:1}.peer-banner{z-index:45;background:var(--ink);color:var(--paper);box-shadow:0 8px 24px var(--shadow);border-radius:12px;padding:8px 18px;font-size:12.5px;font-weight:700;position:fixed;top:14px;left:50%;transform:translate(-50%)}kbd{background:var(--paper-2);border:1.5px solid var(--rule);font-family:var(--f-ui);color:var(--ink);border-bottom-width:3px;border-radius:5px;padding:1px 7px;font-size:11px;font-weight:700}.win-name{font-family:var(--f-display);font-size:clamp(30px,6vw,54px);font-weight:800;line-height:1}.eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);font-size:10px;font-weight:700}.tally{justify-content:center;gap:26px;margin:20px 0 24px;display:flex}.tally div{flex-direction:column;gap:2px;display:flex}.tally b{font-family:var(--f-display);font-size:34px;font-weight:800;line-height:1}.tally span{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);font-size:10px;font-weight:700}#confetti{pointer-events:none;z-index:50;position:fixed;inset:0}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px;display:grid}.stat{background:var(--paper-2);text-align:center;border-radius:12px;padding:12px 10px}.stat b{font-family:var(--f-display);font-size:24px;font-weight:800;line-height:1.1;display:block}.stat span{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);font-size:10px;font-weight:700}.by-mode{flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}.by-mode div{background:var(--paper-2);border-radius:10px;flex:120px;padding:8px 12px}.by-mode b{font-family:var(--f-display);font-size:13px;display:block}.by-mode span{color:var(--ink-soft);font-size:12px}.ach-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;display:grid}.ach{border:1.5px solid var(--rule);opacity:.5;border-radius:10px;padding:9px 11px}.ach.got{opacity:1;border-color:var(--brass);background:color-mix(in srgb, var(--brass) 9%, transparent)}.ach b{font-family:var(--f-display);font-size:13px;display:block}.ach span{color:var(--ink-soft);font-size:11.5px;line-height:1.35}.pen-row{flex-wrap:wrap;gap:8px;display:flex}.pen{border:2px solid var(--rule);font-family:var(--f-display);border-radius:10px;align-items:center;gap:7px;padding:7px 12px 7px 8px;font-size:12px;font-weight:700;display:flex}.pen.on{border-color:var(--brass)}.pen[disabled]{opacity:.45;cursor:default}.pen .swatch{border-radius:50%;width:18px;height:18px;display:inline-block}.ach-toast{z-index:60;gap:8px;animation:.4s cubic-bezier(.2,1.4,.4,1) toast-in;display:grid;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,20px)}}.ach-toast-row{background:var(--ink);color:var(--paper);box-shadow:0 12px 30px var(--shadow);border-radius:14px;align-items:center;gap:12px;padding:12px 20px 12px 14px;display:flex}.ach-toast-badge{background:var(--brass);width:34px;height:34px;color:var(--ink);border-radius:50%;flex:none;place-items:center;font-size:18px;display:grid}.ach-toast-row b{font-family:var(--f-display);font-size:13px;display:block}.ach-toast-row span{opacity:.8;font-size:12px}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.hdr{background:var(--card);border-radius:var(--r);box-shadow:0 2px 0 var(--rule);flex:none;align-items:center;gap:16px;padding:10px 16px;display:flex}.hdr-meta{flex-direction:column;gap:2px;min-width:104px;display:flex}.round-no{font-family:var(--f-display);font-size:26px;font-weight:800;line-height:1}.call{text-align:center;flex:1;min-width:0}.call-who{letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);font-size:clamp(10px,1.5vw,13px);font-weight:700}.call-line{flex-wrap:wrap;justify-content:center;align-items:baseline;gap:12px;display:flex}.call-verb{font-family:var(--f-display);letter-spacing:-.01em;font-size:clamp(16px,2.6vw,26px);font-weight:800}.call-num{font-family:var(--f-display);letter-spacing:-.04em;font-size:clamp(44px,7vw,84px);font-weight:800;line-height:.9}.call-num.pop{animation:.45s cubic-bezier(.2,1.6,.4,1) pop}@keyframes pop{0%{opacity:0;transform:scale(.5)rotate(-8deg)}to{opacity:1;transform:scale(1)rotate(0)}}.tools{flex:none;gap:8px;display:flex}.tool{background:var(--paper-2);border:2px solid #0000;border-radius:12px;place-items:center;width:44px;height:44px;font-size:19px;transition:transform .15s,border-color .15s;display:grid}.tool:hover{border-color:var(--rule);transform:translateY(-2px)}.tool[aria-pressed=true]{border-color:var(--brass)}.stage{flex:1;gap:10px;min-height:0;display:flex}.board-wrap{flex-direction:column;flex:6 1 0;gap:8px;min-width:0;display:flex}.panel-tag{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);justify-content:space-between;align-items:center;padding:0 4px;font-size:10px;font-weight:700;display:flex}.board{border-radius:var(--r);background:linear-gradient(var(--grid-line) 1px, transparent 1px) 0 0 / 26px 26px, linear-gradient(90deg, var(--grid-line) 1px, transparent 1px) 0 0 / 26px 26px, var(--paper);box-shadow:0 2px 0 var(--rule), inset 0 0 60px var(--shadow);flex:1;transition:filter .3s,background-color .35s;position:relative;overflow:hidden}.board.locked{filter:saturate(.25)blur(1.5px)}.board.locked .num{pointer-events:none}.num{font-family:var(--f-hand);color:var(--ink);transform-origin:50%;white-space:nowrap;padding:2px 6px;font-weight:700;line-height:1;transition:color .25s,opacity .25s,text-shadow .15s;position:absolute}.num:hover{color:var(--p2);text-shadow:0 0 22px}.num.found{color:var(--ink-ghost);opacity:.32;pointer-events:none;text-decoration:line-through}.num.hit{animation:.5s ease-out hit}@keyframes hit{0%{transform:var(--tf) scale(1)}35%{transform:var(--tf) scale(1.9);color:var(--brass)}to{transform:var(--tf) scale(1)}}.num.wrong{animation:.3s wrong}@keyframes wrong{0%,to{margin-left:0}25%{margin-left:-7px}75%{margin-left:7px}}.board-flash{pointer-events:none;font-family:var(--f-display);letter-spacing:-.03em;opacity:0;place-items:center;font-size:clamp(40px,7vw,90px);font-weight:800;display:grid;position:absolute;inset:0}.board-flash.show{animation:1.1s ease-out flash}@keyframes flash{0%{opacity:0;transform:scale(.7)}18%{opacity:1;transform:scale(1)}70%{opacity:1}to{opacity:0;transform:scale(1.06)}}.dock{flex-direction:column;flex:none;justify-content:center;align-items:center;gap:10px;width:104px;display:flex}.bell{background:radial-gradient(circle at 34% 28%, #ffe2a0, var(--brass) 45%, var(--brass-deep));width:92px;height:92px;box-shadow:0 8px 0 var(--brass-deep), 0 14px 26px var(--shadow);border-radius:50%;place-items:center;font-size:40px;transition:transform .12s,box-shadow .12s;display:grid}.bell:hover{transform:translateY(-2px)}.bell:active{box-shadow:0 2px 0 var(--brass-deep);transform:translateY(6px)}.bell.ring{animation:.7s cubic-bezier(.3,1.4,.5,1) ring}@keyframes ring{0%{transform:translateY(8px)scale(.9)}25%{transform:translateY(-6px)scale(1.14)rotate(-9deg)}50%{transform:translateY(0)scale(1.02)rotate(7deg)}75%{transform:rotate(-4deg)}to{transform:none}}.bell-wave{border:3px solid var(--brass);opacity:0;pointer-events:none;border-radius:50%;width:92px;height:92px;position:absolute}.bell-wave.go{animation:.7s ease-out wave}@keyframes wave{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(2.4)}}.dock-label{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);text-align:center;font-size:9.5px;font-weight:700;line-height:1.5}.side{flex:4 1 0;gap:10px;min-width:0;display:flex}.player{background:var(--card);border-radius:var(--r);min-width:0;box-shadow:0 2px 0 var(--rule);border:3px solid #0000;flex-direction:column;flex:1 1 0;gap:10px;padding:12px;transition:border-color .3s,box-shadow .3s;display:flex}.player.filling{border-color:var(--who)}.player.searching{border-color:var(--who);border-style:dashed}.p-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.p-name{font-family:var(--f-display);color:var(--who);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;max-width:60%;font-size:clamp(13px,1.6vw,18px);font-weight:800;overflow:hidden}.p-score{font-family:var(--f-display);color:var(--ink-soft);white-space:nowrap;font-size:13px;font-weight:700}.p-score b{color:var(--ink);font-size:17px}.grid{flex:1;grid-template-columns:repeat(5,1fr);align-content:stretch;gap:3px;min-height:0;display:grid}.cell{border:1.5px solid var(--grid-line);background:var(--paper);border-radius:4px;position:relative;overflow:hidden}.cell svg{width:100%;height:100%;position:absolute;inset:0}.cell svg path{stroke:var(--who);stroke-width:7px;stroke-linecap:round;fill:none;stroke-dasharray:120;stroke-dashoffset:120px;animation:.18s ease-out forwards draw}.cell svg path:nth-child(2){animation-delay:60ms}@keyframes draw{to{stroke-dashoffset:0}}.tap{background:var(--who);color:#fff;font-family:var(--f-display);letter-spacing:.01em;text-align:center;box-shadow:0 6px 0 var(--who-deep);border-radius:14px;flex:none;place-items:center;min-height:84px;padding:16px 8px;font-size:clamp(13px,1.7vw,19px);font-weight:800;line-height:1.15;transition:transform 60ms,box-shadow 60ms,opacity .25s;display:grid}.tap small{font-family:var(--f-ui);opacity:.85;letter-spacing:.08em;text-transform:uppercase;margin-top:4px;font-size:11px;font-weight:500;display:block}.tap:active{box-shadow:0 1px 0 var(--who-deep);transform:translateY(5px)}.tap.bump{animation:90ms bump}@keyframes bump{50%{transform:translateY(5px)scale(.97)}}.tap[disabled]{background:var(--paper-2);color:var(--ink-soft);box-shadow:0 6px 0 var(--rule);cursor:default}#p1{--who:var(--p1);--who-deep:#98263a}#p2{--who:var(--p2);--who-deep:#0a6e64}[data-theme=dark] #p1{--who-deep:#a5293b}[data-theme=dark] #p2{--who-deep:#0e8578}@media (width<=900px){.app{gap:8px;padding:8px}.hdr{flex-wrap:wrap;gap:8px;padding:8px 12px}.hdr-meta{flex-direction:row;align-items:baseline;gap:7px;min-width:auto}.call{flex-basis:100%;order:3}.stage{flex-direction:column}.board-wrap{flex:45%}.dock{flex-direction:row;gap:14px;width:100%;padding:0}.bell{width:64px;height:64px;box-shadow:0 6px 0 var(--brass-deep);font-size:29px}.bell-wave{width:64px;height:64px}.dock-label{text-align:left}.side{flex:55%}.cell{border-radius:3px}.tap{min-height:70px;padding:12px 6px}}
