:root{--ink:#f4efe4;--ink-dim:#b9b3a6;--glass:#10141cb8;--glass-strong:#0e1118e6;--line:#ffffff1f;--gold:#e8b85a;--cyan:#38e4ff;--danger:#ff6b57;--radius:14px;color:var(--ink);background:#0c0f14;font-family:Segoe UI,system-ui,-apple-system,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root,.app{height:100%;margin:0;overflow:hidden}body{background:#0c0f14}.stage{position:fixed;inset:0}@media (width>=821px){.in-game .stage{right:278px}.in-game .hud-top,.in-game .hud-bottom,.in-game .check-banner,.in-game .duel-card{left:calc(50% - 139px)}}button{font:inherit;color:inherit}.btn{border:1px solid var(--line);cursor:pointer;background:#ffffff0f;border-radius:10px;padding:9px 14px;font-size:14px;transition:background .15s,border-color .15s,transform .1s}.btn:hover:not(:disabled){background:#ffffff21;border-color:#ffffff4d}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:default}.btn.primary{color:#1d1608;background:linear-gradient(#f1c86c,#c9973a);border-color:#f6d48a;font-weight:700}.btn.primary:hover:not(:disabled){background:linear-gradient(#f7d684,#d6a446)}.btn.danger:hover:not(:disabled),.btn.danger.armed{border-color:var(--danger);color:#ffd3cc}.btn.danger.armed{background:#ff6b5738}.btn.big{padding:14px 30px;font-size:17px}.tiles{gap:10px;display:grid}.tiles.two{grid-template-columns:repeat(2,1fr)}.tiles.three{grid-template-columns:repeat(3,1fr)}.tiles.four{grid-template-columns:repeat(4,1fr)}.tile{text-align:left;border:1px solid var(--line);cursor:pointer;background:#ffffff0a;border-radius:12px;align-content:start;justify-items:start;gap:4px;min-height:108px;padding:14px;transition:border-color .15s,background .15s,transform .12s;display:grid}.tile:hover{background:#e8b85a14;border-color:#e8b85a99;transform:translateY(-1px)}.tile.active{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset, 0 6px 24px #e8b85a2e;background:#e8b85a29}.tile.locked{opacity:.5;cursor:not-allowed}.tile.locked:hover{border-color:var(--line);background:#ffffff0a;transform:none}.tile-icon{color:var(--gold);letter-spacing:1px;font-size:22px}.tile-icon.big{font-size:44px;line-height:1}.tile-title{font-size:16px;font-weight:700}.tile-sub{color:var(--ink-dim);font-size:12.5px;line-height:1.35}.overlay{padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));z-index:20;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.overlay.dim{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#06080c8c}.panel{background:var(--glass-strong);border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);max-height:calc(100vh - 32px);max-height:calc(100dvh - max(16px, env(safe-area-inset-top)) - max(16px, env(safe-area-inset-bottom)));overscroll-behavior:contain;padding:24px;overflow:auto;box-shadow:0 24px 80px #00000080}.panel h2{margin:0 0 6px;font-size:24px}.panel h3{text-transform:uppercase;letter-spacing:.12em;color:var(--ink-dim);margin:18px 0 8px;font-size:12px}.panel p{color:var(--ink-dim);margin:6px 0}.muted{font-size:13px}.setup{width:min(880px,100%)}.setup-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:22px;display:flex}.title-screen{background:linear-gradient(#080a1000 35%,#080a10bf 100%);flex-direction:column;justify-content:flex-end;padding-bottom:9vh}.title-block{text-align:center;background:radial-gradient(#080a109e 0%,#080a1059 60%,#080a1000 100%);border-radius:20px;max-width:720px;padding:18px 28px 22px}.eyebrow{text-transform:uppercase;letter-spacing:.25em;color:var(--gold);font-size:12px}.logo{letter-spacing:.06em;color:#f7f1e3;text-shadow:0 4px 30px #0009;margin:8px 0 4px;font-size:clamp(48px,9vw,96px);font-weight:800}.logo span{color:var(--gold)}.tagline{color:#e6dfcf;text-shadow:0 2px 10px #000c;font-size:18px}.title-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:22px;display:flex}.credit{color:#fff9;text-align:center;padding:0 16px;font-size:12px;position:fixed;bottom:12px}.hud-top,.hud-bottom{z-index:10;pointer-events:none;position:fixed;left:50%;transform:translate(-50%)}.hud-top{top:14px}.hud-bottom{bottom:14px}.player{pointer-events:auto;background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;align-items:center;gap:12px;min-width:330px;padding:10px 14px;transition:border-color .2s,box-shadow .2s;display:flex}.player.to-move{border-color:var(--court);background:color-mix(in srgb, var(--court) 16%, var(--glass));border-width:2px;padding:9px 13px;animation:2.2s ease-in-out infinite to-move-glow}.app:has(.player.to-move) .player:not(.to-move){opacity:.55}@keyframes to-move-glow{0%,to{box-shadow:0 0 0 1px var(--court) inset, 0 0 18px color-mix(in srgb, var(--court) 30%, transparent)}50%{box-shadow:0 0 0 1px var(--court) inset, 0 0 34px color-mix(in srgb, var(--court) 60%, transparent)}}@media (prefers-reduced-motion:reduce){.player.to-move{box-shadow:0 0 0 1px var(--court) inset, 0 0 26px color-mix(in srgb, var(--court) 45%, transparent);animation:none}}.player-dot{background:var(--court);width:14px;height:14px;box-shadow:0 0 12px var(--court);border-radius:50%;flex:none}.player-main{flex:1}.player-name{font-size:15px;font-weight:700}.court-name{color:var(--ink-dim);margin-left:8px;font-size:12px;font-weight:400}.caps{letter-spacing:-1px;min-height:20px;font-size:18px;line-height:1.2}.caps .lead{letter-spacing:0;color:var(--gold);margin-left:8px;font-size:13px;font-weight:700}.turn-tag{text-transform:uppercase;letter-spacing:.1em;color:var(--court);font-size:12px;font-weight:700}.side-panel{z-index:10;background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);flex-direction:column;gap:10px;width:250px;padding:12px;display:flex;position:fixed;top:14px;bottom:14px;right:14px}.mode-chip{color:var(--gold);font-size:13px;font-weight:600}.moves{font-variant-numeric:tabular-nums;flex:1;margin:0;padding:0;font-size:14px;list-style:none;overflow:auto}.moves li{border-radius:6px;grid-template-columns:34px 1fr 1fr;padding:3px 6px;display:grid}.moves li:nth-child(odd){background:#ffffff08}.moves li.latest{background:#e8b85a24}.moves .num{color:var(--ink-dim)}.moves .empty{color:var(--ink-dim);font-size:13px;display:block}.phone-only{display:none}@media (width<=820px){.btn.phone-only{display:block}}.clock{font-variant-numeric:tabular-nums;color:#fff9;text-align:center;background:#0000004d;border:1px solid #ffffff1f;border-radius:8px;min-width:68px;margin-left:auto;padding:6px 9px;font:700 19px/1 ui-monospace,SFMono-Regular,monospace}.clock.running{color:var(--ink);border-color:var(--court,#ffffff80)}.clock.low.running{color:#ffd3cc;border-color:var(--danger);background:#ff6b5740}.clock.flagged{color:#fff;background:var(--danger)}.view-buttons{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.btn.view{flex-direction:column;align-items:center;gap:2px;padding:7px 4px 6px;font-size:12px;display:flex}.btn.view.on{background:#e8b85a29;border-color:#e8b85abf}.view-icon{font-size:17px;line-height:1}.btn.view kbd,.hints kbd{color:var(--ink);background:#ffffff14;border:1px solid #ffffff40;border-radius:4px;padding:2px 5px;font:600 10.5px/1 ui-monospace,monospace}.btn.view kbd{opacity:.7}.hints{border:1px solid var(--line);background:#ffffff0a;border-radius:10px;flex-direction:column;gap:2px;padding:10px 12px;font-size:12.5px;transition:opacity .4s;animation:.6s ease-out hints-in;display:flex}.hints.away{opacity:0;pointer-events:none}.hints-title{letter-spacing:.12em;text-transform:uppercase;color:var(--gold,#e8b85a);margin-bottom:4px;font-size:11px}.hint-row{flex-wrap:wrap;align-items:center;gap:4px 8px;max-height:44px;padding:2px 0;transition:opacity .8s,max-height .8s .4s;display:flex;overflow:hidden}.hint-row kbd{flex:none}.hint-row.done{opacity:0;max-height:0}.hints .btn.small{align-self:flex-end;margin-top:6px;padding:5px 12px;font-size:12.5px}@keyframes hints-in{0%{opacity:0;transform:translateY(8px)}}@media (width<=820px),(hover:none){.hints:not(.touch){display:none}}.more-toggle.nudge{position:relative}.more-toggle.nudge:after{content:"";background:var(--gold,#e8b85a);width:8px;height:8px;box-shadow:0 0 6px var(--gold,#e8b85a);border-radius:50%;position:absolute;top:6px;right:8px}.controls{grid-template-columns:1fr 1fr;gap:8px;display:grid}.controls .btn{padding:9px 8px;font-size:13.5px}.side-panel.theatre{gap:8px;width:420px}@media (width>=821px){.in-theatre .stage{right:448px}.in-theatre .duel-card{left:calc(50% - 224px)}}.theatre-help{color:var(--ink-dim);margin:0;font-size:12.5px}.theatre-grid{grid-template-columns:22px repeat(5,minmax(0,1fr));gap:3px;display:grid;overflow:auto}.theatre-row{display:contents}.theatre-head{color:var(--gold);place-items:center;min-height:22px;font-size:18px;display:grid}.theatre-cell{border:1px solid var(--line);overflow-wrap:break-word;cursor:pointer;background:#ffffff0a;border-radius:6px;min-height:46px;padding:5px 3px;font-size:11px;line-height:1.15;transition:background .15s,border-color .15s}.theatre-cell:hover{background:#e8b85a1a;border-color:#e8b85a99}.theatre-cell.on{border-color:var(--gold);background:#e8b85a38;font-weight:700}.theatre-now{flex-direction:column;gap:2px;font-size:13px;display:flex}.theatre-now span{color:var(--ink-dim);font-size:12px}.theatre-court button{color:inherit;flex:1}.check-banner{z-index:11;color:#fff;letter-spacing:.12em;text-transform:uppercase;pointer-events:none;background:#c81e1ed9;border-radius:999px;padding:8px 22px;font-weight:800;animation:.35s ease-out pop;position:fixed;top:92px;left:50%;transform:translate(-50%)}@keyframes pop{0%{opacity:0;transform:translate(-50%)scale(.7)}}.turn-banner{z-index:11;pointer-events:none;text-align:center;background:color-mix(in srgb, var(--court) 22%, #0a0c12c7);border:2px solid var(--court);box-shadow:0 0 40px color-mix(in srgb, var(--court) 45%, transparent);white-space:nowrap;border-radius:18px;padding:14px 34px 12px;animation:1.7s ease-out forwards turn-banner;position:fixed;top:30%;left:50%;transform:translate(-50%,-50%)}.turn-banner-head{letter-spacing:.04em;color:#fff;text-shadow:0 0 18px var(--court);font-size:30px;font-weight:800}.turn-banner-sub{color:color-mix(in srgb, var(--court) 55%, white);margin-top:2px;font-size:14px}.turn-banner:not(.yours) .turn-banner-head{font-size:24px}@keyframes turn-banner{0%{opacity:0;transform:translate(-50%,-50%)scale(.85)}14%{opacity:1;transform:translate(-50%,-50%)scale(1.03)}22%{transform:translate(-50%,-50%)scale(1)}78%{opacity:1}to{opacity:0;transform:translate(-50%,-50%)scale(1)}}@media (prefers-reduced-motion:reduce){.turn-banner{animation-name:turn-banner-fade}@keyframes turn-banner-fade{0%,78%{opacity:1}to{opacity:0}}}@media (width>=821px){.in-game .turn-banner{left:calc(50% - 139px)}}.notice{z-index:13;background:var(--glass-strong);color:var(--ink);cursor:pointer;border:1px solid #e8b85a80;border-radius:999px;padding:9px 18px;font-size:14px;animation:.3s ease-out pop;position:fixed;top:92px;left:50%;transform:translate(-50%)}@media (width>=821px){.in-game .notice{left:calc(50% - 139px)}}.duel-card{z-index:12;text-align:center;cursor:pointer;background:linear-gradient(#0e1118d1,#0e1118eb);border:1px solid #e8b85a80;border-radius:14px;max-width:min(520px,100vw - 32px);padding:12px 24px 10px;animation:.4s ease-out rise;position:fixed;bottom:96px;left:50%;transform:translate(-50%)}@keyframes rise{0%{opacity:0;transform:translate(-50%,18px)}}.duel-vs{text-transform:uppercase;letter-spacing:.16em;color:var(--ink-dim);font-size:12px}.duel-vs span{color:var(--gold)}.duel-title{color:var(--gold);margin:2px 0;font-size:26px;font-weight:800}.duel-gag{color:var(--ink);font-size:14px}.duel-skip{color:var(--ink-dim);margin-top:6px;font-size:11.5px}.promo{width:min(560px,100%)}.gameover{text-align:center;width:min(460px,100%)}.gameover h2{color:var(--gold);font-size:40px}.gameover .setup-actions{justify-content:center}.settings{width:min(520px,100%)}.setting{border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;gap:14px;padding:9px 0;display:flex}.setting span{flex-direction:column;display:flex}.setting small{color:var(--ink-dim);font-size:12px}.setting input[type=checkbox]{width:20px;height:20px;accent-color:var(--gold)}.setting.choice{flex-wrap:wrap}.seg{border:1px solid var(--line);border-radius:9px;display:flex;overflow:hidden}.seg button{cursor:pointer;background:0 0;border:0;padding:7px 11px;font-size:13px}.seg button.on{background:var(--gold);color:#1d1608;font-weight:700}@media (width<=560px){.panel{padding:18px 16px}.tiles.three{grid-template-columns:1fr;gap:8px}.tiles.three .tile{grid-template-columns:30px 1fr;grid-template-areas:"icon title""icon sub";place-items:center stretch;gap:2px 12px;width:100%;min-height:0;padding:10px 14px}.tiles.three .tile-icon{grid-area:icon;justify-self:center}.tiles.three .tile-title{grid-area:title}.tiles.three .tile-sub{grid-area:sub}.tiles.two .tile,.tiles.four .tile{min-height:0;padding:12px}}@media (width<=820px){.tiles.four{grid-template-columns:repeat(2,1fr)}.side-panel{top:auto;left:max(8px, env(safe-area-inset-left));right:max(8px, env(safe-area-inset-right));bottom:calc(8px + env(safe-area-inset-bottom));width:auto;height:auto;padding:8px}.side-panel .moves,.side-panel .mode-chip{display:none}.controls{grid-template-columns:repeat(3,1fr)}.side-panel:not(.open) .view-buttons,.side-panel:not(.open) .hints,.side-panel:not(.open) .controls .btn:not(.keep),.side-panel:not(.open) .controls .danger{display:none}.btn.view{flex-direction:row;justify-content:center;gap:6px;padding:6px 4px}.hud-bottom{bottom:calc(72px + env(safe-area-inset-bottom))}.app:has(.side-panel.open) .hud-bottom{bottom:calc(262px + env(safe-area-inset-bottom))}.player{width:calc(100vw - 16px);min-width:0}.hud-top{top:max(8px, env(safe-area-inset-top))}.duel-card{bottom:calc(148px + env(safe-area-inset-bottom))}}.zoom-buttons{right:max(10px, env(safe-area-inset-right));z-index:12;flex-direction:column;gap:10px;display:none;position:fixed;top:72%;transform:translateY(-50%)}.btn.zoom{background:var(--glass-strong);border-radius:50%;place-items:center;width:48px;height:48px;padding:0;font-size:24px;line-height:1;display:grid}:is(.app:has(.side-panel.open) .zoom-buttons,.zoom-buttons.away){display:none!important}@media (hover:none){.zoom-buttons{display:flex}.btn.view kbd{display:none}}.text-input{border:1px solid var(--line);width:100%;max-width:320px;color:var(--ink);background:#ffffff0f;border-radius:10px;padding:11px 14px;font-size:17px}.text-input:focus{outline:2px solid var(--gold);outline-offset:1px}.text-input.code{letter-spacing:.25em;text-transform:uppercase;max-width:200px;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-weight:700}.join-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.setup-error{color:var(--danger);font-weight:600}.room-code{letter-spacing:.22em;color:var(--gold);text-align:center;margin:6px 0 12px;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:clamp(34px,9vw,56px);font-weight:800}.invite-links{flex-wrap:wrap;justify-content:center;gap:12px;margin-bottom:8px;display:flex}.invite-option{flex-direction:column;flex:130px;align-items:center;gap:6px;min-width:0;max-width:260px;display:flex}.invite-option .qr{border-radius:6px;width:100%;max-width:148px;height:auto;display:block}.invite-net{letter-spacing:.08em;text-transform:uppercase;color:var(--gold);font-size:12px;font-weight:700}.btn.invite{text-align:left;overflow-wrap:anywhere;width:100%;font-size:12px}.player-away{color:var(--danger);margin-left:8px;font-size:11px;font-weight:700}.check-banner.reconnecting{background:#283c5ae6}.opponent-left{z-index:12;text-align:center;flex-direction:column;align-items:center;gap:10px;width:min(420px,100% - 32px);display:flex;position:fixed;top:92px;left:50%;transform:translate(-50%)}.opponent-left p{margin:0}@media (width>=821px){.in-game .opponent-left{left:calc(50% - 139px)}}.online-choice{margin-top:4px}.invite-actions{flex-direction:column;align-items:stretch}.update-banner{bottom:max(16px, env(safe-area-inset-bottom));z-index:40;border-radius:var(--radius);background:var(--glass-strong);border:1px solid var(--gold);flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;max-width:calc(100vw - 32px);padding:10px 14px;font-size:14px;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 12px 40px #00000073}
