:root{color:#ecf2ef;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--accent:#59dac6;--muted:#abc0bc;--line:#324947;--panel:#1a2c2c;background:#101c1c;font-family:Segoe UI,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden}body{overscroll-behavior:none;margin:0}button,select,input{font:inherit;color:inherit}button{cursor:pointer;transition:background .15s,border-color .15s}button:disabled{cursor:default;opacity:.42}button,a,input,select,[tabindex]{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:var(--accent);color:#101918}a{color:inherit}h1,h2,h3,p{margin:0}h1,h2{font-size:14px;font-weight:600}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.waiting-content{max-width:900px}.waiting-body{gap:24px;width:100%;margin:auto 0;padding:16px 0;display:grid}.waiting-intro h1,.waiting-seat.lobby-card h2{overflow-wrap:anywhere}.waiting-visibility,.waiting-seat-heading,.waiting-player-status,.waiting-presence{align-items:center;gap:8px;display:flex}.waiting-seats{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.waiting-seat{align-content:start;gap:16px;display:grid;box-shadow:0 8px 24px #0002}.waiting-seat.own-seat{border-color:#59dac680}.waiting-seat.empty-seat{background:#1a2c2c66;border-style:dashed}.waiting-seat-heading,.waiting-presence,.waiting-footer{color:var(--muted);font-size:13px}.waiting-seat-heading{color:var(--accent)}.waiting-seat.lobby-card h2{font-size:22px;line-height:1.35}.waiting-player-status{line-height:1.5}.waiting-player-status.is-ready{color:var(--accent)}.waiting-guidance{color:var(--muted);line-height:1.6}.waiting-actions{flex-wrap:wrap;align-items:flex-start;gap:12px;display:flex}.waiting-actions .copy-room-control{min-width:0;max-width:100%}.waiting-actions .copy-feedback{overflow-wrap:anywhere;max-width:240px}.waiting-actions .waiting-leave{margin-left:auto}.waiting-footer{overflow-wrap:anywhere;gap:8px;line-height:1.6;display:grid}@media (width<=720px){.waiting-seats{grid-template-columns:minmax(0,1fr);gap:12px}.waiting-body{gap:20px;padding:0}.waiting-seat{gap:10px}.waiting-seat.lobby-card h2{font-size:20px}.waiting-actions>*,.waiting-actions .invite-button{width:100%}}.app-shell{--gutter:20px;--dock-height:208px;--hud-bottom:160px;width:100%;height:100dvh;position:relative;overflow:hidden}.entry-shell{overscroll-behavior-y:contain;height:100dvh;padding:24px;overflow-y:auto}.entry-content{flex-direction:column;gap:32px;width:min(1080px,100%);min-height:100%;margin:0 auto;display:flex}.entry-header,.entry-identity,.entry-footer,.public-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.entry-header{flex-wrap:wrap}.entry-identity{flex-wrap:wrap;justify-content:flex-end;min-width:0}.lobby-nickname{overflow-wrap:anywhere}.entry-shell .quiet-button{justify-content:center;align-items:center;gap:8px;min-width:44px;min-height:44px;display:inline-flex}.entry-shell svg{flex-shrink:0}.lobby-card{border:1px solid var(--line);background:var(--panel);border-radius:14px;min-width:0;padding:26px}.entry-card{gap:20px;width:min(460px,100%);margin:auto;display:grid}.eyebrow{color:var(--accent);letter-spacing:.07em;font-size:12px}.entry-shell h1{font-size:clamp(26px,4vw,36px);line-height:1.2}.entry-description,.lobby-intro-copy>p:last-child,.entry-form small,.optional-label{color:var(--muted);line-height:1.6}.entry-form{gap:12px;display:grid}.entry-form label,.entry-form legend{font-size:14px}.entry-form input:not([type=radio]){background:#101c1c;border:1px solid #526d69;border-radius:8px;width:100%;min-width:0;min-height:48px;padding:11px 12px}.entry-form input::placeholder{color:#8da5a0}.entry-error{color:#ffb0a4;overflow-wrap:anywhere;line-height:1.6}.invitation-note{color:var(--accent);line-height:1.6}.entry-footer{color:var(--muted);flex-wrap:wrap;margin-top:auto;font-size:12px}.entry-footer .quiet-button{font-size:12px}.lobby-intro{grid-template-columns:minmax(0,1fr) 200px;align-items:center;gap:24px;display:grid}.lobby-intro-copy{gap:8px;display:grid}.lobby-shell{background:radial-gradient(at 80% 20%,#59dac609,#0000 65%)}.lobby-shell .entry-content{gap:24px;width:min(1120px,100%)}.lobby-shell h1{font-size:clamp(26px,3vw,32px)}.lobby-decoration{pointer-events:none;filter:drop-shadow(0 8px 15px #59dac650);width:200px;height:100px;animation:5s ease-in-out infinite lobby-float}@keyframes lobby-float{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.lobby-alert{border:1px solid var(--line);border-radius:8px;padding:14px 18px;line-height:1.6}.lobby-grid{grid-template-columns:minmax(0,330px) minmax(0,1fr);grid-template-areas:"forms preview";align-items:stretch;gap:20px;display:grid}.lobby-forms{grid-area:forms;align-content:start;gap:20px;min-width:0;display:grid}.lobby-card h2{align-items:center;gap:9px;font-size:17px;display:flex}.lobby-forms h2{margin-bottom:18px}.lobby-shell .lobby-card{padding:22px}.lobby-forms .entry-form{gap:8px}.lobby-forms input:not([type=radio]){min-height:44px}.gameplay-preview{background:radial-gradient(ellipse at center, #59dac60b, transparent 70%), var(--panel);flex-direction:column;grid-area:preview;display:flex}.preview-heading{align-items:flex-start;gap:12px;display:flex}.preview-play{width:36px;height:36px;color:var(--accent);border:1px solid var(--line);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.preview-description{color:var(--muted);margin-top:8px;font-size:14px;line-height:1.6}.preview-scene{pointer-events:none;flex:1;place-items:center;min-width:0;margin:12px 0;display:grid;position:relative}.preview-board{width:min(100%,300px);height:auto;display:block}.preview-move{opacity:0;animation:8s ease-in-out infinite preview-place-1}.preview-move--2{animation-name:preview-place-2}.preview-move--3{animation-name:preview-place-3}.preview-move .tile-surface{stroke:var(--accent);stroke-width:.018px}.preview-scores{place-items:center;height:48px;display:grid;position:absolute;inset:8px 0 auto}.preview-idle,.preview-score{grid-area:1/1}.preview-idle{color:var(--muted);text-align:center;font-size:13px;animation:8s ease-in-out infinite preview-idle}.preview-score{opacity:0;text-align:center;color:var(--accent);border:1px solid var(--accent);background:#102c29;border-radius:10px;padding:6px 16px;font-weight:700;animation:8s ease-in-out infinite preview-score-1;box-shadow:0 0 18px #59dac621}.preview-score small{margin-top:3px;font-size:12px;font-weight:400;display:block}.preview-score--2{animation-name:preview-score-2}.preview-score--3{animation-name:preview-score-3}.preview-rule{color:var(--muted);font-size:13px;line-height:1.6}.preview-steps{counter-reset:preview-step;border-top:1px solid var(--line);justify-content:space-between;gap:16px;margin:18px 0 0;padding:18px 0 0;font-size:13px;list-style:none;display:flex}.preview-steps li{align-items:center;gap:8px;display:flex}.preview-steps li:before{content:counter(preview-step);counter-increment:preview-step;border:1px solid var(--accent);width:26px;height:26px;color:var(--accent);border-radius:50%;flex-shrink:0;place-items:center;display:grid}@keyframes preview-place-1{0%,15%{opacity:0;transform:translate(.55px,.6px)}23%,95%{opacity:1;transform:translate(0)}23%{filter:drop-shadow(0 0 .06px #59dac6)}31%,to{filter:none}to{opacity:0;transform:translate(0)}}@keyframes preview-place-2{0%,38%{opacity:0;transform:translate(.55px,.6px)}46%,95%{opacity:1;transform:translate(0)}46%{filter:drop-shadow(0 0 .06px #59dac6)}54%,to{filter:none}to{opacity:0;transform:translate(0)}}@keyframes preview-place-3{0%,61%{opacity:0;transform:translate(.55px,.6px)}69%,95%{opacity:1;transform:translate(0)}69%{filter:drop-shadow(0 0 .06px #59dac6)}77%,to{filter:none}to{opacity:0;transform:translate(0)}}@keyframes preview-score-1{0%,23%,38%,to{opacity:0;transform:translateY(4px)}26%,35%{opacity:1;transform:translateY(0)}}@keyframes preview-score-2{0%,46%,61%,to{opacity:0;transform:translateY(4px)}49%,58%{opacity:1;transform:translateY(0)}}@keyframes preview-score-3{0%,69%,to{opacity:0;transform:translateY(4px)}72%,95%{opacity:1;transform:translateY(0)}}@keyframes preview-idle{0%,15%,to{opacity:1}23%,95%{opacity:0}}@media (prefers-reduced-motion:reduce){.lobby-decoration,.preview-move,.preview-score,.preview-idle{animation:none;transform:none}.preview-move,.preview-score--3{opacity:1}.preview-idle{opacity:0}}.visibility-choice{border:0;grid-template-columns:1fr 1fr;gap:8px;min-width:0;margin:4px 0 0;padding:0;display:grid}.visibility-choice legend{margin-bottom:12px;padding:0}.visibility-choice label{border:1px solid var(--line);cursor:pointer;border-radius:8px;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;min-height:48px;padding:8px 4px;display:flex}.visibility-choice label:has(:checked){border-color:var(--accent);background:#59dac60c}.visibility-choice input{accent-color:var(--accent);margin:0}.public-heading>span{color:var(--muted);font-size:13px}.lobby-list-state{color:var(--muted);text-align:center;align-content:center;justify-items:center;gap:16px;padding:18px 0 4px;line-height:1.7;display:grid}.public-room-list{margin:0;padding:0;list-style:none}.public-room-list li{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:16px;padding:18px 0;display:grid}.public-room-name{overflow-wrap:anywhere;min-width:0}.public-room-name h3{font-size:15px;font-weight:600;line-height:1.5}.public-room-name p{color:var(--muted);margin-top:5px;font-size:12px;line-height:1.5}.room-seats{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:flex}@media (width<=900px){.lobby-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"preview""forms"}}@media (width<=720px){.entry-shell{padding:16px}.entry-content{gap:24px}.entry-identity{gap:8px 12px}.lobby-shell .entry-identity{justify-content:flex-start;width:100%}.lobby-intro{grid-template-columns:minmax(0,1fr)}.lobby-decoration{display:none}.lobby-shell .lobby-card{padding:20px}.preview-board{max-width:280px}.preview-steps{flex-direction:column;gap:12px}.lobby-card{padding:20px}.entry-card{margin:auto}.public-room-list li{grid-template-columns:minmax(0,1fr) auto;gap:10px}.public-room-name{grid-column:1/-1}.public-room-list li>button{justify-self:end}}.game-table,.board-surface{position:absolute;inset:0}.board-surface{isolation:isolate;background:#101c1c}.board-svg{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.can-pan .board-svg{cursor:grab}.can-pan .board-svg:active,.is-dragging .board-svg{cursor:grabbing}.hud-card{background:#1a2c2cf2;border:1px solid #ffffff0b;border-radius:16px;box-shadow:0 6px 24px #0003,0 1px 3px #0003}.top-hud{z-index:2;top:max(var(--gutter), env(safe-area-inset-top));left:max(var(--gutter), env(safe-area-inset-left));right:max(var(--gutter), env(safe-area-inset-right));pointer-events:none;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:24px;display:grid;position:absolute}.top-hud.has-match{grid-template-columns:minmax(153px,1fr) minmax(150px,max-content) minmax(0,320px) minmax(150px,max-content) minmax(max-content,1fr);column-gap:16px}.top-hud>*{min-width:0}.brand-card{pointer-events:auto;justify-self:start}.brand{letter-spacing:.12em;align-items:center;gap:9px;min-height:44px;font-size:20px;font-weight:700;text-decoration:none;display:inline-flex}.brand svg{width:28px;height:28px;stroke:var(--accent);stroke-width:1.7px;stroke-linejoin:round}.brand svg path+path{opacity:.4;stroke-width:1px}.game-information{text-align:center;pointer-events:none;padding-top:8px;position:relative}.has-match .game-information{border-inline:1px solid #59dac64d;min-height:50px;padding:4px 16px 0}.game-information>.connection-status{justify-content:center}.match-hud{overflow-wrap:anywhere;line-height:1.5}.match-hud .quiet-button,.game-information>.quiet-button{pointer-events:auto;margin-top:6px}.match-heading{flex-wrap:wrap;justify-content:center;align-items:baseline;gap:4px 12px;display:flex}.match-heading h1{color:var(--accent);font-size:16px}.turn-number{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px}.local-description,.waiting-player,.outcome-reason{color:var(--muted);font-size:12px;line-height:1.5}.critical-message{color:#ffb3a5;margin-top:6px;font-size:13px}.outcome-reason{margin-top:6px}.player-score{background:#101c1ce6;border:1px solid #59dac6b3;border-radius:12px;align-self:start;width:max-content;min-width:150px;max-width:200px;margin-bottom:40px;padding:6px 12px;position:relative}.score-highlight{border:1px solid var(--accent);border-radius:inherit;pointer-events:none;animation:1.5s ease-out both score-frame-glow;position:absolute;inset:-1px;box-shadow:0 0 22px #59dac666,inset 0 0 12px #59dac633}.turn-highlight{border-radius:inherit;pointer-events:none;border:2px solid #b8f2df;animation:1.2s ease-out both score-frame-glow;position:absolute;inset:-2px;box-shadow:0 0 18px #59dac666}.active-player{background:#213b38f5}.active-player:before{content:"";background:var(--accent);border-radius:2px;width:3px;position:absolute;inset:8px auto 8px 0}@keyframes score-frame-glow{0%,to{opacity:0}15%,55%{opacity:1}}.player-score[data-player-slot="1"]{grid-area:1/2}.player-score[data-player-slot="2"],.top-hud>.waiting-player{grid-area:1/4}.player-name{grid-template-columns:minmax(0,1fr) max-content;align-items:baseline;gap:2px 6px;font-size:14px;display:grid}.player-name strong{overflow-wrap:anywhere}.player-name>span{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:28px;font-weight:650}.player-score small{color:var(--muted);font-size:11px}.own-player{border-color:var(--accent)}.own-player .player-name strong{color:var(--accent)}.waiting-player{align-self:center;padding:6px}.room-toolbar{pointer-events:auto;justify-self:end;align-items:center;gap:4px;display:flex}.toolbar-separator{background:#59dac64d;width:1px;height:28px;margin-inline:4px}.room-toolbar .tool{color:#d7e3e0;width:44px;padding:0}.room-toolbar .tool:not(:disabled):hover{color:var(--accent);background:#59dac614;border-color:#0000}.connection-status{color:var(--muted);align-items:center;gap:6px;padding:3px 8px;font-size:11px;display:flex}.status-dot{background:var(--accent);border-radius:50%;flex:0 0 6px;width:6px;height:6px}.status-dot.offline{background:#e9b16c}.quiet-button,.tool,.primary-button{border:1px solid var(--line);background:#253b3b;border-radius:9px;justify-content:center;align-items:center;gap:5px;min-width:44px;min-height:44px;padding:8px 12px;font-size:13px;font-weight:500;display:inline-flex}.quiet-button:not(:disabled):hover,.tool:not(:disabled):hover{border-color:var(--accent);background:#32504d}.quiet-button:not(:disabled):active,.tool:not(:disabled):active{background:#3c605b}.tool{background:0 0;border-color:#0000;min-width:44px;height:44px;padding:0 10px}.tool svg{flex-shrink:0;width:22px;height:22px}.icon-control{flex-shrink:0;display:inline-flex;position:relative}.tooltip{color:#132c29;text-align:center;overflow-wrap:anywhere;pointer-events:none;background:#e6f0ed;border:0;border-radius:8px;width:max-content;max-width:min(210px,100vw - 16px);margin:0;padding:7px 10px;font-size:12px;font-weight:400;line-height:1.4;position:fixed;inset:auto}.mobile-action-label{display:none}.primary-button{background:var(--accent);color:#0c342e;border-color:#0000;font-weight:700}.primary-button:not(:disabled):hover{background:#85ead7}.primary-button:not(:disabled):active{background:#40c5b1}.bottom-hud{z-index:2;bottom:max(var(--gutter), env(safe-area-inset-bottom));left:max(var(--gutter), env(safe-area-inset-left));right:max(var(--gutter), env(safe-area-inset-right));width:min(880px, calc(100% - 2 * var(--gutter) - env(safe-area-inset-left) - env(safe-area-inset-right)));max-height:calc(100dvh - 240px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overscroll-behavior:contain;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"tiles actions""info actions""status status";align-items:center;column-gap:8px;margin-inline:auto;padding:4px 8px;display:grid;position:absolute;overflow-y:auto}.rack-summary{grid-area:info;align-items:center;gap:12px;min-width:0;display:flex}.rack-summary>.icon-control{margin-left:auto}.tile-count{color:var(--muted);font-size:12px;font-weight:400}.tile-rack{touch-action:pan-x;grid-area:tiles;min-width:0;padding:0 3px}.tile-rack[data-layout=wrapped]{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#547b74 transparent;touch-action:pan-y;max-height:154px;overflow-y:auto}.rack-layout{margin-inline:auto;position:relative}.rack-tile{clip-path:polygon(50% 0,100% 100%,0 100%);-webkit-user-select:none;user-select:none;touch-action:pan-x;background:0 0;border:0;padding:0;line-height:1;position:absolute}.rack-tile[data-orientation=down]{clip-path:polygon(0 0,100% 0,50% 100%)}.rack-tile:focus-visible{outline:none}.rack-tile svg{pointer-events:none;width:100%;height:100%;display:block;overflow:visible}.rack-tile .tile-value{font-size:.21px}.rack-tile:where(:not(:disabled):hover) .tile-face{--tile-state-light:#fffef7;--tile-state-mid:#fcf5e6;--tile-state-shade:#eee5d2;--tile-state-ink:#30302b}.rack-tile:where(:not(:disabled):hover) .tile-surface{stroke:#8bd8cc;stroke-width:.018px}.rack-tile.selected .tile-surface,.rack-tile:focus-visible .tile-surface{stroke:var(--accent);stroke-width:.045px}.rack-tile.selected .tile-face,.rack-tile:focus-visible .tile-face{--tile-state-light:#effff8;--tile-state-mid:#dff3e8;--tile-state-shade:#c1e5d6;--tile-state-ink:#30302b}.rack-tile:disabled{opacity:1;cursor:default}.empty-rack{width:100%;min-height:82px;color:var(--muted);place-items:center;font-size:12px;display:grid}.rack-actions{flex-direction:column;grid-area:actions;align-self:center;align-items:center;gap:2px;display:flex}.rack-actions .tool{width:44px;padding:0}.match-actions{flex-direction:column;align-items:center;gap:2px;font-size:12px;display:flex}.pile-count{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:400}.touch-rotation-controls{z-index:2;right:max(var(--gutter), env(safe-area-inset-right));bottom:calc(var(--dock-height) + max(var(--gutter), env(safe-area-inset-bottom)) + 8px);gap:4px;padding:4px;display:none;position:absolute}.placement-status{color:var(--muted);grid-area:status;margin-top:6px;font-size:12px;line-height:1.4}.action-error{color:#ffd1c7;overflow-wrap:anywhere;pointer-events:none;background:#3b2927;border:1px solid #ffb3a566;border-radius:10px;grid-area:status;align-items:flex-start;gap:8px;margin-top:6px;padding:8px 10px;font-size:12px;line-height:1.4;display:flex}.action-error svg{flex-shrink:0}.action-error p{margin-top:2px}.is-invalid{color:#ffb3a5}.empty-board{inset:var(--hud-bottom) 12px calc(var(--dock-height) + var(--gutter) + 12px);text-align:center;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute}.empty-symbol{color:var(--accent);opacity:.6;margin-bottom:8px;font-size:40px}.empty-board h2{font-size:clamp(18px,2vw,24px);font-weight:400;line-height:1.4}.empty-board p{color:var(--muted);margin-top:10px;font-size:12px}.game-notifications{pointer-events:none;width:min(420px,100vw - 32px);position:absolute;top:calc(100% + 10px);left:50%;transform:translate(-50%)}.game-toast{overflow-wrap:anywhere;color:#d6fff1;background:#213b38fa;border:1px solid #59dac680;border-radius:12px;justify-content:center;align-items:flex-start;gap:10px;max-width:100%;padding:8px 14px;font-size:14px;line-height:1.5;animation:4.5s both toast-life;display:flex;box-shadow:0 4px 18px #0002}.game-toast svg,.last-action svg{flex-shrink:0;margin-top:2px}.game-toast p{color:#b8d8cc;margin-top:3px;font-size:12px}.last-action{color:var(--muted);overflow-wrap:anywhere;justify-content:center;align-items:flex-start;gap:6px;font-size:11px;line-height:1.4;display:flex}.last-action strong{font-weight:400}@keyframes toast-life{0%{opacity:0;transform:translateY(-4px)}8%,82%{opacity:1;transform:translateY(0)}to{opacity:0}}.copy-room-control{display:inline-flex;position:relative}.invite-button{flex-direction:column;gap:1px;padding:2px 4px;font-size:11px}.score-number{transform-origin:50%;display:inline-block}.board-feedback,.figure-feedback,.score-feedback{pointer-events:none;-webkit-user-select:none;user-select:none}.floating-points{fill:var(--accent);stroke:#101c1c;stroke-width:4px;paint-order:stroke;vector-effect:non-scaling-stroke;stroke-linejoin:round;font-weight:750;animation:1.5s ease-out both points-rise}.floating-points.penalty{fill:#ffb3a5}.matched-edge,.hexagon-outline{fill:none;stroke:var(--accent);stroke-width:4px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;animation:1.5s ease-out both edge-confirm}.hexagon-outline{stroke:#f5d38b;stroke-width:5px}.figure-feedback p{color:#f5d38b;background:#25332bf5;border-radius:10px;margin-top:8px;padding:6px 12px;font-size:14px;font-weight:700;animation:1.5s ease-out both feedback-life;display:inline-block}.score-feedback{z-index:1;justify-content:center;font-size:16px;font-weight:700;display:flex;position:absolute;top:calc(100% + 8px);left:0;right:0}.score-feedback>span{border:1px solid var(--accent);color:var(--accent);white-space:nowrap;background:#101c1ce6;border-radius:14px;padding:5px 16px;animation:1.5s ease-out both score-toast;display:inline-block;box-shadow:0 0 16px #59dac64d,inset 0 0 8px #59dac626}@keyframes score-toast{0%{opacity:0;transform:translateY(-5px)scale(.94)}15%,65%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(4px)}}@keyframes points-rise{0%{opacity:0;transform:translateY(0)}12%,50%{opacity:1}to{opacity:0;transform:translateY(-.4px)}}@keyframes edge-confirm{0%{opacity:0}12%,65%{opacity:1}to{opacity:0}}@keyframes feedback-life{0%{opacity:0}12%,65%{opacity:1}to{opacity:0}}.copy-feedback:empty{display:none}.copy-feedback{pointer-events:none;z-index:6;color:#ecf2ef;background:#29413e;border-radius:8px;width:220px;padding:8px;font-size:12px;line-height:1.5;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 4px 16px #0004}.room-id-row{align-items:center;gap:8px;display:flex}.room-id-row p{min-width:0}.tile-hit-area{fill:#0000;stroke:#0000;stroke-width:.018px;stroke-linejoin:round}.tile-body,.tile-value{pointer-events:none}.tile-shadow{fill:#080c0b;stroke:#080c0b;stroke-width:.012px}.tile-value{font-size:.165px}.tile-value[data-effect=engraved]{paint-order:stroke;stroke:#fff7;stroke-width:.012px}.placement-preview{cursor:grab}.placement-preview .tile-face{--tile-state-light:#f3fff9;--tile-state-mid:#dff4e9;--tile-state-shade:#bce4d3;--tile-state-ink:#30302b}.placement-preview .tile-hit-area{stroke-width:.035px}.placement-preview .tile-surface{stroke:#59dac6;stroke-width:.035px}.placement-preview.invalid .tile-face{--tile-state-light:#fff4ed;--tile-state-mid:#f9dfd4;--tile-state-shade:#eac1b3}.placement-preview.invalid .tile-surface{stroke:#f18e7e}.placement-preview.invalid .tile-surface,.placement-preview.invalid .tile-hit-area{stroke-dasharray:.08 .035}.placement-preview .placement-target{fill:none;stroke:var(--accent);stroke-width:2px;vector-effect:non-scaling-stroke}.hud-dialog{width:min(560px,100% - 32px);max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));color:inherit;padding:0;overflow:hidden}.hud-dialog::backdrop{background:#07120dcc}.chat-tool{position:relative}.chat-badge{background:var(--accent);color:#101c1c;text-align:center;pointer-events:none;border-radius:12px;min-width:19px;padding:2px 4px;font-size:11px;font-weight:700;position:absolute;top:1px;right:0}.chat-panel{--chat-bottom:max(calc(var(--dock-height) + max(var(--gutter), env(safe-area-inset-bottom)) + 8px), calc(100dvh - var(--chat-viewport-top,0px) - var(--chat-viewport-height,100dvh) + 8px));z-index:6;top:max(var(--hud-bottom), calc(var(--chat-viewport-top,0px) + 8px));right:16px;bottom:var(--chat-bottom);background:var(--panel);flex-direction:column;width:min(390px,100% - 32px);display:flex;position:fixed;overflow:hidden}.chat-panel .dialog-heading{flex-shrink:0}.chat-panel .dialog-content{flex:1;min-height:0;max-height:none;padding:0;display:flex;overflow-y:auto}.match-chat{flex-direction:column;width:100%;min-width:0;min-height:0;font-size:13px;display:flex}.chat-status{color:var(--muted);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:4px 12px;display:flex}.chat-status p{overflow-wrap:anywhere}.chat-notice{color:var(--muted);overflow-wrap:anywhere;padding:6px 12px}.chat-log{overscroll-behavior:contain;scrollbar-width:thin;flex:1;min-height:48px;margin:0;padding:12px;list-style:none;overflow-y:auto}.chat-message{overflow-wrap:anywhere;background:#2b4140;border-radius:12px 12px 12px 3px;width:fit-content;max-width:90%;margin:0 auto 10px 0;padding:10px 12px}.chat-own{background:#254e47;border-radius:12px 12px 3px;margin-inline:auto 0}.chat-message-meta{color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-bottom:5px;font-size:11px;display:flex}.chat-message-meta strong{min-width:0;color:var(--accent)}.chat-message p{white-space:pre-wrap;line-height:1.5}.chat-empty{text-align:center;color:var(--muted);padding:12px 0}.chat-compose{border-top:1px solid var(--line);flex-shrink:0;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;padding:12px;display:grid}.chat-compose textarea{resize:none;border:1px solid var(--line);width:100%;min-width:0;min-height:64px;max-height:120px;color:inherit;font:inherit;background:#101f1e;border-radius:10px;padding:10px;font-size:16px}.chat-compose>p{grid-column:1/-1}.chat-hint{color:var(--muted);font-size:11px}@media (width<=1000px){.has-match .room-toolbar{grid-column:1/-1}}@media (width<=600px){.chat-panel{width:min(340px,100% - 16px);height:260px;max-height:calc(100dvh - var(--chat-bottom) - max(var(--chat-reserved-top,var(--hud-bottom)), var(--chat-viewport-top,0px)) - 8px);animation:.18s ease-out chat-slide-up;top:auto;right:8px}.has-chat .touch-rotation-controls{top:var(--hud-bottom);bottom:auto}.has-chat:has(.touch-rotation-controls) .chat-panel{--chat-reserved-top:calc(var(--hud-bottom) + 62px)}.chat-panel .dialog-heading{padding:2px 8px}.chat-panel .chat-status{padding:0 8px;font-size:11px}.chat-panel .chat-compose{gap:4px 8px;padding:6px 8px}.chat-panel textarea{height:44px;min-height:44px;padding:6px 8px}.has-match .room-toolbar{gap:0}.has-match .toolbar-separator{display:none}}@keyframes chat-slide-up{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.chat-panel{animation:none}}.dialog-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.dialog-heading h2{font-size:17px}.dialog-content{max-height:calc(100dvh - 110px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overscroll-behavior:contain;scrollbar-width:thin;padding:18px;overflow-y:auto}.tile-skin-note{color:var(--muted);font-size:13px;line-height:1.5}.tile-skin-options{border:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-width:0;margin:14px 0 0;padding:0;display:grid}.tile-skin-option{border:1px solid var(--line);text-align:center;overflow-wrap:anywhere;cursor:pointer;background:#223635;border-radius:9px;grid-template-rows:auto 1fr auto;justify-items:center;gap:8px;min-width:0;min-height:44px;padding:10px 4px;font-size:13px;display:grid}.tile-skin-option:hover{border-color:var(--accent)}.tile-skin-option:has(input:checked){border-color:var(--accent)}.tile-skin-option:focus-within{outline:2px solid var(--accent);outline-offset:2px}.tile-skin-option svg{width:min(100%,92px);display:block}.tile-skin-option input{accent-color:var(--accent);cursor:pointer;margin:0}.multiplayer-panel{overflow-wrap:anywhere;font-size:13px;line-height:1.7}.game-help{overflow-wrap:anywhere;font-size:15px;line-height:1.6}.help-intro{color:var(--muted);margin-bottom:14px}.game-help details{border:1px solid var(--line);border-radius:10px}.game-help details+details{margin-top:8px}.game-help summary{min-height:44px;color:var(--accent);cursor:pointer;border-radius:9px;padding:10px 12px;font-weight:600}.game-help summary:hover{background:#ffffff09}.help-section{padding:0 12px 12px}.help-section p+p{margin-top:10px}.help-action svg{vertical-align:-.15em;width:1em;height:1em}.help-note{color:var(--muted);margin-top:14px}kbd{font:inherit;border:1px solid #52695b;border-radius:4px;padding:1px 4px;font-size:11px}.multiplayer-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:14px;display:flex}.room-details{gap:12px;display:grid}.room-id{color:var(--accent);-webkit-user-select:all;user-select:all;overflow-wrap:anywhere;font-family:Courier New,monospace}.match-panel{border-top:1px solid var(--line);margin-top:16px;padding-top:12px}.opening-draw{overflow-wrap:anywhere;color:var(--muted);margin-bottom:12px;font-size:12px}.opening-sequence{overflow-wrap:anywhere;text-align:center;width:min(420px,100% - 24px);font-size:14px}.opening-sequence .dialog-heading{justify-content:center}.opening-attempt{color:var(--muted);font-size:12px}.opening-verdict{color:var(--accent);margin-block:16px;font-size:clamp(18px,5vw,24px);font-weight:700}.opening-start{width:100%;margin-top:12px}.opening-tiles{text-align:center;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-block:10px;display:grid}.opening-tiles>div{justify-items:center;gap:4px;min-width:0;display:grid}.opening-tiles svg{width:80px;height:82px}.opening-sequence .opening-tiles svg{width:min(120px,100%);height:auto;animation:.3s ease-out both opening-reveal}[data-phase=DRAWING] .opening-tiles svg{animation:.4s ease-in-out infinite alternate opening-shuffle}[data-phase=DRAWING] .tile-face{visibility:hidden}.opening-tile-back{fill:#244438;stroke:var(--accent);stroke-width:.025px}@keyframes opening-shuffle{0%{transform:translateY(-3px)rotate(-6deg)}to{transform:translateY(3px)rotate(6deg)}}@keyframes opening-reveal{0%{opacity:0;transform:rotateY(80deg)scale(.9)}to{opacity:1;transform:rotateY(0)scale(1)}}.match-summary,.match-history{overflow-wrap:anywhere;font-size:14px;line-height:1.7}.summary-scores{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-block:16px;display:grid}.summary-scores>div{border:1px solid var(--line);border-radius:12px;padding:12px}.summary-scores dd{color:var(--accent);margin:0;font-size:28px;font-weight:700}.summary-scores small{font-size:13px}@media (width<=480px){.blocked-scores{grid-template-columns:minmax(0,1fr)}}.blocked-scores dt{color:var(--muted)}.blocked-scores dd:not(.summary-final-score){color:inherit;font-size:inherit;margin-bottom:8px}.blocked-scores summary{cursor:pointer;color:var(--accent);min-height:44px}.summary-actions{flex-wrap:wrap;gap:12px;display:flex}.summary-actions,.match-history section+section{margin-top:16px}.summary-note,.match-history small{color:var(--muted)}.match-history li+li{margin-top:10px}.match-history{font-size:12px}.match-history>p{margin-top:12px}.match-history details{margin-top:16px}.match-history summary{cursor:pointer;color:var(--accent);min-height:44px}.match-history ol,.match-history ul{padding-left:20px}.multiplayer-message{color:var(--muted);margin-top:16px}.dialog-reset{margin-top:16px}.drag-tile{pointer-events:none;z-index:3;opacity:.98;width:108px;height:117px;position:fixed;transform:translate(-50%,-50%)}@media (width<=1000px){.top-hud,.top-hud.has-match{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}.brand-card{grid-area:1/1}.room-toolbar{grid-area:1/2}.player-score[data-player-slot="1"]{grid-area:2/1}.player-score[data-player-slot="2"],.top-hud>.waiting-player{grid-area:2/2}.game-information{text-align:center;grid-area:3/1/auto/-1;padding:0}.has-match .game-information{border-inline:0;min-height:0;padding:0}.player-score{width:100%;min-width:0;max-width:none}}@media (width<=600px){.app-shell{--gutter:8px;--hud-bottom:196px;--dock-height:244px}.top-hud,.top-hud.has-match{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px}.brand{gap:5px;font-size:16px}.brand svg{width:22px;height:22px}.player-score{border-radius:10px;padding:6px 8px}.player-name{gap:2px;font-size:12px}.player-name>span{font-size:18px}.player-name>span small{font-size:10px}.player-score>small{font-size:11px;line-height:1.4;display:block}.game-information{text-align:center;grid-area:3/1/auto/-1;padding-top:4px}.match-heading{justify-content:center}.match-heading h1{font-size:14px}.bottom-hud{border-radius:13px}.tile-count{font-size:11px}.empty-rack{min-height:76px}.game-toast{padding:6px 10px;font-size:12px}.empty-symbol{font-size:32px}.empty-board h2{font-size:18px}.hud-dialog{width:calc(100% - 16px)}.dialog-heading{padding:8px 12px}.dialog-content{padding:14px}}@media (width<=600px),(any-pointer:coarse){.rack-actions .tool{flex-direction:column;gap:0;width:64px}.mobile-action-label{font-size:11px;line-height:14px;display:inline}.touch-rotation-controls{display:flex}}@media (width<=360px){.top-hud.has-match .brand{letter-spacing:.04em}.room-toolbar{gap:0}.toolbar-separator{display:none}}@media (height<=560px) and (width>=601px){.app-shell{--gutter:8px}.bottom-hud{max-height:45dvh}.empty-board{display:none}}@media (prefers-reduced-motion:reduce){button,.tooltip{transition:none}.game-toast,.floating-points,.matched-edge,.hexagon-outline,.figure-feedback p,.score-feedback>span{animation:none}.score-highlight,.turn-highlight{opacity:.7;animation:none}.opening-sequence .opening-tiles svg{animation:none}}
