: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}.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{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;display:flex;flex-direction:column;padding:12px}.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}.pad-inner{width:100%;height:50px;display:grid;grid-template-columns:repeat(4,1fr);gap:4px;z-index:2;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-visual-cues{flex-grow:1;display:flex;flex-direction:column;justify-content:flex-end}body.loop-mode .pad-inner{visibility:visible;opacity:1;pointer-events:all}.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;border-bottom:2px solid transparent}.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{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.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)}.beatbox-pad:hover:not(.loaded){background-color:#444}.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;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;outline:none;transition:transform .15s,box-shadow .3s,background .3s}.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-hidden{display:none}.knob-container{display:flex;flex-direction:column;align-items:center;gap:8px}.analog-knob{cursor:grab}.analog-knob:hover{transform:scale(1.05);box-shadow:0 10px 20px #0009,inset 0 0 12px #00000080}.analog-knob:active{cursor:grabbing}.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-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}#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{display:none;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-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}.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%}.close-button:hover,.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}}
