:root{--ground: #1c1f21;--panel: #282c2f;--panel-2: #31363a;--panel-inset: #23272a;--hairline: #3a4045;--hairline-strong: #4a5157;--amber: #f2a81d;--amber-dim: #6b4c11;--red: #d8402f;--red-dim: #5c211a;--red-text: #f0918a;--green: #4fa96a;--green-dim: #234a30;--green-text: #86d29b;--blue: #4a8fc7;--blue-dim: #1e3b52;--blue-text: #8dc0e6;--ink: #e8e4dc;--ink-2: rgba(232, 228, 220, .62);--ink-3: rgba(232, 228, 220, .38);--on-amber: #241a04;--on-signal: #ffffff;--felt: #16301f;--felt-line: #23482f;--felt-pool: #0f5132;--pool-guide-fill: rgba(255, 255, 255, .1);--pool-guide-line: rgba(255, 255, 255, .5);--pool-aim-line: rgba(255, 255, 255, .78);--rail: #5a3a22;--rail-light: #7a5230;--rail-dark: #3d2616;--felt-edge: #0a3a24;--pocket: #07090c;--diamond: #e6d8bd;--cue-shaft: #d7b183;--cue-shaft-light: #efd6b4;--cue-butt: #4a2f1c;--cue-ferrule: #f4f1ea;--cue-tip: #2f6ea8;--ball-shine: rgba(255, 255, 255, .42);--face: #f4f1ea;--face-ink: #1c1f21;--face-edge: #c4c0b6;--hull: #8b939f;--hull-edge: #5d646e;--hull-tower: #6d7681;--hull-mast: #565e68;--hull-turret: #4d545d;--hull-deck: #b9c0c9;--hull-selected-tower: #b4820f;--wreck: #4a3330;--wreck-dark: #3a2a28;--wreck-deck: #6b4a45;--ball-edge: rgba(0, 0, 0, .35);--play-red: #d2352c;--play-yellow: #e8b21b;--play-green: #2e9d55;--play-blue: #2f76c4;--play-purple: #7a4bab;--play-orange: #dd7a1e;--play-maroon: #96382c;--play-black: #21252a;--play-yellow-ink: #b98d09;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--r-sm: 6px;--r-md: 10px;--r-lg: 16px;--r-pill: 999px;--tap: 44px;--dur-fast: .12s;--dur-base: .2s;--dur-slow: .4s;--dur-celebrate: .9s;--ease-out: cubic-bezier(.2, 0, 0, 1);--ease-in-out: cubic-bezier(.45, 0, .2, 1);--ease-gravity: cubic-bezier(.45, 0, .85, .55);--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, sans-serif;--font-stencil: "Arial Narrow", "Roboto Condensed", "Helvetica Neue", var(--font-body);--font-mono: ui-monospace, "SF Mono", "Cascadia Mono", "Roboto Mono", Menlo, Consolas, monospace;--track-stencil: .1em;--track-plate: .16em;--inset: inset 0 1px 0 rgba(255, 255, 255, .04), inset 0 -1px 0 rgba(0, 0, 0, .35);--lift: 0 2px 6px rgba(0, 0, 0, .45);--lift-lg: 0 8px 20px rgba(0, 0, 0, .55);color-scheme:dark}@media (prefers-reduced-motion: reduce){:root{--dur-fast: 1ms;--dur-base: 1ms;--dur-slow: 1ms;--dur-celebrate: 1ms}}:root[data-motion=reduced]{--dur-fast: 1ms;--dur-base: 1ms;--dur-slow: 1ms;--dur-celebrate: 1ms}@media (prefers-reduced-motion: reduce){.emphasis,.fx-shake,.fx-pulse,.fx-particles{animation:none!important}}:root[data-motion=reduced] .emphasis,:root[data-motion=reduced] .fx-shake,:root[data-motion=reduced] .fx-pulse,:root[data-motion=reduced] .fx-particles{animation:none!important}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--ground);color:var(--ink);font:16px/1.45 var(--font-body);-webkit-text-size-adjust:100%;overscroll-behavior-y:contain}button,input,select{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--amber);outline-offset:2px;border-radius:var(--r-sm)}.num,.turn-code,.score-value,.score-potential,.roomcode-hero .code,.badge,.gin-tag,.pool-power-label,.yz-player strong,.count-badge,.dots-score strong,.score-table td,.score-table th,.pool-chip,.opponent .ocount strong{font-variant-numeric:tabular-nums}.num,.score-value,.score-potential,.count-badge,.pool-chip,.yz-player strong,.dots-score strong,.score-table td,.opponent .ocount strong,.die-value{font-family:var(--font-mono)}.app{min-height:100%;display:flex;flex-direction:column;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.screen{flex:1;width:100%;max-width:560px;margin:0 auto;padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3)}.topbar{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--tap)}.topbar h1{flex:1;margin:0;font-family:var(--font-stencil);font-size:19px;font-weight:700;text-transform:uppercase;letter-spacing:var(--track-stencil)}.stack{display:flex;flex-direction:column;gap:var(--sp-2)}.row{display:flex;gap:var(--sp-2);align-items:center}.row-wrap{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center}.spacer{flex:1}.muted{color:var(--ink-2);font-size:14px}.center{text-align:center}.label{font-family:var(--font-stencil);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:var(--track-plate);color:var(--ink-2);margin:0}.btn{min-height:var(--tap);padding:0 var(--sp-4);border-radius:var(--r-md);border:1px solid var(--hairline-strong);background:var(--panel-2);color:var(--ink);font-family:var(--font-stencil);font-size:15px;font-weight:700;text-transform:uppercase;letter-spacing:var(--track-stencil);cursor:pointer;box-shadow:var(--inset);transition:transform var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out);touch-action:manipulation}.btn:active{transform:translateY(1px);background:var(--panel)}.btn:disabled{opacity:.42;cursor:not-allowed}.btn-primary{background:var(--amber);border-color:var(--amber);color:var(--on-amber)}.btn-danger{background:transparent;border-color:var(--red);color:var(--red-text)}.btn-ghost{background:transparent;border-color:var(--hairline)}.btn-block{width:100%}.btn-sm{min-height:36px;padding:0 var(--sp-3);font-size:13px;border-radius:var(--r-sm)}.btn-icon{min-width:var(--tap);padding:0 var(--sp-3)}.field{display:flex;flex-direction:column;gap:var(--sp-1)}.field label{font-family:var(--font-stencil);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:var(--track-stencil);color:var(--ink-2)}.input{min-height:var(--tap);padding:0 var(--sp-3);border-radius:var(--r-md);border:1px solid var(--hairline);background:var(--panel-inset);color:var(--ink);width:100%;box-shadow:var(--inset)}.input-code{font-family:var(--font-stencil);font-size:30px;font-weight:700;letter-spacing:var(--track-plate);text-align:center;text-transform:uppercase;min-height:64px;font-variant-ligatures:none}.card-panel{background:var(--panel);border:1px solid var(--hairline);border-radius:var(--r-md);padding:var(--sp-3);box-shadow:var(--inset)}.toggle{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--tap);padding:var(--sp-1) var(--sp-3);border-radius:var(--r-md);background:var(--panel);border:1px solid var(--hairline);cursor:pointer}.toggle input{width:22px;height:22px;accent-color:var(--amber);flex:none}.toggle .toggle-body{flex:1}.toggle .toggle-name{font-weight:600;font-size:15px}.toggle .toggle-hint{color:var(--ink-2);font-size:12.5px;line-height:1.35}.error{background:var(--red-dim);border:1px solid var(--red);color:var(--ink);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);font-size:14px}.notice{background:var(--panel);border:1px solid var(--hairline);border-left:3px solid var(--blue);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);font-size:13.5px;color:var(--ink-2)}.game-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3)}.game-tile{min-height:132px;border-radius:var(--r-md);border:1px solid var(--hairline);background:var(--panel);color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);cursor:pointer;padding:var(--sp-3);text-align:center;box-shadow:var(--inset);transition:border-color var(--dur-fast) var(--ease-out)}.game-tile:active{border-color:var(--amber)}.game-tile[disabled]{opacity:.38;cursor:default}.game-tile .tile-name{font-family:var(--font-stencil);font-weight:700;font-size:16px;text-transform:uppercase;letter-spacing:var(--track-stencil)}.game-tile .tile-sub{font-size:11.5px;color:var(--ink-2);line-height:1.35}.turn-list{display:flex;flex-direction:column;gap:var(--sp-2)}.turn-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--r-md);border:1px solid var(--hairline);background:var(--panel);color:var(--ink);width:100%;text-align:left;cursor:pointer;min-height:var(--tap);box-shadow:var(--inset)}.turn-item.is-your-turn{border-left:4px solid var(--amber)}.turn-code{font-family:var(--font-stencil);font-weight:700;letter-spacing:var(--track-plate);font-size:18px;background:var(--panel-inset);border:1px solid var(--hairline);padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm)}.room-item{display:flex;align-items:center;gap:var(--sp-3);width:100%;text-align:left;padding:var(--sp-3);border-radius:var(--r-md);border:1px solid var(--hairline);background:var(--panel);color:var(--ink);cursor:pointer;min-height:var(--tap);box-shadow:var(--inset)}.roomcode-hero{position:relative;text-align:center;padding:var(--sp-4) var(--sp-3);border-radius:var(--r-md);background:linear-gradient(180deg,var(--panel-2),var(--panel-inset));border:1px solid var(--hairline-strong);box-shadow:inset 0 1px #ffffff12,inset 0 -2px #0006,var(--lift)}.roomcode-hero:before,.roomcode-hero:after{content:"";position:absolute;top:var(--sp-2);width:6px;height:6px;border-radius:50%;background:var(--panel-inset);box-shadow:inset 0 1px 1px #000c,0 1px #ffffff0f}.roomcode-hero:before{left:var(--sp-3)}.roomcode-hero:after{right:var(--sp-3)}.roomcode-hero .code{font-family:var(--font-stencil);font-size:clamp(46px,16vw,72px);font-weight:700;letter-spacing:var(--track-plate);line-height:1;margin:var(--sp-1) 0;text-indent:var(--track-plate);color:var(--ink);text-shadow:0 1px 0 rgba(255,255,255,.09),0 -1px 1px rgba(0,0,0,.7)}.player-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);background:var(--panel);border:1px solid var(--hairline);border-left:3px solid var(--hairline-strong);min-height:var(--tap)}.player-row .pname{font-weight:600;flex:1}.badge{font-family:var(--font-stencil);font-size:11px;text-transform:uppercase;letter-spacing:var(--track-stencil);padding:3px 7px;border-radius:var(--r-sm);background:var(--panel-2);border:1px solid var(--hairline-strong);color:var(--ink-2);font-weight:700}.badge-host{background:var(--amber);border-color:var(--amber);color:var(--on-amber)}.badge-you{background:var(--blue-dim);border-color:var(--blue);color:var(--blue-text)}.badge-bot{background:var(--panel-inset)}.badge-idle{background:var(--red-dim);border-color:var(--red);color:var(--red-text)}.dot{width:8px;height:8px;border-radius:50%;flex:none}.dot-on{background:var(--green);box-shadow:0 0 6px var(--green)}.dot-off{background:var(--hairline-strong)}.table{display:flex;flex-direction:column;gap:var(--sp-2);flex:1;min-height:0}.opponents{display:flex;gap:var(--sp-2);overflow-x:auto;padding-bottom:2px}.opponent{flex:none;min-width:84px;padding:var(--sp-2);border-radius:var(--r-sm);background:var(--panel);border:1px solid var(--hairline);border-left:3px solid var(--hairline-strong);display:flex;flex-direction:column;gap:3px}.opponent.is-current{border-left-color:var(--amber)}.opponent .oname{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px}.opponent .ocount{font-size:12px;color:var(--ink-2)}.opponent .ocount strong{color:var(--ink);font-size:15px}.opponent.flash-skip{animation:skip-flash var(--dur-slow) var(--ease-out)}@keyframes skip-flash{30%{opacity:.3;border-left-color:var(--red)}}.opponent.caught{animation:caught-flash var(--dur-slow) var(--ease-out)}@keyframes caught-flash{0%,to{background:var(--panel)}40%{background:var(--red-dim);border-left-color:var(--red)}}.opponent.called-uno{animation:counter-bump var(--dur-slow) var(--ease-out)}.colorbar{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:46px;border-radius:var(--r-sm);font-family:var(--font-stencil);font-weight:700;font-size:15px;letter-spacing:var(--track-plate);text-transform:uppercase;border:2px solid rgba(255,255,255,.2);transition:background var(--dur-slow) var(--ease-in-out)}.colorbar.red{background:var(--play-red);color:var(--on-signal)}.colorbar.yellow{background:var(--play-yellow);color:var(--face-ink)}.colorbar.green{background:var(--play-green);color:var(--on-signal)}.colorbar.blue{background:var(--play-blue);color:var(--on-signal)}.colorbar.sweeping{animation:colour-sweep var(--dur-slow) var(--ease-in-out)}@keyframes colour-sweep{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}.colorbar .pending{background:#00000057;padding:3px var(--sp-2);border-radius:var(--r-pill);letter-spacing:.04em;font-variant-numeric:tabular-nums}.colorbar .pending.bump{animation:counter-bump var(--dur-base) var(--ease-out)}@keyframes counter-bump{50%{transform:scale(1.35)}}.felt{background:var(--felt);border:1px solid var(--felt-line);border-radius:var(--r-md);padding:var(--sp-3);display:flex;align-items:center;justify-content:center;gap:var(--sp-5)}.pile{display:flex;flex-direction:column;align-items:center;gap:var(--sp-1);position:relative}.pile-label{font-family:var(--font-stencil);font-size:11px;color:var(--ink-2);text-transform:uppercase;letter-spacing:var(--track-stencil)}.turn-banner{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--tap);border-radius:var(--r-sm);font-family:var(--font-stencil);font-weight:700;text-transform:uppercase;letter-spacing:var(--track-stencil);background:var(--panel);border:1px solid var(--hairline);color:var(--ink-2);padding:0 var(--sp-3);text-align:center}.turn-banner.mine{background:var(--amber);color:var(--on-amber);border-color:var(--amber)}.hand-area{margin-top:auto;display:flex;flex-direction:column;gap:var(--sp-2)}.hand{display:flex;gap:var(--sp-2);overflow-x:auto;overflow-y:hidden;padding:var(--sp-4) var(--sp-1) var(--sp-2);scroll-padding:var(--sp-3);-webkit-overflow-scrolling:touch}.hand::-webkit-scrollbar{height:5px}.hand::-webkit-scrollbar-thumb{background:var(--hairline-strong);border-radius:3px}.hand-slot{flex:none;background:none;border:0;padding:0;cursor:pointer;transition:transform var(--dur-base) var(--ease-out),opacity var(--dur-base) var(--ease-out);border-radius:var(--r-sm)}.hand-slot.playable{transform:translateY(-12px)}.hand-slot.playable:active{transform:translateY(-16px) scale(1.03)}.hand-slot.dimmed{opacity:.42;cursor:default;filter:saturate(.55)}.actions{display:flex;gap:var(--sp-2)}.actions .btn{flex:1}.log{font-size:12.5px;color:var(--ink-2);background:var(--panel-inset);border:1px solid var(--hairline);border-radius:var(--r-sm);padding:var(--sp-1) var(--sp-2);white-space:nowrap;overflow-x:auto;min-height:34px;display:flex;align-items:center}.log .sep{opacity:.45;margin:0 var(--sp-1)}.log .me{color:var(--ink);font-weight:600}.uno-card{position:relative;width:var(--w, 72px);height:calc(var(--w, 72px) * 1.5);border-radius:calc(var(--w, 72px) * .11);background:var(--card-bg, var(--panel));border:calc(var(--w, 72px) * .055) solid var(--face);box-shadow:var(--lift);overflow:hidden;flex:none;display:block}.uno-card .oval{position:absolute;top:8%;right:8%;bottom:8%;left:8%;background:var(--face);border-radius:50%;transform:rotate(-24deg) scale(1.06,.82)}.uno-card .pip{position:absolute;font-weight:800;color:var(--face);font-size:calc(var(--w, 72px) * .2);line-height:1;text-shadow:0 1px 1px rgba(0,0,0,.4)}.uno-card .pip-tl{top:4%;left:7%}.uno-card .pip-br{bottom:4%;right:7%;transform:rotate(180deg)}.uno-card .face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:calc(var(--w, 72px) * .58);line-height:1;color:var(--card-ink, var(--face-ink));transform:rotate(-8deg)}.uno-card .face.small{font-size:calc(var(--w, 72px) * .36)}.uno-card .face svg{width:52%;height:52%;display:block}.uno-card.red{--card-bg: var(--play-red);--card-ink: var(--play-red)}.uno-card.yellow{--card-bg: var(--play-yellow);--card-ink: var(--play-yellow-ink)}.uno-card.green{--card-bg: var(--play-green);--card-ink: var(--play-green)}.uno-card.blue{--card-bg: var(--play-blue);--card-ink: var(--play-blue)}.uno-card.wild{--card-bg: var(--play-black);--card-ink: var(--play-black)}.uno-card.back{background:var(--play-black)}.uno-card.back .oval{background:var(--play-red)}.uno-card.back .brand{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;transform:rotate(-24deg);color:var(--face);font-family:var(--font-stencil);font-weight:700;font-size:calc(var(--w, 72px) * .2);letter-spacing:var(--track-stencil);text-align:center}.uno-card.empty{background:transparent;border-style:dashed;border-color:var(--hairline-strong);box-shadow:none}.wild-quads{position:absolute;top:8%;right:8%;bottom:8%;left:8%;border-radius:50%;overflow:hidden;transform:rotate(-24deg) scale(1.06,.82)}.wild-quads span{position:absolute;width:50%;height:50%}.wild-quads .q1{top:0;left:0;background:var(--play-blue)}.wild-quads .q2{top:0;right:0;background:var(--play-red)}.wild-quads .q3{bottom:0;left:0;background:var(--play-yellow)}.wild-quads .q4{bottom:0;right:0;background:var(--play-green)}.count-badge{position:absolute;right:-6px;bottom:-6px;background:var(--panel-2);border:2px solid var(--ground);border-radius:var(--r-pill);min-width:26px;height:26px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;padding:0 var(--sp-1)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--ground) 96%,transparent);display:flex;align-items:center;justify-content:center;padding:var(--sp-5);z-index:50}.overlay-panel{background:var(--panel);border:1px solid var(--hairline-strong);border-radius:var(--r-lg);padding:var(--sp-5);width:100%;max-width:420px;text-align:center;box-shadow:var(--lift-lg)}.overlay-panel h2{margin:0 0 var(--sp-1);font-family:var(--font-stencil);font-size:22px;text-transform:uppercase;letter-spacing:var(--track-stencil)}.color-picker{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin-top:var(--sp-4)}.color-choice{min-height:92px;border-radius:var(--r-md);border:3px solid rgba(255,255,255,.18);font-family:var(--font-stencil);font-weight:700;font-size:16px;letter-spacing:var(--track-stencil);text-transform:uppercase;cursor:pointer}.color-choice.red{background:var(--play-red);color:var(--on-signal)}.color-choice.yellow{background:var(--play-yellow);color:var(--face-ink)}.color-choice.green{background:var(--play-green);color:var(--on-signal)}.color-choice.blue{background:var(--play-blue);color:var(--on-signal)}.handoff .overlay-panel{padding:var(--sp-6) var(--sp-5)}.handoff .who{font-family:var(--font-stencil);font-size:30px;font-weight:700;text-transform:uppercase;letter-spacing:var(--track-stencil);margin:var(--sp-2) 0 var(--sp-1)}.conn{display:inline-flex;align-items:center;gap:var(--sp-1);font-family:var(--font-stencil);font-size:11px;text-transform:uppercase;letter-spacing:var(--track-stencil);color:var(--ink-2);padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm);background:var(--panel);border:1px solid var(--hairline);white-space:nowrap}.seat-switcher{display:flex;gap:var(--sp-2);overflow-x:auto}.seat-chip{flex:none;padding:var(--sp-1) var(--sp-3);border-radius:var(--r-sm);border:1px solid var(--hairline);background:var(--panel);color:var(--ink);font-size:13px;font-weight:600;cursor:pointer;min-height:38px;display:flex;align-items:center;gap:var(--sp-1)}.seat-chip.active{border-color:var(--amber)}.seat-chip .turn-mark{font-family:var(--font-stencil);color:var(--amber);font-size:10px;font-weight:700;letter-spacing:var(--track-stencil)}.winner-name{font-family:var(--font-stencil);font-size:30px;font-weight:700;text-transform:uppercase;letter-spacing:var(--track-stencil);margin:var(--sp-2) 0}.skeleton{color:var(--ink-2);text-align:center;padding:var(--sp-6) 0}.catchup-bar{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);background:var(--blue-dim);border:1px solid var(--blue);color:var(--blue-text);font-family:var(--font-stencil);font-size:12px;text-transform:uppercase;letter-spacing:var(--track-stencil)}.c4-player{display:flex;align-items:center;gap:var(--sp-1);flex:1;padding:var(--sp-2);border-radius:var(--r-sm);background:var(--panel);border:1px solid var(--hairline);border-left:3px solid var(--hairline-strong);min-width:0}.c4-player.is-current{border-left-color:var(--amber)}.c4-pname{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.c4-chip{width:16px;height:16px;border-radius:50%;flex:none}.c4-chip.red{background:var(--play-red)}.c4-chip.yellow{background:var(--play-yellow)}.c4-board{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--sp-1);background:var(--play-blue);border:1px solid var(--hairline-strong);border-radius:var(--r-md);padding:var(--sp-1);width:100%;box-shadow:var(--inset)}.c4-col{display:flex;flex-direction:column;gap:var(--sp-1);background:transparent;border:0;padding:3px 1px;border-radius:var(--r-sm);cursor:default;min-width:0}.c4-col.playable{cursor:pointer}.c4-col.playable:hover,.c4-col.playable:active{background:#ffffff21}.c4-col.playable:focus-visible{outline:3px solid var(--amber);outline-offset:-2px}.c4-hole{position:relative;width:100%;aspect-ratio:1 / 1;border-radius:50%;background:var(--ground);box-shadow:inset 0 2px 4px #0000008c;display:block}.c4-disc{position:absolute;top:6%;right:6%;bottom:6%;left:6%;border-radius:50%;box-shadow:inset 0 -2px 4px #0000004d}.c4-disc.red{background:var(--play-red)}.c4-disc.yellow{background:var(--play-yellow)}.c4-disc.ghost{opacity:.28}.c4-disc.winning{outline:3px solid var(--face);outline-offset:-2px;animation:c4-win var(--dur-slow) var(--ease-out)}@keyframes c4-win{50%{outline-color:var(--amber);transform:scale(1.08)}}.c4-disc.dropped{animation:c4-drop var(--dur-slow) var(--ease-gravity)}@keyframes c4-drop{0%{transform:translateY(-620%)}78%{transform:translateY(0)}88%{transform:translateY(-9%) scaleY(.94)}to{transform:translateY(0) scaleY(1)}}.c4-board.is-final{max-width:260px;margin:0 auto}.uttt-big{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-1);background:var(--hairline);padding:var(--sp-1);border-radius:var(--r-md);width:100%;max-width:420px;margin:0 auto}.uttt-board{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--panel-2);border-radius:var(--r-sm);padding:3px;border:2px solid transparent;transition:opacity var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out),background var(--dur-base) var(--ease-out)}.uttt-board.open{border-color:var(--amber);background:var(--amber-dim)}.uttt-board.closed{opacity:.36}.uttt-board.settled{opacity:.9}.uttt-board.big-win{border-color:var(--face)}.uttt-cell{aspect-ratio:1 / 1;background:var(--ground);border:0;border-radius:3px;display:flex;align-items:center;justify-content:center;padding:0;cursor:default;min-width:0}.uttt-cell.playable{cursor:pointer;background:var(--panel-inset)}.uttt-cell.playable:hover,.uttt-cell.playable:active{background:var(--panel-2)}.uttt-cell.last{box-shadow:inset 0 0 0 2px var(--amber)}.uttt-mark{font-size:clamp(11px,3.2vw,17px);font-weight:800;line-height:1}.uttt-mark.small{font-size:15px}.uttt-mark.huge{font-size:clamp(40px,13vw,62px)}.uttt-mark.m-X{color:var(--red-text)}.uttt-mark.m-O{color:var(--blue-text)}.uttt-mark.placed{animation:mark-in var(--dur-fast) var(--ease-out)}@keyframes mark-in{0%{transform:scale(.8);opacity:0}70%{transform:scale(1.12);opacity:1}to{transform:scale(1)}}.uttt-claim{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ground) 84%,transparent);border-radius:var(--r-sm);pointer-events:none}.uttt-claim.claiming{animation:claim-in var(--dur-slow) var(--ease-out)}.uttt-claim.drawn{color:var(--ink-2);font-size:34px;font-weight:800}@keyframes claim-in{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.dots-scores{display:flex;gap:var(--sp-2);flex-wrap:wrap}.dots-score{flex:1 1 40%;min-width:0;display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);border-radius:var(--r-sm);background:var(--panel);border:1px solid var(--hairline);border-left:5px solid var(--seat, var(--hairline-strong))}.dots-score.is-current{border-color:var(--amber);border-left-color:var(--seat)}.dots-score strong{font-size:17px}.dots-score.red{--seat: var(--play-red)}.dots-score.blue{--seat: var(--play-blue)}.dots-score.green{--seat: var(--play-green)}.dots-score.yellow{--seat: var(--play-yellow)}.dots-swatch{width:14px;height:14px;border-radius:3px;flex:none}.dots-swatch.red{background:var(--play-red)}.dots-swatch.blue{background:var(--play-blue)}.dots-swatch.green{background:var(--play-green)}.dots-swatch.yellow{background:var(--play-yellow)}.dots-wrap{padding:var(--sp-4);background:var(--panel);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--inset)}.dots-grid{position:relative;width:100%;aspect-ratio:1 / 1}.dots-dot{position:absolute;width:9px;height:9px;border-radius:50%;background:var(--hairline-strong);transform:translate(-50%,-50%);pointer-events:none}.dots-edge{position:absolute;transform:translate(-50%,-50%);background:transparent;border:0;padding:0;cursor:default;touch-action:manipulation;border-radius:var(--r-sm)}.dots-edge.h{height:var(--tap)}.dots-edge.v{width:var(--tap)}.dots-edge.open{cursor:pointer}.dots-edge:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:3px;background:var(--hairline);transition:background var(--dur-fast) var(--ease-out)}.dots-edge.h:after{width:100%;height:4px}.dots-edge.v:after{width:4px;height:100%}.dots-edge.open:hover:after,.dots-edge.open:active:after{background:var(--amber)}.dots-edge.open:focus-visible{outline:3px solid var(--amber)}.dots-edge.drawn:after{background:var(--ink-2)}.dots-edge.drawn.red:after{background:var(--play-red)}.dots-edge.drawn.blue:after{background:var(--play-blue)}.dots-edge.drawn.green:after{background:var(--play-green)}.dots-edge.drawn.yellow:after{background:var(--play-yellow)}.dots-edge.last:after{box-shadow:0 0 0 2px #ffffff80}.dots-edge.just-drawn.h:after{animation:edge-draw-h var(--dur-fast) var(--ease-out)}.dots-edge.just-drawn.v:after{animation:edge-draw-v var(--dur-fast) var(--ease-out)}@keyframes edge-draw-h{0%{transform:translate(-50%,-50%) scaleX(0)}}@keyframes edge-draw-v{0%{transform:translate(-50%,-50%) scaleY(0)}}.dots-box{position:absolute;transform:translate(-50%,-50%);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:var(--on-signal);pointer-events:none}.dots-box.red{background:color-mix(in srgb,var(--play-red) 85%,transparent)}.dots-box.blue{background:color-mix(in srgb,var(--play-blue) 85%,transparent)}.dots-box.green{background:color-mix(in srgb,var(--play-green) 85%,transparent)}.dots-box.yellow{background:color-mix(in srgb,var(--play-yellow) 85%,transparent);color:var(--face-ink)}.dots-box.just-closed{animation:box-fill var(--dur-base) var(--ease-out) backwards}@keyframes box-fill{0%{transform:translate(-50%,-50%) scale(.2);opacity:0}}.bs-board{display:flex;flex-direction:column;gap:var(--sp-1)}.bs-label{font-family:var(--font-stencil);font-size:11px;text-transform:uppercase;letter-spacing:var(--track-plate);color:var(--ink-2);font-weight:700}.bs-grid{position:relative;display:grid;grid-template-columns:repeat(10,1fr);gap:2px;background:var(--blue-dim);border:1px solid var(--hairline-strong);border-radius:var(--r-sm);padding:var(--sp-1);width:100%}.bs-board.small .bs-grid{max-width:190px}.bs-grid.shake{animation:hit-shake var(--dur-fast) var(--ease-in-out)}@keyframes hit-shake{25%{transform:translate(-3px)}75%{transform:translate(3px)}}.bs-cell{position:relative;aspect-ratio:1 / 1;background:var(--blue-dim);border:0;border-radius:2px;padding:0;display:flex;align-items:center;justify-content:center;min-width:0;cursor:default;touch-action:manipulation}button.bs-cell{cursor:pointer}button.bs-cell:hover{background:var(--blue)}.bs-cell.armed{background:var(--amber);box-shadow:inset 0 0 0 2px var(--face)}.bs-ship{position:absolute;top:1px;right:1px;bottom:1px;left:1px;border-radius:2px;background:var(--hairline-strong)}.bs-ship.selected{background:var(--amber)}.bs-ship.sunk{background:var(--red-dim)}.bs-mark{position:relative;font-weight:800;font-size:11px;line-height:1}.bs-mark.hit{color:var(--red-text)}.bs-mark.miss{color:var(--blue-text);font-size:15px}.bs-mark.sunk{color:var(--on-signal);background:var(--red);border-radius:2px;padding:1px 2px}.bs-splash{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:2px solid var(--face);animation:splash var(--dur-slow) var(--ease-out) forwards;pointer-events:none}@keyframes splash{0%{transform:scale(.2);opacity:.9}to{transform:scale(2.2);opacity:0}}.bs-impact{position:absolute;top:-40%;right:-40%;bottom:-40%;left:-40%;border-radius:50%;background:radial-gradient(circle,var(--amber),transparent 70%);animation:impact var(--dur-base) var(--ease-out) forwards;pointer-events:none}@keyframes impact{0%{transform:scale(.3);opacity:1}to{transform:scale(1.6);opacity:0}}.bs-sink{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:3}.bs-sink-flash{position:absolute;top:-60%;right:-60%;bottom:-60%;left:-60%;border-radius:50%;background:radial-gradient(circle,var(--face),var(--amber) 40%,transparent 72%);animation:sink-flash var(--dur-slow) var(--ease-out) forwards}@keyframes sink-flash{0%{transform:scale(.2);opacity:1}to{transform:scale(2);opacity:0}}.bs-debris{position:absolute;left:50%;top:50%;width:34%;height:34%;border-radius:2px;background:var(--hairline-strong);animation:debris var(--dur-celebrate) var(--ease-out) forwards}@keyframes debris{0%{transform:translate(-50%,-50%) rotate(0);opacity:1}to{transform:translate(calc(-50% + var(--dx, 0px)),calc(-50% + var(--dy, 0px))) rotate(var(--spin, 180deg));opacity:0}}.bs-smoke{position:absolute;left:50%;top:50%;width:60%;height:60%;border-radius:50%;background:radial-gradient(circle,rgba(150,150,150,.5),transparent 70%);animation:smoke var(--dur-celebrate) var(--ease-out) forwards}@keyframes smoke{0%{transform:translate(-50%,-50%) scale(.4);opacity:.8}to{transform:translate(-50%,-170%) scale(2.4);opacity:0}}.bs-fleet{display:flex;gap:var(--sp-1);flex-wrap:wrap}.bs-shipbtn{flex:1 1 30%;min-height:46px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm);border:1px solid var(--hairline);background:var(--panel);color:var(--ink);cursor:pointer}.bs-shipbtn.selected{border-color:var(--amber)}.bs-shipname{font-size:13px;font-weight:700}.bs-ships-left{display:flex;gap:var(--sp-1);flex-wrap:wrap}.bs-tag{font-family:var(--font-stencil);font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:var(--track-stencil);padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm);background:var(--panel-2);border:1px solid var(--hairline)}.bs-tag.sunk{text-decoration:line-through;opacity:.45;border-color:var(--red)}.yz-head{display:flex;align-items:center;gap:var(--sp-2)}.dice-tray{display:flex;gap:var(--sp-2);justify-content:center;padding:var(--sp-1) 0}.die{width:100%;max-width:58px;aspect-ratio:1 / 1;border-radius:var(--r-sm);background:var(--face);border:3px solid transparent;padding:var(--sp-1);cursor:pointer;touch-action:manipulation;transition:transform var(--dur-base) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.die[aria-disabled=true]{cursor:default}.die.blank{background:var(--panel-2)}.die.held{border-color:var(--amber);transform:translateY(-9px);box-shadow:var(--lift)}.die.tumbling{animation:die-tumble .7s var(--ease-out) backwards}@keyframes die-tumble{0%{transform:translateY(-40%) rotate(-140deg) scale(.85)}55%{transform:translateY(6%) rotate(18deg) scale(1.04)}75%{transform:translateY(-6%) rotate(-6deg)}to{transform:translateY(0) rotate(0) scale(1)}}.die-face{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;gap:2px}.pip{border-radius:50%;background:transparent}.pip.on{background:var(--face-ink)}.scorecard{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}.score-col{display:flex;flex-direction:column;gap:3px;min-width:0}.score-head{font-family:var(--font-stencil);font-size:11px;text-transform:uppercase;letter-spacing:var(--track-plate);color:var(--ink-2);font-weight:700;padding-left:2px}.score-row{display:flex;align-items:center;gap:var(--sp-1);min-height:36px;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm);border:1px solid var(--hairline);background:var(--panel);color:var(--ink);text-align:left;cursor:default;width:100%}.score-row.open{cursor:pointer}.score-row.open:hover,.score-row.open:active{background:var(--panel-2)}.score-row.filled{opacity:.6}.score-row.best{border-color:var(--amber)}.score-row.summary{background:transparent;border-style:dashed}.score-row.bonus-hit{animation:counter-bump var(--dur-slow) var(--ease-out);border-color:var(--green)}.score-label{flex:1;font-size:12px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-value{font-size:14px;font-weight:800;min-width:3ch;text-align:right}.score-potential{font-size:14px;font-weight:800;color:var(--amber);min-width:3ch;text-align:right}.score-potential.zero{color:var(--ink-3);font-weight:600}.yz-players{display:flex;gap:var(--sp-2);flex-wrap:wrap}.yz-player{flex:1 1 30%;min-width:0;display:flex;flex-direction:column;gap:1px;padding:var(--sp-2);border-radius:var(--r-sm);background:var(--panel);border:1px solid var(--hairline);border-left:3px solid var(--hairline-strong)}.yz-player.is-current{border-left-color:var(--amber)}.yz-player strong{font-size:16px}.yz-celebrate{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:60;font-family:var(--font-stencil);font-size:15vw;font-weight:700;letter-spacing:var(--track-plate);color:var(--amber);animation:celebrate var(--dur-celebrate) var(--ease-out) forwards}@keyframes celebrate{0%{transform:scale(.5);opacity:0}30%{transform:scale(1.1);opacity:1}70%{transform:scale(1);opacity:1}to{transform:scale(1.05);opacity:0}}.pcard{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;width:var(--w, 52px);height:calc(var(--w, 52px) * 1.42);border-radius:calc(var(--w, 52px) * .12);background:var(--face);border:1px solid var(--face-edge);box-shadow:var(--lift);flex:none;line-height:1;font-weight:800;-webkit-user-select:none;user-select:none}.pcard.red{color:var(--play-red)}.pcard.black{color:var(--face-ink)}.pcard-rank{font-size:calc(var(--w, 52px) * .36)}.pcard-suit{font-size:calc(var(--w, 52px) * .34)}.pcard.selected{outline:3px solid var(--amber);outline-offset:1px;transform:translateY(-6px)}.pcard.dimmed{opacity:.45}.pcard.empty{background:transparent;border-style:dashed;border-color:var(--hairline-strong);box-shadow:none}.pcard.back{background:repeating-linear-gradient(45deg,var(--blue-dim),var(--blue-dim) 4px,var(--panel-inset) 4px,var(--panel-inset) 8px);border-color:var(--hairline-strong)}.gin-row{display:flex;gap:var(--sp-1);flex-wrap:wrap;align-items:flex-end}.gin-meld{display:flex;gap:3px;padding:var(--sp-1);border-radius:var(--r-sm);background:var(--green-dim);border:1px solid var(--green);transition:background var(--dur-base) var(--ease-out)}.gin-dead{display:flex;gap:3px;padding:var(--sp-1);border-radius:var(--r-sm);border:1px dashed var(--hairline-strong)}.gin-slot{background:none;border:0;padding:0;cursor:pointer;touch-action:manipulation}.gin-slot[aria-disabled=true]{cursor:default}.gin-piles{display:flex;gap:var(--sp-4);justify-content:center;align-items:center}.gin-pile{display:flex;flex-direction:column;align-items:center;gap:var(--sp-1)}.gin-tag{display:inline-flex;align-items:center;gap:var(--sp-1);font-family:var(--font-stencil);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:var(--track-stencil);padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm);background:var(--panel-2);border:1px solid var(--hairline)}.gin-tag.good{border-color:var(--green);color:var(--green-text)}.gin-tag.warn{border-color:var(--red);color:var(--red-text)}.score-table{width:100%;border-collapse:collapse;font-size:13px}.score-table th,.score-table td{padding:var(--sp-1);text-align:right;border-bottom:1px solid var(--hairline)}.score-table th:first-child,.score-table td:first-child{text-align:left}.score-table thead th{color:var(--ink-2);font-family:var(--font-stencil);font-size:11px;text-transform:uppercase;letter-spacing:var(--track-stencil)}.hearts-seats{display:flex;gap:var(--sp-1)}.hearts-seat{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;padding:var(--sp-2);border-radius:var(--r-sm);background:var(--panel);border:1px solid var(--hairline);border-left:3px solid var(--hairline-strong)}.hearts-seat.is-current{border-left-color:var(--amber)}.trick{display:flex;gap:var(--sp-2);justify-content:center;align-items:center;min-height:92px;padding:var(--sp-2);background:var(--felt);border:1px solid var(--felt-line);border-radius:var(--r-md)}.trick-card{display:flex;flex-direction:column;align-items:center;gap:var(--sp-1)}.trick-card.landing{animation:trick-in var(--dur-base) var(--ease-out) backwards}.trick-card.leaving{animation:trick-out var(--dur-slow) var(--ease-in-out) forwards}@keyframes trick-in{0%{transform:translateY(26px) scale(.9);opacity:0}}@keyframes trick-out{to{transform:translateY(-40px) scale(.7);opacity:0}}.trick-who{font-family:var(--font-stencil);font-size:10.5px;color:var(--ink-2);font-weight:700;text-transform:uppercase;letter-spacing:var(--track-stencil)}.trick-card.queen{animation:queen-drop var(--dur-slow) var(--ease-gravity) backwards}@keyframes queen-drop{0%{transform:translateY(-44px) scale(1.35)}70%{transform:translateY(4px) scale(1)}to{transform:translateY(0) scale(1)}}.hearts-hand{display:flex;flex-wrap:wrap;gap:var(--sp-1);justify-content:center;padding:var(--sp-1) 0}.pool-hud{display:flex;gap:var(--sp-1);flex-wrap:wrap;align-items:center}.pool-fullbleed{width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}.pool-area{display:grid;gap:var(--sp-2)}.pool-wrap{position:relative;margin-inline:auto;width:min(100vw,calc(66svh * var(--pool-aspect, 1.83)));aspect-ratio:var(--pool-aspect, 1.83);overflow:hidden;touch-action:none}.pool-canvas{display:block;width:100%;height:100%;touch-action:none}.pool-canvas:focus-visible{outline:3px solid var(--amber);outline-offset:-4px}.pool-pocket{position:absolute;width:var(--tap);height:var(--tap);transform:translate(-50%,-50%);border-radius:50%;border:2px dashed rgba(255,255,255,.42);background:transparent;cursor:pointer;padding:0}.pool-pocket.called{border-style:solid;border-color:var(--amber);background:color-mix(in srgb,var(--amber) 22%,transparent)}.pool-power{position:relative;height:56px;margin-inline:var(--sp-2);border-radius:var(--r-md);border:1px solid var(--hairline);background:var(--panel);overflow:hidden;touch-action:none;cursor:ew-resize;display:flex;align-items:center;justify-content:center;box-shadow:var(--inset)}.pool-power.idle{opacity:.45;cursor:default}.pool-power-fill{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:left center;background:linear-gradient(to right,var(--green),var(--amber) 60%,var(--red));transition:transform var(--dur-fast) linear}.pool-power-label{position:relative;font-family:var(--font-stencil);font-size:11px;font-weight:700;letter-spacing:var(--track-stencil);color:var(--ink);text-shadow:0 1px 2px rgba(0,0,0,.7)}.pool-controls{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.pool-actions{display:flex;align-items:center;gap:var(--sp-2);flex:1;flex-wrap:wrap}.pool-spin{position:relative;width:46px;height:46px;border-radius:50%;background:var(--face);border:2px solid var(--hairline-strong);flex:none;cursor:pointer;padding:0}.pool-spin.open{border-color:var(--amber)}.pool-spin-dot,.spin-dot{position:absolute;width:12px;height:12px;border-radius:50%;background:var(--red);transform:translate(-50%,-50%);pointer-events:none}.spin-pad{position:relative;width:180px;height:180px;margin:var(--sp-3) auto 0;border-radius:50%;background:var(--face);border:3px solid var(--hairline-strong);touch-action:none}.spin-cross{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to right,transparent calc(50% - 1px),var(--face-edge) calc(50% - 1px),var(--face-edge) calc(50% + 1px),transparent calc(50% + 1px)),linear-gradient(to bottom,transparent calc(50% - 1px),var(--face-edge) calc(50% - 1px),var(--face-edge) calc(50% + 1px),transparent calc(50% + 1px));border-radius:50%}.spin-dot{width:18px;height:18px}.pool-tray{display:flex;gap:var(--sp-1);flex-wrap:wrap}.pool-chip{width:24px;height:24px;border-radius:50%;background:var(--ball, var(--hairline-strong));color:var(--on-signal);font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;border:1px solid rgba(0,0,0,.4)}.pool-chip.stripe{background:var(--face);color:var(--face-ink);box-shadow:inset 0 0 0 5px var(--ball)}@media (max-width: 380px){.screen{padding:var(--sp-2)}.game-grid{gap:var(--sp-2)}.scorecard{gap:var(--sp-1)}.die{max-width:46px}.roomcode-hero .code{font-size:clamp(40px,15vw,60px)}}.catchup-lines{margin:0;padding-left:var(--sp-4);color:var(--ink-2);font-size:12.5px;line-height:1.6}.dir-mark{flex:none;width:46px;height:46px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-sm);background:var(--panel);border:1px solid var(--hairline);color:var(--ink-2);font-size:22px;line-height:1;transition:transform var(--dur-slow) var(--ease-in-out)}.log .now{color:var(--amber);font-weight:700}.flight-host{position:relative;display:flex;flex-direction:column;gap:var(--sp-2);flex:1;min-height:0}.flight-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:20}.flight{position:absolute;left:0;top:0;transform-origin:top left;will-change:transform;animation:fly var(--fly-dur, var(--dur-base)) var(--ease-out) forwards}@keyframes fly{0%{transform:translate(var(--from-x),var(--from-y)) scale(var(--from-scale, 1)) rotate(0)}to{transform:translate(var(--to-x),var(--to-y)) scale(1) rotate(var(--spin, 0deg))}}.hand-slot.in-flight{opacity:0}.pile [data-pile=discard]{transition:transform var(--dur-base) var(--ease-out)}.bs-shipsprite{position:relative;pointer-events:none;z-index:1;display:block}.bs-hull{display:block;width:100%;height:100%;overflow:visible}.bs-hull .hull{fill:var(--hull);stroke:var(--hull-edge);stroke-width:.5;stroke-linejoin:round}.bs-hull .tower{fill:var(--hull-tower)}.bs-hull .mast{fill:var(--hull-mast)}.bs-hull .turret{fill:var(--hull-turret)}.bs-hull .deck-line{stroke:var(--hull-deck);stroke-width:.6;stroke-dasharray:2 2;fill:none}.bs-hull.selected .hull{fill:var(--amber);stroke:var(--on-amber)}.bs-hull.selected .tower{fill:var(--hull-selected-tower)}.bs-hull.sunk{opacity:.75}.bs-hull.sunk .hull{fill:var(--wreck);stroke:var(--red-dim)}.bs-hull.sunk .tower,.bs-hull.sunk .mast,.bs-hull.sunk .turret{fill:var(--wreck-dark)}.bs-hull.sunk .deck-line{stroke:var(--wreck-deck)}
