:root{--slate-950: #070b16;--slate-900: #0b1020;--slate-800: #121a2e;--slate-700: #1a2440;--slate-600: #26325a;--line: rgba(255, 255, 255, .08);--line-strong: rgba(255, 255, 255, .16);--ink: #eef2ff;--ink-2: #b9c3e6;--ink-3: #7d89b3;--card: #f8f9fe;--card-ink: #151a2e;--card-red: #d81f3b;--turn: #ffc531;--danger: #ff5d73;--ok: #2fd58a;--font: "Sora", system-ui, -apple-system, "Segoe UI", sans-serif;--r-sm: 10px;--r-md: 16px;--r-lg: 24px;--shadow: 0 14px 34px -18px rgba(0, 0, 0, .8), 0 2px 6px -2px rgba(0, 0, 0, .5);--ease: cubic-bezier(.2, .8, .2, 1);--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px);--card-w: clamp(50px, 13.5vw, 68px);--card-h: calc(var(--card-w) * 1.412);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);color:var(--ink);background:radial-gradient(120% 90% at 50% -10%,#1b2646 0%,var(--slate-900) 55%,var(--slate-950) 100%) fixed;-webkit-font-smoothing:antialiased;overscroll-behavior:none}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}::selection{background:#ffc53159}:focus-visible{outline:2px solid var(--turn);outline-offset:3px;border-radius:6px}button,input{font:inherit;color:inherit}h1,h2,h3{margin:0;letter-spacing:-.02em;text-wrap:balance}p{margin:0}.app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line-strong);background:var(--slate-700);border-radius:var(--r-md);padding:14px 20px;font-weight:600;font-size:1rem;cursor:pointer;transition:transform .16s var(--ease),background .16s var(--ease),border-color .16s var(--ease);min-height:48px}.btn:hover{background:var(--slate-600);border-color:#ffffff3d}.btn:active{transform:translateY(1px) scale(.99)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-primary{background:var(--ink);color:var(--card-ink);border-color:transparent}.btn-primary:hover{background:#fff}.btn-ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn-ghost:hover{background:#ffffff0f}.btn-sm{padding:8px 12px;min-height:44px;font-size:.875rem;border-radius:var(--r-sm)}.btn-big{padding:22px 24px;font-size:1.125rem;border-radius:var(--r-lg);text-align:left;display:grid;gap:4px}.btn-big small{font-weight:400;color:var(--ink-3);font-size:.875rem}.btn-primary.btn-big small{color:#4a5170}.field{display:grid;gap:6px}.field label{font-size:.8125rem;color:var(--ink-3);font-weight:500}.input{background:var(--slate-800);border:1px solid var(--line-strong);border-radius:var(--r-md);padding:13px 14px;min-height:48px;width:100%;caret-color:var(--turn)}.input::placeholder{color:var(--ink-3)}.input:focus{border-color:#fff6;outline:none}.input-code{text-transform:uppercase;letter-spacing:.28em;font-weight:700;font-size:1.25rem}.seg{display:inline-flex;background:var(--slate-800);border:1px solid var(--line);border-radius:var(--r-md);padding:4px;gap:4px}.seg button{border:0;background:transparent;border-radius:12px;padding:9px 16px;font-weight:600;cursor:pointer;color:var(--ink-2);min-height:40px}.seg button[aria-pressed=true]{background:var(--ink);color:var(--card-ink)}.screen{flex:1;width:100%;max-width:520px;margin:0 auto;padding:28px 20px calc(28px + var(--safe-b));display:flex;flex-direction:column;gap:22px}.screen-wide{max-width:1100px}.title{font-size:2.5rem;font-weight:800;line-height:1}.title small{display:block;font-size:1rem;font-weight:500;color:var(--ink-3);margin-top:10px;letter-spacing:0}.stack{display:grid;gap:12px}.row{display:flex;gap:10px;align-items:center}.row-between{justify-content:space-between}.muted{color:var(--ink-3)}.small{font-size:.875rem}.panel{background:#ffffff09;border:1px solid var(--line);border-radius:var(--r-lg);padding:16px}.divider{height:1px;background:var(--line)}.hero-board{aspect-ratio:1;width:min(100%,360px);margin:0 auto}.seat-row{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--r-md);background:#ffffff08;border:1px solid var(--line);min-height:56px}.seat-row.is-empty{border-style:dashed;color:var(--ink-3)}.dot{width:22px;height:22px;border-radius:50%;background:radial-gradient(circle at 32% 30%,var(--c-light) 0%,var(--c-base) 45%,var(--c-dark) 100%);box-shadow:0 4px 8px -3px #000000b3}.seat-name{font-weight:600;display:flex;flex-direction:column}.seat-name small{color:var(--ink-3);font-weight:400;font-size:.8125rem}.code-big{font-size:2.75rem;font-weight:800;letter-spacing:.22em;text-align:center;padding:8px 0 0 .22em}.game{flex:0 0 auto;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;gap:8px;padding:calc(10px + var(--safe-t)) calc(10px + var(--safe-r)) calc(10px + var(--safe-b)) calc(10px + var(--safe-l));height:100vh;height:100dvh;min-height:0;overflow:hidden;touch-action:manipulation;user-select:none;-webkit-user-select:none;box-shadow:inset 0 0 0 3px var(--turn);transition:box-shadow .3s var(--ease)}.game.my-turn{animation:turn-pulse 2.4s ease-in-out infinite}@keyframes turn-pulse{0%,to{box-shadow:inset 0 0 0 3px var(--turn)}50%{box-shadow:inset 0 0 0 5px var(--turn)}}.board-wrap{min-width:0;min-height:0;width:calc(100% + 16px);margin-inline:-8px;height:100%}.board{width:100%;height:100%;display:block;touch-action:manipulation}.seats-strip{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding:2px}.seats-strip::-webkit-scrollbar{display:none}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 9px 4px 5px;border-radius:999px;border:1px solid var(--line);background:#ffffff08;white-space:nowrap;font-size:.75rem;font-weight:600;flex:0 0 auto}.chip.is-turn{border-color:var(--c-base);background:color-mix(in srgb,var(--c-base) 18%,transparent)}.chip.is-off{opacity:.5}.chip .dot{width:13px;height:13px}.chip .count{color:var(--ink-3);font-weight:500;font-variant-numeric:tabular-nums}.chip .check{width:8px;height:8px;border-radius:50%;background:var(--ok)}.hint{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 4px;font-size:.9375rem;color:var(--ink-2);text-wrap:pretty}.hint strong{color:var(--ink)}.hand{display:flex;justify-content:safe center;align-items:flex-end;gap:6px;padding:22px 12px 4px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none}.hand::-webkit-scrollbar{display:none}.card-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;padding:0;margin:0;flex:0 0 auto;scroll-snap-align:center;cursor:pointer;transition:transform .18s var(--ease),opacity .18s var(--ease),filter .18s var(--ease);transform-origin:bottom center;border-radius:12px}@media (hover: hover){.card-btn:hover:not(:disabled){transform:translateY(-6px);z-index:2;position:relative}}.card-btn:active:not(:disabled){transform:translateY(-6px) scale(.97)}.card-btn.is-selected{transform:translateY(-18px) scale(1.06);z-index:3;position:relative}.card-btn.is-dim{opacity:.4;filter:saturate(.4)}.card-btn:disabled{cursor:not-allowed}.face{width:var(--card-w);height:var(--card-h);border-radius:12px;background:var(--card);color:var(--card-ink);box-shadow:var(--shadow);position:relative;display:grid;place-items:center;font-weight:800;-webkit-user-select:none;user-select:none}.face.is-red{color:var(--card-red)}.face .corner{position:absolute;top:7px;left:8px;font-size:calc(var(--card-w) * .2);line-height:1;display:grid;gap:1px;justify-items:center}.face .corner small{font-size:calc(var(--card-w) * .17)}.face .corner.bottom{top:auto;left:auto;right:8px;bottom:7px;transform:rotate(180deg)}.face .pip{font-size:calc(var(--card-w) * .47);line-height:1}.face.is-joker .pip{font-size:calc(var(--card-w) * .26);font-weight:800;letter-spacing:.08em;padding:4px 8px;border-radius:8px;background:var(--card-ink);color:var(--card)}.face .badge{position:absolute;bottom:6px;left:50%;transform:translate(-50%);font-size:.6875rem;font-weight:700;color:var(--card);background:var(--card-ink);border-radius:999px;padding:2px 7px}.jokers{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;padding:0 8px}.jokers button{border:1px solid var(--line-strong);background:var(--slate-800);border-radius:999px;padding:6px 14px;font-weight:700;cursor:pointer;min-width:44px;min-height:44px}.jokers button[aria-pressed=true]{background:var(--ink);color:var(--card-ink)}.jokers button:disabled{opacity:.35;cursor:not-allowed}.dimple{fill:#090d1a;stroke:#ffffff17;stroke-width:1.5}.dimple-start{stroke:var(--c-base);stroke-width:3}.dimple-home{fill:color-mix(in srgb,var(--c-base) 22%,#090d1a);stroke:color-mix(in srgb,var(--c-base) 45%,transparent)}.dimple-kennel{stroke:color-mix(in srgb,var(--c-base) 40%,transparent);stroke-dasharray:3 3}.marble{cursor:default}.marble.is-selectable{cursor:pointer}.marble.is-selectable .halo{animation:halo 1.2s ease-in-out infinite}.marble.is-selected .halo{animation:none;opacity:1;stroke-width:4}.halo{fill:none;stroke:#fff;stroke-width:2.5;opacity:0}@keyframes halo{0%,to{opacity:.35}50%{opacity:1}}.target{cursor:pointer}.target-ring{fill:color-mix(in srgb,var(--turn) 30%,transparent);stroke:var(--turn);stroke-width:3;animation:ring 1s ease-in-out infinite}.target-label{fill:var(--ink);font-size:15px;font-weight:800;text-anchor:middle;dominant-baseline:central;pointer-events:none}@keyframes ring{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}.target-ring,.marble .halo{transform-box:fill-box;transform-origin:center}.center-name{fill:var(--ink);font-size:44px;font-weight:800;text-anchor:middle;letter-spacing:-.02em}.center-sub{fill:var(--ink-3);font-size:22px;font-weight:500;text-anchor:middle}.center-card{transform:translate(-40px,-70px)}.log-area{min-height:0;display:grid;gap:4px;padding:0 6px}.log-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;gap:8px;width:100%;min-height:34px;padding:4px 8px;border:0;border-radius:var(--r-sm);background:#ffffff08;color:var(--ink-2);font-size:.8125rem;text-align:left;cursor:pointer}.log-toggle .log-last{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.log-toggle .caret{color:var(--ink-3);transition:transform .18s var(--ease)}.log-toggle[aria-expanded=true] .caret{transform:rotate(180deg)}.log{display:none;max-height:30dvh;overflow:auto;gap:6px;padding:2px 8px 4px;font-size:.875rem;color:var(--ink-2)}.log.is-open{display:grid}.log li+li{color:var(--ink-3)}.log li{list-style:none;padding-left:0}.log ul{margin:0;padding:0}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px;background:#070b16db;z-index:20}.overlay-card{width:min(100%,420px);display:grid;gap:18px;text-align:center;padding:32px 24px;border-radius:var(--r-lg);background:var(--slate-800);border:1px solid var(--line-strong);box-shadow:var(--shadow)}.overlay-card h2{font-size:1.75rem}.toast{position:fixed;left:50%;bottom:calc(24px + var(--safe-b));transform:translate(-50%);background:var(--danger);color:#1a0308;padding:12px 18px;border-radius:999px;font-weight:600;z-index:30;box-shadow:var(--shadow);max-width:min(92vw,480px);text-align:center}.status{font-size:.8125rem;color:var(--ink-3)}.status.is-off{color:var(--danger)}@media (min-width: 900px){.game{grid-template-columns:minmax(0,1fr) 360px;grid-template-rows:auto 1fr auto;grid-template-areas:"board seats" "board log" "board hand";gap:16px;padding:20px}.game>.seats-strip{grid-area:seats;flex-wrap:wrap}.game>.board-wrap{grid-area:board;width:100%;margin-inline:0}.game>.hand-area{grid-area:hand}.game>.log-area{grid-area:log;overflow:auto}.log-toggle{display:none}.log{display:grid;max-height:none}.hand{justify-content:flex-start;flex-wrap:wrap;gap:8px}.card-btn{margin:0}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
