.fp-player{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);outline:none;margin:20px 0 24px;padding:18px}.fp-player:focus-visible{box-shadow:0 0 0 2px var(--accent)}.fp-player__top{grid-template-columns:minmax(0,1fr) minmax(0,.9fr);gap:16px;display:grid}@media (width<=760px){.fp-player__top{grid-template-columns:minmax(0,1fr)}}.fp-stage{min-width:0}.fp-cells{gap:clamp(3px,.8vw,6px);padding:4px 2px 2px;display:flex;overflow-x:auto}.fp-col{flex-direction:column;flex:1 1 0;align-items:center;min-width:30px;max-width:48px;display:flex}.fp-cell{aspect-ratio:1;width:100%;font:600 clamp(13px, 1.6vw, 16px) var(--font-mono);border:2px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:8px;place-items:center;transition:background-color .25s,border-color .25s,opacity .25s;display:grid;box-shadow:0 1px #4a341e0f}.fp-cell--compare{background:var(--tone-compare-bg);border-color:var(--tone-compare-border)}.fp-cell--found{background:var(--tone-found-bg);border-color:var(--tone-found-border)}.fp-cell--active{background:var(--tone-active-bg);border-color:var(--tone-active-border)}.fp-cell--miss{background:var(--tone-miss-bg);border-color:var(--tone-miss-border)}.fp-cell--discard{opacity:.3}.fp-idx{font:12px var(--font-mono);color:var(--muted);margin-top:4px}.fp-ptrs{flex-direction:column;align-items:center;min-height:20px;display:flex}.fp-ptr{font:600 12px var(--font-mono);color:var(--accent);white-space:nowrap}.fp-message{border-left:3px solid var(--accent);background:var(--surface-2);border-radius:0 8px 8px 0;min-height:2.6em;margin:12px 0;padding:10px 12px;line-height:1.45}.fp-message--found{border-left-color:var(--tone-found-border)}.fp-message--notfound{border-left-color:var(--tone-miss-border)}.fp-panels{flex-wrap:wrap;gap:10px;display:flex}.fp-panel{border:1px solid var(--border);border-radius:8px;flex:140px;min-width:120px;padding:8px 10px}.fp-panel--ops{flex:0 140px}.fp-panel__title{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;font-size:12px}.fp-vars{gap:2px;margin:0;display:grid}.fp-vars div{font:14px var(--font-mono);justify-content:space-between;gap:12px;display:flex}.fp-vars dt{color:var(--text-2)}.fp-vars dd{margin:0;font-weight:600}.fp-map{font:14px var(--font-mono);gap:2px;display:grid}.fp-map__row{border-radius:4px;grid-template-columns:auto auto 1fr;gap:6px;padding:1px 4px;display:grid}.fp-map__row.is-hit{background:var(--tone-found-bg)}.fp-empty{color:var(--muted);font-size:14px;font-style:italic}.fp-stack{font:13px var(--font-mono);gap:2px;margin:0;padding:0;list-style:none;display:grid}.fp-stack li{background:var(--surface-2);border-radius:4px;padding:2px 6px}.fp-stack li.is-top{background:var(--tone-active-bg)}.fp-ops{font:700 22px var(--font-mono)}.fp-code{background:var(--surface-2);border:1px solid var(--border);font:13.5px/1.6 var(--font-mono);border-radius:8px;align-self:start;margin:0;padding:10px 0;overflow-x:auto}.fp-line{border-left:3px solid #0000;padding:0 12px 0 0;display:flex}.fp-line.is-current{background:var(--accent-soft);border-left-color:var(--accent)}.fp-ln{text-align:right;width:2.6em;color:var(--muted);user-select:none;flex:none;padding-right:12px}.fp-line code{font:inherit;white-space:pre}.fp-controls,.fp-input{flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px;display:flex}.fp-player button{font:inherit;border:1px solid var(--border);background:var(--surface);min-width:36px;min-height:36px;color:var(--text);cursor:pointer;border-radius:8px;padding:4px 10px;font-size:14px}.fp-player button:hover:not(:disabled){border-color:var(--accent)}.fp-player button:disabled{opacity:.4;cursor:default}.fp-player .fp-play{background:var(--accent);border-color:var(--accent);color:#fff;min-width:84px;font-weight:600}.fp-player .fp-play:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.fp-scrub{accent-color:var(--accent);flex:120px}.fp-count{font:13px var(--font-mono);color:var(--text-2)}.fp-speed{gap:4px;display:flex}.fp-speed button.is-on{background:var(--accent-soft);border-color:var(--accent)}.fp-input{border-top:1px dashed var(--border);padding-top:12px}.fp-input__lead{color:var(--text-2);font-size:14px}.fp-input label{align-items:center;gap:6px;font-size:14px;display:flex}.fp-input input{font:14px var(--font-mono);border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;width:6em;padding:6px 8px}.fp-input input.is-wide{width:min(22em,70vw)}.fp-player .fp-link{color:var(--accent);background:0 0;border:none;padding:4px;text-decoration:underline}.fp-formmsg{flex-basis:100%;margin:0;font-size:14px}.fp-formmsg--error{color:var(--tone-miss-border)}.fp-formmsg--note{color:var(--text-2)}.fp-chart{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);margin:16px 0 24px;padding:16px}.fp-chart__legend{color:var(--text-2);flex-wrap:wrap;gap:16px;margin-bottom:8px;font-size:14px;display:flex}.fp-chart__legend span{align-items:center;gap:6px;display:inline-flex}.fp-chart__legend i,.fp-chart__tip-row i{border-radius:2px;width:12px;height:3px;display:inline-block}.fp-chart__plot{position:relative}.fp-chart svg{width:100%;height:auto;display:block;overflow:visible}.fp-chart__grid{stroke:var(--border);stroke-width:1px}.fp-chart__tick{fill:var(--muted);font:12px var(--font-sans)}.fp-chart__axis{fill:var(--text-2);font:12px var(--font-sans)}.fp-chart__label{fill:var(--text);font:600 12px var(--font-sans)}.fp-chart__leader{stroke:var(--muted);stroke-width:1px}.fp-chart__cross{stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 3}.fp-chart__tip{pointer-events:none;background:var(--surface);border:1px solid var(--border);white-space:nowrap;border-radius:8px;padding:8px 10px;font-size:13px;position:absolute;top:8px;box-shadow:0 4px 16px #4a341e24}.fp-chart__tip-title{margin-bottom:4px;font-weight:600}.fp-chart__tip-row{align-items:center;gap:6px;display:flex}.fp-chart__tip-row b{font-family:var(--font-mono);margin-left:auto;padding-left:12px}.fp-chart figcaption{color:var(--text-2);margin-top:8px;font-size:14px}.fp-chart__table{margin-top:8px;font-size:14px}.fp-chart__table summary{cursor:pointer;color:var(--accent)}.fp-chart__scroll{overflow-x:auto}.fp-chart__table table{border-collapse:collapse;font-family:var(--font-mono);margin-top:8px;font-size:13px}.fp-chart__table th,.fp-chart__table td{border-bottom:1px solid var(--border);text-align:right;padding:4px 12px}.fp-chart__table th{font-family:var(--font-sans);color:var(--text-2);font-weight:600}.fp-demo{background:var(--surface);border:1px solid var(--border);border-radius:16px;overflow:hidden;box-shadow:0 2px 4px #4a341e0d,0 18px 40px -12px #4a341e38}.fp-demo__bar{background:var(--surface-2);border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 14px;font-size:13px;display:flex}.fp-demo__dots{gap:5px;display:flex}.fp-demo__dots i{background:var(--border);border-radius:50%;width:9px;height:9px}.fp-demo__dots i:first-child{background:#e9a48a}.fp-demo__title{color:var(--text-2);font-weight:600}.fp-demo__count{font-family:var(--font-mono);color:var(--muted);margin-left:auto}.fp-demo__body{padding:18px 16px 14px}.fp-demo__msg{min-height:3.2em;color:var(--text);background:var(--accent-soft);border-radius:10px;margin:10px 0 8px;padding:10px 12px;font-size:15px;line-height:1.5;transition:background-color .3s}.fp-demo__msg.is-found{background:var(--tone-found-bg)}.fp-demo__foot{color:var(--muted);justify-content:space-between;align-items:center;font-size:13px;display:flex}.fp-demo__foot b{font-family:var(--font-mono);color:var(--text)}.fp-demo__foot button{font:inherit;color:var(--accent);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:8px;padding:4px 10px;font-weight:600}@media (width<=480px){.fp-demo__body{padding:14px 10px 12px}.fp-demo .fp-col{min-width:26px}.fp-demo .fp-cells{gap:3px}}
