:root{--bg:#f7f7f9;--surface:#fff;--text:#1c1d22;--muted:#6b6f7b;--border:#e2e3e8;--accent:#4f46e5;--accent-soft:#e8e7fd;--warm:#e8590c;--hl:#fde68a;--hl-text:#3d2c00;--danger:#c0262d;--danger-soft:#fde2e2;--c0:#dbeafe;--c1:#fce7f3;--c2:#dcfce7;--c3:#fef3c7;--c4:#ede9fe;--radius:8px;--mono:ui-monospace, "Cascadia Code", "SF Mono", Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#111216;--surface:#1a1b21;--text:#e7e8ec;--muted:#9a9eab;--border:#2c2e36;--accent:#8b85ff;--accent-soft:#2a2852;--warm:#ff922b;--hl:#6b5310;--hl-text:#fff3cc;--danger:#ff7b80;--danger-soft:#4a1c1f;--c0:#1e3a5f;--c1:#5a2343;--c2:#1d4a31;--c3:#574214;--c4:#3b2e66;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#111216;--surface:#1a1b21;--text:#e7e8ec;--muted:#9a9eab;--border:#2c2e36;--accent:#8b85ff;--accent-soft:#2a2852;--warm:#ff922b;--hl:#6b5310;--hl-text:#fff3cc;--danger:#ff7b80;--danger-soft:#4a1c1f;--c0:#1e3a5f;--c1:#5a2343;--c2:#1d4a31;--c3:#574214;--c4:#3b2e66;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}code,pre,.mono,textarea,input[type=text]{font-family:var(--mono)}h1{margin:0;font-size:1.4rem}a{color:var(--accent)}h2{margin:0 0 .75rem;font-size:.95rem}button,select,input,textarea{font:inherit;color:inherit}button{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:.35rem .75rem}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.ghost{color:var(--muted);background:0 0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}textarea,input[type=text],select{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;padding:.6rem .75rem}textarea{resize:vertical;font-size:.9rem}select{width:auto;padding:.35rem .5rem}input[type=range]{accent-color:var(--accent)}.app{max-width:1040px;margin:0 auto;padding:1rem 16px 3rem}.header{margin-bottom:.75rem}.h1-keywords{color:var(--muted);font-weight:400}.tagline{color:var(--muted);margin:.15rem 0 0;font-size:.9rem}.tabbar{border-bottom:1px solid var(--border);align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.tabs{gap:.25rem;min-width:0;display:flex;overflow-x:auto}.theme-toggle{flex-shrink:0;margin-left:auto;font-size:.8rem}.tabs button{color:var(--muted);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:.5rem .75rem}.tabs button.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.stack{flex-direction:column;gap:1rem;display:flex}.stack.tight{gap:.5rem}.row,.toolbar{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.toolbar .stats{gap:1rem;margin-left:auto;display:flex}.grid-2{grid-template-columns:1fr 260px;gap:1rem;display:grid}@media (width<=700px){.grid-2{grid-template-columns:1fr}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:0;padding:1rem}.field{color:var(--muted);flex-direction:column;gap:.3rem;font-size:.85rem;display:flex}.field.grow{min-width:0}.toolbar .field{flex-direction:row;align-items:center;gap:.5rem}.toggle{cursor:pointer;align-items:center;gap:.4rem;display:inline-flex}.muted{color:var(--muted)}.small{margin:0;font-size:.85rem}.tabular{font-variant-numeric:tabular-nums}code{background:var(--bg);border:1px solid var(--border);white-space:pre;border-radius:4px;padding:0 .25em;font-size:.9em}code.hl{background:var(--hl);color:var(--hl-text);border-color:#0000}.ws{opacity:.45}.chips{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:flex-start;gap:4px 2px;min-height:3.5rem;padding:.75rem;display:flex}.chip-wrap{display:contents}.line-break{flex-basis:100%;height:0}.chip{border:1px solid #0000;border-radius:4px;flex-direction:column;align-items:center;min-width:1.4em;max-width:100%;padding:1px 3px;display:inline-flex}.chip:hover:not(:disabled){border-color:var(--text)}.chip.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.chip.partial{border-style:dashed;border-color:var(--muted)}.chip-text{font-family:var(--mono);white-space:pre;overflow-wrap:anywhere;font-size:.95rem}.chip.partial .chip-text{font-size:.72rem}.chip-id{font-family:var(--mono);color:var(--muted);font-variant-numeric:tabular-nums;font-size:.68rem}.c0{background:var(--c0)}.c1{background:var(--c1)}.c2{background:var(--c2)}.c3{background:var(--c3)}.c4{background:var(--c4)}.detail{border-left:3px solid var(--accent);background:var(--surface);flex-wrap:wrap;gap:.5rem 1.25rem;padding:.5rem .75rem;font-size:.85rem;display:flex}.ids{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);white-space:pre-wrap;word-break:break-all;margin:0;padding:.75rem;font-size:.8rem}.compare{flex-direction:column;gap:.35rem;display:flex}.compare-row{text-align:left;border-color:#0000;grid-template-columns:7.5rem 1fr 3rem;align-items:center;gap:.75rem;display:grid}.compare-row.active{border-color:var(--accent)}.compare-name{font-family:var(--mono);font-size:.85rem}.bar-track{background:var(--bg);border-radius:999px;height:.6rem;overflow:hidden}.bar{background:var(--accent);border-radius:999px;height:100%;transition:width .2s;display:block}.player{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.player input[type=range]{flex:1;min-width:120px}.step-caption{min-height:1.6em;margin:.75rem 0}.words{flex-wrap:wrap;gap:.4rem .6rem;display:flex}.word{border-radius:6px;align-items:center;gap:2px;padding:2px;display:inline-flex}.word:not(.hit){opacity:.55}.piece{font-family:var(--mono);background:var(--bg);border:1px solid var(--border);white-space:pre;border-radius:4px;padding:0 4px;font-size:.85rem}.piece.fresh{border-color:var(--accent);background:var(--accent-soft)}.pair{background:var(--hl);border-radius:5px;gap:1px;padding:1px;display:inline-flex}.pair .piece{color:var(--hl-text);background:0 0;border-color:#0000;font-weight:600}.count{color:var(--muted);margin-left:2px;font-size:.7rem}.base-vocab{flex-wrap:wrap;gap:.35rem;margin-bottom:.75rem;display:flex}.vocab-chip{align-items:baseline;gap:.25rem;font-size:.75rem;display:inline-flex}.table-scroll{max-height:320px;overflow:auto}table.vocab{border-collapse:collapse;width:100%;font-size:.85rem}table.vocab th,table.vocab td{text-align:left;border-bottom:1px solid var(--border);padding:.3rem .5rem}table.vocab th{background:var(--surface);color:var(--muted);font-weight:500;position:sticky;top:0}table.vocab tr.newest td{background:var(--accent-soft)}.encode-row{flex-wrap:wrap;gap:.35rem;margin-bottom:.75rem;display:flex}.enc-piece{flex-direction:column;align-items:center;gap:2px;display:inline-flex}.enc-piece code{padding:.15rem .4rem;font-size:1.05rem}.enc-piece.fresh code{background:var(--hl);color:var(--hl-text);border-color:#0000}.enc-piece.unk code{background:var(--danger-soft);color:var(--danger)}.enc-piece.unk .chip-id{color:var(--danger)}.history{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.history-row{text-align:left;overflow-wrap:anywhere;background:0 0;border-color:#0000;grid-template-columns:3.5rem 1fr;gap:.5rem;width:100%;font-size:.85rem;display:grid}.history-row.active{background:var(--accent-soft)}.error{color:var(--danger)}.learn{max-width:72ch;margin-top:2.5rem;font-size:.92rem}.learn h2{margin:1.75rem 0 .5rem;font-size:1.05rem}.learn details{border-bottom:1px solid var(--border);padding:.5rem 0}.learn summary{cursor:pointer;font-weight:500}.learn details p{color:var(--muted);margin:.5rem 0 .25rem}.footer{border-top:1px solid var(--border);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;margin-top:2.5rem;padding-top:1rem;font-size:.8rem;display:flex}.presets{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.pill{border-radius:999px;padding:.25rem .8rem;font-size:.85rem;transition:background .15s,border-color .15s,transform .1s}.pill:active:not(:disabled){transform:scale(.96)}.pill.active{background:var(--accent-soft);border-color:var(--accent);font-weight:600}.editor{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .15s,box-shadow .15s}.editor:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.editor textarea{border-radius:var(--radius) var(--radius) 0 0;background:0 0;border:none;font-size:.95rem}.editor textarea:focus-visible{outline:none}.editor-bar{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.5rem .75rem;padding:.5rem .75rem;display:flex}.editor-bar .field{flex-direction:row;align-items:center;gap:.5rem}.editor-actions{gap:.4rem;margin-left:auto;display:flex}.stat-cards{grid-template-columns:repeat(4,1fr);gap:.75rem;display:grid}@media (width<=640px){.stat-cards{grid-template-columns:repeat(2,1fr)}}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;padding:.6rem .9rem;display:flex}.stat-card.accent{border-color:var(--accent);background:var(--accent-soft)}.stat-value{font-size:1.6rem;font-weight:700;line-height:1.2}.stat-label{color:var(--muted);font-size:.78rem}.hint{margin-top:-.5rem}@keyframes chip-in{0%{opacity:0;transform:translateY(4px)scale(.92)}to{opacity:1;transform:none}}.chip{transition:transform .12s;animation:.22s ease-out both chip-in}.chip:hover{transform:translateY(-2px)}.grid-cards{grid-template-columns:1fr 1fr;gap:1rem;display:grid}@media (width<=760px){.grid-cards{grid-template-columns:1fr}}.card-sub{margin:-.5rem 0 .75rem}.compare-row{grid-template-columns:6.5rem 1fr auto}.bar.warm{background:var(--warm)}.lang-count{justify-content:flex-end;align-items:baseline;gap:.35rem;min-width:3.5rem;display:inline-flex}.ratio{color:var(--warm);font-size:.72rem;font-weight:600}@media (width<=480px){.stat-value{font-size:1.25rem}.editor-actions{margin-left:0}}@media (prefers-reduced-motion:reduce){.chip,.bar,.pill{transition:none;animation:none}}.mode-switch{background:var(--surface);border:1px solid var(--border);border-radius:999px;align-self:flex-start;gap:2px;padding:3px;display:inline-flex}.mode-switch button{color:var(--muted);background:0 0;border:none;border-radius:999px;padding:.3rem .9rem;font-size:.85rem}.mode-switch button.active{background:var(--accent);color:#fff}.editor{position:relative}.editor.dragging{border-color:var(--accent);border-style:dashed}.drop-hint{background:color-mix(in srgb, var(--accent-soft) 85%, transparent);border-radius:var(--radius);pointer-events:none;place-items:center;font-weight:600;display:grid;position:absolute;inset:0}.stat-value.over{color:var(--danger)}.meter{background:var(--bg);border-radius:999px;height:4px;margin-top:.4rem;display:block;overflow:hidden}.meter>span{background:var(--accent);border-radius:999px;min-width:2px;height:100%;transition:width .3s;display:block}.more-tokens{align-self:center;padding:0 .5rem}.decoded h2{margin-bottom:.5rem}.decoded-text{white-space:pre-wrap;word-break:break-word;margin:0;font-size:.95rem}.section-title{margin:.5rem 0 .75rem;font-size:1.1rem}.trivia-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.trivia-card{flex-direction:column;gap:.6rem;transition:border-color .15s,transform .15s;display:flex}.trivia-card:hover{border-color:var(--accent);transform:translateY(-2px)}.trivia-card h3{margin:0;font-size:.98rem;line-height:1.35}.trivia-card p{margin:0}.chips.mini{background:var(--bg);min-height:0;padding:.5rem}.chip.compact .chip-text{font-size:.8rem}.chip.compact .chip-id{font-size:.6rem}.trivia-foot{justify-content:space-between;align-items:center;margin-top:auto;display:flex}.game-head{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.game-head .section-title{margin-top:0}.game-head p{margin:0}.game-score{flex-direction:column;flex-shrink:0;align-items:flex-end;display:flex}.game-score .muted{font-size:1rem;font-weight:500}.progress{gap:.4rem;display:flex}.dot{background:var(--border);border-radius:999px;width:2rem;height:.4rem;transition:background .2s}.dot.current{background:var(--accent)}.s3{--score:#2f9e44}.s2{--score:#f59f00}.s1{--score:#e8590c}.s0{--score:var(--muted)}.dot.s0,.dot.s1,.dot.s2,.dot.s3{background:var(--score)}.game-card{text-align:center;flex-direction:column;align-items:center;gap:1rem;padding:1.75rem 1rem;display:flex}.game-phrase{overflow-wrap:anywhere;margin:0;font-size:clamp(1.25rem,4vw,1.9rem);font-weight:600}.guess-form{align-items:center;gap:.4rem;display:flex}.guess-form input{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:5rem;padding:.35rem;font-size:1.4rem;font-weight:700}.guess-form .step{width:2.5rem;height:2.5rem;padding:0;font-size:1.2rem}.guess-form .primary{height:2.5rem;padding:0 1.25rem}.reveal{flex-direction:column;align-items:center;gap:.9rem;width:100%;display:flex}.reveal .chips{justify-content:center;width:100%}.verdict{border:1px solid var(--score);border-radius:999px;margin:0;padding:.35rem .9rem;font-size:1.05rem;animation:.3s ease-out both chip-in}.game-final{margin:0;font-size:1.5rem;font-weight:700}.game-squares{letter-spacing:.15rem;margin:0;font-size:1.8rem}.game-summary{text-align:left;width:100%;max-width:520px;margin:0;padding:0;list-style:none}.game-summary li{border-bottom:1px solid var(--border);justify-content:space-between;gap:1rem;padding:.35rem 0;font-size:.85rem;display:flex}.game-summary .mono{overflow-wrap:anywhere}.game-summary .tabular{flex-shrink:0}.row.center{justify-content:center}.stat-cards.stale{opacity:.5;transition:opacity .2s .15s}.logo{vertical-align:-.3rem;width:1.6rem;height:1.6rem;margin-right:.4rem}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.chip.skeleton{background:linear-gradient(90deg, var(--bg) 25%, var(--border) 50%, var(--bg) 75%);background-size:200% 100%;height:2.6rem;animation:1.2s linear infinite shimmer}.loading-note{align-self:center;margin-left:.5rem}kbd{font-family:var(--mono);border:1px solid var(--border);background:var(--surface);border-bottom-width:2px;border-radius:4px;padding:0 .35em;font-size:.8em}.player .speed{font-variant-numeric:tabular-nums;min-width:2.8rem}@media (prefers-reduced-motion:reduce){.chip.skeleton{animation:none}}.cutter{font-family:var(--mono);flex-wrap:wrap;justify-content:center;row-gap:.6rem;font-size:clamp(1.3rem,5vw,2rem);font-weight:600;display:flex}.cutter-unit{align-items:stretch;display:inline-flex}.letter{padding:.1em .12em;line-height:1.3}.gap{cursor:pointer;z-index:1;background:0 0;border:none;border-radius:4px;width:.9rem;margin:0 -.2rem;padding:0;position:relative}.gap:after{content:"";background:var(--border);opacity:0;border-radius:2px;width:2px;transition:opacity .12s,background .12s,width .12s;position:absolute;top:12%;bottom:12%;left:50%;transform:translate(-50%)}.gap:hover:not(:disabled):after{opacity:1}.gap:disabled{cursor:default}.gap.cut:after,.gap.hit:after,.gap.extra:after,.gap.missed:after{opacity:1;width:4px}.gap.cut:after{background:var(--accent)}.gap.hit:after{background:#2f9e44}.gap.extra:after{background:var(--danger)}.gap.missed:after{background:repeating-linear-gradient(#f59f00 0 5px,#0000 5px 9px)}.cut-legend{flex-wrap:wrap;justify-content:center;gap:.4rem 1rem;display:flex}.cut-legend span{align-items:center;gap:.35rem;display:inline-flex}.gap-swatch{border-radius:2px;width:4px;height:1rem;display:inline-block}.gap-swatch.hit{background:#2f9e44}.gap-swatch.extra{background:var(--danger)}.gap-swatch.missed{background:repeating-linear-gradient(#f59f00 0 4px,#0000 4px 7px)}.game-card .chips{justify-content:center;width:100%}
