:root{--fk-paper: #fbf6ee;--fk-card: #fffefc;--fk-plum: #2b2340;--fk-plum-2: #5f5774;--fk-rule: #e9dfcf;--fk-coral: #ef6a4c;--fk-coral-ink: #b8371f;--fk-on-coral: #fffefc;--fk-sun: #f5c043;--fk-mint: #2fbf9b;--fk-sky: #4b9fe6;--fk-lilac: #9d7df0;--fk-rose: #ee6a9e;--fk-cap: #f3ece0;--fk-cap-side: #d6c9b3;--fk-cap-down: #e8dfcf;--fk-glow: rgba(239, 106, 76, .35);--fk-shade: 0 1px 0 rgba(43, 35, 64, .04), 0 8px 24px -12px rgba(43, 35, 64, .25);--fk-face: ui-rounded, "SF Pro Rounded", "Arial Rounded MT Bold", "Varela Round", Nunito, "Trebuchet MS", "Liberation Sans", Arial, sans-serif;--fk-type: "Cascadia Code", "Fira Code", "Ubuntu Mono", "Lucida Console", "Liberation Mono", monospace;--fk-r: 14px;--fk-r-lg: 22px;--fk-gap: 16px;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--fk-paper: #1b1726;--fk-card: #252036;--fk-plum: #f5efe6;--fk-plum-2: #bdb4cc;--fk-rule: #3b3450;--fk-coral-ink: #ff8f74;--fk-on-coral: #1b1726;--fk-cap: #3a3350;--fk-cap-side: #221d31;--fk-cap-down: #322b46;--fk-glow: rgba(255, 143, 116, .35);--fk-shade: 0 1px 0 rgba(0, 0, 0, .2), 0 10px 26px -14px rgba(0, 0, 0, .7)}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body.fk-body{margin:0;background:var(--fk-paper);color:var(--fk-plum);font:17px/1.6 var(--fk-face);overflow-x:hidden}a{color:var(--fk-coral-ink);text-underline-offset:2px}a:hover{text-decoration-thickness:2px}h1,h2,h3{line-height:1.2;letter-spacing:-.01em}h1{font-size:clamp(1.9rem,4.6vw,2.9rem);margin:.3em 0 .25em}h2{font-size:1.45rem;margin:1.8em 0 .5em}h3{font-size:1.12rem;margin:1.4em 0 .4em}p,ul,ol{margin:0 0 1em}img,svg{max-width:100%}:focus-visible{outline:3px solid var(--fk-coral-ink);outline-offset:2px;border-radius:6px}button{font:inherit;color:inherit}.fk-hide{display:none!important}.fk-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.fk-wrap{width:100%;max-width:1080px;margin:0 auto;padding:0 16px}.fk-skip{position:absolute;left:-999px;top:8px;background:var(--fk-card);padding:8px 12px;z-index:10;border-radius:8px}.fk-skip:focus{left:8px}.fk-top{border-bottom:1px solid var(--fk-rule);background:var(--fk-paper)}.fk-top-row{display:flex;align-items:center;gap:12px 20px;flex-wrap:wrap;padding-top:10px;padding-bottom:10px}.fk-logo{display:inline-flex;align-items:center;gap:8px;color:var(--fk-plum);text-decoration:none;font-size:1.3rem;font-weight:700;letter-spacing:-.02em}.fk-logo b{color:var(--fk-coral-ink)}.fk-ico-logo{width:32px;height:32px}.fk-shelf{flex:1 1 auto;min-width:0}.fk-shelf ul{list-style:none;margin:0;padding:2px 0 6px;display:flex;gap:6px;overflow-x:auto;scrollbar-width:thin}.fk-shelf a{display:block;white-space:nowrap;padding:6px 12px;border-radius:999px;color:var(--fk-plum);text-decoration:none;font-size:.95rem;background:var(--fk-cap);box-shadow:inset 0 -2px 0 var(--fk-cap-side)}.fk-shelf a:hover{background:var(--fk-cap-down)}.fk-shelf a[aria-current=page]{background:var(--fk-plum);color:var(--fk-paper);box-shadow:none}.fk-trail ol{list-style:none;padding:0;margin:14px 0 0;display:flex;flex-wrap:wrap;gap:4px;font-size:.9rem;color:var(--fk-plum-2)}.fk-trail li+li:before{content:"\203a";margin:0 6px 0 2px}.fk-trail a{color:var(--fk-plum-2)}.fk-lede{font-size:1.12rem;color:var(--fk-plum-2);max-width:46em}.fk-cap{-webkit-appearance:none;appearance:none;cursor:pointer;user-select:none;-webkit-user-select:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:8px 16px;border:0;border-radius:12px;background:var(--fk-cap);color:var(--fk-plum);font-weight:600;box-shadow:inset 0 -4px 0 var(--fk-cap-side),0 1px 2px #00000014;transition:transform 60ms ease,box-shadow 60ms ease;touch-action:manipulation}.fk-cap:active,.fk-cap.fk-is-down{transform:translateY(2px);box-shadow:inset 0 -2px 0 var(--fk-cap-side)}.fk-cap[disabled]{opacity:.5;cursor:default}.fk-cap--hot{background:var(--fk-coral-ink);color:var(--fk-on-coral);box-shadow:inset 0 -4px #00000040}.fk-cap--hot:active,.fk-cap--hot.fk-is-down{box-shadow:inset 0 -2px #00000040}.fk-cap[aria-pressed=true]{background:var(--fk-plum);color:var(--fk-paper);box-shadow:inset 0 -4px #00000059}.fk-choice{border:0;padding:0;margin:0 0 12px;min-width:0}.fk-choice legend{font-weight:700;font-size:.95rem;margin-bottom:6px;padding:0}.fk-choice-row{display:flex;flex-wrap:wrap;gap:8px}.fk-choice input{position:absolute;opacity:0;width:1px;height:1px}.fk-choice label{cursor:pointer;display:inline-flex;flex-direction:column;min-height:44px;justify-content:center;padding:6px 14px;border-radius:12px;background:var(--fk-cap);box-shadow:inset 0 -4px 0 var(--fk-cap-side);font-weight:600;line-height:1.25}.fk-choice label small{font-weight:400;font-size:.8rem;color:var(--fk-plum-2)}.fk-choice input:checked+label{background:var(--fk-plum);color:var(--fk-paper);box-shadow:inset 0 -4px #00000059}.fk-choice input:checked+label small{color:var(--fk-paper);opacity:.8}.fk-choice input:focus-visible+label{outline:3px solid var(--fk-coral-ink);outline-offset:2px}.fk-stage{background:var(--fk-card);border-radius:var(--fk-r-lg);padding:18px;box-shadow:var(--fk-shade);border:1px solid var(--fk-rule);margin:18px 0 8px}.fk-stage-head{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;margin-bottom:12px}.fk-stats{display:flex;flex-wrap:wrap;gap:6px 18px;margin:10px 0 0;padding:0;list-style:none;color:var(--fk-plum-2);font-size:.95rem}.fk-stats b{color:var(--fk-plum);font-variant-numeric:tabular-nums;font-family:var(--fk-type)}.fk-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.fk-note{font-size:.9rem;color:var(--fk-plum-2)}.fk-soundbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:10px 12px;border-radius:var(--fk-r);background:var(--fk-cap)}.fk-soundbar label{display:inline-flex;align-items:center;gap:8px;font-size:.95rem}.fk-soundbar output{font-family:var(--fk-type);min-width:3ch;text-align:right}.fk-soundbar .fk-cap{min-height:40px;padding:6px 12px;background:var(--fk-card)}.fk-soundbar .fk-cap[aria-pressed=true]{background:var(--fk-plum)}.fk-iosnote{flex-basis:100%;margin:0;font-size:.85rem;color:var(--fk-plum-2)}input[type=range].fk-range{accent-color:var(--fk-coral-ink);width:clamp(96px,30vw,150px);min-height:32px}.fk-check{display:inline-flex;align-items:center;gap:8px;min-height:40px;cursor:pointer}.fk-check input{width:20px;height:20px;accent-color:var(--fk-coral-ink)}.fk-article{max-width:46em}.fk-article li{margin-bottom:.4em}.fk-table-wrap{overflow-x:auto;margin:0 0 1.2em}.fk-table{border-collapse:collapse;width:100%;font-size:.95rem}.fk-table th,.fk-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--fk-rule);vertical-align:top}.fk-table th{font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--fk-plum-2)}.fk-faq{max-width:46em;margin-top:2em}.fk-faq-item{border-bottom:1px solid var(--fk-rule);padding:4px 0}.fk-faq-item summary{cursor:pointer;font-weight:700;padding:10px 0;list-style-position:outside}.fk-faq-a{padding:0 0 10px;color:var(--fk-plum-2)}.fk-faq-a p:last-child{margin-bottom:0}.fk-cite{font-size:.92em}.fk-cite-date{font-size:.8em;color:var(--fk-plum-2)}.fk-fine{font-size:.88rem;color:var(--fk-plum-2);border-left:4px solid var(--fk-sun);padding:6px 12px;margin:1.6em 0;max-width:46em}.fk-hero{display:grid;gap:20px;padding:26px 0 8px}.fk-hero h1{margin-top:0}.fk-cards{list-style:none;padding:0;margin:10px 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));gap:14px}.fk-card{display:grid;grid-template-columns:52px minmax(0,1fr);gap:4px 14px;align-items:start;height:100%;padding:16px;border-radius:var(--fk-r-lg);background:var(--fk-card);border:1px solid var(--fk-rule);color:var(--fk-plum);text-decoration:none;box-shadow:var(--fk-shade);transition:transform .12s ease}.fk-card:hover{transform:translateY(-2px)}.fk-card .fk-ico{width:52px;height:52px;grid-row:span 2}.fk-card strong{font-size:1.08rem}.fk-card span{font-size:.93rem;color:var(--fk-plum-2)}.fk-tint-coral{color:var(--fk-coral)}.fk-tint-sun{color:var(--fk-sun)}.fk-tint-mint{color:var(--fk-mint)}.fk-tint-sky{color:var(--fk-sky)}.fk-tint-lilac{color:var(--fk-lilac)}.fk-tint-rose{color:var(--fk-rose)}.fk-card strong,.fk-card span{color:inherit}.fk-card strong{color:var(--fk-plum)}.fk-card span{color:var(--fk-plum-2)}.fk-ico{display:block}.fk-foot{margin-top:56px;border-top:1px solid var(--fk-rule);padding:22px 0 36px;font-size:.92rem;color:var(--fk-plum-2)}.fk-foot-links{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px 18px}.fk-foot-links a{color:var(--fk-plum-2);display:inline-block;padding:6px 0}.fk-typebox{width:100%;min-height:110px;resize:vertical;padding:12px 14px;border-radius:var(--fk-r);border:2px solid var(--fk-rule);background:var(--fk-paper);color:var(--fk-plum);font:1.05rem/1.5 var(--fk-type)}.fk-typebox:focus{border-color:var(--fk-coral-ink);outline:none;box-shadow:0 0 0 4px var(--fk-glow)}.fk-board{margin:14px 0 0;padding:10px;border-radius:18px;background:var(--fk-plum);display:grid;grid-template-columns:repeat(60,minmax(0,1fr));gap:5px 4px;touch-action:manipulation;user-select:none;-webkit-user-select:none}.fk-board[data-board=thock]{background:#3a2f52}.fk-board[data-board=clack]{background:#6b6480}.fk-key{height:clamp(28px,7vw,46px);border-radius:7px;background:var(--fk-cap);color:var(--fk-plum);box-shadow:inset 0 -4px 0 var(--fk-cap-side);display:flex;align-items:center;justify-content:center;font:600 clamp(9px,2.2vw,13px)/1 var(--fk-face);cursor:pointer;overflow:hidden;white-space:nowrap;transition:transform 40ms ease,box-shadow 40ms ease,background 80ms ease}.fk-key.fk-is-down{transform:translateY(2px);box-shadow:inset 0 -1px 0 var(--fk-cap-side);background:var(--fk-sun);color:#2b2340}.fk-key--accent{background:var(--fk-coral);color:#2b2340}.fk-board-hint{margin:8px 0 0}.fk-swgrid{list-style:none;padding:0;margin:0;display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}.fk-swcard{background:var(--fk-paper);border:1px solid var(--fk-rule);border-radius:var(--fk-r-lg);padding:14px}.fk-swcard.fk-is-playing{border-color:var(--fk-coral-ink);box-shadow:0 0 0 4px var(--fk-glow)}.fk-swcard h3{margin-top:0}.fk-swcard .fk-row{margin-top:10px}.fk-swcard .fk-cap{min-height:40px;padding:6px 12px;font-size:.93rem}.fk-sheet{display:grid;grid-template-columns:repeat(auto-fill,minmax(46px,1fr));gap:6px;padding:12px;border-radius:16px;touch-action:pan-y;user-select:none;-webkit-user-select:none;background:linear-gradient(180deg,#4b9fe61f,#4b9fe60d);border:1px solid var(--fk-rule)}.fk-sheet--mini{grid-template-columns:repeat(auto-fill,minmax(42px,1fr))}.fk-bub{-webkit-appearance:none;appearance:none;border:0;padding:0;cursor:pointer;aspect-ratio:1;width:100%;border-radius:50%;background:radial-gradient(circle at 34% 30%,#fffffff2 0 14%,#ffffff59 15% 38%,#4b9fe638 39% 100%);box-shadow:inset 0 -3px 6px #2b234029,0 2px 4px #2b23401f;transition:transform 80ms ease}.fk-bub:hover{transform:scale(1.04)}.fk-bub.fk-is-popped{background:radial-gradient(circle at 50% 50%,#4b9fe60f 0 55%,#4b9fe62e 56% 100%);box-shadow:inset 0 2px 4px #2b23402e;transform:scale(.9);cursor:default}.fk-spinbox{display:grid;place-items:center}.fk-spin-stage{position:relative;width:min(82vw,380px);aspect-ratio:1;border-radius:50%;touch-action:none;cursor:grab;background:radial-gradient(circle,var(--fk-cap) 0 62%,transparent 63%);user-select:none;-webkit-user-select:none}.fk-spin-stage:active{cursor:grabbing}.fk-spin-rotor{position:absolute;inset:4%;will-change:transform}.fk-spin-rotor svg{width:100%;height:100%;display:block}.fk-spin-blur{position:absolute;inset:4%;border-radius:50%;pointer-events:none;opacity:0;background:radial-gradient(circle,transparent 0 13%,var(--fk-sun) 14% 66%,transparent 67%)}.fk-rpm{font:700 2.2rem/1 var(--fk-type);text-align:center;margin:12px 0 0;font-variant-numeric:tabular-nums}.fk-rpm small{font-size:.9rem;font-weight:400;color:var(--fk-plum-2)}.fk-popit-wrap{perspective:900px;display:grid;place-items:center}.fk-popit{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;padding:16px;width:min(100%,440px);border-radius:28px;background:var(--fk-cap);box-shadow:var(--fk-shade);transition:transform .52s cubic-bezier(.3,.7,.3,1);transform-style:preserve-3d;touch-action:manipulation}.fk-popit.fk-is-flipping{transform:rotateY(180deg)}.fk-dome{-webkit-appearance:none;appearance:none;border:0;padding:0;aspect-ratio:1;width:100%;border-radius:50%;cursor:pointer;background:var(--fk-dome);box-shadow:inset 0 -5px #0000002e,inset 0 4px 6px #ffffff80,0 3px #0000001f;transition:transform 90ms ease,box-shadow 90ms ease}.fk-dome.fk-is-popped{transform:scale(.93);box-shadow:inset 0 5px 8px #00000047,inset 0 -2px 2px #ffffff4d}.fk-dome[data-row="0"]{--fk-dome: var(--fk-coral)}.fk-dome[data-row="1"]{--fk-dome: #f39a4a}.fk-dome[data-row="2"]{--fk-dome: var(--fk-sun)}.fk-dome[data-row="3"]{--fk-dome: var(--fk-mint)}.fk-dome[data-row="4"]{--fk-dome: var(--fk-sky)}.fk-dome[data-row="5"]{--fk-dome: var(--fk-lilac)}.fk-clickers{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr))}.fk-clicker{background:var(--fk-paper);border:1px solid var(--fk-rule);border-radius:var(--fk-r-lg);padding:14px;text-align:center}.fk-clicker h3{margin:0 0 8px}.fk-clicker button{-webkit-appearance:none;appearance:none;border:0;background:none;padding:0;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none}.fk-clicker svg{width:100%;max-width:220px;height:auto;display:block;margin:0 auto}.fk-pen-plunger,.fk-pen-tip,.fk-tog-bat,.fk-rock-face,.fk-push-cap{transition:transform 70ms ease}.fk-pen.fk-is-down .fk-pen-plunger{transform:translate(10px)}.fk-pen[aria-pressed=true] .fk-pen-tip{transform:translate(-14px)}.fk-tog[aria-checked=true] .fk-tog-bat{transform:rotate(32deg)}.fk-tog .fk-tog-bat{transform:rotate(-32deg);transform-origin:60px 70px}.fk-rock .fk-rock-face{transform-origin:60px 50px;transform:skewY(-8deg)}.fk-rock[aria-checked=true] .fk-rock-face{transform:skewY(8deg)}.fk-rock-lamp{transition:fill 80ms ease;fill:#7d7590}.fk-rock[aria-checked=true] .fk-rock-lamp{fill:var(--fk-coral)}.fk-push.fk-is-down .fk-push-cap{transform:translateY(6px)}.fk-knobs{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr))}.fk-knob-box{background:var(--fk-paper);border:1px solid var(--fk-rule);border-radius:var(--fk-r-lg);padding:14px;text-align:center}.fk-knob-box h3{margin:0 0 8px}.fk-knob{width:min(60vw,200px);aspect-ratio:1;margin:0 auto;border-radius:50%;touch-action:none;cursor:grab;position:relative}.fk-knob svg{width:100%;height:100%;display:block}.fk-knob:focus-visible{outline-offset:6px;border-radius:50%}.fk-knob-dial{transition:transform 40ms linear;transform-origin:100px 100px}.fk-knob-val{font:700 1.6rem/1 var(--fk-type);margin:10px 0 0;font-variant-numeric:tabular-nums}.fk-notch{width:100%;max-width:280px;accent-color:var(--fk-coral-ink);height:40px}.fk-wheel{width:90px;height:180px;margin:0 auto;border-radius:45px;touch-action:none;cursor:ns-resize;overflow:hidden;position:relative;background:var(--fk-plum)}.fk-wheel-ridges{position:absolute;inset:-40px 10px;background:repeating-linear-gradient(180deg,var(--fk-cap) 0 6px,var(--fk-cap-side) 6px 12px);border-radius:30px}.fk-noise-play{min-width:160px;min-height:56px;font-size:1.1rem}.fk-noise-viz{height:64px;margin:14px 0 6px;border-radius:12px;background:var(--fk-cap);overflow:hidden;position:relative}.fk-noise-viz span{position:absolute;bottom:0;width:6%;background:var(--fk-sky);border-radius:6px 6px 0 0;transition:height .24s ease}select.fk-select{font:inherit;min-height:44px;padding:6px 10px;border-radius:10px;border:2px solid var(--fk-rule);background:var(--fk-card);color:var(--fk-plum)}@media(prefers-reduced-motion:reduce){.fk-card,.fk-cap,.fk-key,.fk-bub,.fk-dome,.fk-popit{transition:none}}@media(min-width:760px){.fk-hero{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center}.fk-stage{padding:24px}}.fk-w4{grid-column:span 4}.fk-w5{grid-column:span 5}.fk-w6{grid-column:span 6}.fk-w7{grid-column:span 7}.fk-w8{grid-column:span 8}.fk-w9{grid-column:span 9}.fk-w11{grid-column:span 11}.fk-w25{grid-column:span 25}.fk-board.fk-is-shift [data-code^=Shift]{background:var(--fk-sun);color:#2b2340}.fk-stage>.fk-soundbar{margin-bottom:16px}.fk-asmr-paper{min-height:9.5em;max-height:14em;overflow:hidden;margin:14px 0 6px;padding:14px 16px;border-radius:var(--fk-r);background:var(--fk-paper);border:1px dashed var(--fk-rule);font:1rem/1.6 var(--fk-type);white-space:pre-wrap;word-break:break-word;display:flex;flex-direction:column;justify-content:flex-end;color:var(--fk-plum-2)}.fk-asmr-paper:after{content:"\258d";color:var(--fk-coral-ink);animation:fk-blink 1s steps(1) infinite}@keyframes fk-blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.fk-asmr-paper:after{animation:none}}.fk-mt{margin-top:12px}
