.ft{--ft-case:#21201d;--ft-case-edge:#3b3a34;--ft-cap-edge:#343329;--ft-legend:#d9d6cb;--ft-legend-dim:#38362e;--ft-beam:#f5f3ec;--ft-beam-core:#fff;--ft-ease:cubic-bezier(.22, .61, .36, 1)}.ft-prompt{font-family:var(--font-mono-plex), monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);border:1px solid var(--border);background:var(--background);transition:color .3s var(--ft-ease), border-color .3s var(--ft-ease);align-items:center;gap:11px;padding:9px 14px 9px 11px;font-size:11px;display:inline-flex}.ft-prompt .ft-glyph{width:17px;height:17px;animation:ft-nudge 2.6s var(--ft-ease) infinite;border:1px solid;place-items:center;display:grid}.ft-prompt .ft-glyph svg{stroke:currentColor;fill:none;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:11px;height:11px}@keyframes ft-nudge{0%,62%,to{opacity:.75;transform:translateY(0)}72%{opacity:1;transform:translateY(2px)}84%{opacity:1;transform:translateY(0)}}.ft.is-live .ft-prompt{color:var(--foreground);border-color:var(--foreground)}.ft.is-live .ft-prompt .ft-glyph{opacity:1;animation:none}.ft-stage{border:1px solid var(--border);background:var(--muted);transition:background .42s var(--ft-ease), border-color .42s var(--ft-ease);padding:clamp(10px,3vw,26px)}.ft.is-live .ft-stage{background:#0b0a08;border-color:#0b0a08}.ft-board svg{width:100%;height:auto;display:block}@media (max-width:719px){.ft-stage{z-index:30;position:sticky;top:60px}}.ft-stage.ft-sticky{z-index:30;position:sticky;top:60px}.ft.is-live .ft-stage .ft-status{color:#8a877c}.ft.is-live .ft-stage .ft-status .ft-status-strong{color:var(--ft-beam)}.ft .case{fill:var(--ft-case);stroke:var(--ft-case-edge);stroke-width:1.5px;transition:fill .42s var(--ft-ease)}.ft.is-live .case{fill:#161511}.ft .key .k-face{fill:url(#ftCapGrad);stroke:var(--ft-cap-edge);stroke-width:1px}.ft .key .k-dark{fill:#080806;opacity:0;transition:opacity .38s var(--ft-ease)}.ft .key .k-glow{fill:var(--ft-beam);opacity:0;transition:opacity .38s var(--ft-ease)}.ft .key .k-lit{fill:none;stroke:none;opacity:0;transition:opacity .3s var(--ft-ease)}.ft .key text{fill:var(--ft-legend);font-family:var(--font-mono-plex), monospace;transition:fill .38s var(--ft-ease);-webkit-user-select:none;user-select:none;font-weight:500}.ft .key .ic-s{stroke:var(--ft-legend);stroke-width:1.15px;fill:none;stroke-linecap:round;stroke-linejoin:round;transition:stroke .38s var(--ft-ease)}.ft .key .ic-f{fill:var(--ft-legend);transition:fill .38s var(--ft-ease)}.ft.is-live .key .k-dark{opacity:1}.ft.is-live .key text{fill:var(--ft-legend-dim)}.ft.is-live .key .ic-s{stroke:var(--ft-legend-dim)}.ft.is-live .key .ic-f{fill:var(--ft-legend-dim)}.ft.is-live .key.lit .k-dark{opacity:calc(1 - var(--kl,1))}.ft.is-live .key.lit .k-lit{opacity:1;fill:url(#ftLitGrad);stroke:var(--kc,var(--ft-beam));stroke-opacity:var(--kl,1);stroke-width:1.1px}.ft.is-live .key.lit .k-glow{opacity:calc(.4 * var(--kl,1));fill:var(--kc,var(--ft-beam))}.ft.is-live .key.lit text{fill:var(--kc-core,var(--ft-beam-core));fill-opacity:calc(.25 + .75 * var(--kl,1))}.ft.is-live .key.lit .ic-s{stroke:var(--kc-core,var(--ft-beam-core));stroke-opacity:calc(.25 + .75 * var(--kl,1))}.ft.is-live .key.lit .ic-f{fill:var(--kc-core,var(--ft-beam-core));fill-opacity:calc(.25 + .75 * var(--kl,1))}.ft:not(.is-live) .key:not(.pulse) .k-lit{opacity:1;fill:none;stroke:var(--ft-beam);stroke-opacity:calc(.6 * var(--ft-bl,0));stroke-width:1px;transition:opacity .3s var(--ft-ease), stroke-opacity .3s var(--ft-ease)}.ft .key.blkey{cursor:pointer}.ft .key.blkey:hover .k-glow,.ft .key.blkey:focus-visible .k-glow{opacity:.4}.ft .key.blkey:focus{outline:none}.ft .key.blflash .k-glow{animation:ftBlFlash .55s var(--ft-ease)}@keyframes ftBlFlash{0%,to{opacity:0}35%{opacity:.8}}.ft.is-live .key.lit.blink .k-dark{animation:ftBlinkDark var(--kbd,.5s) linear infinite}.ft.is-live .key.lit.blink .k-glow{animation:ftBlinkGlow var(--kbd,.5s) linear infinite}.ft.is-live .key.lit.blink text{animation:ftBlinkLegend var(--kbd,.5s) linear infinite}@keyframes ftBlinkDark{0%,49.9%{opacity:0}50%,to{opacity:1}}@keyframes ftBlinkGlow{0%,49.9%{opacity:.4}50%,to{opacity:0}}@keyframes ftBlinkLegend{0%,49.9%{fill-opacity:1}50%,to{fill-opacity:.18}}.ft .key.pulse .k-lit{fill:url(#ftLitGrad);stroke:var(--kc,var(--ft-beam));stroke-width:1.1px;animation:ftPulse var(--kps,2.4s) ease-in-out infinite}.ft .key.pulse .k-glow{fill:var(--kc,var(--ft-beam));animation:ftPulseGlow var(--kps,2.4s) ease-in-out infinite}.ft .key.pulse .ic-s{animation:ftPulseIcon var(--kps,2.4s) ease-in-out infinite}@keyframes ftPulse{0%,to{opacity:var(--kpf,.05)}50%{opacity:var(--kl,.7)}}@keyframes ftPulseGlow{0%,to{opacity:0}50%{opacity:.55}}@keyframes ftPulseIcon{0%,to{stroke:var(--ft-legend)}50%{stroke:var(--kc-core,var(--ft-beam-core))}}.ft.is-live .key.act{cursor:pointer}.ft.is-live .key.act:hover .k-glow,.ft.is-live .key.act:focus-visible .k-glow{opacity:.7}.ft .key.act:focus{outline:none}.ft .key.trigger{cursor:pointer;touch-action:none}.ft .key.trigger .k-ring{fill:none;stroke:var(--ft-beam);stroke-width:1.2px;opacity:0;transform-origin:50%;transform-box:fill-box}.ft .key.trigger .k-face{stroke:#5c5a4f}.ft .key.trigger:not(.held) .k-ring{animation:ft-halo 3.4s var(--ft-ease) infinite}@keyframes ft-halo{0%,55%{opacity:0;transform:scale(1)}68%{opacity:.55;transform:scale(1)}to{opacity:0;transform:scale(1.12)}}.ft .key.trigger.held .k-lit{opacity:1;fill:url(#ftLitGrad);stroke:var(--ft-beam);stroke-width:1.2px}.ft .key.trigger.held .k-glow{opacity:.5}.ft .key.trigger.held .ic-s{stroke:var(--ft-beam-core)}.ft .key.trigger.held .k-dark{opacity:0}.ft .key.trigger:focus{outline:none}.ft .key.trigger:focus-visible .k-focus{opacity:1}.ft .key .k-focus{fill:none;stroke:var(--ft-beam);stroke-width:2px;stroke-dasharray:3 3;opacity:0}.ft.is-live .key.cued .k-glow{opacity:.65}.ft-legend-grid{background:var(--border);border:1px solid var(--border);grid-template-columns:repeat(auto-fit,minmax(212px,1fr));gap:1px;display:grid}.ft-chip{all:unset;box-sizing:border-box;background:var(--background);cursor:pointer;opacity:.55;transition:opacity .34s var(--ft-ease), background .24s var(--ft-ease);flex-direction:column;gap:9px;padding:16px 16px 18px;display:flex}.ft-chip:hover,.ft-chip:focus-visible{background:var(--muted)}.ft-chip:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}.ft.is-live .ft-chip{opacity:.35}.ft.is-live .ft-chip.on,.ft-chip.on{opacity:1}.ft-combo{align-items:center;gap:5px;display:flex}.ft-combo kbd{font-family:var(--font-mono-plex), monospace;text-align:center;border:1px solid var(--border);background:var(--muted);min-width:21px;color:var(--foreground);transition:border-color .24s var(--ft-ease);border-bottom-width:2px;place-items:center;padding:5px 4px;font-size:11px;font-weight:500;line-height:1;display:inline-grid}.ft-chip.on .ft-combo kbd{border-color:var(--foreground)}.ft-combo kbd svg{stroke:currentColor;fill:none;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:11px;height:11px}.ft-combo .plus{font-family:var(--font-mono-plex), monospace;color:var(--muted-foreground);font-size:10px}.ft-chip-title{font-family:var(--font-mono-plex), monospace;letter-spacing:.06em;text-transform:uppercase;color:var(--foreground);font-size:12px;font-weight:500}.ft-chip-desc{color:var(--muted-foreground);font-size:13px;line-height:1.55}@media (max-width:719px){.ft-chip{padding:18px 16px 22px}}.ft-ambient{border:1px solid var(--border);background:var(--background)}.ft-ambient-head{font-family:var(--font-mono-plex), monospace;letter-spacing:.16em;color:var(--muted-foreground);padding:16px 16px 2px;font-size:10.5px}.ft-ambient-row{justify-content:space-between;align-items:center;gap:18px;padding:14px 16px 16px;display:flex}.ft-ambient-row+.ft-ambient-row{border-top:1px solid var(--border)}.ft-ambient-title{font-family:var(--font-mono-plex), monospace;letter-spacing:.06em;text-transform:uppercase;color:var(--foreground);font-size:12px;font-weight:500}.ft-ambient-desc{color:var(--muted-foreground);max-width:58ch;margin-top:6px;font-size:13px;line-height:1.55}.ft-play{all:unset;box-sizing:border-box;font-family:var(--font-mono-plex), monospace;letter-spacing:.14em;text-align:center;border:1px solid var(--border);min-width:58px;color:var(--foreground);cursor:pointer;transition:border-color .24s var(--ft-ease), background .24s var(--ft-ease), color .24s var(--ft-ease);flex-shrink:0;padding:9px 16px;font-size:11px}.ft-play:hover,.ft-play:focus-visible{border-color:var(--foreground)}.ft-play:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.ft-play[aria-pressed=true]{background:var(--foreground);color:var(--background);border-color:var(--foreground)}.ft-play:disabled,.ft-play:disabled:hover{border-color:var(--border);opacity:.35;cursor:default}.ft-bl-remote{display:none}@media (max-width:719px){.ft-bl-remote{border:1px solid var(--border);background:var(--background);align-items:center;gap:10px;padding:10px 12px;display:flex}.ft-bl-remote .ft-bl-label{font-family:var(--font-mono-plex), monospace;letter-spacing:.16em;color:var(--muted-foreground);margin-right:auto;font-size:10.5px}.ft-bl-remote .ft-bl-val{font-family:var(--font-mono-plex), monospace;font-variant-numeric:tabular-nums;text-align:center;min-width:44px;font-size:12px}}.ft-sr{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
