:root{--bg-deep:#0f1e24;--bg-mid:#16303a;--panel:#1d3640;--panel-2:#24424d;--line:#33525d;--cell:#2c4a54;--gutter:#0c171c;--text:#ede5d4;--muted:#9db4b0;--brass:#dca94b;--brass-deep:#b3832a;--tile-hi:#f4dcab;--tile-lo:#dfbc84;--tile-ink:#43301c;--dl:#5f97b9;--tl:#38648f;--dw:#c08a7c;--tw:#a84b3c;--ok:#85b571;--err:#d6806f;--radius:12px;--font-display:"Fraunces", Georgia, serif;--font-ui:"Archivo", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body{background:radial-gradient(1400px 800px at 70% -10%, #1d3a40 0%, transparent 60%), radial-gradient(1100px 700px at 0% 100%, #142a33 0%, transparent 55%), linear-gradient(165deg, var(--bg-mid) 0%, var(--bg-deep) 55%, #0b1a21 100%);color:var(--text);font-family:var(--font-ui);background-attachment:fixed;min-height:100vh;margin:0;padding:0}body:before,body:after{content:"";z-index:-1;filter:blur(90px);pointer-events:none;border-radius:50%;position:fixed}body:before{background:radial-gradient(circle at 40% 40%,#30706857,#0000 65%);width:55vmax;height:55vmax;animation:46s ease-in-out infinite alternate drift-a;top:-18vmax;left:-12vmax}body:after{background:radial-gradient(circle at 60% 60%,#be8d3f29,#0000 65%);width:48vmax;height:48vmax;animation:58s ease-in-out infinite alternate drift-b;bottom:-20vmax;right:-10vmax}@keyframes drift-a{0%{transform:translate(0)scale(1)}to{transform:translate(9vmax,7vmax)scale(1.15)}}@keyframes drift-b{0%{transform:translate(0)scale(1.1)}to{transform:translate(-8vmax,-6vmax)scale(.95)}}button{font-family:var(--font-ui)}h1,h2,h3{font-family:var(--font-display);font-weight:700}.setup{max-width:720px;margin:0 auto;padding:48px 20px 80px}.setup-header h1{letter-spacing:.02em;margin:0;font-size:clamp(3rem,8vw,4.5rem)}.setup-header .tagline{color:var(--muted);margin:4px 0 0;font-size:1.05rem}.setup-section{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin-top:22px;padding:20px 22px}.setup-section h2{margin:0 0 14px;font-size:1.3rem}.mode-row{flex-wrap:wrap;gap:10px;display:flex}.mode-btn{background:var(--panel-2);color:var(--text);border:1px solid var(--line);cursor:pointer;border-radius:8px;padding:10px 16px;font-size:.95rem}.mode-btn.on{border-color:var(--brass);color:var(--brass);background:#d9a44124;font-weight:600}.player-setup{flex-wrap:wrap;gap:16px;margin-top:16px;display:flex}.player-setup label{color:var(--muted);flex-direction:column;gap:6px;font-size:.9rem;display:flex}.player-setup input,.player-setup select{background:var(--gutter);color:var(--text);border:1px solid var(--line);border-radius:6px;min-width:200px;padding:9px 12px;font-size:1rem}.hint{color:var(--muted);margin:12px 0 0;font-size:.88rem;line-height:1.5}.dict-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.dict-chip{border:1px solid var(--line);border-radius:999px;padding:8px 14px;font-size:.88rem}.dict-chip.dev{color:var(--err);background:#d47b6a1f;border-color:#d47b6a66}.dict-chip.loaded{color:var(--ok);background:#7fb0691f;border-color:#7fb06966}.dict-error{color:var(--err);font-size:.9rem}.start-btn{width:100%;margin-top:26px;padding:16px;font-size:1.15rem}.btn{background:var(--panel-2);color:var(--text);border:1px solid var(--line);cursor:pointer;border-radius:8px;padding:10px 16px;font-size:.95rem;font-weight:500;transition:filter .12s,transform 80ms}.btn:hover:not(:disabled){filter:brightness(1.12)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--brass);outline-offset:2px}.btn.primary{background:linear-gradient(180deg, var(--brass), var(--brass-deep));border-color:var(--brass-deep);color:#241a08;font-weight:700}.btn.warn{color:var(--err);border-color:#d47b6a80}.btn.small{padding:6px 12px;font-size:.85rem}.game{flex-direction:column;min-height:100vh;display:flex}.topbar{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:12px 18px;display:flex}.brand{font-family:var(--font-display);margin-right:auto;font-size:1.5rem;font-weight:700}.chip{background:var(--panel);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:6px 13px;font-size:.85rem}.layout{grid-template-columns:minmax(0,1fr) 330px;gap:22px;width:100%;max-width:1180px;margin:0 auto;padding:20px;display:grid}.board-column{flex-direction:column;align-items:center;gap:14px;display:flex}.side-column{flex-direction:column;gap:16px;min-width:0;display:flex}.board{background:var(--gutter);aspect-ratio:1;border:6px solid #4a3624;border-radius:10px;grid-template-columns:repeat(15,1fr);gap:2.5px;width:min(94vw,640px,100vh - 300px);min-width:300px;padding:5px;display:grid;box-shadow:0 18px 50px #00000073}.cell{background:var(--cell);-webkit-user-select:none;user-select:none;border-radius:2px;place-items:center;display:grid;position:relative}.premium-label{letter-spacing:.05em;color:#ffffffbf;pointer-events:none;place-items:center;font-size:clamp(.4rem,1.2vw,.62rem);font-weight:700;line-height:1;display:grid;position:absolute;inset:0}.star{color:#ffffffe6;pointer-events:none;place-items:center;font-size:clamp(.7rem,2vw,1.05rem);line-height:1;display:grid;position:absolute;inset:0}.tile{background:linear-gradient(160deg, var(--tile-hi), var(--tile-lo));cursor:default;border-radius:3px;place-items:center;width:100%;height:100%;display:grid;position:relative;box-shadow:inset 0 1px #ffffff8c,inset 0 -2px #67472673,0 2px 4px #00000059}.tile-letter{color:var(--tile-ink);text-shadow:0 1px #ffffff59;font-size:clamp(.7rem,2.4vw,1.15rem);font-weight:800;line-height:1}.tile-value{color:var(--tile-ink);font-size:clamp(.38rem,1vw,.55rem);font-weight:700;position:absolute;bottom:4%;right:7%}.tile-pending{outline:2px solid var(--brass);outline-offset:-1px;cursor:grab;animation:.28s cubic-bezier(.2,1.6,.35,1) snap}@keyframes snap{0%{transform:scale(1.4)translateY(-6px);box-shadow:0 14px 22px #00000080}70%{transform:scale(.94)translateY(0)}to{transform:scale(1)translateY(0)}}.tile-highlight{outline-offset:-1px;outline:2px solid #85b571e6;animation:.7s ease-out land}@keyframes land{0%{transform:scale(1.18);box-shadow:0 0 0 4px #85b57166,0 10px 18px #00000073}to{transform:scale(1)}}.tile-blank .tile-letter{color:#7a5c3a}.tile-selected{outline:3px solid var(--brass);outline-offset:-1px;transform:translateY(-4px)}.tile-facedown{background:linear-gradient(160deg,#6b4c2c,#543a20);box-shadow:inset 0 1px #ffffff26,0 2px 4px #00000059}.rack-area{width:100%;max-width:640px}.rack-owner{color:var(--muted);margin-bottom:6px;font-size:.85rem}.rack{background:linear-gradient(#4a3520,#3a2917);border:1px solid #5c4429;border-radius:10px;justify-content:center;gap:8px;min-height:74px;padding:10px 14px;display:flex}.rack-slot{display:block}.rack .tile{cursor:grab;width:clamp(44px,7vw,56px);height:clamp(44px,7vw,56px);transition:transform .14s}.rack .tile:hover{transform:translateY(-3px)}.rack .tile .tile-letter{font-size:clamp(1.1rem,3vw,1.5rem)}.rack .tile .tile-value{font-size:.6rem}.rack-empty{color:var(--muted);align-self:center;font-size:.9rem}.preview{border-radius:var(--radius);border:1px solid var(--line);background:var(--panel);align-items:center;gap:12px;width:100%;max-width:640px;min-height:48px;padding:12px 16px;font-size:.95rem;display:flex}.preview.idle{color:var(--muted);justify-content:center}.preview.invalid{color:var(--err);border-color:#d47b6a80}.preview.valid{border-color:#d9a44180}.preview-words{flex-wrap:wrap;flex:1;gap:8px;display:flex}.preview-word{background:var(--panel-2);letter-spacing:.04em;border-radius:6px;padding:4px 9px;font-weight:600}.preview-word em{color:var(--brass);font-style:normal}.preview-word.bingo{color:var(--ok)}.preview-total{font-family:var(--font-display);color:var(--brass);white-space:nowrap;font-size:1.4rem}.controls{flex-wrap:wrap;justify-content:center;gap:10px;width:100%;max-width:640px;display:flex}.exchange-bar{align-items:center}.exchange-hint{color:var(--muted);font-size:.9rem}.challenge-banner{border-radius:var(--radius);background:linear-gradient(#d9a44129,#d9a44114);border:1px solid #d9a4418c;align-items:center;gap:14px;width:100%;max-width:640px;padding:12px 16px;animation:.22s ease-out banner-in;display:flex}.challenge-banner.actionable{border-color:var(--brass);box-shadow:0 0 0 1px #d9a44159,0 8px 24px #00000040}@keyframes banner-in{0%{opacity:0;transform:translateY(-6px)}}.challenge-info{flex:1;font-size:.95rem;line-height:1.45}.challenge-sub{color:var(--muted);margin-top:2px;font-size:.85rem;display:block}.challenge-actions{align-items:center;gap:12px;display:flex}.challenge-count{font-family:var(--font-display);color:var(--brass);text-align:center;font-variant-numeric:tabular-nums;min-width:1.4ch;font-size:1.7rem;font-weight:700}.challenge-count.low{color:var(--err);animation:.8s infinite pulse}.challenge-btn{color:#fff1e8;letter-spacing:.02em;background:linear-gradient(#c25a49,#a64437);border-color:#8a3529;font-weight:700}.challenge-btn:hover:not(:disabled){filter:brightness(1.1)}.modal-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:6px;display:flex}.word-ok{color:var(--ok)}.word-phony{color:var(--err);font-weight:700}.log-challenge em{color:var(--text)}.toast{color:var(--err);background:#d47b6a26;border:1px solid #d47b6a80;border-radius:8px;max-width:640px;padding:10px 16px;font-size:.92rem}.scoreboard{flex-direction:column;gap:10px;display:flex}.player-card{background:linear-gradient(180deg, var(--panel-2), var(--panel));border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:0 8px 22px #00000038}.player-card.active{border-color:var(--brass);box-shadow:0 0 0 1px var(--brass)}.player-top{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.player-name{font-size:1.05rem;font-weight:700}.ai-badge{color:var(--muted);border:1px solid var(--line);text-transform:capitalize;white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:.72rem}.player-score{font-family:var(--font-display);color:var(--brass);font-size:2.2rem;line-height:1.1}.player-meta{color:var(--muted);align-items:center;gap:12px;margin-top:4px;font-size:.85rem;display:flex}.turn-chip{color:var(--ok);font-weight:600}.timer{font-variant-numeric:tabular-nums;color:var(--text);font-weight:600}.timer-low{color:var(--err);animation:1s infinite pulse}@keyframes pulse{50%{opacity:.4}}.game-log{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex:1;min-height:160px;max-height:420px;padding:14px 16px;overflow-y:auto}.game-log h3{margin:0 0 10px;font-size:1rem}.game-log ol{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.game-log li{color:var(--muted);border-bottom:1px dashed var(--line);padding-bottom:8px;font-size:.87rem;line-height:1.45}.game-log li strong{color:var(--text)}.log-empty{color:var(--muted);font-size:.88rem}.log-head{flex-wrap:wrap;align-items:baseline;gap:6px;display:flex}.log-bingo{color:var(--ok);letter-spacing:.06em;font-size:.8rem;font-weight:700}.log-words{flex-direction:column;gap:3px;margin:6px 0 0;padding:0;list-style:none;display:flex}.log-words li{border:none;border-left:2px solid var(--line);align-items:center;gap:8px;padding:2px 0 2px 10px;display:flex}.log-word{letter-spacing:.05em;color:var(--text);font-weight:600}.log-word-score{color:var(--muted);font-size:.8rem}.verdict{font-size:.9rem;font-weight:800;line-height:1}.verdict.ok{color:var(--ok)}.verdict.bad{color:var(--err)}.verdict.open{color:var(--brass)}.overlay{z-index:50;background:#0a0f0cb8;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--line);text-align:center;border-radius:14px;width:100%;max-width:520px;padding:26px 28px;box-shadow:0 24px 60px #00000080}.modal h2,.modal h3{margin-top:0}.letter-grid{grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:8px;margin:18px 0;display:grid}.letter-btn{background:linear-gradient(160deg, var(--tile-hi), var(--tile-lo));color:var(--tile-ink);cursor:pointer;border:none;border-radius:6px;padding:10px 0;font-size:1.1rem;font-weight:800;box-shadow:inset 0 -2px #67472673}.letter-btn:hover{filter:brightness(1.08)}.final-table{border-collapse:collapse;width:100%;margin:16px 0 22px;font-size:.92rem}.final-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:6px 8px;font-weight:600}.final-table td{border-bottom:1px solid var(--line);text-align:left;padding:8px}.final-score{font-family:var(--font-display);color:var(--brass);font-size:1.2rem}@media (width<=980px){.layout{grid-template-columns:1fr}.side-column{order:2}.board{width:min(94vw,600px)}.scoreboard{flex-direction:row}.player-card{flex:1}}@media (width<=560px){.scoreboard{flex-direction:column}.rack .tile{width:42px;height:42px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.online-panel{flex-direction:column;gap:10px;margin-top:12px;display:flex}.join-code-label{color:var(--muted);flex-direction:column;gap:6px;max-width:260px;font-size:.9rem;display:flex}.join-code-input{font-family:var(--font-display);letter-spacing:.35em;text-transform:uppercase;text-align:center;background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:8px 10px;font-size:1.4rem}.invite-code{font-family:var(--font-display);letter-spacing:.3em;color:var(--brass);font-size:1.8rem}.invite-link{color:var(--muted);word-break:break-all;background:var(--gutter);border:1px solid var(--line);-webkit-user-select:all;user-select:all;border-radius:8px;padding:8px 10px;font-size:.82rem}.chip.online{border-color:var(--ok);color:var(--ok)}.chip.online.off{border-color:var(--err);color:var(--err)}.hint.center{text-align:center}.board{contain:layout paint size;grid-template-rows:repeat(15,minmax(0,1fr));overflow:hidden}.cell{aspect-ratio:1;contain:layout paint size;width:100%;min-width:0;height:100%;min-height:0;overflow:hidden}.board-tile-frame{aspect-ratio:1;contain:layout paint size;pointer-events:none;place-items:stretch stretch;width:100%;min-width:0;height:100%;min-height:0;display:grid;position:absolute;inset:0;overflow:hidden}.board-tile-frame-pending{pointer-events:auto}.board-tile-frame>.tile,.board .tile{box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:100%;min-height:0;max-height:100%;overflow:hidden}.board .tile-letter{max-width:78%;line-height:1;overflow:hidden}.board .tile-value{z-index:2;font-size:clamp(.3rem,.72vw,.55rem);line-height:1;bottom:4%;right:6%}.cell-challenge{z-index:3}.cell-challenge:after{content:"";z-index:4;border-radius:inherit;pointer-events:none;border:2px solid #65e6d0cc;animation:1.15s ease-in-out infinite challengeFramePulse;position:absolute;inset:1px}.cell-challenge .tile{outline-offset:-2px;outline:2px solid #65e6d0;animation:1.15s ease-in-out infinite challengeTilePulse}@keyframes challengeTilePulse{0%,to{filter:brightness();box-shadow:inset 0 0 0 2px #65e6d061,inset 0 1px #ffffffb3,0 0 7px #65e6d052}50%{filter:brightness(1.16)saturate(1.08);box-shadow:inset 0 0 0 3px #8ff5df,inset 0 1px #ffffffe6,0 0 15px #65e6d0b8}}@keyframes challengeFramePulse{0%,to{opacity:.62;transform:scale(.94)}50%{opacity:1;transform:scale(1)}}.rack-slot{transform-origin:bottom;will-change:transform;flex:none;transition:opacity .16s,filter .16s;position:relative}.rack-drag-active{cursor:grabbing}.rack-drag-active .tile{pointer-events:none}.rack-slot-dragging{opacity:.24;filter:saturate(.55)brightness(.88)}.rack-slot-dragging:before{content:"";z-index:-1;background:#efc76514;border:2px dashed #efc765b8;border-radius:10px;animation:1s ease-in-out infinite rackDropTarget;position:absolute;inset:-5px -4px}@keyframes rackDropTarget{50%{background:#efc76529;border-color:#f4d786;transform:scale(1.035)}}.endgame-actions{grid-template-columns:1.25fr 1fr 1fr;gap:9px;margin-top:4px;display:grid}.endgame-actions .btn{width:100%;min-width:0}@media (width<=560px){.endgame-actions{grid-template-columns:1fr}}#root{isolation:isolate;min-height:100vh}::selection{color:#fff8e8;background:#d7a94b44}button,input,select{font:inherit}button{-webkit-tap-highlight-color:transparent}.ambient{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.ambient:after,.ambient-grid,.grain{content:"";position:absolute;inset:0}.ambient:after,.ambient-grid{opacity:.13;background-image:linear-gradient(#fff1 1px,#0000 1px),linear-gradient(90deg,#fff1 1px,#0000 1px);background-size:56px 56px;-webkit-mask-image:linear-gradient(#000,#0000 78%);mask-image:linear-gradient(#000,#0000 78%)}.grain{opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.aurora,.ambient-orb{aspect-ratio:1;filter:blur(100px);opacity:.28;will-change:transform;border-radius:50%;width:55vmax;position:absolute}.aurora-one,.orb-one{background:#1c8b74;animation:28s ease-in-out infinite alternate aurora1;top:-28vmax;left:-20vmax}.aurora-two,.orb-two{background:#b17832;animation:34s ease-in-out infinite alternate aurora2;bottom:-30vmax;right:-24vmax}@keyframes aurora1{to{transform:translate(18vmax,10vmax)scale(1.15)rotate(18deg)}}@keyframes aurora2{to{transform:translate(-14vmax,-12vmax)scale(.9)rotate(-12deg)}}.btn{isolation:isolate;color:#f8f1e3;background:linear-gradient(#324e53f5,#1d353cf5);border:1px solid #cfe0d829;border-radius:11px;min-height:42px;font-weight:700;transition:transform .16s,border-color .16s,box-shadow .16s;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff14,0 7px 16px #040c0e2e}.btn:after{content:"";z-index:-1;background:linear-gradient(110deg,#0000 24%,#ffffff29 48%,#0000 70%);transition:transform .43s;position:absolute;inset:0;transform:translate(-130%)}.btn:hover:not(:disabled){filter:none;border-color:#e0b15485;transform:translateY(-2px);box-shadow:0 12px 24px #040c0e47}.btn:hover:not(:disabled):after{transform:translate(130%)}.btn:active:not(:disabled){transform:translateY(1px)scale(.98)}.btn.primary{color:#241707;background:linear-gradient(135deg,#f1ca72,#d69a38 52%,#b97824);border-color:#f4d590;box-shadow:inset 0 1px #ffffff85,0 9px 24px #c0801f38}.btn.quiet,.btn.ghost{box-shadow:none;background:#0b1d2257}.btn.danger,.btn.warn,.challenge-btn{color:#ffb8a8;border-color:#e5745c7a}.btn.danger,.challenge-btn{color:#fff1eb;background:linear-gradient(145deg,#b94d3d,#7d2e29)}.btn.small{min-height:34px;padding:7px 12px}.setup-shell{min-height:100vh;position:relative;overflow:hidden}.setup{z-index:1;width:min(100% - 32px,980px);max-width:none;margin:auto;padding:clamp(42px,7vw,84px) 0 80px;position:relative}.setup-header{text-align:center;margin-bottom:34px}.eyebrow{color:#d7b76e;letter-spacing:.16em;text-transform:uppercase;align-items:center;gap:9px;font-size:.72rem;font-weight:800;display:inline-flex}.eyebrow>span{background:linear-gradient(90deg,#0000,currentColor);width:20px;height:1px}.wordmark{filter:drop-shadow(0 22px 30px #0005);justify-content:center;align-items:center;margin:13px 0 2px;display:flex}.wordmark h1{letter-spacing:-.065em;color:#f7f0df;margin:0;font-size:clamp(3.7rem,10vw,6.7rem);line-height:.92}.wordmark-tile,.mini-tile,.floating-tile{color:#3e2915;font-family:var(--font-ui);background:linear-gradient(145deg,#ffe7b7,#dfb976 70%,#c79854);border:1px solid #f9dfaa;place-items:center;font-weight:800;display:inline-grid;position:relative;box-shadow:inset 0 2px #ffffffb8,inset 0 -4px #70471b40,0 12px 28px #0005}.wordmark-tile{aspect-ratio:1;border-radius:10px;width:clamp(54px,8vw,82px);margin-right:4px;font-size:clamp(2.1rem,5vw,3.5rem);transform:rotate(-4deg)}.wordmark-tile small,.mini-tile small,.floating-tile small{font:700 .2em var(--font-ui);position:absolute;bottom:5%;right:9%}.setup-header .tagline{color:#b8cac4;font:600 clamp(1rem,2vw,1.22rem) var(--font-display);margin:15px 0 0}.feature-strip{color:#91aaa5;background:#0b1a1f47;border:1px solid #c9dbd31f;border-radius:99px;align-items:center;gap:16px;margin-top:23px;padding:9px 15px;font-size:.75rem;display:inline-flex}.feature-strip strong{color:#e8cf92}.feature-strip i{background:#607c78;border-radius:50%;width:3px;height:3px}.floating-tile{aspect-ratio:1;opacity:.32;border-radius:8px;width:clamp(38px,5vw,64px);font-size:clamp(1.15rem,2.4vw,2rem);animation:7s ease-in-out infinite floatTile;position:absolute}.float-a{top:17%;left:6%;transform:rotate(-14deg)}.float-r{animation-delay:-2.5s;top:11%;right:8%;transform:rotate(11deg)}.float-q{animation-delay:-5s;top:58%;right:4%;transform:rotate(-7deg)}@keyframes floatTile{50%{filter:brightness(1.08);margin-top:-14px}}.setup-section{-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);background:linear-gradient(145deg,#244045c7,#142c33d4);border:1px solid #c1d8cf24;border-radius:20px;margin-top:17px;padding:clamp(20px,3.5vw,30px);box-shadow:inset 0 1px #ffffff0b,0 22px 55px #010c0f33}.section-heading{justify-content:space-between;align-items:end;gap:20px;margin-bottom:20px;display:flex}.section-heading>div{align-items:center;gap:12px;display:flex}.section-heading h2{margin:0;font-size:clamp(1.25rem,3vw,1.65rem)}.section-heading p{color:#8fa8a3;text-align:right;margin:0;font-size:.83rem}.step{color:#dfb65d;border:1px solid #e0b15452;border-radius:50%;place-items:center;width:34px;height:34px;font-size:.67rem;font-weight:800;display:grid}.mode-grid{grid-template-columns:repeat(3,1fr);gap:11px;display:grid}.mode-card,.timer-card{color:#e6eee9;text-align:left;cursor:pointer;background:#081d2266;border:1px solid #bcd4cb21;border-radius:14px;align-items:center;gap:13px;width:100%;min-width:0;padding:15px;transition:transform .17s,background .17s,border-color .17s,box-shadow .17s;display:flex;position:relative}.mode-card:hover,.timer-card:hover{border-color:#e0b15461;transform:translateY(-2px)}.mode-card.on,.timer-card.on{background:linear-gradient(145deg,#d0962e29,#11353299);border-color:#e2b34fc7;box-shadow:inset 0 0 0 1px #e2b34f1f,0 10px 24px #020f1133}.mode-badge{background:linear-gradient(145deg,#375b5c,#213e45);border-radius:10px;flex:0 0 42px;place-items:center;height:42px;font-size:.65rem;font-weight:900;display:grid}.mode-card.on .mode-badge{color:#241707;background:linear-gradient(145deg,#e3bd66,#b87827)}.mode-copy{flex-direction:column;gap:4px;min-width:0;display:flex}.mode-copy strong{font-size:.9rem}.mode-copy small{color:#91aaa5;font-size:.72rem;line-height:1.35}.mode-check{color:#1d332e;opacity:0;background:#e2b34e;border-radius:50%;flex:0 0 20px;place-items:center;height:20px;margin-left:auto;font-size:.7rem;transition:all .16s;display:grid;transform:scale(.5)}.mode-card.on .mode-check{opacity:1;transform:scale(1)}.mode-card.compact{max-width:360px;margin-top:10px}.advanced-mode{color:#94aba6;margin-top:14px;font-size:.78rem}.advanced-mode summary{cursor:pointer;width:fit-content}.player-setup{margin-top:20px}.player-setup label{flex:210px}.player-setup input,.player-setup select,.join-code-input{color:#f5efe1;background:#04161b9e;border:1px solid #c3d7d02b;border-radius:10px;outline:none;width:100%;min-width:0;min-height:45px}.player-setup input:focus,.player-setup select:focus,.join-code-input:focus{border-color:#d9ac4b;box-shadow:0 0 0 3px #d9ac4b21}.online-panel{align-items:flex-start}.segmented{background:#04161b94;border-radius:12px;grid-template-columns:1fr 1fr;gap:4px;width:min(100%,420px);padding:4px;display:grid}.segmented button{color:#93aaa5;cursor:pointer;background:0 0;border:0;border-radius:9px;min-height:38px;font-weight:700}.segmented button.on{color:#f7efde;background:#335654;box-shadow:0 4px 12px #0003}.join-code-label{width:min(100%,420px);max-width:none}.join-code-input{letter-spacing:.25em}.join-code-input.invalid{border-color:#c96755}.timer-grid{grid-template-columns:repeat(4,1fr);gap:9px;display:grid}.timer-card{flex-direction:column;align-items:flex-start;gap:3px;padding:13px 15px}.timer-card strong{font-size:.87rem}.timer-card span{color:#91aaa5;font-size:.72rem}.dict-card{background:#051a1f6b;border:1px solid #bed5cd21;border-radius:14px;align-items:center;gap:13px;padding:14px;display:flex}.dict-icon{height:46px;font:600 1.1rem var(--font-display);background:linear-gradient(145deg,#466f6b,#294b4c);border-radius:12px;flex:0 0 46px;place-items:center;display:grid}.dict-icon.loaded{color:#2c1c0c;background:linear-gradient(145deg,#d9b45e,#a8732d)}.dict-details{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.dict-details strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dict-details span{color:#91aaa5;font-size:.78rem}.start-btn{justify-content:space-between;align-items:center;width:min(100%,420px);margin:24px auto 0;padding:15px 19px;font-size:1rem;display:flex}.button-arrow{font-size:1.35rem;transition:transform .18s}.start-btn:hover .button-arrow{transform:translate(5px)}@media (width<=760px){.mode-grid{grid-template-columns:1fr}.timer-grid{grid-template-columns:repeat(2,1fr)}.section-heading{flex-direction:column;align-items:flex-start;gap:5px}.section-heading p{text-align:left;padding-left:46px}.dict-card{flex-wrap:wrap}}@media (width<=560px){.setup{width:calc(100% - 20px);padding-top:36px}.feature-strip{gap:8px;font-size:.66rem}.floating-tile{display:none}.setup-section{border-radius:16px}.dict-card .btn{flex:130px}}.topbar{z-index:20;-webkit-backdrop-filter:blur(18px)saturate(1.2);backdrop-filter:blur(18px)saturate(1.2);background:#0b1e23c2;border-bottom:1px solid #c0d6cd1f;grid-template-columns:1fr auto 1fr;gap:18px;min-height:68px;padding:10px clamp(12px,3vw,30px);display:grid;position:sticky;top:0;box-shadow:0 8px 32px #0002}.brand-lockup{justify-self:start;align-items:center;gap:10px;display:flex}.mini-tile{border-radius:7px;width:38px;height:38px;font-size:1.25rem}.brand-copy{flex-direction:column;display:flex}.brand{font:700 1.28rem/1 var(--font-display);letter-spacing:-.02em;color:#f8efdd;margin:0}.brand-copy small{color:#809b96;letter-spacing:.06em;text-transform:uppercase;margin-top:3px;font-size:.6rem}.topbar-stats,.topbar-actions{align-items:center;gap:8px;display:flex}.topbar-actions{justify-self:end}.chip{color:#9fb6b1;background:#1430359e;border-color:#b9d2c921;align-items:center;gap:6px;display:inline-flex}.chip strong{color:#efcf86}.connection-dot{background:currentColor;border-radius:50%;width:6px;height:6px;box-shadow:0 0 0 4px #85b5711c}.layout{grid-template-columns:minmax(560px,760px) minmax(280px,340px);justify-content:center;align-items:start;gap:clamp(18px,3vw,34px);max-width:1240px;padding:clamp(16px,3vw,30px)}.board-column{gap:11px;min-width:0}.turn-status{color:#dfe9e3;align-items:center;gap:9px;width:min(100%,710px);font-size:.82rem;font-weight:700;display:flex}.turn-pulse{background:#68817d;border-radius:50%;width:7px;height:7px}.turn-pulse.ready{background:#84bd7a;animation:1.8s infinite readyPulse;box-shadow:0 0 0 5px #84bd7a1f}@keyframes readyPulse{50%{box-shadow:0 0 0 9px #84bd7a00}}.turn-context{color:#7f9994;margin-left:auto;font-weight:500}.board-shell{background:linear-gradient(145deg,#694629,#382818 53%,#241b13);border:1px solid #d1b87e42;border-radius:18px;width:min(100%,710px);padding:clamp(7px,1.2vw,12px);box-shadow:inset 0 1px #ffffff1f,inset 0 -3px #0005,0 28px 70px #0006}.board{background:#102328;border:0;border-radius:10px;gap:clamp(1px,.35vw,3px);width:100%;min-width:0;padding:clamp(3px,.7vw,6px);box-shadow:inset 0 0 0 1px #ffffff0d}.cell{background:linear-gradient(145deg,#31575b,#28494f);border:1px solid #ffffff08;transition:filter .12s,transform .12s,box-shadow .12s}.cell.premium-DL{background:linear-gradient(145deg,#6aa4bd,#477f9e)}.cell.premium-TL{background:linear-gradient(145deg,#416f9e,#284d79)}.cell.premium-DW{background:linear-gradient(145deg,#ce968d,#a66664)}.cell.premium-TW{background:linear-gradient(145deg,#be5748,#873a34)}.cell-target{cursor:pointer}.cell-target:hover,.cell-target:focus-visible,.cell-drag-over{z-index:2;filter:brightness(1.22);outline:0;box-shadow:inset 0 0 0 2px #f0c765,0 0 0 2px #f0c76552}.premium-label{text-shadow:0 1px 2px #0005;font-size:clamp(.31rem,.78vw,.58rem)}.tile{background:linear-gradient(135deg,#ffffff94,#0000 30%),linear-gradient(145deg,#ffe6af,#dfb87a 72%,#c79552);border:0;border-radius:clamp(3px,.5vw,6px);padding:0;box-shadow:inset 0 1px #ffffffb3,inset 0 -3px #6f461f3d,0 3px 7px #0006}.tile-pending{animation:.33s cubic-bezier(.16,1.45,.35,1) tileSnap}@keyframes tileSnap{0%{filter:brightness(1.22);transform:translateY(-20px)scale(1.22)}68%{transform:translateY(2px)scale(.96)}to{transform:none}}.tile-highlight{animation:.85s ease-out tileLand}@keyframes tileLand{0%{transform:scale(1.14);box-shadow:0 0 0 8px #eabf5952,0 12px 24px #0007}}.turn-console{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:linear-gradient(145deg,#1d393ed1,#0f262cdb);border:1px solid #bcd4cb21;border-radius:17px;width:min(100%,710px);padding:15px clamp(12px,2vw,18px) 10px;box-shadow:inset 0 1px #ffffff0a,0 18px 42px #0003}.rack-heading{justify-content:space-between;gap:16px;margin-bottom:9px;display:flex}.rack-heading>div{flex-direction:column;gap:2px;display:flex}.rack-heading strong{font-size:.89rem}.rack-heading .eyebrow{font-size:.57rem}.rack-hint{color:#86a19b;text-align:right;max-width:55%;font-size:.72rem}.rack-area{max-width:none}.rack{background:linear-gradient(#5a3a20,#352416 75%);border:1px solid #76502d;gap:clamp(3px,1vw,8px);min-height:72px;padding:9px clamp(8px,2vw,14px) 13px;position:relative;box-shadow:inset 0 -8px 12px #0003,0 8px 18px #0003}.rack:after{content:"";background:#1108036b;border-radius:8px;height:5px;position:absolute;bottom:6px;left:4%;right:4%;box-shadow:0 1px #ffffff14}.rack-slot{z-index:1}.rack .tile{width:clamp(34px,6vw,56px);height:clamp(34px,6vw,56px);transition:transform .18s cubic-bezier(.2,.8,.2,1),filter .18s,box-shadow .18s}.rack-interactive .tile:hover{filter:brightness(1.06);transform:translateY(-8px)rotate(-1deg)}.rack .tile:active{cursor:grabbing;transform:translateY(-3px)scale(.96)}.rack .tile-selected{outline:3px solid #efc765;transform:translateY(-9px);box-shadow:0 9px 18px #0006,0 0 0 5px #efc7651f}.preview{background:#071c2180;max-width:none;min-height:42px;margin-top:10px;padding:9px 12px}.preview.idle{opacity:.68}.controls{max-width:none;margin-top:10px}.controls .btn{flex:auto;padding-inline:13px}.status-well{place-items:center;min-height:32px;padding-top:8px;display:grid}.status-placeholder{color:#708b86;font-size:.72rem}.toast{text-align:center;width:100%;max-width:none;padding:7px 11px;animation:.2s toastIn}@keyframes toastIn{0%{opacity:0;transform:translateY(5px)}}.challenge-banner{background:linear-gradient(145deg,#6f431fea,#3d281df0);max-width:710px;position:relative;overflow:hidden}.challenge-progress{width:var(--challenge-progress);background:linear-gradient(90deg,#c75b49,#efc662);height:3px;transition:width .2s linear;position:absolute;bottom:0;left:0}.side-column{position:sticky;top:86px}.scoreboard{gap:9px}.player-card{background:linear-gradient(145deg,#234246e0,#122b31e6);border-color:#bdd3cc21;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:11px;min-height:76px;padding:12px;transition:all .18s;display:grid;box-shadow:inset 0 1px #ffffff0a,0 12px 26px #0003}.player-card.active{border-color:#e2b450b3;transform:translate(-3px);box-shadow:inset 3px 0 #dfb350,0 12px 30px #0003}.player-avatar{color:#f1eadc;width:42px;height:42px;font:700 .85rem var(--font-display);background:linear-gradient(145deg,#426965,#294b50);border-radius:13px;place-items:center;display:grid}.player-card.active .player-avatar{color:#251708;background:linear-gradient(145deg,#dfb962,#a8732f)}.player-copy{min-width:0}.player-top{justify-content:flex-start}.player-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.player-meta{flex-wrap:wrap;gap:7px}.score-wrap{flex-direction:column;align-items:flex-end;display:flex}.score-label{color:#718c87;letter-spacing:.12em;text-transform:uppercase;font-size:.56rem;font-weight:800}.player-score{color:#efca78;font-size:2rem}.game-log{background:linear-gradient(145deg,#1c383dc7,#0f252bd6);border-color:#bdd3cc21;box-shadow:inset 0 1px #ffffff09,0 16px 36px #0002}.game-log h3{color:#ede7d8;font-size:1.05rem}.overlay{-webkit-backdrop-filter:blur(12px)saturate(.8);backdrop-filter:blur(12px)saturate(.8);background:#030d10c7;animation:.18s overlayIn}@keyframes overlayIn{0%{opacity:0}}.modal{background:radial-gradient(circle at 50% 0,#d7a4421f,#0000 45%),linear-gradient(145deg,#24444a,#132f36);border-color:#e4c06f52;border-radius:21px;animation:.28s cubic-bezier(.16,1,.3,1) modalIn;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff0f,0 32px 90px #0009}@keyframes modalIn{0%{opacity:0;transform:translateY(18px)scale(.96)}}.modal h2,.modal h3{margin:7px 0 8px;font-size:clamp(1.65rem,5vw,2.35rem)}.modal p,.modal-copy{color:#a7bbb6;line-height:1.55}.modal-kicker{color:#dfb75e;letter-spacing:.16em;text-transform:uppercase;font-size:.65rem;font-weight:900}.modal-kicker.error{color:#e78370}.lobby-modal{max-width:560px}.connection-pulse{border:2px solid #e0b5564d;border-top-color:#e0b556;border-radius:50%;width:56px;height:56px;margin:4px auto 16px;animation:1.1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.invite-code{margin:14px 0 9px;font-size:2.25rem;display:block}.endgame{max-width:620px}.victory-glow{z-index:-1;filter:blur(50px);background:#deae4538;border-radius:50%;width:340px;height:260px;position:absolute;top:-140px;left:50%;transform:translate(-50%)}.winner-crest{color:#fff2c7;background:linear-gradient(145deg,#e2b958,#925e24);border:1px solid #efcc7b;border-radius:50%;place-items:center;width:62px;height:62px;margin:0 auto 8px;font-size:1.55rem;display:grid;box-shadow:0 12px 30px #b06e1e4d}.final-table .winner-row{background:#e0b14b1a}.rank{color:#d9bd7b;background:#ffffff12;border-radius:50%;place-items:center;width:22px;height:22px;margin-right:8px;font-size:.7rem;display:inline-grid}@media (width<=1050px){.layout{grid-template-columns:minmax(0,710px)}.side-column{order:2;width:min(100%,710px);position:static}.scoreboard{flex-direction:row}.player-card{flex:1}}@media (width<=760px){.topbar{grid-template-columns:1fr auto}.topbar-stats{flex-wrap:wrap;grid-area:2/1/auto/-1;justify-content:center}.topbar-actions{grid-area:1/2}.layout{padding-top:14px}}@media (width<=560px){.topbar{gap:8px;padding:8px 10px}.brand-copy small{display:none}.mini-tile{width:34px;height:34px}.topbar-actions .btn{padding-inline:9px;font-size:.76rem}.topbar-stats{gap:5px}.chip{padding:5px 9px;font-size:.72rem}.layout{padding:10px}.board-shell{border-radius:11px;padding:5px}.board{border-radius:6px}.turn-console{border-radius:13px}.rack-hint{display:none}.rack .tile{width:clamp(32px,10.4vw,44px);height:clamp(32px,10.4vw,44px)}.rack .tile .tile-letter{font-size:clamp(.98rem,5vw,1.25rem)}.controls .btn{min-height:39px;padding:8px 9px;font-size:.78rem}.scoreboard{flex-direction:column}.player-card.active{transform:none}.challenge-banner{flex-wrap:wrap;align-items:flex-start}.challenge-actions{margin-left:auto}.modal{padding:22px 16px}.letter-grid{grid-template-columns:repeat(6,1fr);gap:5px}.letter-btn{padding:8px 0}}@media (width<=390px){.rack{padding-inline:5px}.rack .tile{width:31px;height:31px}.premium-label{font-size:.27rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
