@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00ff,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto Condensed Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/roboto-condensed-cyrillic-wght-normal-DcSt-2BC.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:Roboto Condensed Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/roboto-condensed-latin-wght-normal-Cxzi1x1i.woff2) format("woff2-variations");unicode-range:U+0000-00ff,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}:root{color-scheme:dark;--color-bg: #080a0f;--color-bg-soft: #0d1119;--color-surface: rgba(18, 23, 33, .94);--color-surface-raised: #181f2c;--color-surface-soft: #111722;--color-surface-glass: rgba(16, 21, 31, .76);--color-text: #f6f7fb;--color-text-soft: #d7dbe5;--color-text-muted: #9ea8ba;--color-border: rgba(255, 255, 255, .11);--color-border-strong: rgba(255, 255, 255, .2);--color-primary: #f1f3f8;--color-primary-ink: #0b0d13;--color-accent: #aa9cff;--color-accent-strong: #7763f2;--color-accent-soft: rgba(170, 156, 255, .14);--color-success: #55d889;--color-success-soft: rgba(85, 216, 137, .12);--color-warning: #ffc95c;--color-warning-soft: rgba(255, 201, 92, .14);--color-error: #ff6b79;--card-red: #e94d5b;--card-blue: #4f7cf1;--card-yellow: #e8b93f;--card-green: #45b978;--radius-sm: .65rem;--radius-md: 1rem;--radius-lg: 1.5rem;--radius-xl: 2rem;--radius-pill: 999px;--shadow-soft: 0 20px 70px rgba(0, 0, 0, .3);--shadow-card: 0 16px 28px rgba(0, 0, 0, .4);--shadow-focus: 0 0 0 1px rgba(170, 156, 255, .42), 0 18px 42px rgba(0, 0, 0, .26);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--safe-area-top: env(safe-area-inset-top, 0px);--safe-area-right: env(safe-area-inset-right, 0px);--safe-area-bottom: env(safe-area-inset-bottom, 0px);--safe-area-left: env(safe-area-inset-left, 0px);--text-xs: .75rem;--text-sm: .875rem;--text-md: 1rem;--text-lg: 1.2rem;--text-xl: clamp(1.45rem, 2.2vw, 2rem);--text-display: clamp(2.35rem, 7vw, 5.6rem);--duration-instant: .1s;--duration-interaction: .15s;--duration-card: .32s;--duration-turn: .23s;--duration-special: .44s;--duration-overlay: .2s;--duration-fast: var(--duration-interaction);--duration-normal: var(--duration-turn);--ease-standard: cubic-bezier(.2, .7, .2, 1);--ease-enter: cubic-bezier(.16, 1, .3, 1);--ease-exit: cubic-bezier(.4, 0, 1, 1);--ease-land: cubic-bezier(.18, .82, .24, 1);--z-table: 10;--z-header: 20;--z-motion: 40;--z-overlay: 50;--z-toast: 60;--font-sans: "Inter Variable", "Segoe UI Variable", "Segoe UI", ui-sans-serif, system-ui, sans-serif;--font-display: "Roboto Condensed Variable", "Arial Narrow", "Roboto Condensed", "Segoe UI", ui-sans-serif, sans-serif;--card-width: clamp(4.85rem, 7vw, 7rem);--card-height: calc(var(--card-width) * 1.42)}*{box-sizing:border-box}html{min-width:20rem;min-height:100%;background:var(--color-bg)}body{min-height:100vh;margin:0;padding:var(--safe-area-top) var(--safe-area-right) var(--safe-area-bottom) var(--safe-area-left);overflow-x:hidden;background:radial-gradient(circle at 12% 8%,rgba(119,99,242,.14),transparent 30rem),radial-gradient(circle at 86% 82%,rgba(69,185,120,.07),transparent 28rem),linear-gradient(155deg,rgba(255,255,255,.015),transparent 45%),var(--color-bg);color:var(--color-text);font-family:var(--font-sans);text-rendering:optimizeLegibility}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button,a{color:inherit}h1,h2,p{margin-top:0}h1,h2,strong{text-wrap:balance}:focus-visible{outline:2px solid var(--color-warning);outline-offset:3px}.noscript-shell,.loading-shell{min-height:100vh;display:grid;place-content:center;gap:var(--space-4);padding:var(--space-5);text-align:center}.noscript-shell h1{margin:0;font-family:var(--font-display);letter-spacing:.13em}.muted{color:var(--color-text-muted);line-height:1.6}.eyebrow,.field-label,.pile-label{display:block;margin-bottom:var(--space-2);color:var(--color-text-muted);font-size:.73rem;font-weight:750;letter-spacing:.12em;text-transform:uppercase}@media(prefers-reduced-motion:reduce){:root{--duration-instant: 80ms;--duration-interaction: 80ms;--duration-card: 90ms;--duration-turn: 90ms;--duration-special: .1s;--duration-overlay: 90ms}*,*:before,*:after{scroll-behavior:auto!important;animation-duration:90ms!important;animation-iteration-count:1!important;transition-duration:80ms!important}}.app{min-height:100vh}.wordmark{position:relative;display:inline-flex;align-items:center;gap:.55rem;color:var(--color-text);font-family:var(--font-display);font-size:1.65rem;font-weight:900;letter-spacing:.12em;text-decoration:none}.wordmark-zero{display:grid;width:1.8rem;height:1.8rem;place-items:center;border:1px solid var(--color-border-strong);border-radius:50%;color:var(--color-accent);font-family:var(--font-sans);font-size:.9rem;letter-spacing:0}.wordmark-compact{font-size:1.02rem}.wordmark-compact .wordmark-zero{width:1.35rem;height:1.35rem;font-size:.7rem}.access-shell{width:min(32rem,100%);min-height:100vh;margin:0 auto;display:grid;place-content:center;gap:var(--space-5);padding:var(--space-5)}.access-card{display:grid;padding:clamp(1.6rem,5vw,2.8rem);border:1px solid var(--color-border);border-radius:var(--radius-xl);background:linear-gradient(145deg,rgba(119,99,242,.1),transparent 58%),var(--color-surface);box-shadow:var(--shadow-soft);backdrop-filter:blur(18px)}.access-zero{width:3.9rem;height:3.9rem;margin-bottom:var(--space-4);display:grid;place-items:center;border:1px solid var(--color-border-strong);border-radius:50%;color:var(--color-accent);font-size:1.8rem;font-weight:850}.access-card h1{margin-bottom:var(--space-3);font-family:var(--font-display);font-size:clamp(2rem,10vw,3.6rem);font-weight:900;letter-spacing:.12em;line-height:1}.access-feedback{min-height:1.5rem;margin-bottom:var(--space-3);color:var(--color-error);line-height:1.5}.action-card,.panel,.dialog{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-soft);backdrop-filter:blur(18px)}.field{display:grid;gap:var(--space-1);margin-block:var(--space-5)}.text-input{width:100%;min-height:3.25rem;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:.75rem .95rem;background:#05070b85;color:var(--color-text);transition:border-color var(--duration-fast),background var(--duration-fast)}.text-input::placeholder{color:#727b8e}.text-input:focus{border-color:var(--color-accent);background:#05070bc7}.text-input[readonly]{color:var(--color-accent);font-weight:800;letter-spacing:.12em}.button{min-height:2.85rem;border:1px solid transparent;border-radius:var(--radius-sm);padding:.7rem 1rem;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-weight:750;line-height:1.1;cursor:pointer;transition:transform var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast),opacity var(--duration-fast)}.button:hover:not(:disabled){transform:translateY(-1px)}.button:active:not(:disabled){transform:translateY(0)}.button:disabled{cursor:not-allowed;opacity:.42}.button-primary{background:var(--color-primary);color:var(--color-primary-ink)}.button-secondary{border-color:#aa9cff61;background:#7763f229;color:#ddd8ff}.button-quiet{border-color:var(--color-border);background:#ffffff0a;color:var(--color-text-muted)}.button-wide{width:100%}.button-small{min-height:2.4rem;padding:.55rem .8rem;font-size:.84rem}.privacy-note,.back-link{margin:0;color:var(--color-text-muted);font-size:.82rem;text-align:center}.back-link{text-decoration:underline;text-underline-offset:.2rem}.error-banner{width:min(48rem,100%);margin-inline:auto;border:1px solid rgba(255,107,121,.36);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);background:#ff6b7917;color:#ffd5da}.error-banner.is-critical{border-color:#ff6b7994}.app-header{width:min(92rem,100%);min-height:4.25rem;margin-inline:auto;padding-inline:clamp(1rem,3vw,2rem);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--space-4)}.app-header>.button{justify-self:end}.connection-pill{border:1px solid var(--color-border);border-radius:999px;padding:.42rem .72rem;display:inline-flex;align-items:center;gap:var(--space-2);color:var(--color-text-muted);font-size:.78rem}.status-dot{flex:0 0 auto;width:.5rem;height:.5rem;border-radius:50%;background:#657087;box-shadow:0 0 0 .18rem #65708724}.status-dot.is-online{background:var(--color-success);box-shadow:0 0 0 .18rem #55d88924}.status-dot.is-offline{background:var(--color-error)}.room-shell{min-height:100vh;padding-bottom:var(--space-5)}.room-shell>.error-banner{margin-block:var(--space-4)}.lobby-shell{display:grid;align-content:start}.lobby-grid{width:min(72rem,calc(100% - 2rem));margin:clamp(2rem,8vh,6rem) auto 0;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(18rem,.8fr);gap:var(--space-5)}.panel{padding:clamp(1.4rem,3vw,2.5rem)}.invite-panel h1,.center-panel h1{font-size:clamp(1.8rem,4vw,3rem)}.room-code-block{margin-block:var(--space-6);display:grid;grid-template-columns:1fr auto;align-items:end;gap:var(--space-3)}.room-code-block .field-label{grid-column:1 / -1;margin:0}.room-code{min-width:0;font-family:var(--font-display);font-size:clamp(2rem,6vw,4rem);letter-spacing:.13em;overflow-wrap:anywhere}.invite-link-row{min-width:0;border-top:1px solid var(--color-border);padding-top:var(--space-5);display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-3)}.invite-url{overflow:hidden;color:var(--color-text-muted);font-size:.86rem;text-overflow:ellipsis;white-space:nowrap}.players-panel{display:flex;flex-direction:column}.participant-list{margin:var(--space-4) 0 var(--space-6);padding:0;display:grid;list-style:none}.participant-row{min-height:4rem;border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.participant-name{min-width:0;display:inline-flex;align-items:center;gap:var(--space-3);font-weight:750}.participant-name span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.participant-role{flex:0 0 auto;color:var(--color-text-muted);font-size:.76rem}.waiting-message{margin:auto 0 0;color:var(--color-text-muted);text-align:center}.game-shell{min-height:100svh;display:grid;grid-template-rows:auto auto 1fr}.game-board{position:relative;width:min(92rem,calc(100% - 1.5rem));min-height:calc(100svh - 5.5rem);margin:0 auto;border:1px solid var(--color-border);border-radius:var(--radius-xl);display:grid;grid-template-rows:minmax(7rem,.7fr) minmax(18rem,1.6fr) minmax(12rem,1fr);overflow:hidden;background:radial-gradient(circle at center,rgba(170,156,255,.08),transparent 34rem),linear-gradient(180deg,rgba(255,255,255,.025),transparent),#0c1017;box-shadow:var(--shadow-soft)}.last-action{min-width:0;max-width:32rem;display:grid;gap:.15rem;text-align:center}.last-action .field-label{margin:0;font-size:.6rem}.last-action strong{overflow:hidden;font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}.last-action-card{color:var(--color-text-muted);font-size:.66rem}.opponent-zone,.self-zone{position:relative;padding:var(--space-4) clamp(1rem,3vw,2rem)}.opponent-zone{border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);background:#ffffff04}.player-summary{display:grid;gap:var(--space-2);color:var(--color-text-muted);font-size:.85rem}.player-summary strong{display:inline-flex;align-items:center;gap:var(--space-3);color:var(--color-text);font-size:1rem}.zero-badge{width:fit-content;border:1px solid rgba(255,201,92,.36);border-radius:999px;padding:.25rem .5rem;color:var(--color-warning);font-size:.66rem;font-weight:800;letter-spacing:.08em}.bot-badge,.bot-thinking{width:fit-content;border-radius:999px;padding:.25rem .55rem;font-size:.7rem;font-weight:750}.bot-badge{border:1px solid rgba(82,211,154,.32);color:var(--color-success)}.bot-thinking{color:var(--color-text-muted)}.opponent-cards{position:relative;transform:scale(.65);transform-origin:right center}.opponent-count,.pile-count{position:absolute;right:-.65rem;bottom:-.65rem;min-width:2rem;height:2rem;border:2px solid #0c1017;border-radius:50%;display:grid;place-items:center;background:var(--color-text);color:var(--color-primary-ink);font-size:.82rem;font-weight:850}.table-zone{position:relative;padding:var(--space-4);display:grid;grid-template-columns:minmax(10rem,1fr) auto minmax(10rem,1fr);grid-template-areas:"turn turn turn" ". piles meta";align-items:center;gap:var(--space-4)}.turn-banner{grid-area:turn;justify-self:center;border:1px solid var(--color-border);border-radius:999px;padding:.48rem .82rem;display:inline-flex;align-items:center;gap:var(--space-2);background:#00000038;transition:border-color var(--duration-normal),background var(--duration-normal),box-shadow var(--duration-normal)}.game-shell[data-turn=self] .turn-banner{border-color:#55d8896b;background:#55d88917;box-shadow:0 0 0 .25rem #55d8890e}.game-shell[data-turn=opponent] .turn-banner{border-color:#aa9cff3d}.pause-banner{position:absolute;z-index:4;top:var(--space-4);left:50%;width:min(30rem,calc(100% - 2rem));transform:translate(-50%);border:1px solid rgba(255,201,92,.35);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);display:grid;gap:var(--space-1);background:#201b10f2;color:var(--color-warning);text-align:center}.pause-banner span{color:#d5c9a8;font-size:.78rem}.turn-dot{width:.5rem;height:.5rem;border-radius:50%;background:var(--color-text-muted)}.turn-dot.is-own{background:var(--color-success);box-shadow:0 0 0 .25rem #55d8891f}.piles{grid-area:piles;display:flex;align-items:end;justify-content:center;gap:clamp(1rem,4vw,3.5rem)}.pile-group{display:grid;justify-items:center;gap:var(--space-3)}.pile-label{margin:0}.draw-stack,.discard-stack{position:relative}.table-meta{grid-area:meta;justify-self:end;min-width:10rem;display:grid;gap:var(--space-4)}.table-meta strong,.active-color strong{display:inline-flex;align-items:center;gap:var(--space-2)}.active-color{border-left:2px solid var(--color-border-strong);padding-left:var(--space-3)}.color-swatch{width:.7rem;height:.7rem;border-radius:50%;box-shadow:0 0 0 .18rem #ffffff14}.color-red{background-color:var(--card-red)}.color-blue{background-color:var(--card-blue)}.color-yellow{background-color:var(--card-yellow)}.color-green{background-color:var(--card-green)}.self-zone{min-height:0;border-top:1px solid var(--color-border);display:grid;grid-template-rows:auto minmax(0,1fr);background:#00000024}.self-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.zero-action{border-color:#ffc95c47;background:#ffc95c14;color:var(--color-warning)}.zero-action.is-armed{border-color:var(--color-warning);background:#ffc95c2e}.catch-action{border-color:#ff6b7959;background:#ff6b791a;color:#ffc1c7}.player-hand{min-width:0;padding:var(--space-5) var(--space-2) var(--space-2);display:grid;align-content:end;gap:.35rem;overflow:visible}.hand-row{min-width:0;display:flex;justify-content:center;align-items:end;padding-inline:calc(var(--card-width) * .08)}.playing-card{--card-local: #454c5c;position:relative;width:var(--card-width);height:var(--card-height);border:1px solid rgba(255,255,255,.24);border-radius:calc(var(--card-width) * .12);padding:0;overflow:hidden;background:linear-gradient(145deg,rgba(255,255,255,.16),transparent 38%),var(--card-local);color:#fff;box-shadow:var(--shadow-card)}.player-hand .playing-card{flex:0 0 var(--card-width)}.hand-row .playing-card+.playing-card{margin-left:clamp(-3.6rem,-3vw,-1.2rem)}button.playing-card{cursor:pointer;transition:transform var(--duration-fast),filter var(--duration-fast),opacity var(--duration-fast)}button.playing-card:hover:not(:disabled),button.playing-card:focus-visible:not(:disabled){transform:translateY(-.55rem);z-index:40}.playing-card.is-playable{box-shadow:0 0 0 2px #ffffff40,var(--shadow-card)}.playing-card.is-selected{z-index:50;transform:translateY(-1rem) scale(1.04);box-shadow:0 0 0 3px var(--color-warning),0 20px 34px #00000080}button.playing-card:disabled{cursor:not-allowed;filter:saturate(.62) brightness(.78);opacity:.84}.draw-attempt{min-height:1rem;color:var(--color-text-muted);font-size:.68rem}.playing-card.card-red{--card-local: var(--card-red)}.playing-card.card-blue{--card-local: var(--card-blue)}.playing-card.card-yellow{--card-local: var(--card-yellow);color:#171710}.playing-card.card-green{--card-local: var(--card-green)}.playing-card.card-wild{background:radial-gradient(circle at 28% 28%,var(--card-red) 0 10%,transparent 11%),radial-gradient(circle at 72% 28%,var(--card-blue) 0 10%,transparent 11%),radial-gradient(circle at 28% 72%,var(--card-yellow) 0 10%,transparent 11%),radial-gradient(circle at 72% 72%,var(--card-green) 0 10%,transparent 11%),linear-gradient(145deg,#2d3140,#12151d)}.card-center{position:absolute;inset:15%;border:1px solid rgba(255,255,255,.3);border-radius:36% 18%;display:grid;place-content:center;gap:.16rem;text-align:center;transform:rotate(-5deg);background:#05070b2e}.card-symbol{font-size:calc(var(--card-width) * .34);font-weight:900;line-height:1}.card-type-label{max-width:calc(var(--card-width) * .72);font-size:calc(var(--card-width) * .068);font-weight:850;letter-spacing:.06em;line-height:1.1;text-transform:uppercase}.card-corner{position:absolute;z-index:1;font-size:calc(var(--card-width) * .15);font-weight:900}.card-corner-top{top:7%;left:9%}.card-corner-bottom{right:9%;bottom:7%;transform:rotate(180deg)}.card-back{border-color:#aa9cff66;background:repeating-linear-gradient(135deg,rgba(255,255,255,.035) 0 .4rem,transparent .4rem .8rem),linear-gradient(145deg,#222838,#0d1018)}.card-back:before{position:absolute;inset:9%;border:1px solid rgba(170,156,255,.34);border-radius:inherit;content:""}.card-back-mark{position:absolute;inset:24%;border:2px solid var(--color-accent);border-radius:50%;display:grid;place-items:center;color:var(--color-accent);font-size:calc(var(--card-width) * .35);font-weight:300}.empty-card-slot{width:var(--card-width);height:var(--card-height);border:1px dashed var(--color-border-strong);border-radius:var(--radius-sm);display:grid;place-items:center;color:var(--color-text-muted);font-size:.75rem}.modal-layer{position:fixed;z-index:40;inset:0;padding:max(var(--space-4),var(--safe-area-top)) max(var(--space-4),var(--safe-area-right)) max(var(--space-4),var(--safe-area-bottom)) max(var(--space-4),var(--safe-area-left));display:flex;align-items:center;justify-content:center;overflow-y:auto;background:#030408b8;backdrop-filter:blur(10px);animation:fade-in var(--duration-normal) ease-out}.dialog{flex:0 0 auto;margin-block:auto;width:min(29rem,100%);padding:clamp(1.4rem,5vw,2.2rem);border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);background:linear-gradient(145deg,rgba(255,255,255,.045),transparent 38%),var(--color-surface-raised);box-shadow:0 26px 90px #00000085}.dialog h2{font-size:clamp(1.45rem,4vw,2.15rem)}.color-dialog{text-align:center}.radial-color-picker{position:relative;width:min(19rem,78vw,47vh);min-width:13.5rem;aspect-ratio:1;margin:var(--space-4) auto var(--space-5);display:grid;grid-template:". red ." 1fr "green center blue" 1fr ". yellow ." 1fr / 1fr 1fr 1fr;place-items:center}.radial-color-picker:before{position:absolute;inset:15%;border:1px solid var(--color-border-strong);border-radius:50%;content:""}.radial-color-center{grid-area:center;width:clamp(3.7rem,24%,4.8rem);aspect-ratio:1;border:2px solid rgba(255,255,255,.7);border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--card-red),var(--card-blue),var(--card-yellow),var(--card-green),var(--card-red));font-size:1.75rem}.radial-color-picker .color-option{width:clamp(4rem,72%,5.1rem);min-height:0;aspect-ratio:1;border:1px solid rgba(255,255,255,.28);border-radius:50%;padding:.4rem;color:#fff;font-size:clamp(.68rem,2.3vw,.82rem);font-weight:850}.radial-color-picker .color-option.color-red{grid-area:red;background:var(--card-red)}.radial-color-picker .color-option.color-blue{grid-area:blue;background:var(--card-blue)}.radial-color-picker .color-option.color-yellow{grid-area:yellow;background:var(--card-yellow);color:#171710}.radial-color-picker .color-option.color-green{grid-area:green;background:var(--card-green)}.radial-color-picker .color-option.is-selected{outline:3px double white;outline-offset:3px}.result-card{text-align:center}.result-zero{width:4.25rem;height:4.25rem;margin:0 auto var(--space-4);border:2px solid var(--color-accent);border-radius:50%;display:grid;place-items:center;color:var(--color-accent);font-size:2rem}.rematch-status{margin:var(--space-4) 0;color:var(--color-text-muted);font-size:.82rem}.connection-overlay{position:fixed;z-index:60;right:max(var(--space-4),var(--safe-area-right));bottom:max(var(--space-4),var(--safe-area-bottom));width:min(28rem,calc(100% - max(var(--space-4),var(--safe-area-left)) - max(var(--space-4),var(--safe-area-right))));border:1px solid rgba(255,201,92,.36);border-radius:var(--radius-md);padding:var(--space-4);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-3);background:#171922;box-shadow:var(--shadow-soft)}.connection-overlay p{margin:var(--space-1) 0 0;color:var(--color-text-muted);font-size:.8rem;line-height:1.45}.connection-icon{width:2.25rem;height:2.25rem;border:1px solid rgba(255,201,92,.3);border-radius:50%;display:grid;place-items:center;color:var(--color-warning);animation:rotate 1.2s linear infinite}.connection-icon.is-stopped{color:var(--color-error);animation:none}.toast{position:fixed;z-index:80;left:max(var(--space-4),var(--safe-area-left));right:max(var(--space-4),var(--safe-area-right));bottom:max(var(--space-5),var(--safe-area-bottom));width:max-content;max-width:calc(100% - max(var(--space-4),var(--safe-area-left)) - max(var(--space-4),var(--safe-area-right)));margin-inline:auto;border:1px solid var(--color-border-strong);border-radius:999px;padding:.7rem 1rem;background:var(--color-surface-raised);box-shadow:var(--shadow-soft);color:var(--color-text);font-size:.85rem;text-align:center}.center-panel{width:min(40rem,calc(100% - 2rem));margin:14vh auto 0;text-align:center}@keyframes fade-in{0%{opacity:0}}@keyframes rotate{to{transform:rotate(360deg)}}@media(max-width:56rem){.lobby-grid{grid-template-columns:1fr}.lobby-grid{margin-top:var(--space-5)}.players-panel{min-height:19rem}.table-zone{grid-template-columns:1fr auto 1fr}.table-meta{min-width:8rem;font-size:.8rem}.active-color{border-left:0;padding-left:0}}@media(max-width:40rem){:root{--card-width: 5.35rem}.app-header{min-height:3.7rem;grid-template-columns:1fr auto}.app-header .connection-pill{grid-row:2;grid-column:1 / -1;justify-self:center;margin-bottom:var(--space-2)}.room-code-block,.invite-link-row{grid-template-columns:1fr}.room-code{font-size:clamp(1.75rem,11vw,3rem)}.game-board{width:calc(100% - .75rem);min-height:calc(100svh - 5rem);border-radius:var(--radius-lg);grid-template-rows:6rem minmax(17rem,1fr) minmax(13rem,auto)}.opponent-zone{padding:var(--space-3)}.last-action{position:absolute;right:4.2rem;left:6.5rem}.last-action-card{display:none}.opponent-cards{transform:scale(.48);margin-right:-1.2rem}.table-zone{padding:var(--space-3);grid-template-columns:1fr;grid-template-areas:"turn" "piles" "meta"}.piles{gap:var(--space-5)}.table-meta{width:100%;min-width:0;grid-template-columns:repeat(3,minmax(0,1fr));justify-self:stretch;gap:var(--space-2);text-align:center}.table-meta strong{justify-content:center;font-size:.76rem}.table-meta .field-label{font-size:.61rem}.self-zone{padding:var(--space-3)}.self-toolbar{display:grid;grid-template-columns:1fr auto}.self-toolbar .catch-action{grid-column:1 / -1}.zero-action{min-height:2.5rem;max-width:10rem;font-size:.72rem}.player-hand{margin-inline:-.75rem;padding:var(--space-5) .75rem var(--space-2)}.hand-row .playing-card+.playing-card{margin-left:-3.25rem}.connection-overlay{right:.5rem;bottom:.5rem;width:calc(100% - 1rem);grid-template-columns:auto 1fr}.connection-overlay .button{grid-column:1 / -1;width:100%}}@media(pointer:coarse){button.playing-card:hover:not(:disabled){transform:none}}@media(max-height:35rem)and (orientation:landscape){:root{--card-width: 4.4rem}.game-board{grid-template-rows:4rem minmax(12rem,1fr) 8.5rem}.app-header{min-height:3.2rem}.opponent-cards{transform:scale(.4)}.table-zone{grid-template-columns:1fr auto 1fr;grid-template-areas:"turn turn turn" ". piles meta";padding:var(--space-2)}.self-zone{padding-block:var(--space-2)}.player-hand{padding-top:var(--space-2)}}.app{isolation:isolate}.wordmark-zero,.hero-mark,.access-zero,.result-zero{background:radial-gradient(circle at 34% 28%,rgba(255,255,255,.14),transparent 42%),#aa9cff0f;box-shadow:inset 0 0 0 1px #ffffff09,0 12px 34px #0000003d}.access-card,.action-card,.panel,.dialog{border-color:#ffffff1b;background:linear-gradient(150deg,rgba(255,255,255,.035),transparent 42%),var(--color-surface)}.button{min-height:2.95rem;border-radius:.75rem;transition:transform var(--duration-interaction) var(--ease-standard),border-color var(--duration-interaction) var(--ease-standard),background-color var(--duration-interaction) var(--ease-standard),color var(--duration-interaction) var(--ease-standard),opacity var(--duration-interaction) var(--ease-standard),box-shadow var(--duration-interaction) var(--ease-standard)}.button-primary{background:linear-gradient(180deg,#fff,#e7e9f0);box-shadow:0 1px #ffffffb8 inset,0 9px 24px #00000038}.button-primary:hover:not(:disabled){box-shadow:0 1px #ffffffd1 inset,0 12px 28px #00000047}.button-secondary{background:var(--color-accent-soft)}.button:disabled{cursor:default;opacity:.48}.text-input{border-radius:.78rem;transition:border-color var(--duration-interaction) var(--ease-standard),background-color var(--duration-interaction) var(--ease-standard),box-shadow var(--duration-interaction) var(--ease-standard)}.text-input:focus{box-shadow:0 0 0 3px #aa9cff1a}.app-header{position:relative;z-index:var(--z-header);min-height:4.5rem}.connection-pill{border-radius:var(--radius-pill);background:#ffffff06}.lobby-grid{margin-top:clamp(1.5rem,7vh,5rem)}.participant-row{border-color:#ffffff13}.game-board{z-index:var(--z-table);width:min(92rem,calc(100% - 1.75rem));min-height:calc(100svh - 5.2rem);grid-template-rows:minmax(7.5rem,auto) minmax(18rem,1fr) minmax(14rem,auto);background:radial-gradient(circle at 50% 41%,rgba(170,156,255,.075),transparent 31rem),linear-gradient(180deg,rgba(255,255,255,.02),transparent 36%),#0b1018}.opponent-zone,.self-zone{transition:background-color var(--duration-turn) var(--ease-standard),box-shadow var(--duration-turn) var(--ease-standard),border-color var(--duration-turn) var(--ease-standard)}.opponent-zone{min-width:0;padding:1rem clamp(1.15rem,3vw,2.2rem);display:grid;grid-template-columns:minmax(10rem,1fr) minmax(12rem,1.6fr) auto;gap:clamp(1rem,3vw,2.5rem)}.game-shell[data-active-zone=OPPONENT] .opponent-zone{background:linear-gradient(180deg,rgba(170,156,255,.08),transparent);box-shadow:inset 0 -1px #aa9cff33}.game-shell[data-active-zone=SELF] .self-zone{background:linear-gradient(0deg,rgba(85,216,137,.07),transparent 72%),#00000024;box-shadow:inset 0 1px #55d8892e}.game-shell[data-presentation-state=BOT_THINKING] .opponent-zone{background:radial-gradient(circle at 82% 50%,rgba(85,216,137,.11),transparent 14rem),#55d88906}.player-summary{min-width:0}.player-summary strong{font-size:1.05rem}.bot-badge,.bot-thinking,.zero-badge{border-radius:var(--radius-pill)}.bot-thinking{border:1px solid rgba(85,216,137,.2);background:#55d88911;color:var(--color-text-soft)}.last-action{width:100%;max-width:36rem;justify-self:center;padding:.65rem .9rem;border:1px solid rgba(255,255,255,.07);border-radius:var(--radius-md);background:#00000024}.last-action strong{color:var(--color-text-soft);font-size:.8rem}.opponent-cards{margin-inline:0;transform:scale(.62)}.table-zone{padding:clamp(1rem,2.5vw,2rem);grid-template-columns:minmax(8rem,1fr) auto minmax(8rem,1fr);grid-template-areas:"turn turn turn" ". piles meta";gap:clamp(1rem,2.5vw,2rem)}.turn-banner{min-width:min(24rem,92%);min-height:3.7rem;padding:.65rem 1.05rem;border-radius:var(--radius-md);justify-content:center;background:#05080d8f;box-shadow:0 14px 38px #0003}.turn-copy{display:grid;gap:.16rem;text-align:left}.turn-copy strong{font-size:1rem;letter-spacing:.01em}.turn-detail{color:var(--color-text-muted);font-size:.76rem}.game-shell[data-presentation-state=MY_TURN_CAN_PLAY] .turn-banner,.game-shell[data-presentation-state=MY_TURN_MUST_DRAW] .turn-banner{border-color:#55d88961;background:linear-gradient(135deg,rgba(85,216,137,.1),transparent 62%),#05080d99}.game-shell[data-presentation-state=ACTION_RESOLVING] .turn-banner{border-color:#aa9cff66;background:linear-gradient(135deg,rgba(170,156,255,.11),transparent 62%),#05080d99}.game-shell[data-presentation-state=RECONNECTING] .turn-banner,.game-shell[data-presentation-state=GAME_PAUSED] .turn-banner{border-color:#ffc95c61}.turn-dot{width:.58rem;height:.58rem}.piles{gap:clamp(1.5rem,5vw,4rem)}.pile-group{min-width:8.2rem}.draw-pile-group{position:relative;border:1px solid transparent;border-radius:var(--radius-lg);padding:.55rem .65rem .7rem;transition:border-color var(--duration-turn) var(--ease-standard),background-color var(--duration-turn) var(--ease-standard),box-shadow var(--duration-turn) var(--ease-standard)}.draw-pile-group.is-primary-action{border-color:#55d88942;background:#55d8890e;box-shadow:0 0 0 .3rem #55d88909;animation:draw-ready-once var(--duration-special) var(--ease-enter) 1}.draw-stack{transition:transform var(--duration-interaction) var(--ease-standard)}.draw-pile-group.is-primary-action .draw-stack{transform:translateY(-.18rem)}.draw-button{width:10.2rem;min-height:2.9rem;white-space:nowrap}.draw-button.button-quiet:disabled{border-color:transparent;background:transparent;color:#717b8d;opacity:.7}.table-meta{border:1px solid rgba(255,255,255,.07);border-radius:var(--radius-md);padding:.85rem;background:#00000021}.self-zone{min-height:14rem;grid-template-rows:auto minmax(0,1fr) auto}.self-toolbar{min-height:3.2rem}.player-hand{width:100%;padding:1.7rem .5rem .35rem;gap:.5rem}.hand-row{width:100%;max-width:100%;padding-inline:.35rem}.hand-card-slot{position:relative;min-width:1.2rem;height:var(--card-height);flex:0 1 var(--card-width)}.hand-card-slot:last-child{min-width:var(--card-width);flex-shrink:0}.playing-card{border-width:1px;border-color:#ffffff47;border-radius:calc(var(--card-width) * .13);background:linear-gradient(150deg,rgba(255,255,255,.13),transparent 34%),linear-gradient(330deg,rgba(0,0,0,.12),transparent 46%),var(--card-local);box-shadow:0 1px #ffffff2e inset,var(--shadow-card)}.hand-card-slot>.playing-card{position:absolute;inset:0 auto auto 0;max-width:none}.hand-card-slot:focus-within,.hand-card-slot:hover{z-index:8}button.playing-card{transition:transform var(--duration-interaction) var(--ease-enter),box-shadow var(--duration-interaction) var(--ease-standard),border-color var(--duration-interaction) var(--ease-standard);will-change:transform}button.playing-card:hover:not(:disabled),button.playing-card:focus-visible:not(:disabled){transform:translateY(-.58rem) rotate(-.7deg)}.playing-card.is-playable{border-color:#ffffff61;box-shadow:0 1px #ffffff38 inset,0 0 0 1px #ffffff14,var(--shadow-card)}.playing-card.is-selected{transform:translateY(-.85rem) scale(1.025);box-shadow:0 0 0 2px var(--color-warning),0 22px 38px #00000080}.playing-card.is-pending{z-index:10;transform:translateY(-.42rem) scale(1.015);border-color:#aa9cffb3;box-shadow:0 0 0 2px #aa9cff3b,0 18px 34px #00000073}.playing-card.is-rejected{animation:card-reject var(--duration-special) var(--ease-standard) 1}button.playing-card:disabled{cursor:default;filter:none;opacity:1}.game-shell[data-presentation-state=OPPONENT_TURN] button.playing-card:disabled,.game-shell[data-presentation-state=BOT_THINKING] button.playing-card:disabled{box-shadow:0 1px #ffffff29 inset,0 10px 20px #00000052}.card-center{inset:14%;border-radius:34% 20%;background:radial-gradient(circle at center,rgba(255,255,255,.08),transparent 58%),#05070b29}.card-orbit{position:absolute;inset:10%;border:1px solid rgba(255,255,255,.14);border-radius:50%;transform:rotate(22deg)}.card-symbol{position:relative;font-size:calc(var(--card-width) * .36);letter-spacing:-.04em}.card-type-label{position:relative;font-size:max(.48rem,calc(var(--card-width) * .072));letter-spacing:.045em}.card-corner{padding:.12rem .18rem;border-radius:.28rem;background:#05070b24;font-size:calc(var(--card-width) * .16);line-height:1}.card-back{border-color:#aa9cff57;background:linear-gradient(135deg,transparent 46%,rgba(170,156,255,.08) 47% 53%,transparent 54%),repeating-linear-gradient(135deg,rgba(255,255,255,.025) 0 .32rem,transparent .32rem .7rem),linear-gradient(150deg,#252b3b,#0c1018)}.card-back-mark{border-width:1px;box-shadow:0 0 0 .4rem #aa9cff0d,inset 0 0 1.4rem #aa9cff14}.invalid-card-feedback{width:fit-content;min-height:1.9rem;margin:.25rem auto 0;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-pill);padding:.38rem .72rem;background:#0a0d14e6;color:var(--color-text-soft);font-size:.76rem;animation:feedback-in var(--duration-interaction) var(--ease-enter)}.modal-layer{z-index:var(--z-overlay);animation:fade-in var(--duration-overlay) var(--ease-standard)}.dialog{animation:dialog-enter var(--duration-overlay) var(--ease-enter)}.color-option{position:relative;min-height:4.75rem;cursor:pointer;transition:transform var(--duration-interaction) var(--ease-enter),box-shadow var(--duration-interaction) var(--ease-standard),border-color var(--duration-interaction) var(--ease-standard)}.color-option:hover,.color-option:focus-visible{transform:translateY(-2px) scale(1.04);border-color:#ffffff8c;box-shadow:0 14px 28px #0000003d}.connection-overlay{z-index:var(--z-toast);background:linear-gradient(135deg,rgba(255,201,92,.055),transparent),#151923;animation:overlay-enter var(--duration-overlay) var(--ease-enter)}.toast{z-index:calc(var(--z-toast) + 1)}.pause-banner{z-index:6}.motion-card,.motion-effect{pointer-events:none;position:fixed;z-index:var(--z-motion);inset:0 auto auto 0;margin:0;transform-origin:center;will-change:transform,opacity}.motion-card{filter:drop-shadow(0 20px 28px rgba(0,0,0,.52));transform-origin:top left}.motion-card .playing-card{width:var(--card-width);height:var(--card-height)}.motion-card.is-reveal-on-arrival .playing-card{backface-visibility:hidden}.motion-card.is-reveal-on-arrival .motion-card-front{position:absolute;inset:0;opacity:0;transform:rotateY(88deg);animation:motion-front-reveal var(--duration-instant) var(--ease-standard) .21s forwards}.motion-card.is-reveal-on-arrival .motion-card-back{animation:motion-back-hide var(--duration-instant) var(--ease-standard) .21s forwards}.motion-card.is-compact-penalty{filter:drop-shadow(0 12px 18px rgba(0,0,0,.42))}.motion-effect{top:42%;left:50%;max-width:min(22rem,calc(100vw - 2rem));border:1px solid var(--color-border-strong);border-radius:var(--radius-pill);padding:.62rem 1rem;background:#0c1018f0;box-shadow:var(--shadow-soft);color:var(--color-text);font-size:.82rem;font-weight:800;text-align:center}@keyframes motion-front-reveal{to{opacity:1;transform:rotateY(0)}}@keyframes motion-back-hide{to{opacity:0;transform:rotateY(-88deg)}}@keyframes draw-ready-once{0%,to{filter:brightness(1)}45%{filter:brightness(1.12)}}@keyframes card-reject{0%,to{transform:translate(0)}24%{transform:translate(-.32rem) rotate(-.7deg)}52%{transform:translate(.28rem) rotate(.5deg)}76%{transform:translate(-.12rem)}}@keyframes feedback-in{0%{opacity:0;transform:translateY(.25rem)}}@keyframes dialog-enter{0%{opacity:0;transform:translateY(.55rem) scale(.985)}}@keyframes overlay-enter{0%{opacity:0;transform:translateY(.5rem)}}@media(max-width:56rem){.opponent-zone{grid-template-columns:minmax(9rem,1fr) minmax(10rem,1.4fr) auto}.table-zone{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.table-meta{min-width:7.5rem}}@media(max-width:40rem){:root{--card-width: clamp(4.65rem, 22vw, 5.25rem)}.access-shell{padding:1rem}.app-header{padding-inline:.75rem}.game-board{width:calc(100% - .5rem);min-height:calc(100svh - 5rem);border-radius:1.15rem;grid-template-rows:auto minmax(17rem,1fr) minmax(14rem,auto)}.opponent-zone{min-height:7.5rem;padding:.75rem;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"summary cards" "action action";gap:.55rem .8rem}.player-summary{grid-area:summary}.last-action{position:static;grid-area:action;width:100%;max-width:none;padding:.45rem .6rem}.last-action strong{white-space:normal;line-height:1.3}.last-action-card{display:none}.opponent-cards{grid-area:cards;margin-right:-.35rem;transform:scale(.46);transform-origin:right center}.table-zone{padding:.75rem;grid-template-columns:1fr;grid-template-areas:"turn" "piles" "meta";gap:.8rem}.turn-banner{width:min(100%,24rem);min-width:0;min-height:3.4rem;padding:.55rem .75rem}.piles{gap:clamp(.75rem,6vw,1.6rem)}.pile-group{min-width:7.2rem;gap:.55rem}.draw-pile-group{padding:.4rem}.draw-button{width:9.25rem;min-height:2.9rem;padding-inline:.55rem;font-size:.78rem}.table-meta{width:100%;padding:.55rem;grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.self-zone{min-height:14rem;padding:.75rem}.self-toolbar{gap:.5rem}.zero-action{min-width:8.2rem;min-height:2.75rem}.player-hand{margin-inline:-.45rem;padding:1.45rem .25rem .25rem}.hand-row{padding-inline:.1rem}.hand-card-slot{min-width:1.12rem}.invalid-card-feedback{margin-top:.35rem}.modal-layer{padding:.75rem}.dialog{max-height:calc(100svh - 1.5rem);overflow-y:auto}.color-option{min-height:4rem}.connection-overlay{border-radius:.9rem}}@media(pointer:coarse){.button,.color-option{min-height:3rem}button.playing-card:hover:not(:disabled){transform:none}}@media(max-width:21rem){.game-board{width:calc(100% - .25rem)}.self-zone{padding-inline:.6rem}.player-hand{margin-inline:-.3rem;padding-inline:0}.hand-row{padding-inline:0}.hand-card-slot{min-width:1rem}}@media(max-height:35rem)and (orientation:landscape){.game-board{grid-template-rows:4.5rem minmax(12rem,1fr) 9rem}.opponent-zone{grid-template-columns:1fr 1.4fr auto}.turn-banner{min-height:2.8rem}.turn-detail{display:none}}@media(prefers-reduced-motion:reduce){.action-card:hover,button.playing-card:hover:not(:disabled),button.playing-card:focus-visible:not(:disabled),.playing-card.is-selected,.playing-card.is-pending,.draw-pile-group.is-primary-action,.draw-pile-group.is-primary-action .draw-stack{transform:none}.draw-pile-group.is-primary-action,.playing-card.is-rejected,.connection-icon{animation-name:fade-in}.motion-card.is-reveal-on-arrival .motion-card-front{opacity:1;transform:none;animation:none}.motion-card.is-reveal-on-arrival .motion-card-back{display:none;animation:none}}html,body,#app,.app{width:100%;height:100%;min-height:0}html{height:100%}body{height:100vh;min-height:0;padding:0;overflow:hidden}#app,.app{overflow:hidden}.app{min-height:0;isolation:isolate}.app-content,.app-overlays,.app-ui-overlays,.app-motion-overlays{display:contents}.loading-shell,.access-shell,.home-shell,.room-shell,.game-shell{width:100%;height:100vh;min-height:0}@supports (height: 100dvh){body,.loading-shell,.access-shell,.home-shell,.room-shell,.game-shell{height:100dvh}}.loading-shell,.access-shell,.home-shell,.room-shell{padding-top:max(var(--space-3),var(--safe-area-top));padding-right:max(var(--space-3),var(--safe-area-right));padding-bottom:max(var(--space-3),var(--safe-area-bottom));padding-left:max(var(--space-3),var(--safe-area-left))}.home-shell,.lobby-shell,.game-shell{overflow:hidden}.room-shell{display:grid;grid-template-rows:auto minmax(0,1fr);padding-bottom:max(var(--space-2),var(--safe-area-bottom))}.app-header{min-height:0;padding-top:max(var(--space-2),var(--safe-area-top))}@media(max-height:32rem),(max-width:40rem){.loading-shell,.access-shell{overflow-y:auto}}@media(min-resolution:1dppx){@supports not (height: 100dvh){body,.loading-shell,.access-shell,.home-shell,.room-shell,.game-shell{height:100svh}}}.home-shell{width:min(76rem,100%);margin-inline:auto;padding:max(.75rem,var(--safe-area-top)) max(1rem,var(--safe-area-right)) max(.75rem,var(--safe-area-bottom)) max(1rem,var(--safe-area-left));display:grid;grid-template-areas:"hero" "notice" "actions" "privacy";grid-template-rows:auto auto minmax(0,25rem) auto;align-content:center;gap:clamp(.6rem,1.8vh,1.25rem)}.hero{grid-area:hero;width:100%;max-width:none;display:flex;align-items:center;justify-content:center;gap:clamp(.65rem,1.8vw,1.15rem)}.hero-mark{width:clamp(2.45rem,5vh,3.35rem);height:clamp(2.45rem,5vh,3.35rem);flex:0 0 auto;margin:0;font-size:clamp(1.15rem,2.7vh,1.55rem)}.hero h1{margin:0;font-size:clamp(2rem,6vh,4.25rem);line-height:.9}.home-actions{grid-area:actions;min-height:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);gap:clamp(.7rem,1.6vw,1.25rem)}.home-actions.is-invite{width:min(30rem,100%);margin-inline:auto;grid-template-columns:minmax(0,1fr)}.action-card{position:relative;overflow:hidden;min-width:0;min-height:0;padding:clamp(1rem,2.2vw,1.6rem);display:grid;grid-template-rows:auto minmax(2.75rem,auto) minmax(0,1fr) auto;align-content:start;gap:clamp(.65rem,1.4vh,.95rem);transition:transform var(--duration-interaction) var(--ease-standard),border-color var(--duration-interaction) var(--ease-standard),box-shadow var(--duration-interaction) var(--ease-standard)}.action-card:hover{transform:translateY(-2px);border-color:var(--color-border-strong);box-shadow:var(--shadow-focus)}.action-card-accent{background:linear-gradient(145deg,rgba(119,99,242,.09),transparent 55%),var(--color-surface)}.action-card-bot{background:linear-gradient(145deg,rgba(82,211,154,.09),transparent 55%),var(--color-surface)}.action-card h2,.action-card p,.action-card .field{margin:0}.action-card h2{font-size:clamp(1.05rem,1.8vw,1.35rem)}.action-card>.muted{line-height:1.45}.action-card-fields{min-height:0;display:grid;align-content:start;gap:clamp(.55rem,1.2vh,.85rem)}.action-card-fields .field{gap:.3rem}.action-card-fields .text-input{min-height:2.85rem}.home-shell>.privacy-note{grid-area:privacy;min-height:1.25rem}.home-shell>.error-banner{grid-area:notice}@media(max-width:56rem)and (min-height:36rem){.home-shell{grid-template-rows:auto auto minmax(0,1fr) auto;align-content:stretch}.home-actions:not(.is-invite){overflow-y:auto;overscroll-behavior:contain;grid-template-columns:1fr;grid-auto-rows:12.5rem;padding-right:.2rem;scrollbar-gutter:stable}.action-card{grid-template-columns:minmax(8rem,.8fr) minmax(10rem,1.2fr);grid-template-rows:auto minmax(0,1fr) auto}.action-card>.muted{grid-row:2;grid-column:1}.action-card-fields{grid-row:1 / span 2;grid-column:2}.action-card>.button{grid-row:3;grid-column:1 / -1}}@media(max-width:30rem)and (min-height:36rem){.home-actions:not(.is-invite){grid-auto-rows:19rem}.action-card{grid-template-columns:1fr;grid-template-rows:auto auto auto auto}.action-card>.muted,.action-card-fields,.action-card>.button{grid-row:auto;grid-column:auto}}@media(max-height:35.99rem){.home-shell{grid-template-rows:auto auto minmax(0,1fr) auto;align-content:stretch;gap:.45rem;padding-top:max(.4rem,var(--safe-area-top));padding-bottom:max(.4rem,var(--safe-area-bottom))}.hero-mark{width:2.15rem;height:2.15rem;font-size:1rem}.hero h1{font-size:clamp(1.65rem,9vh,2.6rem)}.home-actions:not(.is-invite){overflow-x:auto;overscroll-behavior-inline:contain;grid-template-columns:repeat(3,minmax(14rem,1fr));grid-auto-rows:minmax(0,1fr);scrollbar-gutter:stable}.action-card{padding:.75rem;gap:.45rem}.action-card>.muted{font-size:.78rem;line-height:1.3}.action-card-fields{gap:.4rem}.action-card-fields .field-label{margin-bottom:0;font-size:.63rem}.action-card-fields .text-input,.action-card>.button{min-height:2.45rem}.home-shell>.privacy-note{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media(prefers-reduced-motion:reduce){.home-actions{scroll-behavior:auto}}.game-shell{--self-card-width: clamp(4.5rem, min(7.2vw, 16vh), 6.5rem);position:relative;height:100%;min-height:0;grid-template-rows:auto minmax(0,1fr)}.game-shell>.error-banner{position:absolute;z-index:calc(var(--z-overlay) - 1);top:max(4.25rem,calc(var(--safe-area-top) + 3.5rem));left:50%;transform:translate(-50%)}.game-shell>.game-board{width:min(92rem,calc(100% - 1rem));height:100%;min-height:0;grid-template-rows:clamp(4.5rem,13%,6.5rem) minmax(0,1fr) clamp(8.25rem,28%,13rem)}.opponent-zone,.table-zone,.self-zone{min-width:0;min-height:0}.opponent-zone{overflow:hidden;padding:clamp(.55rem,1.4vh,.9rem) clamp(.75rem,2vw,1.5rem);grid-template-columns:minmax(9rem,1fr) minmax(11rem,1.65fr) minmax(8rem,auto);gap:clamp(.65rem,2vw,1.6rem)}.opponent-zone .player-summary{max-height:100%;overflow:hidden;gap:.25rem}.opponent-zone :where(.player-summary) strong,.opponent-zone :where(.player-summary)>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.opponent-zone .last-action{max-height:100%;overflow:hidden;padding:.45rem .65rem}.opponent-cards{--card-width: clamp(2.7rem, min(4.2vw, 8vh), 3.7rem);width:clamp(7rem,12vw,11rem);height:calc(var(--card-height) * .74);margin:0;transform:none}.opponent-fan{position:absolute;inset:50% auto auto 50%;width:var(--card-width);height:var(--card-height);transform:translate(-50%,-50%) scale(.72);transform-origin:center}.opponent-card{position:absolute;inset:0;transform-origin:50% 115%}.opponent-cards[data-visible-cards="1"] .opponent-card:nth-child(1){transform:translate(0) rotate(0)}.opponent-cards[data-visible-cards="2"] .opponent-card:nth-child(1){transform:translate(-1rem) rotate(-6deg)}.opponent-cards[data-visible-cards="2"] .opponent-card:nth-child(2){transform:translate(1rem) rotate(6deg)}.opponent-cards[data-visible-cards="3"] .opponent-card:nth-child(1){transform:translate(-1.55rem) rotate(-9deg)}.opponent-cards[data-visible-cards="3"] .opponent-card:nth-child(2){transform:translate(0) rotate(0)}.opponent-cards[data-visible-cards="3"] .opponent-card:nth-child(3){transform:translate(1.55rem) rotate(9deg)}.opponent-cards[data-visible-cards="4"] .opponent-card:nth-child(1){transform:translate(-2.1rem) rotate(-11deg)}.opponent-cards[data-visible-cards="4"] .opponent-card:nth-child(2){transform:translate(-.7rem) rotate(-4deg)}.opponent-cards[data-visible-cards="4"] .opponent-card:nth-child(3){transform:translate(.7rem) rotate(4deg)}.opponent-cards[data-visible-cards="4"] .opponent-card:nth-child(4){transform:translate(2.1rem) rotate(11deg)}.opponent-cards[data-visible-cards="5"] .opponent-card:nth-child(1){transform:translate(-2.6rem) rotate(-13deg)}.opponent-cards[data-visible-cards="5"] .opponent-card:nth-child(2){transform:translate(-1.3rem) rotate(-7deg)}.opponent-cards[data-visible-cards="5"] .opponent-card:nth-child(3){transform:translate(0) rotate(0)}.opponent-cards[data-visible-cards="5"] .opponent-card:nth-child(4){transform:translate(1.3rem) rotate(7deg)}.opponent-cards[data-visible-cards="5"] .opponent-card:nth-child(5){transform:translate(2.6rem) rotate(13deg)}.opponent-cards[data-visible-cards="6"] .opponent-card:nth-child(1){transform:translate(-3rem) rotate(-14deg)}.opponent-cards[data-visible-cards="6"] .opponent-card:nth-child(2){transform:translate(-1.8rem) rotate(-9deg)}.opponent-cards[data-visible-cards="6"] .opponent-card:nth-child(3){transform:translate(-.6rem) rotate(-3deg)}.opponent-cards[data-visible-cards="6"] .opponent-card:nth-child(4){transform:translate(.6rem) rotate(3deg)}.opponent-cards[data-visible-cards="6"] .opponent-card:nth-child(5){transform:translate(1.8rem) rotate(9deg)}.opponent-cards[data-visible-cards="6"] .opponent-card:nth-child(6){transform:translate(3rem) rotate(14deg)}.opponent-cards[data-visible-cards="7"] .opponent-card:nth-child(1){transform:translate(-3.3rem) rotate(-15deg)}.opponent-cards[data-visible-cards="7"] .opponent-card:nth-child(2){transform:translate(-2.2rem) rotate(-10deg)}.opponent-cards[data-visible-cards="7"] .opponent-card:nth-child(3){transform:translate(-1.1rem) rotate(-5deg)}.opponent-cards[data-visible-cards="7"] .opponent-card:nth-child(4){transform:translate(0) rotate(0)}.opponent-cards[data-visible-cards="7"] .opponent-card:nth-child(5){transform:translate(1.1rem) rotate(5deg)}.opponent-cards[data-visible-cards="7"] .opponent-card:nth-child(6){transform:translate(2.2rem) rotate(10deg)}.opponent-cards[data-visible-cards="7"] .opponent-card:nth-child(7){transform:translate(3.3rem) rotate(15deg)}.opponent-count{right:0;bottom:0}.table-zone{--card-width: clamp(3.75rem, min(6.5vw, 12vh), 5.75rem);overflow:hidden;padding:clamp(.6rem,1.8vh,1.25rem);grid-template-columns:minmax(8rem,1fr) auto minmax(8rem,1fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"turn turn turn" ". piles meta";gap:clamp(.5rem,1.6vh,1rem)}.turn-banner{min-height:3.25rem;max-width:min(30rem,94%)}.piles{min-width:0;align-self:center;gap:clamp(.8rem,3vw,2.5rem)}.pile-group{min-width:clamp(5.2rem,8vw,7.25rem);gap:clamp(.35rem,1vh,.65rem)}.draw-pile-group{padding:.35rem .45rem .45rem}.draw-button{width:auto;min-width:clamp(7rem,11vw,9.5rem);min-height:2.55rem}.table-meta{width:min(100%,10rem);min-width:0;max-height:100%;overflow:hidden;gap:clamp(.4rem,1vh,.75rem);padding:.65rem}.self-zone{--card-width: var(--self-card-width);overflow:hidden;padding:clamp(.45rem,1.2vh,.75rem) clamp(.6rem,1.5vw,1rem) max(.35rem,var(--safe-area-bottom));grid-template-rows:auto minmax(0,1fr) 2rem}.self-toolbar{min-width:0;min-height:2.6rem}.self-toolbar>div:first-child{min-width:0}.self-toolbar>div:first-child strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.self-toolbar .button{min-height:2.45rem;padding-block:.5rem}.pending-wild-decision{position:absolute;z-index:6;inset-block-start:clamp(3.2rem,8vh,4.2rem);inset-inline-start:50%;width:min(38rem,calc(100% - 1.2rem));padding:clamp(.55rem,1.4vw,.85rem);border:1px solid color-mix(in srgb,var(--color-accent) 55%,transparent);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:space-between;gap:.75rem;background:color-mix(in srgb,var(--color-surface-raised) 94%,transparent);box-shadow:var(--shadow-soft);transform:translate(-50%);backdrop-filter:blur(16px)}.pending-wild-copy{min-width:0;display:grid;gap:.15rem}.pending-wild-copy span{color:var(--color-text-muted);font-size:var(--text-sm)}.pending-wild-actions{flex:0 0 auto;display:flex;gap:.45rem}.pending-wild-actions .button{min-height:2.5rem;white-space:nowrap}.player-hand{min-height:0;padding:clamp(.8rem,2vh,1.15rem) .3rem .2rem;display:block;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;scrollbar-gutter:stable}.hand-row{width:max-content;min-width:100%;height:var(--card-height);justify-content:center;padding-inline:.25rem}.hand-card-slot{width:clamp(1.5rem,3.4vw,3rem);min-width:0;height:var(--card-height);flex:0 0 clamp(1.5rem,3.4vw,3rem)}.hand-card-slot:last-child{width:var(--card-width);min-width:var(--card-width);flex-basis:var(--card-width)}.self-feedback-slot{min-height:2rem;display:grid;place-items:center}.self-feedback-slot>*{grid-area:1 / 1}.self-feedback-slot .invalid-card-feedback{max-width:100%;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:56rem){.game-shell>.game-board{width:calc(100% - .4rem)}.opponent-zone{grid-template-columns:minmax(0,1fr) minmax(7rem,auto);grid-template-areas:"summary cards" "action action";gap:.25rem .65rem}.opponent-zone .player-summary{grid-area:summary}.opponent-zone .last-action{grid-area:action;max-width:100%;padding:.2rem .45rem}.opponent-zone :where(.last-action .field-label),.opponent-zone :where(.last-action-card){display:none}.opponent-cards{grid-area:cards}.table-zone{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"turn turn" "piles piles" "meta meta"}.piles{align-self:center}.table-meta{width:min(31rem,100%);justify-self:center;grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem;padding:.45rem .6rem;text-align:center}.table-meta .field-label{margin-bottom:.2rem;font-size:.6rem}.active-color{padding-left:0;border-left:0}}@media(max-width:40rem)and (min-height:36rem){.pending-wild-decision{inset-block-start:3rem;align-items:stretch;flex-direction:column;gap:.45rem}.pending-wild-actions{display:grid;grid-template-columns:1fr 1fr}.pending-wild-actions .button{min-width:0;padding-inline:.55rem;white-space:normal}.game-shell{--self-card-width: clamp(4.35rem, 19vw, 5.15rem)}.game-shell>.game-board{grid-template-rows:5.5rem minmax(0,1fr) minmax(10.5rem,27%)}.opponent-zone{padding:.45rem .65rem}.opponent-cards{width:7rem}.self-toolbar{gap:.35rem}.self-toolbar .field-label{margin-bottom:.15rem;font-size:.6rem}.self-toolbar>div:first-child strong{max-width:8.5rem;font-size:.75rem}.zero-action,.catch-action{min-height:2.3rem;padding:.4rem .55rem;font-size:.68rem}}@media(max-height:35.99rem){.pending-wild-decision{inset-block-start:2.55rem;padding:.4rem .55rem}.pending-wild-copy span{display:none}.pending-wild-actions .button{min-height:2rem;padding:.3rem .5rem;font-size:.68rem}.game-shell{--self-card-width: clamp(3rem, min(6.4vw, 13vh), 4rem);grid-template-rows:auto minmax(0,1fr)}.game-shell .app-header{min-height:2.75rem;padding-block:.25rem;grid-template-columns:1fr auto auto}.game-shell .app-header .connection-pill{grid-row:auto;grid-column:auto;margin:0}.game-shell>.game-board{grid-template-rows:3.5rem minmax(0,1fr) 7.15rem}.opponent-zone{padding:.25rem .55rem;grid-template-columns:minmax(7rem,1fr) minmax(8rem,1.4fr) minmax(6rem,auto);grid-template-areas:"summary action cards"}.opponent-zone .player-summary{gap:.1rem;font-size:.65rem}.opponent-zone .player-summary strong{font-size:.75rem}.opponent-zone .player-summary>:not(strong):not(.bot-thinking){display:none}.opponent-zone .last-action{min-width:0}.opponent-zone .last-action strong{font-size:.65rem}.opponent-cards{--card-width: 2.65rem;width:6rem}.table-zone{--card-width: clamp(2.8rem, min(5.5vw, 12vh), 3.6rem);padding:.3rem .5rem;grid-template-columns:minmax(7rem,1fr) auto minmax(7rem,1fr);grid-template-rows:minmax(0,1fr);grid-template-areas:"turn piles meta";gap:.4rem}.turn-banner{min-width:0;width:100%;min-height:2.6rem;padding:.35rem .55rem}.turn-copy strong{font-size:.75rem}.turn-detail{display:none}.piles{gap:.4rem}.pile-group{min-width:3.8rem;gap:.2rem}.pile-label,.draw-attempt{display:none}.draw-pile-group{padding:.15rem}.draw-button{min-width:5.7rem;min-height:2rem;padding:.3rem .45rem;font-size:.65rem}.table-meta{width:100%;padding:.35rem;display:grid;grid-template-columns:1fr;text-align:left;font-size:.65rem}.table-meta>div:not(.active-color),.table-meta .field-label{display:none}.self-zone{padding:.25rem .55rem max(.2rem,var(--safe-area-bottom));grid-template-rows:2.25rem minmax(0,1fr) 1.2rem}.self-toolbar{min-height:2.2rem}.self-toolbar .field-label{display:none}.self-toolbar>div:first-child strong{max-width:10rem;font-size:.68rem}.self-toolbar .button{min-height:2rem;padding:.3rem .45rem;font-size:.62rem}.player-hand{padding-top:.45rem}.hand-card-slot{width:clamp(1rem,2.7vw,1.5rem);flex-basis:clamp(1rem,2.7vw,1.5rem)}.self-feedback-slot{min-height:1.2rem}.self-feedback-slot .invalid-card-feedback{min-height:1.1rem;padding:.1rem .35rem;font-size:.6rem}}@media(prefers-reduced-motion:reduce){.opponent-card{transition:none}}
