@font-face{font-family:Roboto;src:url(/assets/roboto-700-sgOxpXbb.ttf) format("truetype");font-style:normal;font-weight:700;font-display:swap}:root{--brand-pink: #ff00ea;--brand-cyan: #00c3ff}*{margin:0;padding:0;box-sizing:border-box}html{background:linear-gradient(135deg,#0f0c29,#302b63,#24243e)}html,body{height:100%;overflow-x:hidden;overscroll-behavior-y:contain;position:fixed;width:100%}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;color:#e0e0e0;min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:10px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.play-icon{width:0;height:0;border-top:18px solid transparent;border-bottom:18px solid transparent;border-left:28px solid white;margin-left:6px}*{-webkit-tap-highlight-color:transparent}.container{width:100%;background:#0003;border-radius:20px;padding:20px;box-shadow:0 15px 35px #00000080;display:flex;flex-direction:column;flex-grow:1;height:100%;max-width:75vw}header{display:flex;align-items:center;justify-content:center;gap:20px;flex-wrap:nowrap}.logo-link{text-decoration:none}header h1{font-family:Roboto,sans-serif;font-size:clamp(2rem,5vw,3.5rem);font-weight:700;color:#eee;text-align:center;margin:0;cursor:pointer;background:linear-gradient(90deg,var(--brand-pink),var(--brand-cyan),var(--brand-pink));background-size:200% 200%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:animate-gradient 4s ease infinite;text-shadow:0 0 10px rgba(255,0,234,.2),0 0 20px rgba(0,195,255,.2)}.app{display:flex;flex-direction:column;flex-grow:1;justify-content:center;height:100%;min-height:0}.pads-container,.beatbox-pads-container{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);gap:20px 30px;margin:auto;padding:20px;justify-items:center;width:100%;height:100%}@media (max-width: 1024px){header{flex-direction:row;justify-content:center;margin-bottom:15px;gap:15px;flex-wrap:nowrap}.container{max-width:none}.pads-container,.beatbox-pads-container{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,1fr);grid-auto-flow:column;gap:10px;padding:5px}}@media (max-width: 480px){body{padding:5px}.container{padding:10px;max-width:none}.logo-link{transition:opacity .3s ease-in-out,max-height .3s ease-in-out;max-height:40px;overflow:hidden}body.loop-mode .logo-link{opacity:0;max-height:0;pointer-events:none;display:none}header h1{font-size:1.6rem;margin:0;padding:0}body.loop-mode header h1{animation-play-state:paused}.pads-container,.beatbox-pads-container{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,1fr);grid-auto-flow:column;gap:10px;padding:5px}}.pad[data-sample=kick]{--pad-color: #ff7f50;--pad-hover-color: #ffa576;--pad-active-color: #ffcc9d}.pad[data-sample=snare]{--pad-color: #40e0d0;--pad-hover-color: #66fff6;--pad-active-color: #8dffff}.pad[data-sample=crash]{--pad-color: #98fb98;--pad-hover-color: #beffbe;--pad-active-color: #e5ffe5}.pad[data-sample=clap]{--pad-color: #ffd700;--pad-hover-color: #fffd26;--pad-active-color: #ffff4d}.pad[data-sample=hihat]{--pad-color: #da70d6;--pad-hover-color: #ff96fc;--pad-active-color: #ffbdff}.pad[data-sample=scratch]{--pad-color: #ff4500;--pad-hover-color: #ff6b26;--pad-active-color: #ff924d}.pad{position:relative;width:100%;height:100%;background:linear-gradient(160deg,var(--pad-color),var(--pad-hover-color));border-radius:40px;box-shadow:0 10px 30px #0006,inset 0 -8px 15px #00000040;transition:all .2s ease-in-out;cursor:pointer;overflow:hidden;z-index:1;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;display:flex;flex-direction:column;padding:12px}.pad-inner,.pad-trigger,.sub-pad,.beatbox-edit-button{-moz-appearance:none;appearance:none;-webkit-appearance:none;font:inherit;color:inherit}.pad-trigger{position:absolute;top:0;right:0;bottom:0;left:0;touch-action:none;width:100%;height:100%;padding:0;background:transparent;border:0;border-radius:inherit;cursor:pointer;z-index:2}.pad-trigger:focus-visible,.sub-pad:focus-visible,.beatbox-edit-button:focus-visible{outline:3px solid var(--brand-cyan);outline-offset:-4px}.pad:after,.beatbox-pad.loaded:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);width:100%;padding-bottom:100%;border-radius:50%;background:radial-gradient(circle,rgba(0,0,0,.6) 5%,var(--pad-active-color) 50%,transparent 75%);opacity:0;transition:none;z-index:3;pointer-events:none}.pad-inner{width:100%;display:grid;gap:4px;position:relative;z-index:4;visibility:hidden;opacity:0;transition:opacity .3s ease,visibility .3s ease,height .3s ease;pointer-events:none;margin-bottom:auto;margin-top:10px;padding:0 20px}.pad-inner.beats-4{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(1,1fr);height:50px}.pad-inner.beats-8{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(2,1fr);height:94px}.pad-inner.beats-16{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);height:192px}.pad-visual-cues{flex-grow:1;display:flex;flex-direction:column;justify-content:flex-end;pointer-events:none}body.loop-mode .pad:not(.beatbox-pad) .pad-inner,body.loop-mode .beatbox-pad.loaded .pad-inner{visibility:visible;opacity:1;pointer-events:all}@media (hover: hover){.pad:hover{transform:translateY(-5px);box-shadow:0 15px 35px #00000080,inset 0 -8px 15px #0000004d}}.pad.active{transform:scale(1.02)}.pad-is-looping{box-shadow:0 0 15px var(--pad-color),0 0 30px var(--pad-color),inset 0 -8px 15px #00000040;border:1px solid var(--pad-color)}.pad.active.pad-is-looping{border-color:var(--pad-active-color);box-shadow:0 0 20px var(--pad-active-color),0 4px 15px #0006,inset 0 4px 10px #0000004d}.sub-pad{width:100%;height:100%;background:#0000004d;border-radius:5px;transition:background-color .15s,transform .15s;cursor:pointer;padding:0;border:0;border-bottom:2px solid transparent}.beatbox-edit-button{position:absolute;right:12px;bottom:12px;width:44px;height:44px;padding:0;border:1px solid rgba(255,255,255,.45);border-radius:50%;background:#00000059;font-size:1.5rem;line-height:1;cursor:pointer;z-index:5}@media (hover: hover){.beatbox-edit-button:hover{background:#fff3}}@media (hover: hover){.sub-pad:hover{background:#fff3}}.sub-pad.active{background:#ffffffb3;border:1px solid rgba(255,255,255,.9);box-shadow:0 0 10px #fffc;transform:scale(1.05)}.loop-mode .sub-pad{position:relative}.loop-mode .sub-pad.current-beat:before{content:"";position:absolute;top:-2px;left:-2px;right:-2px;bottom:-2px;border:2px solid #fff;border-radius:7px;box-shadow:0 0 8px #fff;pointer-events:none;animation:pulse-white .5s ease-out}.pad:active{transform:scale(.97);transition:transform .1s ease-in-out}.sub-pad:active{transform:scale(.95);background:#fff6}.beatbox-pad{--pad-color: #333;--pad-hover-color: #555;--pad-active-color: #444;position:relative;width:100%;height:100%;background-color:#333;border-radius:40px;cursor:pointer;transition:background .2s ease,transform .2s ease,box-shadow .2s ease;box-shadow:0 5px 15px #0000004d;overflow:hidden;display:flex;flex-direction:column;padding:12px}.beatbox-pad.loaded[data-pad-id="0"]{--pad-color: #ff2e63;--pad-hover-color: #ff7ebc;--pad-active-color: #ff5e9c}.beatbox-pad.loaded[data-pad-id="1"]{--pad-color: #08d9d6;--pad-hover-color: #3ff6f3;--pad-active-color: #00f2e9}.beatbox-pad.loaded[data-pad-id="2"]{--pad-color: #f9ed69;--pad-hover-color: #fff9a3;--pad-active-color: #fff86b}.beatbox-pad.loaded[data-pad-id="3"]{--pad-color: #6a4cff;--pad-hover-color: #b3a1ff;--pad-active-color: #8c6cff}.beatbox-pad.loaded[data-pad-id="4"]{--pad-color: #43e97b;--pad-hover-color: #a3ffcb;--pad-active-color: #6fffa3}.beatbox-pad.loaded[data-pad-id="5"]{--pad-color: #ff6f3c;--pad-hover-color: #ffb88c;--pad-active-color: #ff914d}.beatbox-pad.active:not(.loaded){transform:scale(.97);background-color:#444}.beatbox-pad.loaded{background:linear-gradient(160deg,var(--pad-color),var(--pad-hover-color));box-shadow:0 10px 30px #0006,inset 0 -8px 15px #00000040}.beatbox-pad.loaded.active{transform:scale(1.02)}@media (hover: hover){.beatbox-pad:hover:not(.loaded){background-color:#444}}@media (hover: hover){.beatbox-pad.loaded:hover{background:linear-gradient(160deg,var(--pad-hover-color),var(--pad-active-color))}}@media (max-width: 768px){.pad{border-radius:35px;padding:8px}}@media (max-width: 480px){.pad,.beatbox-pad{border-radius:30px;padding:8px}}.controls-section{display:flex;align-items:center;justify-content:center;gap:clamp(10px,2vw,20px);padding:10px 15px;background:#ffffff08;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.08);border-radius:12px;box-shadow:0 8px 25px #0000004d;flex-shrink:1;flex-wrap:wrap}.loop-controls-container{display:flex;align-items:center;gap:clamp(10px,2vw,20px);max-width:0;opacity:0;visibility:hidden;overflow:hidden;white-space:nowrap;transition:max-width .4s ease-in-out,opacity .1s ease-in-out,visibility .1s ease-in-out}body.loop-mode .loop-controls-container{max-width:500px;opacity:1;visibility:visible;overflow:visible;transition:max-width .4s ease-in-out,opacity .5s ease-in-out,visibility .5s ease-in-out}.control-button{width:60px;height:60px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#5a5a7a,#1e1e3f);border:3px solid #121222;position:relative;cursor:pointer;box-shadow:0 8px 15px #00000080,inset 0 0 10px #0006;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center;transition:transform .15s,box-shadow .3s,background .3s}:where(button,input,[tabindex]):focus-visible{outline:3px solid var(--brand-cyan);outline-offset:3px}.control-button:hover{transform:scale(1.05)}.control-button:active{transform:scale(.95)}#bank-toggle-btn,#beats-toggle-btn{font-size:1.8rem;font-weight:700;font-family:Roboto,sans-serif;color:#fff;text-shadow:0 0 8px rgba(255,255,255,.3)}#loop-mode-btn.active,#bank-toggle-btn.active{background:radial-gradient(circle at 35% 35%,#00c3ff,#07f);box-shadow:0 0 20px #00c3ff99,0 8px 15px #00000080,inset 0 0 10px #0006;border-color:#00c3ff}#loop-mode-btn.active svg{filter:drop-shadow(0 0 8px rgba(0,195,255,.8))}.stop-square{width:24px;height:24px;background:#fff;border-radius:3px;box-shadow:0 2px 4px #0000004d}.knob-container{position:relative;width:60px;height:60px;flex:0 0 60px}.analog-knob{cursor:pointer}.knob-container:hover .analog-knob{transform:scale(1.05);box-shadow:0 10px 20px #0009,inset 0 0 12px #00000080}.knob-range{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;width:100%;height:100%;margin:0;cursor:pointer;opacity:0}.knob-container:focus-within .analog-knob{outline:3px solid var(--brand-cyan);outline-offset:3px;box-shadow:0 0 0 3px #00c3ffa6,0 8px 15px #00000080,inset 0 0 10px #0006}.knob-indicator{position:absolute;top:6px;left:50%;transform:translate(-50%);width:4px;height:10px;background:#00c3ff;border-radius:2px;transform-origin:50% 25px;box-shadow:0 0 8px #00c3ffb3;transition:transform .1s linear}#bpm-value{font-size:.9rem;font-weight:700;color:#00c3ff;text-shadow:0 0 8px rgba(0,195,255,.5);position:absolute;z-index:10;pointer-events:none}@media (max-width: 480px){.controls-section{gap:5px;padding:5px 8px;flex-wrap:nowrap}.control-button,.analog-knob{width:48px;height:48px}.knob-container{width:48px;height:48px;flex-basis:48px}.knob-indicator{transform-origin:50% 19px;top:5px;height:8px}#bank-toggle-btn,#beats-toggle-btn{font-size:1.2rem}#bpm-value{font-size:.8rem}#stop-all-loops-btn svg{width:20px;height:20px}}.control-button svg rect,.control-button svg line{transition:opacity .3s ease-in-out}.control-button.active #bank-top,.control-button.active line:nth-of-type(1){opacity:.3}.control-button.active #bank-bottom,.control-button.active line:nth-of-type(2){opacity:1}.control-button svg g{transition:opacity .3s ease}.control-button.beats-4 #beats-4,.control-button.beats-8 #beats-8,.control-button.beats-16 #beats-16{opacity:1}.control-button.beats-4 #beats-8,.control-button.beats-4 #beats-16,.control-button.beats-8 #beats-4,.control-button.beats-8 #beats-16,.control-button.beats-16 #beats-4,.control-button.beats-16 #beats-8{opacity:0}[hidden]{display:none!important}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}#start-button{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);padding:60px 100px;font-size:1.5rem;font-weight:700;background:linear-gradient(135deg,#ff00ea,#00c3ff);color:#fff;border:none;border-radius:30px;cursor:pointer;box-shadow:0 10px 30px #0006;z-index:1000;transition:all .3s ease}#start-button:hover{transform:translate(-50%,-50%) scale(1.05)}#fatal-error{position:fixed;top:10px;left:50%;transform:translate(-50%);padding:15px;background-color:#ff3860;color:#fff;font-weight:700;border-radius:8px;z-index:2000;box-shadow:0 5px 15px #0000004d}.modal{position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#0009;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center}.modal[hidden]{display:none!important}.modal-content{background:linear-gradient(135deg,#0f0c29,#302b63,#24243e);margin:0 auto;padding:25px;border:none;width:90%;max-width:450px;border-radius:15px;color:#f0f0f0;box-shadow:0 8px 25px #00000080;text-align:center;border-top:1px solid rgba(255,255,255,.1);position:relative}.modal-content .close-button{position:absolute;top:10px;right:15px;color:#a0a0a0;font-size:24px;font-weight:400;line-height:1;transition:color .2s ease-in-out,transform .2s ease-in-out;padding:5px;border-radius:50%;width:auto;height:auto;margin:0;border:0;background:transparent;display:block}.modal-content .close-button:hover,.modal-content .close-button:focus{color:#fff;transform:scale(1.1);text-decoration:none;cursor:pointer}.modal-content h2{margin-top:0;margin-bottom:25px;font-weight:700;color:#fff}.file-input-container{display:flex;align-items:center;justify-content:center;margin-bottom:20px;background-color:#3a3a3c;border:2px dashed #4a4a4c;border-radius:8px;padding:5px 15px;margin-top:25px;cursor:pointer;transition:border-color .2s ease,background-color .2s ease}.file-input-container:hover{border-color:#6c6c6e;background-color:#424244}.file-input-container svg{width:24px;height:24px;margin-right:10px;stroke:#a0a0a0;flex-shrink:0}.modal-content button{background-color:#4a4a4c;color:#fff;border:none;padding:0;border-radius:50%;cursor:pointer;margin:10px 5px;transition:background-color .2s ease,transform .1s ease;width:55px;height:55px;display:flex;align-items:center;justify-content:center}.modal-content button:hover{background-color:#5c5c5e}.modal-content button:active{transform:scale(.96)}.record-indicator{width:18px;height:18px;background-color:#c53030;border-radius:50%;transition:all .2s ease-in-out;box-shadow:0 0 4px #c53030}#record-toggle-btn.recording{background-color:#c53030}#record-toggle-btn.recording:hover{background-color:#e53e3e}#record-toggle-btn.recording .record-indicator{background-color:#fff;border-radius:3px;box-shadow:none}.modal-content input[type=file]{margin:0;padding:10px 0;border:none;background-color:transparent;color:#f0f0f0;width:100%;text-align:left;pointer-events:none}.modal-content input[type=file]::file-selector-button{display:none}.modal-buttons{margin-top:15px;display:flex;justify-content:center}.beat-indicator{fill:#fff;transition:fill .1s ease-in-out}.beat-indicator.active{fill:var(--brand-cyan)}#beat-length-btn svg{pointer-events:none}@keyframes pulse-anim{0%{transform:translate(-50%,-50%) scale(0);opacity:.9}to{transform:translate(-50%,-50%) scale(1.4);opacity:0}}.pad.active:after,.beatbox-pad.loaded.active:after{animation:pulse-anim .35s ease-out}@keyframes animate-gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes pulse-white{0%{opacity:.5}to{opacity:1}}
