@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=DM+Serif+Display:ital@0;1&display=swap";:root{font-family:DM Sans,sans-serif;color:#183b32;background:#eee6d4;font-synthesis:none;--green:#173f35;--cream:#f5efdf;--gold:#e9b956;--red:#b85849}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100dvh;background:radial-gradient(circle at 80% 5%,#fbf7ed 0,transparent 35%),#eee6d4}button,input{font:inherit}button{color:inherit}.page{min-height:100dvh;max-width:760px;margin:auto;padding:max(24px,env(safe-area-inset-top)) 22px max(24px,env(safe-area-inset-bottom))}.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:11px;font-weight:700;color:#9a7243}.brand-mark{width:86px;height:86px;margin:9vh 0 25px;background:#efc66f;border-radius:15px;display:grid;place-items:center;transform:rotate(-5deg);box-shadow:0 10px #c59845,0 16px 28px #173f3524;position:relative}.brand-mark span{font:62px "DM Serif Display";line-height:1}.brand-mark small{position:absolute;right:12px;bottom:8px;font-weight:700}.welcome h1,.lobby h1,.waiting h1{font:clamp(54px,15vw,82px)/.83 "DM Serif Display";letter-spacing:-.045em;margin:12px 0 24px}.welcome h1 i,.lobby h1 i,.waiting h1 em{font-weight:400;color:#b05b48}.intro{font-size:17px;line-height:1.55;max-width:430px;color:#52645f}.name-card{margin-top:38px;background:#fffaf0;border:1px solid #dcd2be;padding:20px;border-radius:20px;box-shadow:0 14px 38px #3d322313}.name-card label{display:block;font-weight:700;margin-bottom:12px}.input-row{display:flex;gap:8px}.input-row input{min-width:0;flex:1;border:1px solid #cfc6b3;border-radius:12px;padding:14px;background:#fff;font-size:16px}.input-row button,.new-game,.share,.validate{border:0;border-radius:12px;background:var(--green);color:#fff;font-weight:700;padding:0 20px;box-shadow:0 5px #0c2922}.name-card small{display:block;margin-top:15px;color:#7b817d}.error{color:#a53d32;font-size:14px}.topbar{display:flex;justify-content:space-between;align-items:center}.topbar p{margin:0}.name-button{border:0;padding:0;background:none;font:28px "DM Serif Display"}.name-button span{font:13px sans-serif}.mini-mark{font:32px "DM Serif Display";color:#f3ce7d;background:var(--green);width:48px;height:48px;border-radius:12px;display:grid;place-items:center;transform:rotate(4deg)}.hero{margin:55px 0 44px}.hero h1{margin-bottom:30px}.new-game{height:55px;font-size:16px;width:100%;max-width:330px}.new-game span{font-size:23px;margin-right:8px}.section-title{display:flex;align-items:center;gap:10px;border-bottom:1px solid #d4c9b5;padding-bottom:11px}.section-title h2{font:26px "DM Serif Display";margin:0}.section-title span{background:#d8cdb8;border-radius:99px;padding:2px 8px;font-size:12px}.game-card{width:100%;display:flex;align-items:center;gap:12px;border:0;border-bottom:1px solid #d8cebb;background:transparent;text-align:left;padding:18px 3px}.game-card:active{transform:scale(.985)}.status-dot{width:9px;height:9px;border-radius:50%;background:#88918d}.status-dot.active{background:#e1a93b;box-shadow:0 0 0 5px #e1a93b1f}.game-info{display:flex;flex-direction:column;gap:3px;flex:1}.game-info strong{font-size:15px}.game-info small{font-size:12px;color:#718079}.scores{display:flex;gap:7px;align-items:center}.scores b{font:22px "DM Serif Display"}.scores span{color:#a79e8d}.chevron{font-size:28px;color:#9e9687}.empty{text-align:center;padding:54px 15px}.empty span{display:inline-block;letter-spacing:5px;padding:13px;background:#e5d5af;transform:rotate(-3deg);border-radius:8px;font-weight:700}.empty h3{font:24px "DM Serif Display";margin:23px 0 8px}.empty p{color:#718079;margin:0}.lobby footer{text-align:center;color:#8b8a80;font-size:11px;margin-top:50px}.panel{padding:12px;background:#f6ddd7;border-radius:10px}.back{border:0;background:transparent;padding:8px 0}.waiting{text-align:center}.waiting .back{display:block}.invite-tiles{display:flex;justify-content:center;margin:14vh 0 38px}.invite-tiles i{width:62px;height:62px;border-radius:9px;background:#edc46e;box-shadow:0 5px #c69b48;margin:-4px;font: 39px "DM Serif Display";display:grid;place-items:center}.invite-tiles i:nth-child(2){transform:rotate(7deg) translateY(-9px)}.invite-tiles i:nth-child(3){transform:rotate(-5deg)}.waiting h1{font-size:55px}.waiting>p:not(.eyebrow){color:#61706b;line-height:1.5}.share{height:55px;width:100%;margin:24px 0 18px}.waiting code{letter-spacing:.22em;color:#8b6941}.game-page{min-height:100dvh;max-width:820px;margin:auto;padding:max(12px,env(safe-area-inset-top)) 12px max(20px,env(safe-area-inset-bottom))}.game-header{height:44px;display:flex;align-items:center;justify-content:space-between}.game-header button{width:42px;height:38px;border:0;background:transparent;font-size:27px}.game-header .menu{font-size:15px}.turn{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.11em}.turn span{display:inline-block;width:7px;height:7px;background:#a4aaa6;border-radius:50%;margin-right:7px}.turn .live{background:#e2a631;box-shadow:0 0 0 4px #e2a63124}.scoreboard{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;background:#faf5e8;border:1px solid #dcd2bd;border-radius:16px;padding:12px;margin:4px 0 10px}.player{display:flex;align-items:center;gap:8px;min-width:0}.player>span{display:flex;flex-direction:column;min-width:0}.player strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:80px}.player small{font-size:9px;text-transform:uppercase;color:#89918d}.player>b{font:25px "DM Serif Display";margin-left:auto}.player.opponent{justify-content:flex-end}.player.opponent>b{margin:0 auto 0 0}.player.opponent span{text-align:right}.avatar{width:32px;height:32px;flex:none;border-radius:9px;background:#e9bd64;display:grid;place-items:center;font-weight:700}.opponent .avatar{background:#6e8a80;color:#fff}.versus{font:16px "DM Serif Display";margin:0 8px;text-align:center;color:#806c48}.versus small{font:7px DM Sans;display:block;text-transform:uppercase}.board-toolbar{display:flex;align-items:center;justify-content:space-between;font-size:11px;text-transform:uppercase;letter-spacing:.13em;font-weight:700;margin:8px 2px}.board-toolbar div{display:flex}.board-toolbar button{border:1px solid #cabfa9;background:#f9f3e5;min-width:32px;height:27px;padding:0 7px}.board-toolbar button:first-child{border-radius:7px 0 0 7px}.board-toolbar button:last-child{border-radius:0 7px 7px 0}.board-viewport{overflow:auto;border:5px solid var(--green);border-radius:8px;background:var(--green);aspect-ratio:1;touch-action:pan-x pan-y}.board{width:100%;aspect-ratio:1;display:grid;grid-template-columns:repeat(15,1fr);gap:1px;transform-origin:top left;transition:transform .18s}.cell{position:relative;aspect-ratio:1;border:0;padding:0;background:#e5ddc9;display:grid;place-items:center;min-width:0}.cell>span:not(.tile-face){font-size:clamp(5px,1.5vw,10px);line-height:.9;font-weight:700}.cell.ld{background:#accbc7;color:#315f59}.cell.lt{background:#5e9892;color:#fff}.cell.md{background:#eab4a8;color:#7b3c32}.cell.mt{background:#bd6554;color:#fff}.cell.pending{z-index:2}.tile-face{position:absolute;top:2px;right:2px;bottom:2px;left:2px;background:linear-gradient(145deg,#f7d98e,#e8b95c);border-radius:3px;box-shadow:0 2px #b88737,0 3px 5px #3a2c1e3b;display:grid;place-items:center;color:#193c33}.tile-face b{font:clamp(10px,2.8vw,22px) "DM Serif Display";line-height:1}.tile-face small{position:absolute;right:2px;bottom:0;font-size:clamp(4px,1.1vw,8px);font-weight:700}.tile-face.is-pending{background:linear-gradient(145deg,#fff1bb,#edc462);box-shadow:0 0 0 2px #fff,0 3px 8px #2b251b55;animation:pop .18s ease-out}.move-panel{display:flex;align-items:center;justify-content:space-between;padding:10px 13px;margin:8px 0;background:#e1d8c6;border-radius:11px;min-height:51px}.move-panel>div:first-child{display:flex;flex-direction:column;min-width:0}.move-panel small{font-size:9px;text-transform:uppercase;letter-spacing:.1em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.move-panel strong{font-size:12px}.move-panel.valid{background:#d9e6d6;color:#205442}.preview-score{font:25px "DM Serif Display"}.rack-area{padding:6px 3px 0}.rack{display:flex;justify-content:center;gap:clamp(3px,1.5vw,8px);position:relative;z-index:2}.rack-tile{width:calc((100vw - 55px)/7);max-width:53px;aspect-ratio:.86;border:0;padding:0;background:transparent;position:relative;transition:transform .14s}.rack-tile .tile-face{top:0;right:0;bottom:0;left:0;border-radius:5px}.rack-tile.selected{transform:translateY(-10px)}.rack-tile.used{opacity:.15;transform:translateY(7px)}.rack-line{height:9px;background:#805e36;border-radius:4px;box-shadow:0 4px #533b23;margin-top:-2px}.actions{display:grid;grid-template-columns:1fr 1.6fr;gap:9px;margin-top:18px}.actions button{height:49px;border-radius:11px;font-weight:700}.secondary{background:transparent;border:1px solid #a9a08f}.validate{border:0;box-shadow:0 4px #0b2a22}.validate span{float:right;font-size:21px}.actions button:disabled{opacity:.4;box-shadow:none}.turn-actions{display:flex;justify-content:center;gap:20px;margin-top:13px}.turn-actions button{border:0;background:transparent;text-decoration:underline;color:#6c746f;font-size:12px}.toast{position:fixed;z-index:10;left:50%;bottom:175px;transform:translate(-50%);border:0;border-radius:10px;background:#542e29;color:#fff;padding:11px 18px;max-width:90%;font-size:12px;box-shadow:0 8px 24px #0003}.drag-ghost{position:fixed;z-index:30;width:48px;height:54px;pointer-events:none;transform:translate(-50%,-70%) rotate(4deg)}.loading{min-height:100dvh;display:grid;place-content:center;justify-items:center}.loading .brand-mark{margin:0 0 25px}.loading button{border:0;background:none;text-decoration:underline}@keyframes pop{0%{transform:scale(.75)}to{transform:scale(1)}}@media(min-width:700px){.game-page{padding-left:36px;padding-right:36px}.tile-face b{font-size:20px}.tile-face small{font-size:8px}.cell>span:not(.tile-face){font-size:9px}.board-viewport{max-height:650px}.lobby{padding-left:50px;padding-right:50px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}body.game-open{height:100dvh;overflow:hidden;overscroll-behavior:none}body.game-open #root{height:100dvh;overflow:hidden}.game-page{display:flex;flex-direction:column;height:100dvh;min-height:0;overflow:hidden}.game-page .board-viewport{aspect-ratio:auto;flex:1 1 auto;min-height:0;overscroll-behavior:contain;scrollbar-width:none;touch-action:none}.game-page .board-viewport::-webkit-scrollbar{display:none}.game-page .board{flex:none;max-width:none}.game-page .board-toolbar button:disabled{opacity:.35}.game-page .cell.last-move .tile-face{z-index:2;outline:2px solid #fff1a8;box-shadow:0 0 0 3px #d99f2f,0 4px 10px #6d4b1f66}.game-page .move-panel.last-play{background:#eee0bd;color:#604718}.game-page .rack-tile,.game-page .tile-face{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.game-page .rack{gap:clamp(2px,1vw,6px)}.game-page .rack-tile{width:calc((100vw - 42px) / 7);max-width:58px;aspect-ratio:.82}.game-page .rack-tile .tile-face b{font-size:clamp(21px,7vw,30px);line-height:1}.game-page .rack-tile .tile-face small{right:4px;bottom:2px;font-size:clamp(8px,2.5vw,11px)}.game-page .rack-tile:not(:disabled){cursor:grab}.game-page .rack-tile:not(:disabled):active{cursor:grabbing}.game-page .rack-tile.dragging{opacity:.2}.game-page .turn-actions{width:100%;gap:8px;margin-top:11px}.game-page .turn-actions button{min-width:0;min-height:42px;padding:0 14px;border:1px solid #b9ae9a;border-radius:11px;background:#faf5e8;box-shadow:0 2px #c3b8a4;color:#294b42;font-size:12px;font-weight:700;text-decoration:none;touch-action:manipulation}.game-page .turn-actions button:first-child{border-color:#78958b;background:#dce9df}.game-page .turn-actions button:active{transform:translateY(2px);box-shadow:none}.game-page:has(.drag-ghost) .cell{transition:filter .1s ease,transform .1s ease}.game-page:has(.drag-ghost) .cell:not(:has(.tile-face)){filter:brightness(1.05)}@media(orientation:portrait){.game-page .board-viewport{width:calc(100% + 24px);max-width:none;margin-inline:-12px;border:0;border-radius:0}}.recovery-toggle{display:block;width:100%;margin-top:16px;padding:4px;border:0;background:transparent;color:#315f54;font-size:13px;text-decoration:underline}.code-input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px!important;letter-spacing:.03em;text-transform:uppercase}.top-actions{display:flex;align-items:center;gap:10px}.devices-button{height:36px;padding:0 11px;border:1px solid #c8bda8;border-radius:10px;background:#faf5e8;font-size:11px;font-weight:700}.logout-button{width:36px;height:36px;border:1px solid #d2b9ae;border-radius:10px;background:#f7e6df;color:#8c4137;font-size:19px}.account-modal{position:fixed;z-index:50;top:0;right:0;bottom:0;left:0;display:grid;place-items:end center;padding:16px}.modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;border:0;background:#102d2778;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.account-modal section{position:relative;width:min(100%,430px);padding:25px;border-radius:22px;background:#fffaf0;box-shadow:0 20px 60px #102d2755}.account-modal h2{margin:8px 0;font:30px/1.05 "DM Serif Display",serif}.account-modal p:not(.eyebrow){color:#66736e;font-size:14px;line-height:1.45}.account-modal code{display:block;margin:22px 0;padding:15px 8px;border:1px dashed #a68a59;border-radius:10px;background:#f3e8cf;text-align:center;font-size:clamp(14px,4vw,18px);font-weight:700;letter-spacing:.08em}.copy-code{width:100%;height:48px;border:0;border-radius:11px;background:#173f35;color:#fff;font-weight:700}.close-modal{display:block;margin:15px auto 0;border:0;background:transparent;text-decoration:underline}.logout-from-modal{display:block;width:100%;margin-top:12px;padding:11px;border:1px solid #d7bcb0;border-radius:10px;background:#f8e8e1;color:#8f3e34;font-weight:700}@media(min-width:700px){.account-modal{place-items:center}}.delete-game{width:34px;height:34px;flex:none;border:1px solid #d5b9ad;border-radius:9px;background:#f6e5df;color:#9b4034;font-size:22px;line-height:1}.delete-game:active{transform:scale(.92)}.admin-login{width:min(100% - 40px,390px);min-height:100dvh;margin:auto;display:grid;align-content:center}.admin-login .mini-mark{margin-bottom:30px}.admin-login h1,.admin-page h1{margin:6px 0 28px;font:42px/1 "DM Serif Display",serif}.admin-login form{padding:20px;border:1px solid #d8cebb;border-radius:17px;background:#fffaf0}.admin-login label{display:block;margin-bottom:8px;font-size:13px;font-weight:700}.admin-login input,.admin-login form button{width:100%;height:47px;border-radius:10px}.admin-login input{padding:0 12px;border:1px solid #c8bda8}.admin-login form button{margin-top:10px;border:0;background:#173f35;color:#fff;font-weight:700}.admin-login>a{margin-top:20px;color:#51675f;text-align:center}.admin-page{min-height:100dvh;padding:24px;background:#eee6d4}.admin-page>header{display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1300px;margin:auto}.admin-page header h1{margin-bottom:18px}.admin-actions{display:flex;gap:8px}.admin-actions button{min-height:40px;padding:0 13px;border:1px solid #bcb19e;border-radius:10px;background:#faf5e8;font-weight:700}.admin-stats{max-width:1300px;margin:0 auto 18px;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.admin-stats article{padding:18px;border-radius:14px;background:#173f35;color:#fff}.admin-stats strong{display:block;font:32px "DM Serif Display",serif}.admin-stats span{color:#c9d7d2;font-size:11px;text-transform:uppercase}.admin-grid{max-width:1300px;margin:auto;display:grid;grid-template-columns:1.15fr .85fr;gap:18px;align-items:start}.admin-panel{overflow:hidden;border:1px solid #d4c9b5;border-radius:16px;background:#faf5e8}.admin-panel-title{display:flex;align-items:center;gap:8px;padding:17px 18px;border-bottom:1px solid #ddd3c1}.admin-panel-title h2{margin:0;font:23px "DM Serif Display",serif}.admin-panel-title span{padding:2px 8px;border-radius:20px;background:#e2d7c3;font-size:11px}.admin-list{max-height:65vh;overflow:auto}.admin-game,.admin-player{padding:15px 18px;border-bottom:1px solid #e1d8c7}.admin-game>div:first-child{display:flex;align-items:center;gap:7px}.admin-game small{margin-left:auto;color:#8a8172;font-family:monospace}.admin-status{width:8px;height:8px;border-radius:50%;background:#9a9f9c}.admin-status.active{background:#dfa638;box-shadow:0 0 0 4px #dfa63822}.admin-players{display:flex;gap:7px;margin:12px 0}.admin-players span{flex:1;padding:9px;border-radius:9px;background:#eee5d3}.admin-players span b{float:right}.admin-game footer{display:flex;gap:13px;color:#7b807c;font-size:10px}.admin-game footer time{margin-left:auto}.admin-player{display:grid;grid-template-columns:auto 1fr auto auto;gap:11px;align-items:center}.admin-delete-player{width:34px;height:34px;border:1px solid #d7b7ac;border-radius:9px;background:#f6e1da;color:#9b3f33;font-size:21px;line-height:1}.admin-delete-player:active{transform:scale(.92)}.admin-delete-player:disabled{opacity:.4}.admin-avatar{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:#e8bb61;font-weight:700}.admin-player>div:nth-child(2){display:flex;flex-direction:column}.admin-player small,.admin-player-meta{color:#777f7b;font-size:10px}.admin-player-meta{display:flex;flex-direction:column;text-align:right}@media(max-width:720px){.admin-page{padding:18px 12px}.admin-page>header{align-items:flex-start}.admin-actions{flex-direction:column}.admin-stats{grid-template-columns:1fr 1fr}.admin-grid{grid-template-columns:1fr}.admin-list{max-height:none}}
