.rating-screen{min-height:100%;padding:calc(12px + env(safe-area-inset-top)) 16px max(12px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px;overflow-x:hidden}.rating-top{display:flex;justify-content:space-between;align-items:center}.rating-back{text-decoration:none}.rating-title{margin:0;text-align:center;font-size:26px;font-weight:800}.rating-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:4px;border-radius:14px;background:var(--panel)}.rating-tab{border:none;background:transparent;border-radius:10px;padding:8px 10px;font-weight:700;color:var(--muted);cursor:pointer}.rating-tab.active{background:#eef6f1;color:var(--green)}.rating-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:8px;align-items:center;padding:8px;border-radius:10px}.rating-row.mine{background:#eef6f1}.rating-body{min-width:0;display:flex;flex-direction:column;gap:2px}.rating-sub{color:var(--muted);font-size:12px;font-weight:600}.rating-screen .results-card{background:var(--panel);border-radius:16px;padding:12px 12px 10px;display:flex;flex-direction:column;gap:4px}.rating-screen .results-kicker{margin:0 8px 4px;color:var(--muted);font-size:12px;font-weight:700}.rating-screen .standing-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.rating-wins{text-align:right;font-size:13px;font-weight:800;white-space:nowrap;color:var(--ink)}.achievements-progress{display:flex;flex-direction:column;gap:6px}.achievements-progress .meta{margin:0}.achievements-progress-bar{display:block;height:6px;border-radius:999px;background:var(--line);overflow:hidden}.achievements-progress-bar span{display:block;height:100%;background:var(--green);border-radius:999px}.achievements-progress-pct{margin:0;color:var(--muted);font-size:12px;font-weight:700;text-align:center}.achievements-list{gap:6px}.achievement{display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;align-items:start;padding:10px 8px;border-radius:12px}.achievement.unlocked{background:#f3f8f4}.achievement-mark{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#eee8dc;color:#8a8170}.achievement.unlocked .achievement-mark{background:#dce9e1;color:var(--green)}.achievement-icon{width:18px;height:18px;display:block}.achievement-body{min-width:0;display:flex;flex-direction:column;gap:2px}.achievement-title{font-weight:700}.achievement:not(.unlocked) .achievement-title{color:var(--muted)}.achievement-hint,.achievement-count{color:var(--muted);font-size:12px;font-weight:600}.achievement-bar{display:block;height:4px;margin-top:5px;border-radius:999px;background:var(--line);overflow:hidden}.achievement-bar span{display:block;height:100%;background:var(--green);border-radius:999px}.achievement-unlock{background:#f3f8f4;border-radius:16px;padding:16px;text-align:center;display:flex;flex-direction:column;gap:6px}.achievement-unlock-kicker{margin:0;color:var(--green);font-size:12px;font-weight:700}.achievement-unlock-title{margin:0;font-size:18px;font-weight:800}.achievement-unlock-hint{margin:0;color:var(--muted);font-size:13px;font-weight:600}.achievement-unlock-icon{width:40px;height:40px;margin:0 auto;border-radius:50%;display:grid;place-items:center;background:#dce9e1;color:var(--green)}.achievement-unlock-icon .achievement-icon{width:22px;height:22px}.achievement-unlock-item{display:flex;flex-direction:column;gap:4px;align-items:center}.achievement-unlock-item+.achievement-unlock-item{margin-top:10px;padding-top:10px;border-top:1px solid #dce9e1}.game-screen{min-height:100%;padding:calc(10px + env(safe-area-inset-top)) 14px max(10px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px;overflow-x:hidden}.game-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.game-top-right{display:flex;align-items:center;gap:8px}.game-timer{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}.game-round{color:var(--muted);font-size:14px;font-weight:600}.source-block{text-align:center}.source-kicker,.found-kicker{margin:0;color:var(--muted);font-size:12px;font-weight:600}.game-source{margin:0;font-size:clamp(20px,6.4vw,30px);font-weight:800;letter-spacing:.1em;line-height:1.15;overflow-wrap:anywhere}.source-kicker{margin-top:3px}.scoreboard{display:grid;grid-template-columns:1fr 1fr;gap:8px}.scoreboard.count-3,.scoreboard.count-4{grid-template-columns:repeat(auto-fit,minmax(132px,1fr))}.score-card{display:grid;grid-template-columns:28px minmax(0,1fr);grid-template-rows:auto auto;column-gap:6px;row-gap:1px;align-items:center;min-width:0;padding:7px 8px 6px;border-radius:14px;background:var(--panel)}.score-card.mine{background:#f3f8f4}.score-avatar{grid-row:1 / span 2;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff;font-size:11px;font-weight:800}.score-card.mine .score-avatar{background:var(--green)}.score-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700}.score-value{font-size:18px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}.game-board-wrap{width:min(100%,42vh,380px);width:min(100%,42dvh,380px);aspect-ratio:1;margin:2px auto 0;flex-shrink:0}.game-board{position:relative;width:100%;height:100%;touch-action:none;-webkit-user-select:none;user-select:none}.game-path{position:absolute;inset:0;pointer-events:none}.board-center{position:absolute;inset:22%;display:flex;align-items:center;justify-content:center;pointer-events:none;text-align:center}.center-word{display:flex;flex-wrap:wrap;justify-content:center;gap:4px;max-width:100%}.center-tile{min-width:22px;padding:3px 5px;border-radius:6px;background:var(--tile);border:1px solid var(--tile-edge);font-size:16px;font-weight:800}.center-hint{color:var(--muted);font-size:13px}.game-tile{position:absolute;display:flex;align-items:center;justify-content:center;border-radius:50%;border:1.5px solid var(--tile-edge);background:var(--tile);font-size:22px;font-weight:800;pointer-events:none;box-shadow:0 2px 0 var(--tile-edge);transition:transform .12s ease,background-color .12s ease,color .12s ease}.game-tile.selected{background:var(--green);border-color:var(--green);color:var(--green-text);transform:scale(1.08);box-shadow:none}.game-tile.disabled{opacity:.45}.shuffle-btn{align-self:center;margin-top:2px;background:var(--panel);border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:14px;font-weight:600;padding:7px 14px;cursor:pointer}.shuffle-btn:disabled{opacity:.45}.game-toast{min-height:20px;margin:0;text-align:center;font-size:14px;font-weight:700;opacity:0;transform:translateY(4px);transition:opacity .16s ease,transform .16s ease}.game-toast.show{opacity:1;transform:none}.game-toast.ok{color:var(--green)}.game-toast.err{color:var(--danger)}.found-block{display:flex;flex-direction:column;gap:6px}.game-chips{display:flex;flex-wrap:wrap;gap:6px;max-height:76px;overflow:auto}.game-chips .word-chip{width:fit-content;max-width:100%;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:4px 9px;font-size:13px;font-weight:700}.game-chips .word-chip.appear{animation:chip-in .18s ease}@keyframes chip-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:none}}@media(max-width:360px){.game-source{letter-spacing:.06em}.score-value{font-size:16px}}.results-screen{min-height:100%;padding:calc(12px + env(safe-area-inset-top)) 16px max(12px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px;overflow-x:hidden}.results-top{display:flex;justify-content:flex-end;margin:-4px 0 -8px}.results-hero{text-align:center}.hero-emoji{margin:0;font-size:28px;line-height:1}.hero-title{margin:4px 0 0;font-size:26px;font-weight:800;line-height:1.15}.hero-name{margin:4px 0 0;font-size:18px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hero-sub{margin:4px 0 0;font-size:15px;font-weight:700}.results-card{background:var(--panel);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:8px}.results-card.accent-green{background:#f3f8f4}.results-card.accent-gold{background:#f7f1e4}.results-kicker{margin:0;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.02em}.accent-green .results-kicker{color:var(--green)}.standing-row{display:grid;grid-template-columns:28px 28px minmax(0,1fr) auto;gap:8px;align-items:center;padding:6px 8px;border-radius:10px}.standing-row.mine{background:#eef6f1}.standing-place{text-align:center}.standing-avatar{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff;font-size:11px;font-weight:800}.standing-row.mine .standing-avatar{background:var(--green)}.standing-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.standing-score{font-weight:800;font-variant-numeric:tabular-nums}.word-chips{display:flex;flex-wrap:wrap;gap:6px}.word-chips .word-chip{display:inline-flex;align-items:center;width:fit-content;max-width:100%;padding:5px 9px;border-radius:999px;background:var(--tile);border:1px solid var(--line);font-size:13px;font-weight:700}.word-chips .word-chip.green{background:#e7f3ec;border-color:#c9dccf;color:var(--green)}.word-chips .word-chip.gold{background:#f4ead3;border-color:#e2d2ae}.results-screen .button{margin-top:4px}.results-screen .leave-btn{margin-top:-4px}.results-screen .meta{margin:6px 0 0}.results-hero .meta{margin-top:6px}:root{color-scheme:light;--bg: #f3efe4;--panel: #fffdfb;--ink: #1b3228;--muted: #6f7b73;--green: #2d7a4f;--green-text: #fffdf8;--blue: #3d8ebd;--tile: #fffdf8;--tile-edge: #cbb896;--line: #e4d8c4;--danger: #c04538;--danger-soft: #f8e4e1;--ok: #2d7a4f}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;height:100%;background:var(--bg);color:var(--ink);font-family:SF Pro Display,Segoe UI,system-ui,-apple-system,Roboto,sans-serif}button,input{font:inherit}button{color:inherit}.screen{min-height:100%;padding:calc(12px + env(safe-area-inset-top)) 16px max(12px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px}.home-header{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;gap:6px;padding-top:2px;min-height:36px}.home-start{gap:8px;padding-top:calc(8px + env(safe-area-inset-top));justify-content:flex-start}.brand-tiles{display:flex;gap:5px;margin-bottom:2px}.brand-tiles .code-tile{width:28px;height:32px;font-size:14px}.join-form{width:100%;display:flex;flex-direction:column;align-items:center;gap:8px}.home-nav{display:flex;justify-content:center;gap:22px;padding:4px 0 2px}.home-nav-link{color:var(--ink);text-decoration:none;font-size:14px;font-weight:700}.sound-icon{width:20px;height:20px;display:block;margin:0 auto;color:var(--muted)}.place-badge{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:800;justify-self:center}.place-badge.place-1{background:#e8d5a3;color:#6f5414}.place-badge.place-2{background:#d8dde4;color:#4b5563}.place-badge.place-3{background:#e4c4a6;color:#7a4e2a}.place-num{display:grid;place-items:center;width:24px;color:var(--muted);font-size:13px;font-weight:700;justify-self:center}.home-header .status-pill{grid-column:2;justify-self:center}.home-header .sound-toggle{grid-column:3;justify-self:end}.brand{margin:0;font-size:13px;font-weight:600;color:var(--muted)}.status-pill{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:13px;font-weight:600}.status-pill:before{content:"";width:7px;height:7px;border-radius:50%;background:#c2410c}.status-pill.online:before{background:var(--ok)}.lobby{display:flex;flex-direction:column;gap:14px}.lobby-panel{background:var(--panel);border:none;border-radius:22px;padding:16px 16px 14px;display:flex;flex-direction:column;align-items:center;gap:8px}.lobby-title{margin:2px 0 0;text-align:center;font-size:20px;line-height:1.2;font-weight:700}.lobby-hint{margin:0 8px 4px;text-align:center;color:var(--muted);font-size:14px;line-height:1.4}.lobby-kicker{margin:6px 0 0;text-align:center;color:var(--muted);font-size:12px;font-weight:600}.lobby-count{margin:2px 0 0;color:var(--muted);font-size:13px;font-weight:600}.code-row{display:flex;align-items:center;justify-content:center;gap:4px;border:none;background:transparent;padding:2px 0 0;cursor:pointer}.code-tiles{display:flex;gap:5px}.code-tile{width:36px;height:40px;display:grid;place-items:center;background:var(--tile);border:1.5px solid var(--tile-edge);border-radius:8px;box-shadow:0 2px 0 var(--tile-edge);font-size:18px;font-weight:800;color:var(--ink)}.copy-icon{width:20px;margin-left:2px;color:var(--blue);font-size:15px;font-weight:700}.copy-hint{margin:0;color:var(--muted);font-size:12px}.lobby-actions{display:flex;flex-direction:column;align-items:center;gap:8px}.members{display:flex;flex-direction:column;gap:8px}.player-list{display:flex;flex-direction:column;gap:6px}.player-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:14px;background:var(--panel)}.player-row.self{border-color:#c9dccf;background:#f3f8f4}.player-avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff;font-size:12px;font-weight:800}.player-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.player-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.player-role{color:var(--muted);font-size:12px;font-weight:500}.host-crown{font-size:18px;line-height:1}.divider{width:100%;display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px;margin:4px 0}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--line)}.field{width:100%;border-radius:12px;border:1px solid var(--line);background:#fff;padding:12px 14px;font-size:18px;letter-spacing:.16em;text-align:center;text-transform:uppercase;color:var(--ink)}.field:focus{outline:2px solid rgba(61,142,189,.28);border-color:var(--blue)}.field::placeholder{letter-spacing:0;text-transform:none;color:#9aa39d}.button{width:100%;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--green);color:var(--green-text);border:none;border-radius:14px;padding:13px 16px;font-weight:700;cursor:pointer}.btn-icon{width:18px;height:18px;flex:0 0 18px}.button:disabled{opacity:.45;cursor:default}.buttonSecondary{background:transparent;color:var(--green);border:1.5px solid var(--green)}.text-btn,.leave-btn{background:transparent;border:none;padding:4px 8px;font-weight:600;cursor:pointer}.text-btn{display:inline-flex;align-items:center;gap:6px;color:var(--blue);font-size:14px}.sound-toggle{width:36px;height:36px;flex:0 0 36px;padding:0;border:none;border-radius:10px;background:transparent;color:var(--muted);cursor:pointer}.leave-btn{color:var(--danger);font-size:14px;align-self:center}.error-banner{margin:0;padding:10px 12px;border-radius:12px;background:var(--danger-soft);color:var(--danger);text-align:center;font-weight:600}.meta{margin:0;color:var(--muted);text-align:center}.error{margin:0;color:var(--danger);text-align:center}.empty-state{text-align:center;padding:28px 16px}.empty-state h1{margin:0 0 10px;font-size:26px}
