@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2)format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2)format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff)format("woff")}:root{color:#f2f0ea;font-synthesis:none;--surface:#242629;--secondary:#a6a7a4;--accent:#e0b66e;--outline:#4c5053;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#17191b;font-family:Inter,Arial,sans-serif;font-weight:400}*{box-sizing:border-box}body{min-width:280px;margin:0}button,input{font:inherit}button{cursor:pointer;color:inherit;background:var(--surface);touch-action:manipulation;border:1px solid #0000}button:disabled{cursor:default;opacity:.3}button:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:4px}header{align-items:center;gap:24px;min-height:80px;padding:24px;display:flex}.brand{letter-spacing:-1px;font-size:22px;font-weight:600}.brand-bop{color:var(--accent)}.brand-kit{color:#f2f0ea}.header-label,.header-divider{display:none}.status{color:var(--secondary);white-space:nowrap;margin-left:auto;padding:7px 11px;font-size:13px}.status span{vertical-align:middle;margin-right:4px;font-size:8px}.status.playing,.status.paused{border:1px solid var(--accent);color:var(--accent);border-radius:20px}.instrument{width:100%;max-width:438px;margin:0 auto;padding:0 24px}.pendulum{height:56px;margin:4px 16px 8px;position:relative}.rail{background:var(--outline);height:2px;position:absolute;top:28px;left:0;right:0}.center-mark{background:var(--secondary);width:2px;height:24px;position:absolute;top:16px;left:50%}.ball{background:var(--accent);will-change:left;border-radius:50%;width:16px;height:16px;position:absolute;top:20px;left:0;transform:translate(-50%)}.pulse-ring{border:2px solid var(--accent);opacity:0;background:#e0b66e0d;border-radius:50%;width:40px;height:40px;position:absolute;top:-12px;left:-12px}.instrument:has(.transport:not(.playing)) .ball{background:var(--secondary)}.tempo-section{text-align:center}.tempo-label{text-transform:uppercase;letter-spacing:2px;color:var(--secondary);margin:8px 0 12px;font-size:12px}.tempo-readout{font-variant-numeric:tabular-nums;letter-spacing:-5px;background:0 0;border:1px solid #242629;border-radius:12px;min-width:200px;min-height:120px;padding:0 8px;font-size:104px;font-weight:400;line-height:1.12}.bpm-label{color:var(--secondary);margin:12px 0;font-size:14px}.tempo-steps{justify-content:center;gap:16px;display:flex}.tempo-steps button{border-radius:20px;width:64px;height:64px;font-size:20px}.beats{grid-template-columns:repeat(var(--beats),minmax(0,1fr));gap:12px;margin-top:6px;display:grid}.beat{background:var(--surface);height:52px;color:var(--secondary);font-variant-numeric:tabular-nums;border:1px solid #383b3e;border-radius:16px;place-items:center;font-size:20px;display:grid}.beat.active{background:var(--accent);color:#17191b;border-color:var(--accent)}.settings{flex-direction:column;align-items:center;gap:16px;margin:20px 0 12px;display:flex}.setting{border:1px solid var(--outline);background:0 0;border-radius:14px;justify-content:center;align-items:center;gap:8px;width:232px;min-height:44px;padding:10px;font-size:14px;display:flex}.primary{color:#17191b;background:#f2f0ea;border-radius:20px;min-height:64px;font-size:18px}.transport{justify-content:center;align-items:center;gap:16px;width:100%;display:flex}.transport.playing{background:var(--accent)}.transport span{font-size:20px}.secondary-actions{gap:12px;margin-top:12px;display:flex}.secondary-actions button{border-radius:20px;flex:1;justify-content:center;align-items:center;gap:16px;min-width:0;min-height:64px;font-size:18px;display:flex}.secondary-actions span{font-size:24px}.transport-hint{text-align:center;color:var(--secondary);min-height:18px;margin:16px 0 24px;font-size:12px}.live-status{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.audio-error{color:var(--accent);border:1px solid var(--accent);border-radius:12px;padding:16px;font-size:14px}.audio-error button{min-height:44px;margin-left:8px}footer{display:none}.sheet{background:var(--surface);color:#f2f0ea;overscroll-behavior:contain;border:0;border-radius:28px 28px 0 0;width:390px;max-width:100%;max-height:calc(100dvh - 16px);margin:auto 0 0;padding:0;left:50%;overflow:auto;transform:translate(-50%)}.sheet::backdrop{background:#0009}.sheet form{flex-direction:column;max-height:calc(100dvh - 16px);display:flex}.drag-handle{touch-action:pan-y;justify-content:center;align-items:center;min-height:44px;display:flex}.drag-handle span{background:#707477;border-radius:4px;width:36px;height:4px}.sheet-body{min-height:0;padding:8px 24px 0;overflow:auto}.sheet h1{letter-spacing:-.6px;margin:0 0 6px;font-size:26px;font-weight:600;line-height:1.25}.sheet p{color:var(--secondary);margin:0 0 24px;font-size:14px;line-height:1.5}.sheet .caps{text-transform:uppercase;color:var(--secondary);margin:0 0 8px;font-size:13px;display:block}.number-entry{border:1px solid var(--outline);background:#17191b;border-radius:16px;align-items:center;min-height:88px;display:flex}.number-entry button{background:0 0;border-radius:14px;align-self:stretch;width:72px;font-size:24px}.number-entry input{color:#f2f0ea;text-align:center;font-variant-numeric:tabular-nums;background:0 0;border:0;border-radius:8px;width:100%;min-width:0;padding:8px 0;font-size:48px;line-height:1}.sheet #input-hint{margin:6px 0 22px;font-size:13px}.sheet .error{color:var(--accent)}.tap-tempo{border:1px solid var(--outline);background:#17191b;border-radius:16px;width:100%;min-height:88px;font-size:18px}.sheet .tap-hint{text-align:center;margin:8px 0 22px;font-size:13px}.sheet .sheet-note{margin:16px 0 24px;font-size:13px;line-height:1.55}.sheet-footer{flex-shrink:0;padding:0 24px 24px}.done{width:100%}.sheet-tempo .sheet-footer{padding-top:0}.sheet .field-label{color:#f2f0ea;margin:0 0 8px}.sheet-chime .number-entry{min-height:64px}.sheet-chime input{font-size:32px}.sheet .inset-note{background:#17191b;border-radius:16px;margin:22px 0 24px;padding:16px;font-size:13px}.sheet fieldset{border:0;min-width:0;margin:0 0 22px;padding:0}.sheet legend{margin-bottom:10px;font-size:14px}.meter-options{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.meter-options button{border:1px solid var(--outline);border-radius:12px;min-height:48px;font-size:20px}.sheet button[aria-checked=true]{color:var(--accent);border-color:var(--accent);background:#2b271f}.rhythm-options{grid-template-columns:1fr 1fr;gap:8px;display:grid}.rhythm-options button{border:1px solid var(--outline);text-align:left;border-radius:16px;align-items:center;gap:8px;min-height:64px;padding:8px;font-size:12px;display:flex}.notation{flex-shrink:0;width:52px;height:44px}.volume-label{justify-content:space-between;font-size:14px;display:flex}.volume-label output{color:var(--accent)}input[type=range]{appearance:none;cursor:pointer;background:0 0;width:100%;height:44px;margin:4px 0}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right,var(--accent) var(--volume),var(--outline) var(--volume));border-radius:4px;height:4px}input[type=range]::-webkit-slider-thumb{appearance:none;background:#f2f0ea;border-radius:50%;width:20px;height:20px;margin-top:-8px;box-shadow:0 0 0 12px #0000}input[type=range]::-moz-range-track{background:var(--outline);height:4px}input[type=range]::-moz-range-progress{background:var(--accent);height:4px}input[type=range]::-moz-range-thumb{background:#f2f0ea;border:0;border-radius:50%;width:20px;height:20px}.sheet .volume-hint{margin:0 0 24px;font-size:12px}.sheet-rhythm .sheet-note{margin-top:22px}.sheet-rhythm .sheet-body{padding-top:8px}@media (width>=768px){header{min-height:128px;padding:48px 64px}.brand{font-size:24px}.header-label{color:var(--secondary);font-size:14px;display:inline}.header-divider{background:var(--outline);width:1px;height:20px;display:block}.instrument{width:576px;max-width:none;padding:0}.pendulum{height:56px;margin:56px 8px 28px}.tempo-label{margin:0 0 12px}.tempo-readout{min-width:240px;min-height:132px}.bpm-label{margin:12px 0}.beats{gap:16px;margin-top:24px}.beat{height:64px;font-size:22px}.settings{flex-direction:row;justify-content:center;gap:16px;margin:24px 0}.transport-hint{margin:24px 0 0;font-size:13px}footer{text-align:center;color:var(--secondary);margin:88px 0 32px;font-size:12px;display:block}.sheet{border-radius:28px;max-width:calc(100vw - 48px);max-height:calc(100dvh - 48px);margin:auto}.sheet form{max-height:calc(100dvh - 48px)}}@media (prefers-reduced-motion:reduce){.ball{will-change:auto;left:50%!important}.pulse-ring{transition:none!important;animation:none!important}}@media (width<=359px){.beats{gap:6px}.beat{font-size:16px}.instrument{padding:0 16px}.rhythm-options button{gap:2px;padding:4px}.notation{width:42px}}.measure-status{justify-content:center;gap:12px;margin:8px 0 -4px;display:flex}.measure-counter{text-align:center;color:var(--secondary);font-variant-numeric:tabular-nums;letter-spacing:.02em;margin:0;font-size:12px;line-height:16px}.transport-icon{color:#17191b;flex-shrink:0;width:24px;height:24px}.tempo-control-row{justify-content:center;align-items:center;gap:8px;display:flex}.tempo-control-row .tempo-steps{display:flex}.tempo-control-row .tempo-steps button{width:48px;height:56px;color:var(--secondary);border-radius:14px;font-size:20px}.tempo-control-row .tempo-steps button:not(:disabled):hover{color:var(--accent);border-color:var(--outline)}.chime-presets{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:10px 0 4px;display:grid}.chime-presets button{border:1px solid var(--outline);min-height:44px;color:var(--secondary);font-variant-numeric:tabular-nums;background:0 0;border-radius:12px}.chime-presets button:hover,.chime-presets button:focus-visible{color:var(--accent);border-color:var(--accent)}.tempo-presets{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:10px 0 4px;display:grid}.tempo-presets button{border:1px solid var(--outline);min-height:44px;color:var(--secondary);font-variant-numeric:tabular-nums;background:0 0;border-radius:12px}.tempo-presets button:hover,.tempo-presets button:focus-visible{color:var(--accent);border-color:var(--accent)}@media (width<=359px){.tempo-control-row{gap:4px}.tempo-control-row .tempo-steps button{width:40px}.tempo-readout{flex:1;min-width:0}}.repeat-step{touch-action:none;-webkit-user-select:none;user-select:none}.beat{cursor:default;pointer-events:none;-webkit-user-select:none;user-select:none;background:0 0;border-color:#0000;border-radius:12px;height:44px;font-size:18px}.beat.active{background:var(--accent);border-color:var(--accent)}.measure-status{color:var(--secondary);justify-content:center;gap:16px;margin:8px 0 0;font-size:12px;line-height:16px}.measure-status p{margin:0;display:block}.measure-status p span{margin-right:5px}.measure-status strong{color:#e3e1dc;font-variant-numeric:tabular-nums;font-size:15px;font-weight:600;line-height:18px}
