:root{--felt: #0b6b3a;--felt-dark: #084d2a;--tile: burlywood;--tile-shadow: #b8915f;--accent: #ffd23f;--ink: #1a1208}*{box-sizing:border-box}body{margin:0;min-height:100vh;padding:2em;background-color:var(--felt-dark);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA type='linear' slope='0.8'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"),radial-gradient(circle at 50% 0%,var(--felt) 0%,var(--felt-dark) 100%);background-blend-mode:soft-light,normal;background-attachment:fixed,fixed;color:#f4f4f4;font-family:Trebuchet MS,Helvetica,Arial,sans-serif}.App{display:flex;flex-direction:column;gap:1em;max-width:1100px;margin:0 auto}.Tile{background-color:var(--tile);background-image:repeating-linear-gradient(112deg,#6543210f 0 1.5px,#65432100 1.5px 4px),linear-gradient(150deg,#fff8e78c,#fff8e700 40%,#96643738);border:1px solid var(--ink);border-radius:.3em;font-weight:700;color:var(--ink);box-shadow:.05em .1em 0 var(--tile-shadow),inset 0 .05em .02em #fffaeb80;margin:.05em;width:1.5em;height:1.5em;display:table;text-align:center;user-select:none}.Tile .letter{display:table-cell;vertical-align:middle}.Tile.blank{background-color:transparent;background-image:none;border-style:dashed;border-color:#fff6;box-shadow:none}.Word{display:flex;flex-direction:row;margin-right:1.2em;margin-bottom:.4em;font-size:1.5em}@keyframes wordGlow{0%{box-shadow:0 0 .5em .18em #ffd23fe6;background-color:#ffd23fe6}to{box-shadow:0 0 .5em .18em #ffd23f00;background-color:#ffd23f00}}.Word.glow{border-radius:.3em;padding:.12em .22em;animation:wordGlow 1.8s ease-out}.Tile.selectable,.Word.selectable{cursor:pointer}.flipped .Tile.selected{outline:3px solid var(--accent);outline-offset:1px;transform:translateY(-.12em)}.Word.selectable{padding:.05em .15em;border-radius:.3em}.Word.selected{outline:2px solid var(--accent);background:#ffd23f2e}.TileText{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;gap:.6em}.Board{display:flex;flex-direction:column;gap:1em}.global-letters{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;gap:1em;padding:.8em;border-radius:.6em;background:#0000002e}.flipped{font-size:1.5em;flex:1;display:flex;flex-direction:row;flex-wrap:wrap;min-height:1.6em}.flipped .Tile{margin:.15em}.unflipped{display:flex;flex-direction:row;align-items:center;margin-left:auto}.unflipped .count{color:var(--accent);margin-left:.4em;white-space:nowrap}.players{display:flex;flex-direction:column;gap:.6em}.Player{padding:.6em .8em;border-radius:.6em;background:#0000001f}.Player.is-cpu .player-header h2:after{content:" 🤖"}.Player.is-turn{box-shadow:inset 0 0 0 2px #ffd23f8c}.turn-badge{font-size:.7em;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink);background:var(--accent);padding:.1em .5em;border-radius:1em;white-space:nowrap}.player-header{display:flex;flex-direction:row;align-items:baseline;gap:.6em;margin-bottom:.4em;color:var(--accent)}.player-header h2{margin:0;font-size:1.1em}.player-header .score{font-size:.85em;color:#ffffffb3}.player-header hr{flex:1;border:none;border-top:1px solid rgba(255,210,63,.35)}.cpu-wait{height:4px;margin:0 0 .45em;border-radius:2px;background:#00000047;overflow:hidden;opacity:0;transition:opacity .25s ease}.cpu-wait.is-waiting{opacity:1}.cpu-wait-fill{height:100%;width:0%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),#ffe98a);box-shadow:0 0 6px #ffd23f8c}.words{display:flex;flex-direction:row;flex-wrap:wrap;min-height:1.6em}.words .empty{opacity:.4;font-style:italic;font-size:1em}.controls{display:flex;gap:.6em;align-items:stretch}.TextBox{flex:1}.TextBox input{width:100%;height:3em;border:none;border-radius:2em;font-size:1.3em;text-align:center;text-transform:uppercase;letter-spacing:.15em}.Button{display:flex;align-items:center;justify-content:center;padding:0 1.4em;border-radius:2em;background:var(--accent);color:var(--ink);font-weight:700;cursor:pointer;user-select:none;border:none;font-size:1.1em}.Button:hover{filter:brightness(1.07)}.Button.secondary{background:#ffffffd9}.Button.disabled{opacity:.4;cursor:default;filter:none}.controls.mobile{gap:.5em;padding:.6em 0 .4em}.Button.play{flex:1;font-size:1.5em;padding:.65em 1em;letter-spacing:.1em}.Button.mini{padding:0 1.1em;font-size:1em}.hint{font-size:.85em;opacity:.75;text-align:center}.flash{text-align:center;min-height:1.4em;color:var(--accent);font-weight:700}.Landing{display:flex;flex-direction:column;align-items:center;gap:1em;margin-top:2em}.Landing .fields{display:flex;flex-direction:column;gap:.8em;width:min(420px,90vw)}.title{font-size:2.2em;text-align:center;margin-bottom:.4em}.landing-page{justify-content:center;min-height:calc(100vh - 4em)}.landing-page .title{margin-bottom:.8em}.landing-page .controls{margin-top:.4em}.name-field{display:flex;flex-direction:column;align-items:center;gap:.2em;width:min(420px,90vw);margin:0 auto}.modal-backdrop{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center}.modal{background:var(--felt-dark);border:2px solid var(--accent);border-radius:1.4em;padding:2em 2.4em;display:flex;flex-direction:column;align-items:center;gap:1.2em}@media(max-width:600px){html,body{height:100%}body{padding:0;overflow:hidden;overscroll-behavior:none}.App{height:100dvh;padding:.7em;gap:.6em;overflow:hidden}.flipped{font-size:1.45em}.flipped .Tile{margin:.16em}.Word{font-size:1.05em;margin-right:.65em;margin-bottom:.3em}.global-letters{padding:.6em}.player-header .score{display:none}.title{font-size:1.1em;margin-bottom:.2em}.TileText{gap:.25em}.controls:not(.mobile){flex-direction:column;align-items:stretch}.controls:not(.mobile) .Button{padding:.75em 1em;font-size:1.15em}.Landing{margin-top:.4em;gap:.8em}.Landing .fields,.Landing .controls{width:100%}.App:not(.game) .players{flex:1 1 auto;min-height:0;overflow-y:auto}.App.game{padding:.6em;gap:.4em}.App.game .board-slot{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.App.game .Board{flex:1 1 auto;min-height:0;gap:.4em}.App.game .players{order:1;flex:1 1 auto;min-height:0;overflow-y:auto}.App.game .global-letters{order:2;flex:0 0 auto}.App.game .hint{display:none}.Button.play.end{background:#d9544e;color:#fff}}
