:root{--bg-primary: #2f241a;--bg-secondary: #3f3022;--bg-card: rgba(63, 48, 34, .8);--bg-card-solid: #3f3022;--bg-elevated: #513d2b;--border-subtle: rgba(236, 218, 189, .12);--border-medium: rgba(236, 218, 189, .24);--border-strong: rgba(236, 218, 189, .38);--text-primary: #f6efe3;--text-secondary: #decaa9;--text-muted: #bca57f;--accent-blue: #4f95d8;--accent-green: #44a16a;--accent-amber: #d29b45;--accent-red: #d15555;--accent-purple: #8f70c7;--tabletop-felt: #365d45;--tabletop-felt-dark: #254031;--board-frame-outer: #6f4b2c;--board-frame-inner: #98704a;--board-grid: #d8c49a;--board-cell: #e9ddc0;--premium-label-light: rgba(248, 242, 232, .88);--premium-label-dark: rgba(43, 32, 20, .62);--cell-empty: var(--board-cell);--cell-tw: #b31c2a;--cell-tw-top: #ca3a46;--cell-tw-bottom: #8f1420;--cell-dw: #f1a3c2;--cell-dw-top: #f7c2d7;--cell-dw-bottom: #da8aac;--cell-tl: #0c3d76;--cell-tl-top: #235997;--cell-tl-bottom: #082c56;--cell-dl: #7fbfe1;--cell-dl-top: #a6d8ef;--cell-dl-bottom: #5da9d2;--cell-center: #f1a3c2;--tile-bg: linear-gradient(150deg, #f9efdd 0%, #efddb9 55%, #e4cb9a 100%);--tile-border: #aa8752;--tile-text: #2f2415;--tile-shadow: #85613a;--tile-highlight: rgba(255, 252, 244, .5);--tile-blank-bg: linear-gradient(150deg, #f7f0de 0%, #f1e1b7 58%, #e6ce99 100%);--tile-blank-border: #b6935f;--tile-blank-shadow: #8f6c43;--font-sans: "Trebuchet MS", "Avenir Next", "Segoe UI", sans-serif;--font-heading: "Palatino Linotype", "Book Antiqua", "Times New Roman", serif;--font-tile: "Rockwell", "Roboto Slab", "Noto Serif", "Times New Roman", serif;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px;--page-gutter: clamp(.5rem, 3vw, 1.1rem);--page-gutter-tight: clamp(.35rem, 2.25vw, .85rem);--cell-radius: 6px;--board-radius: calc(var(--cell-radius) + 4px);--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);--shadow-sm: 0 1px 2px rgba(20, 14, 9, .35);--shadow-md: 0 6px 14px rgba(20, 14, 9, .3);--shadow-lg: 0 10px 28px rgba(16, 10, 6, .36);--shadow-glow: 0 0 20px rgba(79, 149, 216, .35);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .25s cubic-bezier(.4, 0, .2, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh;background-image:radial-gradient(120% 90% at 50% -10%,rgba(255,255,255,.14) 0%,transparent 62%),radial-gradient(80% 70% at 10% 96%,rgba(0,0,0,.2) 0%,transparent 64%),repeating-linear-gradient(45deg,#ffffff04 0 2px,#00000004 2px 4px),linear-gradient(180deg,var(--tabletop-felt) 0%,var(--tabletop-felt-dark) 60%,#1d3225 100%)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#app{max-width:1280px;margin:0 auto;position:relative;padding:calc(1rem + var(--safe-area-top)) calc(1rem + var(--safe-area-right)) calc(1rem + var(--safe-area-bottom)) calc(1rem + var(--safe-area-left))}@media(min-width:640px){#app{padding:calc(1.5rem + var(--safe-area-top)) calc(2rem + var(--safe-area-right)) calc(1.5rem + var(--safe-area-bottom)) calc(2rem + var(--safe-area-left))}}.shell{display:flex;flex-direction:column;gap:1.25rem;padding:clamp(.75rem,2vw,1.2rem);border-radius:var(--radius-xl);border:1px solid rgba(236,218,189,.18);background:linear-gradient(180deg,#281e1594,#211911a6);box-shadow:inset 0 1px #fff6e514,0 12px 36px #0e0a0757}@media(max-width:639px){.shell{padding:0;border:0;background:transparent;box-shadow:none}}.top{display:flex;flex-direction:column;gap:1rem}@media(min-width:640px){.top{flex-direction:row;justify-content:space-between;align-items:flex-start}}.top-controls{display:flex;flex-direction:column;gap:.75rem}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent-green);margin-right:4px;animation:pulse 2s ease-in-out infinite}.pill.danger .status-dot{background:var(--accent-red);animation:none}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}h3{font-family:var(--font-heading);font-size:1rem;font-weight:700;letter-spacing:.02em;color:var(--text-primary)}.status-row{display:flex;flex-wrap:wrap;gap:.5rem}.top-row{justify-content:space-between;align-items:center}.top-actions{justify-content:flex-end}.pill{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .75rem;font-size:.75rem;font-weight:500;border-radius:999px;background:color-mix(in srgb,var(--bg-elevated) 80%,#000000 20%);border:1px solid var(--border-subtle);color:var(--text-secondary);transition:all var(--transition-fast)}.pill.active{background:linear-gradient(135deg,var(--accent-green),#16a34a);color:#fff;border-color:transparent;box-shadow:0 2px 8px #22c55e4d}.pill.danger{background:linear-gradient(135deg,var(--accent-red),#dc2626);color:#fff;border-color:transparent}.cards{display:grid;grid-template-columns:1fr;gap:1rem}@media(min-width:900px){.cards{grid-template-columns:repeat(3,1fr)}.board-card{grid-column:span 2;grid-row:span 2}.rack-card{grid-column:span 1;align-self:start}.info-card{grid-column:span 1}}.card{background:var(--bg-card);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:1.25rem;box-shadow:var(--shadow-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.card.compact{padding:.75rem}.card.compact .gap{gap:.5rem}.card.compact button{padding:.5rem .75rem;font-size:.8rem}.card:hover{border-color:var(--border-medium)}.card-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-subtle)}.row{display:flex;align-items:center}.wrap{flex-wrap:wrap}.gap{gap:.75rem}.flex1{flex:1;min-width:120px}.card>.row.wrap.gap{row-gap:1rem}.card>.row.wrap.gap>.stack{min-width:100px}@media(min-width:640px){.flex1{min-width:160px}.card>.row.wrap.gap>.stack{min-width:140px}}.stack{display:flex;flex-direction:column;gap:.35rem}.center{text-align:center}.label{font-size:.8rem;font-weight:600;letter-spacing:.01em;color:var(--text-secondary)}.hint{font-size:.75rem;color:var(--text-muted);line-height:1.5}input,select,textarea{width:100%;padding:.625rem .875rem;font-size:.875rem;font-family:inherit;color:var(--text-primary);background:color-mix(in srgb,var(--bg-primary) 86%,#ffffff 14%);border:1px solid var(--border-medium);border-radius:var(--radius-md);outline:none;transition:all var(--transition-fast)}input:focus,select:focus,textarea:focus{border-color:var(--accent-blue);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-blue) 30%,transparent)}input::placeholder,textarea::placeholder{color:var(--text-muted)}select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2394a3b8'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;background-size:1rem;padding-right:2.5rem}textarea{resize:vertical;min-height:4rem}input[type=number]{max-width:100px}input[type=checkbox]{width:auto;padding:0;accent-color:var(--accent-blue)}.events-box{width:100%;max-width:1200px}.toast{width:100%;padding:.65rem .9rem;border-radius:var(--radius-lg);background:color-mix(in srgb,var(--bg-primary) 86%,#000000 14%);border:1px solid var(--border-subtle);color:var(--text-primary);box-shadow:var(--shadow-sm);opacity:0;transition:opacity .18s ease-out,transform .18s ease-out;pointer-events:none;transform:translateY(-4px)}.toast.is-visible{opacity:1;transform:translateY(0);pointer-events:auto}.toast.is-hiding{opacity:0;transform:translateY(-4px)}.toast.info{background:color-mix(in srgb,var(--bg-primary) 86%,#000000 14%);border-color:var(--border-subtle)}.toast.danger{background:color-mix(in srgb,#7f2028 62%,var(--bg-primary));border-color:#b2404a8c}.disconnect-overlay{position:absolute;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:#1c150fb3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:var(--radius-lg);animation:overlayFadeIn .3s ease-out}.ready-overlay{position:absolute;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;background:#1c150f94;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:var(--radius-lg);animation:overlayFadeIn .25s ease-out}.ready-content{display:flex;flex-direction:column;align-items:center;text-align:center;padding:1.75rem 1.25rem;max-width:340px;background:#443323f0;border:1px solid var(--border-medium);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.ready-content h3{margin:0 0 .5rem}.ready-content .hint{margin:0 0 1rem}.ready-content .primary[disabled]{opacity:.85;cursor:default}.gameover-overlay{position:absolute;inset:0;z-index:95;display:flex;align-items:center;justify-content:center;background:#1c150f9e;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:var(--radius-lg);animation:overlayFadeIn .25s ease-out}.gameover-content{display:flex;flex-direction:column;align-items:center;text-align:center;padding:1.75rem 1.25rem;max-width:420px;background:#443323f5;border:1px solid var(--border-medium);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.gameover-icon{font-size:2.75rem;margin-bottom:.6rem;opacity:.95}.gameover-content h3{margin:0 0 .35rem}.gameover-scores{width:100%;margin-top:.6rem;padding-top:.6rem;border-top:1px solid var(--border-medium)}.gameover-scores-row{margin-top:.25rem;font-weight:700;color:var(--text-primary);line-height:1.4}.gameover-stats{width:100%;margin-top:.75rem;display:grid;grid-template-columns:1fr 1fr;gap:.5rem .75rem}.gameover-stat{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;padding:.5rem .6rem;border:1px solid var(--border-medium);border-radius:var(--radius-md);background:#261c1380}.gameover-banner{position:absolute;top:calc(.75rem + var(--safe-area-top));left:calc(.75rem + var(--safe-area-left));right:calc(.75rem + var(--safe-area-right));z-index:80;pointer-events:none}.gameover-banner-inner{pointer-events:auto;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem .85rem;border-radius:var(--radius-lg);background:#443323f0;border:1px solid var(--border-medium);box-shadow:var(--shadow-lg);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:overlayFadeIn .2s ease-out}.gameover-banner-text{display:flex;align-items:baseline;gap:.5rem;min-width:0}.gameover-banner-text .hint{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:640px){.gameover-stats{grid-template-columns:1fr}.gameover-banner-inner{flex-direction:column;align-items:stretch}.gameover-banner-text{justify-content:center}}@keyframes overlayFadeIn{0%{opacity:0;backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px)}to{opacity:1;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}}.disconnect-content{display:flex;flex-direction:column;align-items:center;text-align:center;padding:2rem 1.5rem;max-width:320px;background:#443323f5;border:1px solid var(--border-medium);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg),0 0 60px #b2404a33}.disconnect-icon{font-size:3rem;margin-bottom:.75rem;animation:iconPulse 2s ease-in-out infinite}@keyframes iconPulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.8}}.disconnect-content h3{font-size:1.25rem;font-weight:700;color:#e68a92;margin-bottom:.75rem;letter-spacing:-.01em}.disconnect-content p{font-size:.9rem;color:var(--text-secondary);line-height:1.5;margin-bottom:.5rem}.disconnect-hint{font-size:.85rem!important;color:var(--text-muted)!important;margin-top:.5rem!important}.disconnect-spinner{width:24px;height:24px;margin-top:1rem;border:3px solid var(--border-medium);border-top-color:#d8b57b;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:640px){.disconnect-content{padding:1.5rem 1rem;max-width:280px}.disconnect-icon{font-size:2.5rem}.disconnect-content h3{font-size:1.1rem}.disconnect-content p{font-size:.85rem}}button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1rem;font-size:.875rem;font-weight:600;font-family:inherit;color:var(--text-primary);background:linear-gradient(180deg,color-mix(in srgb,var(--bg-elevated) 88%,#fff 12%) 0%,var(--bg-elevated) 100%);border:1px solid var(--border-medium);border-radius:var(--radius-md);cursor:pointer;outline:none;transition:all var(--transition-fast);white-space:nowrap}button:hover{background:linear-gradient(180deg,color-mix(in srgb,var(--bg-secondary) 88%,#fff 12%) 0%,var(--bg-secondary) 100%);border-color:var(--border-strong);transform:translateY(-1px);box-shadow:var(--shadow-sm)}button:active{transform:translateY(0)}button:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-blue) 36%,transparent)}button:disabled{opacity:.5;cursor:not-allowed;transform:none}button.primary{background:linear-gradient(145deg,#c54a55,#9f2c37 60%,#7c1f29);border:none;color:#fff;box-shadow:0 2px 8px #54141b52}button.primary:hover{background:linear-gradient(145deg,#d45a66,#ad3340 58%,#89232f);box-shadow:0 5px 16px #54141b6b}button.ghost{background:#fff7e805;border-color:var(--border-subtle)}button.ghost:hover{background:#fff7e814;border-color:var(--border-medium)}button.danger{color:var(--accent-red);border-color:#ef44444d}button.danger:hover{background:#ef44441a;border-color:var(--accent-red)}.segmented{display:inline-flex;background:color-mix(in srgb,var(--bg-primary) 86%,#000 14%);border:1px solid var(--border-medium);border-radius:var(--radius-md);padding:3px;gap:2px}.segmented button{padding:.5rem 1rem;font-size:.8rem;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-secondary)}.segmented button:hover{background:#fff7e814;transform:none;box-shadow:none}.segmented button.active,.segmented button[aria-selected=true]{background:linear-gradient(145deg,#d8b57b,#be9558);color:#35230f;text-shadow:0 1px 0 rgba(255,246,232,.65);box-shadow:0 2px 4px #44311b47}.board-card{position:relative;overflow:visible}.board-bleed{padding:clamp(.6rem,1.5vw,1rem);display:flex;flex-direction:column;gap:.75rem;align-items:center}.board-bleed .card-head,.board-bleed .events-box{width:100%;margin-left:clamp(.1rem,2vw,.35rem);margin-right:clamp(.1rem,2vw,.35rem)}.board-bleed .board{box-shadow:var(--shadow-lg);border-width:3px;width:min(100%,calc(100vw - (2 * var(--page-gutter-tight))));max-width:1200px}.board-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}@media(max-width:1024px){.board-bleed{width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);border-radius:0;border-left:none;border-right:none;box-shadow:none;background:linear-gradient(180deg,#2f241af2,#2f241ae6);padding:clamp(.5rem,2vw,.9rem) var(--page-gutter-tight) clamp(.9rem,4vw,1.35rem)}.board-bleed .card-head,.board-bleed .events-box{margin-left:var(--page-gutter-tight);margin-right:var(--page-gutter-tight)}.board-bleed .board{width:calc(100vw - (2 * var(--page-gutter-tight)));max-width:none;border-radius:var(--board-radius)}}.board{display:grid;grid-template-columns:repeat(15,1fr);gap:3px;position:relative;background:var(--board-grid);border:2px solid var(--board-frame-inner);border-radius:var(--board-radius);padding:6px;overflow:hidden;width:100%;max-width:none;aspect-ratio:1;box-shadow:inset 0 0 0 5px var(--board-frame-outer),inset 0 0 0 8px var(--board-frame-inner),var(--shadow-lg)}.board:before{content:"";position:absolute;inset:8px;border-radius:calc(var(--board-radius) - 8px);pointer-events:none;background:repeating-linear-gradient(45deg,#ffffff08 0 2px,#00000008 2px 4px)}.board .row{display:contents}.cell{position:relative;aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2px;background:var(--cell-empty);border-radius:var(--cell-radius);cursor:pointer;transition:all var(--transition-fast);overflow:hidden;font-size:clamp(.65rem,2.5vw,1rem)}.cell:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.24) 0%,transparent 56%);pointer-events:none}.cell:hover{transform:scale(1.02);z-index:1;box-shadow:0 2px 8px #0000004d}.cell:focus-visible{outline:2px solid var(--accent-blue);outline-offset:-2px;z-index:2;box-shadow:0 0 0 3px #3b82f666}.cell.tw{background:repeating-linear-gradient(45deg,#fff0f41f 0 3px,#fff0f405 3px 8px),linear-gradient(145deg,var(--cell-tw-top) 0%,var(--cell-tw) 58%,var(--cell-tw-bottom) 100%)}.cell.tw:after{content:"TW";position:absolute;font-size:.45em;font-weight:700;color:var(--premium-label-light);bottom:2px}.cell.dw{background:radial-gradient(circle at 25% 25%,rgba(255,255,255,.2) 0 9%,transparent 10% 100%),linear-gradient(145deg,var(--cell-dw-top) 0%,var(--cell-dw) 58%,var(--cell-dw-bottom) 100%);background-size:12px 12px,auto}.cell.dw:after{content:"DW";position:absolute;font-size:.45em;font-weight:700;color:var(--premium-label-dark);bottom:2px}.cell.tl{background:repeating-linear-gradient(-45deg,#ebf5ff26 0 3px,#ebf5ff05 3px 8px),linear-gradient(145deg,var(--cell-tl-top) 0%,var(--cell-tl) 58%,var(--cell-tl-bottom) 100%)}.cell.tl:after{content:"TL";position:absolute;font-size:.45em;font-weight:700;color:var(--premium-label-light);bottom:2px}.cell.dl{background:repeating-linear-gradient(0deg,#ffffff24 0 2px,#ffffff05 2px 6px),linear-gradient(145deg,var(--cell-dl-top) 0%,var(--cell-dl) 58%,var(--cell-dl-bottom) 100%)}.cell.dl:after{content:"DL";position:absolute;font-size:.45em;font-weight:700;color:var(--premium-label-dark);bottom:2px}.cell.center{background:radial-gradient(circle at center,rgba(255,250,252,.5) 0 25%,transparent 26% 100%),linear-gradient(145deg,var(--cell-dw-top) 0%,var(--cell-center) 58%,var(--cell-dw-bottom) 100%)}.cell.center:after{content:"★";position:absolute;font-size:.7em;color:#8f1a27;text-shadow:0 1px 0 rgba(255,238,242,.6)}.cell.pending{animation:pulse-glow 1.5s ease-in-out infinite}.cell.remote-draft{opacity:.58;filter:saturate(.6);box-shadow:inset 0 0 0 2px #baccd873}.cell.remote-draft:hover{transform:none;z-index:0;box-shadow:inset 0 0 0 2px #baccd880}.cell.last-move:before{box-shadow:inset 0 0 0 3px #e1ab58f5}.cell.pending.valid{animation:none;box-shadow:0 0 0 2px var(--accent-green),0 0 14px #22c55e73}.cell.pending.invalid{animation:none;box-shadow:0 0 0 2px var(--accent-red),0 0 14px #ef444473}.cell.pending.checking{animation:none;box-shadow:0 0 0 2px var(--accent-amber),0 0 14px #f59e0b66}@keyframes pulse-glow{0%,to{box-shadow:0 0 0 2px var(--accent-green),0 0 12px #22c55e66}50%{box-shadow:0 0 0 3px var(--accent-green),0 0 20px #22c55e99}}.cell .letter{font-family:var(--font-tile);font-weight:700;letter-spacing:.02em;color:var(--tile-text);text-shadow:none;display:block;line-height:1.15;padding-top:.06em;font-size:clamp(.85rem,3vw,1.35rem)}.cell .value{position:absolute;right:3px;bottom:2px;font-size:.55em;font-weight:700;color:var(--tile-text);opacity:.75;font-variant-numeric:tabular-nums}.cell:has(.letter){background:var(--tile-bg);box-shadow:inset 0 -2px 0 var(--tile-shadow),0 2px 3px #00000038}.cell:has(.letter):before{background:linear-gradient(180deg,var(--tile-highlight) 0%,transparent 42%)}.cell:has(.letter):after{display:none}.rack{display:flex;flex-direction:column;gap:.75rem}.rack-row{display:flex;flex-wrap:wrap;gap:.5rem;min-height:3rem}.rack+.row.wrap.gap{margin-top:.85rem}.tile{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;min-width:2.75rem;min-height:3.25rem;padding:.35rem .45rem;background:var(--tile-bg);border:2px solid var(--tile-border);border-radius:var(--radius-md);box-shadow:inset 0 1px 0 var(--tile-highlight),inset 0 -3px 0 var(--tile-shadow),0 3px 6px #0003;cursor:grab;transition:all var(--transition-fast);position:relative;cursor:pointer;-webkit-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.tile:before{content:"";position:absolute;inset:1px;border-radius:calc(var(--radius-md) - 2px);pointer-events:none;background:radial-gradient(circle at 25% 22%,rgba(255,255,255,.28) 0 10%,transparent 11% 100%),repeating-linear-gradient(25deg,#7054310d 0 1px,#70543103 1px 4px)}.tile:hover{transform:translateY(-3px) scale(1.05);background:var(--tile-bg);box-shadow:inset 0 1px 0 var(--tile-highlight),inset 0 -3px 0 var(--tile-shadow),0 6px 16px #0000004d}.tile:active{transform:translateY(-1px)}.tile .letter{font-family:var(--font-tile);font-size:1.35rem;font-weight:700;letter-spacing:.02em;color:var(--tile-text);text-shadow:0 1px 0 rgba(255,252,245,.45),0 -1px 0 rgba(112,84,49,.28);display:block;line-height:1.15;padding-top:.04em;margin-bottom:.35rem}.tile .value{font-size:.65rem;font-weight:700;color:var(--tile-text);opacity:.72;position:absolute;bottom:3px;right:5px;text-shadow:0 1px 0 rgba(255,252,245,.35)}.tile.selected{transform:translateY(-3px) scale(1.05);background:var(--tile-bg);border-color:var(--accent-blue);box-shadow:0 0 0 2px var(--accent-blue),inset 0 1px 0 var(--tile-highlight),inset 0 -3px 0 var(--tile-shadow),0 4px 10px #0003}.tile.pending{opacity:.66;border-color:var(--accent-green);box-shadow:0 0 0 2px var(--accent-green),inset 0 1px 0 var(--tile-highlight),inset 0 -3px 0 var(--tile-shadow),0 2px 4px #00000026}.tile.blank{background:var(--tile-blank-bg);border-color:var(--tile-blank-border);box-shadow:inset 0 1px 0 var(--tile-highlight),inset 0 -3px 0 var(--tile-blank-shadow),0 3px 6px #0003}.tile.blank .letter{color:#4d3318}.score{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);margin-bottom:.5rem}.score span{color:var(--text-secondary);font-size:.875rem}.score strong{font-size:1.25rem;font-weight:700;color:var(--accent-green);font-variant-numeric:tabular-nums}.log{display:flex;flex-direction:column;gap:.25rem;max-height:200px;overflow-y:auto;padding:.5rem;background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);font-size:.75rem;font-family:SF Mono,Fira Code,monospace;color:var(--text-muted)}.log>div{padding:.25rem 0;border-bottom:1px solid var(--border-subtle)}.log>div:last-child{border-bottom:none}.log::-webkit-scrollbar{width:6px}.log::-webkit-scrollbar-track{background:transparent}.log::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:3px}.log::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}.stats-details summary{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--text-secondary);font-weight:600;margin-bottom:.75rem;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.25rem .35rem;border-radius:var(--radius-md)}.stats-details summary::-webkit-details-marker{display:none}.stats-details summary::marker{content:""}.stats-details summary:after{content:"";width:8px;height:8px;border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);transform:rotate(45deg);transition:transform var(--transition-fast);flex:0 0 auto}.stats-details[open] summary:after{transform:rotate(-135deg)}.stats-row{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--border-subtle)}.bag-count{font-size:1.75rem;font-weight:800;letter-spacing:.02em}.move-history{padding-top:.75rem}.history-player h4{margin:.75rem 0 .25rem;font-size:1rem;font-weight:700;color:var(--text-primary)}.history-list{margin:0;padding-left:1.25rem}.history-list li{padding:.25rem 0;border-bottom:1px solid var(--border-subtle)}.history-list li:last-child{border-bottom:none}.qr-stack{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.5rem}.qr-stack img{width:120px;height:120px;object-fit:contain;background:#fff;border-radius:var(--radius-md);padding:8px;box-shadow:var(--shadow-md)}.blank-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000}.blank-modal-dialog{background:var(--bg-secondary);border:1px solid var(--border-medium);border-radius:var(--radius-lg);padding:1.5rem;max-width:420px;width:90%;box-shadow:0 25px 50px #00000080}.blank-dialog-title{margin:0 0 .75rem;color:var(--text-primary);font-size:1.25rem;font-weight:600}.blank-dialog-description{margin:0 0 1.25rem;color:var(--text-secondary);font-size:.9rem}.blank-letter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(42px,1fr));gap:8px;margin-bottom:1.25rem}.blank-letter-btn{padding:10px 8px;border:1px solid var(--border-medium);border-radius:8px;background:var(--tile-bg);color:var(--tile-text);cursor:pointer;font-weight:700;font-size:1rem;transition:all var(--transition-fast);box-shadow:inset 0 -2px 0 var(--tile-shadow),0 2px 4px #0003}.blank-letter-btn:hover,.blank-letter-btn:focus-visible{transform:translateY(-2px) scale(1.05);box-shadow:0 0 0 2px var(--accent-blue),inset 0 -2px 0 var(--tile-shadow),0 4px 8px #0000004d}.blank-dialog-actions{display:flex;gap:10px;justify-content:flex-end}.blank-cancel-btn{padding:10px 20px;border:1px solid var(--border-medium);border-radius:10px;background:var(--bg-elevated);color:var(--text-primary);cursor:pointer;font-weight:600;font-size:.9rem;transition:all var(--transition-fast)}.blank-cancel-btn:hover,.blank-cancel-btn:focus-visible{background:#475569}.setup-section{animation:slideDown .3s ease-out}.app-footer{display:flex;justify-content:center;padding:.25rem 0 calc(.5rem + var(--safe-area-bottom))}.app-footer .version{opacity:.75}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}#host-handshake,#client-handshake{display:none}@media(max-width:640px){#app{padding:calc(.4rem + var(--safe-area-top)) calc(.25rem + var(--safe-area-right)) calc(.45rem + var(--safe-area-bottom)) calc(.25rem + var(--safe-area-left))}.top{gap:.65rem}.top-controls{gap:.5rem}.status-row{gap:.35rem}.top-row{row-gap:.5rem}.top-actions{width:100%;justify-content:space-between}.top-actions button{flex:1}.pill{padding:.28rem .6rem;font-size:.7rem;gap:.3rem}.cards{gap:.75rem}.card{padding:.9rem}.board-card.board-bleed{border:0;background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;border-radius:0}.board-bleed{padding:0 0 .7rem;background:transparent}.board-bleed .card-head{margin-bottom:.5rem;padding-bottom:.5rem}.card-head{flex-direction:row;align-items:center;gap:.5rem;margin-bottom:.65rem;padding-bottom:0;border-bottom:0}.card-head .hint{display:none}#dict-controls>.row>.label{display:none}#dict-controls>.row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;align-items:stretch}#dict-controls button{min-width:0;width:100%;justify-content:center;padding:.45rem .35rem;font-size:.75rem}#dict-controls button span[aria-label]{font-size:.85em}.board-card .card-head>h3,.rack-card .card-head>h3,.info-card .card-head>h3{display:none}.board-card .card-head .label{display:none}#rack-owner{margin-left:auto}#stats-section .card-head,.qr-stack .hint{display:none}.setup-section label.stack>.hint,.setup-section #session-timer>.hint{display:none}button.ghost[aria-pressed=true]{background:#fff7e814;border-color:var(--border-medium)}.rack-card .row.wrap.gap{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin-top:.85rem}.rack-card .row.wrap.gap button{width:100%}.board-bleed .board{gap:1px;padding:0;width:100vw;max-width:none;flex:0 0 100vw;border:0;border-radius:0;box-shadow:none}.board-bleed .events-box{width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);padding:0 var(--page-gutter-tight)}.board-bleed .board:before{content:none}.cell{border-radius:3px}.tile{min-width:2.5rem;min-height:3.15rem}.tile .letter{font-size:1.25rem;margin-bottom:.45rem}button{padding:.5rem .75rem;font-size:.8rem}}@media(hover:none)and (pointer:coarse){.tile.selected{transform:none;background:var(--tile-bg);border-color:var(--accent-blue);box-shadow:0 0 0 2px var(--accent-blue),inset 0 1px #fff6,inset 0 -3px 0 var(--tile-shadow)}}:focus-visible{outline:2px solid var(--accent-blue);outline-offset:2px}button:focus-visible{outline:none;box-shadow:0 0 0 3px #3b82f666}@media print{body{background:#fff;color:#000}.card{background:#fff;border:1px solid #ddd;box-shadow:none}}
