:root{--color-bg: #f2fbf4;--color-surface: #ffffff;--color-surface-2: #e4f5e8;--color-text: #14301f;--color-text-muted: #4b6b57;--color-primary: #2f9e5b;--color-primary-strong: #1f7a44;--color-primary-contrast: #ffffff;--color-accent: #f6c445;--color-danger: #d64545;--color-warning: #d9a400;--color-tile: #ffffff;--color-tile-border: #bfe0c9;--color-tile-active: #ffe58a;--color-tile-valid: #9be7b5;--color-tile-invalid: #f6b3b3;--color-tile-duplicate: #ffe58a;--color-path: #2f9e5b;--radius: 14px;--radius-sm: 8px;--shadow: 0 2px 10px rgba(20, 48, 31, .1);--font: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--color-bg: #0f1d15;--color-surface: #182b20;--color-surface-2: #22392c;--color-text: #eaf7ee;--color-text-muted: #a6c4b1;--color-primary: #3fbf70;--color-primary-strong: #63d68d;--color-primary-contrast: #0f1d15;--color-tile: #22392c;--color-tile-border: #35533f;--color-tile-active: #7a6a1f;--color-tile-valid: #2f7a4b;--color-tile-invalid: #7a2f2f;--color-tile-duplicate: #7a6a1f;--shadow: 0 2px 10px rgba(0, 0, 0, .4)}}*{box-sizing:border-box}:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}html{font-family:var(--font);-webkit-text-size-adjust:100%;overscroll-behavior:none}body{margin:0;background:var(--color-bg);color:var(--color-text);min-height:100dvh;-webkit-tap-highlight-color:transparent}#root{min-height:100dvh;display:flex;flex-direction:column}h1,h2,h3{margin:0;line-height:1.15}p{margin:0}button{font:inherit;color:inherit;cursor:pointer}a{color:var(--color-primary-strong)}.screen{flex:1;display:flex;flex-direction:column;width:100%;max-width:34rem;margin:0 auto;padding:calc(env(safe-area-inset-top) + 1rem) calc(env(safe-area-inset-right) + 1rem) calc(env(safe-area-inset-bottom) + 1rem) calc(env(safe-area-inset-left) + 1rem);gap:1rem}.screen-header{display:flex;align-items:center;gap:.75rem;min-height:2.5rem}.screen-header h1{font-size:1.35rem;flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:0;border-radius:var(--radius);padding:.9rem 1.2rem;font-weight:700;font-size:1rem;background:var(--color-surface-2);color:var(--color-text);transition:transform .08s ease,background .15s ease;text-decoration:none}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--color-primary);color:var(--color-primary-contrast)}.btn-primary:not(:disabled):hover{background:var(--color-primary-strong)}.btn-lg{font-size:1.15rem;padding:1.1rem 1.4rem}.btn-ghost{background:transparent;padding:.5rem .75rem}.btn-icon{width:2.5rem;height:2.5rem;padding:0;border-radius:50%}.card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.stack{display:flex;flex-direction:column;gap:.75rem}.row{display:flex;align-items:center;gap:.75rem}.muted{color:var(--color-text-muted)}.text-danger{color:var(--color-danger)}.label{font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;background:var(--color-surface-2);border-radius:var(--radius);padding:4px}.segmented button{border:0;border-radius:calc(var(--radius) - 4px);padding:.7rem .25rem;background:transparent;font-weight:700}.segmented button[aria-pressed=true]{background:var(--color-surface);box-shadow:var(--shadow);color:var(--color-primary-strong)}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem 0}.switch-row input{width:1.4rem;height:1.4rem;accent-color:var(--color-primary)}.hero{text-align:center;padding:2rem 0 1rem}.hero .logo{font-size:4rem;line-height:1}.hero h1{font-size:2.2rem;color:var(--color-primary-strong);margin-top:.5rem}.hero p{margin-top:.5rem}.menu{display:flex;flex-direction:column;gap:.75rem}.menu .btn{width:100%}.spacer{flex:1}.footer-note{text-align:center;font-size:.8rem}.grid-wrap{width:100%;max-width:min(100%,70dvh);margin:0 auto;position:relative}.letter-grid{position:relative;display:grid;gap:6px;width:100%;aspect-ratio:1;touch-action:none;user-select:none;-webkit-user-select:none}.letter-grid.disabled{pointer-events:none;filter:grayscale(.4);opacity:.6}.tile{display:flex;align-items:center;justify-content:center;background:var(--color-tile);border:2px solid var(--color-tile-border);border-radius:var(--radius-sm);font-weight:800;font-size:clamp(1rem,6.5vmin,2.2rem);text-transform:uppercase;transition:background .12s ease,transform .12s ease,border-color .12s ease;box-shadow:var(--shadow)}.tile.multi{font-size:clamp(.85rem,5vmin,1.7rem)}.tile.selected{background:var(--color-tile-active);border-color:var(--color-accent);transform:scale(1.06)}.tile.flash-valid{background:var(--color-tile-valid);border-color:var(--color-primary)}.tile.flash-invalid{background:var(--color-tile-invalid);border-color:var(--color-danger)}.tile.flash-duplicate{background:var(--color-tile-duplicate);border-color:var(--color-warning)}.tile.hidden-tile{color:transparent}.path-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.path-overlay polyline{fill:none;stroke:var(--color-path);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;opacity:.75}.path-overlay.valid polyline{stroke:var(--color-primary)}.path-overlay.invalid polyline{stroke:var(--color-danger)}.path-overlay.duplicate polyline{stroke:var(--color-warning)}.game-top{display:flex;align-items:center;justify-content:space-between;gap:1rem}.timer{font-variant-numeric:tabular-nums;font-weight:800;font-size:1.6rem;min-width:4.5rem;text-align:center;border-radius:var(--radius);padding:.25rem .6rem;background:var(--color-surface);box-shadow:var(--shadow)}.timer.urgent{color:var(--color-danger);animation:pulse 1s ease-in-out infinite}.score-badge{font-weight:800;font-size:1.2rem;padding:.35rem .8rem;border-radius:var(--radius);background:var(--color-primary);color:var(--color-primary-contrast)}.current-word{min-height:2.6rem;display:flex;align-items:center;justify-content:center;gap:.5rem;font-size:1.5rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.current-word .points{font-size:1rem;padding:.1rem .5rem;border-radius:999px;background:var(--color-primary);color:var(--color-primary-contrast)}.current-word.valid{color:var(--color-primary-strong)}.current-word.invalid{color:var(--color-danger);animation:shake .3s ease}.current-word.duplicate,.current-word.tooShort{color:var(--color-warning)}.found-list{display:flex;flex-wrap:wrap;gap:.4rem;min-height:3rem;align-content:flex-start;overflow-y:auto;max-height:22dvh}.found-chip{padding:.3rem .6rem;border-radius:999px;background:var(--color-surface);box-shadow:var(--shadow);font-weight:700;text-transform:uppercase;font-size:.9rem;animation:pop .25s ease}.found-chip .pts{color:var(--color-primary-strong);margin-left:.3rem}.countdown{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:6rem;font-weight:900;color:var(--color-primary-strong);background:color-mix(in srgb,var(--color-bg) 70%,transparent);border-radius:var(--radius);z-index:2}.score-hero{text-align:center;padding:1rem 0}.score-hero .big{font-size:4rem;font-weight:900;color:var(--color-primary-strong);line-height:1}.stat-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.stat-tile{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:.75rem .5rem;text-align:center}.stat-tile .value{font-size:1.25rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-tile .name{font-size:.75rem;color:var(--color-text-muted)}.word-groups{display:flex;flex-direction:column;gap:.75rem}.word-group h3{font-size:.85rem;color:var(--color-text-muted);margin-bottom:.4rem}.word-cloud{display:flex;flex-wrap:wrap;gap:.4rem}.word-pill{border:0;padding:.35rem .65rem;border-radius:999px;background:var(--color-surface);box-shadow:var(--shadow);font-weight:700;text-transform:uppercase;font-size:.9rem;color:var(--color-text-muted)}.word-pill.found{background:var(--color-primary);color:var(--color-primary-contrast)}.word-pill:active{transform:scale(.96)}.modal-backdrop{position:fixed;inset:0;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:10}.modal{background:var(--color-bg);border-radius:var(--radius);padding:1rem;width:100%;max-width:26rem;display:flex;flex-direction:column;gap:.75rem}.modal .word-title{text-align:center;font-size:1.5rem;font-weight:900;text-transform:uppercase;letter-spacing:.05em}.update-prompt h2{font-size:1.25rem}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:2rem;text-align:center}.spinner{width:2.2rem;height:2.2rem;border-radius:50%;border:4px solid var(--color-surface-2);border-top-color:var(--color-primary);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}@keyframes pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}.text-input{font:inherit;font-size:1.1rem;padding:.75rem .9rem;border-radius:var(--radius-sm);border:2px solid var(--color-tile-border);background:var(--color-surface);color:var(--color-text);width:100%}.text-input:focus{outline:none;border-color:var(--color-primary)}.code-input{text-align:center;font-size:1.8rem;font-weight:800;letter-spacing:.4em;text-transform:uppercase;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.profile-chip{align-self:center;display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .9rem .35rem .4rem;border-radius:999px;background:var(--color-surface);box-shadow:var(--shadow);text-decoration:none;color:var(--color-text);font-weight:700}.avatar-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:.4rem}.avatar-choice{border:3px solid transparent;border-radius:50%;padding:0;background:transparent;line-height:0}.avatar-choice .avatar{width:100%;height:auto}.avatar-choice.selected{border-color:var(--color-primary)}.avatar{border-radius:50%}.room-code-card{align-items:center}.room-code{font-size:2.6rem;font-weight:900;letter-spacing:.35em;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--color-primary-strong)}.room-code.small{font-size:1.5rem;letter-spacing:.25em}.room-bar{display:grid;grid-template-columns:1fr auto;align-items:center;gap:.5rem .75rem}.room-bar-code{display:flex;flex-direction:column;gap:.1rem}.room-bar-meta{grid-column:1;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.room-bar>.btn{grid-column:2;grid-row:1 / span 2}.room-bar-switch{grid-column:1 / -1;padding-top:.25rem;border-top:1px solid var(--color-surface-2)}.qr{border-radius:var(--radius-sm);background:#fff;padding:6px}.qr-placeholder{border-radius:var(--radius-sm);background:var(--color-surface-2)}.qr-modal{align-items:center}.player-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.player-row{display:flex;align-items:center;gap:.6rem;padding:.3rem 0}.player-row.offline .player-name{opacity:.55}.player-name{flex:1;font-weight:700}.badge{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;padding:.2rem .5rem;border-radius:999px;background:var(--color-accent);color:#14301f}.badge.muted{background:var(--color-surface-2);color:var(--color-text-muted)}.conn-dot{width:.7rem;height:.7rem;border-radius:50%;background:var(--color-danger)}.conn-dot.open{background:var(--color-primary)}.conn-dot.connecting,.conn-dot.reconnecting{background:var(--color-warning)}.scanner{display:flex;flex-direction:column;align-items:center;gap:.5rem}.scanner-video{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--radius-sm);background:#000}.counter-strip{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap}.counter{display:flex;align-items:center;gap:.25rem;padding:.2rem .5rem .2rem .25rem;border-radius:999px;background:var(--color-surface);box-shadow:var(--shadow);font-weight:800}.counter.me{outline:2px solid var(--color-primary)}.counter.offline{opacity:.5}.counter .count{min-width:1.2rem;text-align:center;animation:pop .25s ease}.ranking{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.rank-row{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:.6rem .75rem;display:flex;flex-direction:column;gap:.5rem}.rank-row.me{outline:2px solid var(--color-primary)}.rank-head{display:flex;align-items:center;gap:.5rem}.rank-pos{width:1.6rem;height:1.6rem;border-radius:50%;background:var(--color-surface-2);display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:.85rem}.rank-row:first-child .rank-pos{background:var(--color-accent);color:#14301f}.rank-row.newcomer{opacity:.75}.rank-avatar{position:relative;display:inline-flex;flex-shrink:0}.rank-wins{display:block;font-size:.75rem;font-weight:600;color:var(--color-text-muted)}.crown{position:absolute;top:-.7rem;right:-.6rem;display:inline-flex;align-items:flex-end;pointer-events:none}.crown-emoji{font-size:1.1rem;line-height:1;display:inline-block;transform:rotate(22deg);filter:drop-shadow(0 1px 1px rgb(0 0 0 / .3))}.crown-streak{margin-left:-.3rem;min-width:1rem;padding:0 .25rem;border-radius:999px;background:var(--color-accent);color:#14301f;font-size:.65rem;font-weight:900;line-height:1rem;text-align:center}.counter .crown-emoji{font-size:.9rem}.sort-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;font-size:.85rem}.segmented.compact{display:inline-grid}.segmented.compact button{padding:.4rem .7rem;font-size:.85rem}.rank-score{font-weight:900;font-size:1.3rem;color:var(--color-primary-strong)}.rank-total{font-size:.85rem}.word-cloud.small .word-pill{font-size:.8rem;padding:.25rem .5rem}.word-pill.unique{background:var(--color-accent);color:#14301f}.word-pill.others{background:var(--color-surface-2);color:var(--color-text)}.word-pill .pts{opacity:.7;margin-left:.2rem}.word-pill .finders{display:block;font-size:.65rem;font-weight:600;text-transform:none;opacity:.8}:root{--pie-mine: #2f9e5b;--pie-others: #d9a400;--pie-third: #4f7dd1;--pie-track: #dcebe0}@media(prefers-color-scheme:dark){:root{--pie-mine: #34a862;--pie-others: #b88a10;--pie-third: #6f9ae6;--pie-track: #2c4536}}.top-note{margin:0;text-align:center}.stats-card{display:flex;flex-direction:column;gap:.6rem}.stats-toggle{display:flex;align-items:center;gap:.5rem;width:100%;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.stats-toggle .label{flex:1}.stats-summary{font-size:.9rem;white-space:nowrap;font-variant-numeric:tabular-nums}.stats-toggle .chevron{display:inline-block;transition:transform .15s ease}.stats-toggle[aria-expanded=false] .chevron{transform:rotate(-90deg)}.stats-body{display:flex;align-items:center;gap:1rem}.pie{flex:none}.pie-track{stroke:var(--pie-track)}.pie-mine{stroke:var(--pie-mine)}.pie-others{stroke:var(--pie-others)}.pie-gap{stroke:var(--color-surface)}.stats-legend{display:flex;flex-direction:column;gap:.2rem;min-width:0;flex:1}.stats-row{display:grid;grid-template-columns:.75rem 1fr auto;align-items:center;gap:.5rem;font-size:.95rem}.stats-row.total{border-top:1px solid var(--color-surface-2);padding-top:.2rem;margin-top:.1rem}.stats-row strong{font-variant-numeric:tabular-nums;white-space:nowrap}.swatch{width:.75rem;height:.75rem;border-radius:3px}.swatch.pie-mine{background:var(--pie-mine)}.swatch.pie-others{background:var(--pie-others)}.swatch.pie-track{background:var(--pie-track)}.stats-total{font-size:.85rem}.btn-share{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .8rem}.btn-share .qr-icon{flex:none}.server-stats-body{display:flex;flex-direction:column;gap:.85rem;padding-top:.25rem}.server-stats .live-pill{align-self:flex-start}.live-pill{display:inline-flex;align-items:center;gap:.4rem;font-size:.8rem;font-weight:700;color:var(--color-primary-strong);white-space:nowrap}.live-pill:before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:var(--color-primary);animation:live-pulse 2s ease-in-out infinite}@keyframes live-pulse{0%,to{box-shadow:0 0 #2f9e5b73}50%{box-shadow:0 0 0 5px #2f9e5b00}}@media(prefers-reduced-motion:reduce){.live-pill:before{animation:none}}.big-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem .75rem}.big-stat .value{font-size:1.6rem;font-weight:800;line-height:1.1;color:var(--color-primary-strong);font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.big-stat .name{font-size:.75rem;color:var(--color-text-muted)}.record-list{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.3rem .75rem;margin:0;padding-top:.6rem;border-top:1px solid var(--color-surface-2);font-size:.9rem}.record-list dt{color:var(--color-text-muted)}.record-list dd{margin:0;text-align:right;font-weight:700;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record-list dd.wrap{white-space:normal;overflow-wrap:anywhere}.record-word{text-transform:uppercase;letter-spacing:.04em}.trend,.share{display:flex;flex-direction:column;gap:.35rem}.trend{padding-top:.6rem;border-top:1px solid var(--color-surface-2)}.trend-head,.share-head{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;font-size:.85rem}.trend-head strong{font-variant-numeric:tabular-nums}.sparkline{display:block;width:100%;height:32px}.sparkline rect{fill:var(--pie-mine)}.sparkline rect.today{fill:var(--pie-others)}.share-legend{font-variant-numeric:tabular-nums;text-align:right}.share-bar{display:flex;gap:2px;height:.55rem;border-radius:999px;overflow:hidden;background:var(--pie-track)}.share-seg{display:block;flex-basis:0;min-width:3px}.share-seg.seg-0{background:var(--pie-mine)}.share-seg.seg-1{background:var(--pie-others)}.share-seg.seg-2{background:var(--pie-third)}.server-stats-note{font-size:.8rem;line-height:1.4}
