@font-face{font-family:Sono;src:url(/assets/Sono-VariableFont-DB82FMUy.ttf) format("truetype");font-weight:100 900;font-display:swap}*,*:before,*:after{box-sizing:border-box;margin:0;font-weight:400;font-family:Sono,monospace}body{min-width:240px;min-height:100%;overflow:hidden;color:#ffffffeb;background:#292f38;line-height:1.5;font-size:15px;overscroll-behavior:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#app{width:100%;height:100%}button{-webkit-tap-highlight-color:transparent;color:inherit;font:inherit;cursor:pointer}main{position:relative;width:100%;height:100%;min-height:100svh;overflow:hidden;background:#292f38}#tap_button{position:relative;display:grid;width:100%;height:100%;min-height:100svh;place-items:center;overflow:hidden;border:0;padding:0;color:#ffffffeb;background-color:var(--v2662b027);background-image:radial-gradient(circle at 50% 45%,rgb(255 255 255 / 5%),transparent 46%);transition:background-color .12s linear;touch-action:manipulation}#tap_button:after{position:absolute;inset:0;background:#ffffff1f;content:"";opacity:0;pointer-events:none;transition:opacity 80ms linear}#tap_button:active:after{opacity:1}#tap_button:focus-visible{outline:3px solid rgb(255 255 255 / 88%);outline-offset:-7px}.tempo-display{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;line-height:1;pointer-events:none}#tap_prompt,#current_bpm{color:#fff;font-weight:650;text-shadow:0 2px 24px rgb(0 0 0 / 12%)}#tap_prompt{font-size:clamp(5rem,21vmin,11rem);letter-spacing:-.05em}#current_bpm{font-size:clamp(4rem,18vmin,10rem);font-variant-numeric:tabular-nums;letter-spacing:-.075em}.tempo-detail{margin-top:clamp(.75rem,2.5vmin,1.25rem);padding-left:.28em;color:#ffffffb8;font-size:clamp(.75rem,2.2vmin,1rem);font-weight:600;letter-spacing:.28em}.tap-pulse{position:absolute;z-index:1;width:clamp(12rem,42vmin,28rem);aspect-ratio:1;border:2px solid rgb(255 255 255 / 46%);border-radius:50%;pointer-events:none;animation:tap-pulse .48s cubic-bezier(.16,1,.3,1) forwards}@keyframes tap-pulse{0%{opacity:.85;transform:scale(.55)}to{opacity:0;transform:scale(1.2)}}.tap-hint{position:absolute;z-index:2;bottom:max(1.5rem,calc(env(safe-area-inset-bottom) + .75rem));color:#ffffff7a;font-size:.7rem;font-weight:550;letter-spacing:.12em;pointer-events:none}.tap-hint kbd{border:1px solid rgb(255 255 255 / 24%);border-radius:.3rem;padding:.18rem .38rem;font:inherit}.tap-hint--touch{display:none}#last{position:absolute;z-index:3;top:0;left:0;display:flex;width:100%;height:calc(8rem + env(safe-area-inset-top));align-items:flex-start;justify-content:center;padding-top:calc(.85rem + env(safe-area-inset-top));color:#ffffffeb;background:linear-gradient(to bottom,var(--v52427bb0) 52%,transparent);pointer-events:none;animation:reveal-last .18s ease-out}@keyframes reveal-last{0%{opacity:0;transform:translateY(-.5rem)}}#last_label{margin-top:.76rem;margin-right:.55rem;color:#ffffffad;font-size:.72rem;font-weight:650;letter-spacing:.14em}#last output{font-size:clamp(2rem,7vmin,3rem);font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.055em;line-height:1.05}.last-unit{align-self:flex-start;margin-top:1.05rem;margin-left:.35rem;color:#ffffffad;font-size:.64rem;font-weight:650;letter-spacing:.12em}#lock_button{position:absolute;top:calc(.55rem + env(safe-area-inset-top));right:max(.55rem,env(safe-area-inset-right));display:grid;width:3rem;height:3rem;place-items:center;border:0;border-radius:50%;color:#ffffffdb;background:#ffffff14;pointer-events:auto;transition:background-color .12s ease,transform .12s ease}#lock_button svg{width:1.35rem;height:1.35rem}#lock_button:focus-visible{outline:2px solid rgb(255 255 255 / 88%);outline-offset:2px}@media(hover:hover){#lock_button:hover{background:#ffffff24;transform:scale(1.05)}}@media(pointer:coarse){.tap-hint--keyboard{display:none}.tap-hint--touch{display:block}}@media(max-height:500px){#tap_prompt{font-size:clamp(4rem,28vmin,7rem)}#current_bpm{font-size:clamp(3.5rem,24vmin,6.5rem)}#last{height:calc(6rem + env(safe-area-inset-top))}}@media(prefers-reduced-motion:reduce){#tap_button,#tap_button:after,#lock_button{transition:none}.tap-pulse,#last{animation:none}}
