*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;touch-action:manipulation}body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#0a0a0f;color:#fff;overflow:hidden;height:100vh;height:100dvh;width:100vw;user-select:none;-webkit-user-select:none;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}#app{height:100vh;height:100dvh;width:100vw;display:flex;flex-direction:column}:focus-visible{outline:2px solid #4A90D9;outline-offset:2px}button:focus:not(:focus-visible){outline:none}.join-screen{display:flex;align-items:center;justify-content:center;height:100vh;height:100dvh;background:linear-gradient(135deg,#0a0a1a,#1a1a2e)}.join-content{text-align:center;padding:2rem}.band-logo{font-size:4rem;font-weight:900;letter-spacing:.3em;margin:0;background:linear-gradient(135deg,#4a90d9,#e85d75,#f5a623);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.band-tagline{font-size:1.1rem;color:#888;margin:.5rem 0 2rem;letter-spacing:.15em}.instrument-label{font-size:1.2rem;color:#ccc;margin-bottom:1.5rem}.join-instrument-card{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin:1.5rem auto 2rem;padding:1.5rem 2.5rem;border:3px solid;border-radius:20px;background:#ffffff0a;max-width:200px;animation:cardPop .4s cubic-bezier(.16,1,.3,1)}.join-instrument-icon{font-size:3.5rem;line-height:1}.join-instrument-name{font-size:1.4rem;font-weight:900;letter-spacing:.15em}@keyframes cardPop{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.join-button{padding:1.2rem 3rem;font-size:1.4rem;font-weight:700;border:none;border-radius:50px;background:linear-gradient(135deg,#4a90d9,#6c63ff);color:#fff;cursor:pointer;transition:transform .15s,box-shadow .15s;box-shadow:0 4px 20px #4a90d966;min-width:220px}.join-button:active{transform:scale(.95)}.join-button:disabled{opacity:.8;cursor:wait}.join-loading{display:flex;align-items:center;justify-content:center;gap:.5rem}.spinner-small{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}.connection-status{margin-top:1rem;font-size:.85rem;color:#666}.play-screen{display:flex;flex-direction:column;height:100vh;height:100dvh}.play-header{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#111;flex-shrink:0}.player-count-badge{margin-left:auto;padding:.2rem .6rem;border-radius:10px;font-size:.7rem;font-weight:600;background:#ffffff14;color:#888}.genre-badge{padding:.25rem .75rem;border-radius:20px;font-weight:700;font-size:.85rem;color:#fff}.bpm-badge,.key-badge{padding:.25rem .5rem;border-radius:8px;font-size:.75rem;background:#222;color:#aaa}.instrument-container{flex:1;display:flex;flex-direction:column;overflow:hidden}.drums-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:.75rem;padding:1rem;height:100%}.drum-pad{display:flex;align-items:center;justify-content:center;border:none;border-radius:16px;font-size:1.2rem;font-weight:800;color:#333;cursor:pointer;transition:transform .08s,filter .08s;letter-spacing:.05em}.drum-pad:active{transform:scale(.92);filter:brightness(1.3)}.bass-layout{display:flex;flex-direction:column;height:100%;padding:.5rem}.octave-controls{display:flex;align-items:center;justify-content:center;gap:1rem;padding:.5rem;flex-shrink:0}.octave-btn{padding:.6rem 1.2rem;border:1px solid #444;border-radius:8px;background:#222;color:#fff;font-size:.9rem;cursor:pointer;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center}.octave-label{color:#aaa;font-size:.85rem}.bass-notes{flex:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(70px,1fr));gap:.5rem;padding:.5rem;align-content:center}.bass-note{display:flex;align-items:center;justify-content:center;padding:1.5rem .5rem;border:none;border-radius:12px;font-size:1.1rem;font-weight:700;color:#fff;cursor:pointer;transition:transform .08s}.bass-note:active,.bass-note.active{transform:scale(.93);filter:brightness(1.2)}.synth-layout{display:flex;flex-direction:column;height:100%}.synth-keys{flex:1;display:flex;flex-direction:column;gap:2px;padding:.5rem;min-height:0}.synth-dials{display:flex;justify-content:space-evenly;align-items:center;padding:.75rem .5rem;background:#111;flex-shrink:0}.synth-dial{display:flex;flex-direction:column;align-items:center;gap:.25rem}.dial-knob{cursor:grab;outline:none}.dial-knob:active{cursor:grabbing}.dial-label{font-size:.7rem;color:#aaa;text-transform:uppercase;letter-spacing:.05em}.dial-value{font-size:.65rem;color:#999;font-family:monospace}.key-row{flex:1;display:flex;gap:2px}.synth-key{flex:1;display:flex;align-items:center;justify-content:center;border:1px solid #333;border-radius:8px;font-size:.75rem;font-weight:600;cursor:pointer;transition:transform .06s;min-height:60px}.synth-key:active,.synth-key.active{transform:scale(.94)}.synth-key.sharp{border-color:#555}.key-label{pointer-events:none}.guitar-layout{display:flex;flex-direction:column;height:100%}.chord-buttons{display:flex;gap:.5rem;padding:.75rem;flex-shrink:0}.chord-btn{flex:1;padding:.75rem;border:2px solid;border-radius:12px;font-size:1rem;font-weight:700;color:#fff;background:transparent;cursor:pointer;transition:all .15s}.chord-btn.active{color:#fff}.strum-zone{flex:1;position:relative;display:flex;flex-direction:column;justify-content:space-evenly;padding:1rem;background:linear-gradient(180deg,#1a1a1a,#0d0d0d);border-radius:16px;margin:0 .75rem .75rem;cursor:pointer}.guitar-string{display:flex;align-items:center;padding:.5rem 0}.string-line{width:100%;height:2px;background:linear-gradient(90deg,#555,#888,#555);border-radius:1px}.guitar-string:nth-child(1) .string-line{height:3px}.guitar-string:nth-child(2) .string-line{height:3px}.guitar-string:nth-child(3) .string-line{height:2px}.guitar-string:nth-child(4) .string-line{height:2px}.guitar-string:nth-child(5) .string-line{height:1.5px}.guitar-string:nth-child(6) .string-line{height:1px}.strum-hint{position:absolute;bottom:1rem;left:50%;transform:translate(-50%);color:#666;font-size:.8rem;pointer-events:none}.lobby-screen{display:flex;align-items:center;justify-content:center;height:100vh;height:100dvh;background:linear-gradient(135deg,#0a0a1a,#1a1a2e)}.lobby-content{text-align:center;padding:2rem;max-width:600px;width:100%}.lobby-logo{font-size:5rem;margin-bottom:0}.lobby-subtitle{color:#888;letter-spacing:.2em;margin-bottom:2rem}.mic-prompt{margin:2rem 0}.mic-icon{font-size:3rem;display:inline-block}.mic-icon.pulsing{animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1);opacity:.7}50%{transform:scale(1.15);opacity:1}}.genre-buttons{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin:1.5rem 0}.genre-btn{padding:1rem;border:none;border-radius:12px;color:#fff;cursor:pointer;transition:transform .15s,box-shadow .15s;text-align:center}.genre-btn:active{transform:scale(.95)}.genre-name{display:block;font-size:1.1rem;font-weight:700}.genre-bpm{display:block;font-size:.75rem;opacity:.8;margin-top:.25rem}.connected-players{margin-top:2rem}.connected-players h3{color:#888;font-size:.9rem;text-transform:uppercase;letter-spacing:.1em}.player-list{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}.player-chip{padding:.4rem .8rem;border-radius:20px;font-size:.8rem;font-weight:600;color:#222}.connection-dot{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:1.5rem;font-size:.8rem;color:#666}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.mixer-screen{display:flex;flex-direction:column;height:100vh;height:100dvh;background:#0a0a0f}.mixer-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background:#111;flex-shrink:0}.mixer-logo{font-size:1.5rem;font-weight:900;letter-spacing:.2em;margin:0;background:linear-gradient(135deg,#4a90d9,#e85d75);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.mixer-info{display:flex;gap:.5rem;align-items:center}.score-btn{padding:.5rem 1rem;border:2px solid #E85D75;border-radius:25px;background:transparent;color:#e85d75;font-weight:700;font-size:.9rem;cursor:pointer;transition:all .2s}.score-btn:hover{background:#e85d75;color:#fff}.mixer-lanes{flex:1;display:flex;overflow:hidden}.lane-labels{width:140px;flex-shrink:0;display:flex;flex-direction:column;background:#0d0d12}.lane-label{flex:1;display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-left:4px solid;font-size:.85rem;font-weight:600}.lane-label.ai-lane{animation:aiGlow 2s ease-in-out infinite}@keyframes aiGlow{0%,to{background:#d4a5ff0d}50%{background:#d4a5ff1f}}.lane-icon{font-size:1.2rem}.mixer-canvas{flex:1;width:100%;height:100%}.mixer-footer{display:flex;gap:.5rem;padding:.75rem 1.5rem;background:#111;flex-shrink:0;justify-content:center}.genre-mini-btn{padding:.4rem 1rem;border:1px solid;border-radius:20px;font-size:.8rem;font-weight:600;color:#fff;cursor:pointer;transition:all .15s}.genre-mini-btn.active{color:#fff}.score-screen{display:flex;align-items:center;justify-content:center;height:100vh;height:100dvh;background:linear-gradient(135deg,#0a0a1a,#1a1a2e)}.score-content{text-align:center;padding:2rem;max-width:600px;width:100%;max-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}.score-loading{text-align:center}.spinner{width:40px;height:40px;border:3px solid #333;border-top-color:#4a90d9;border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 1rem}@keyframes spin{to{transform:rotate(360deg)}}.score-number{font-size:clamp(4rem,15vw,8rem);font-weight:900;line-height:1;margin-bottom:0}.score-out-of{font-size:clamp(1rem,3vw,1.5rem);color:#666;margin-bottom:1rem}.tts-indicator{font-size:.9rem;color:#4a90d9;margin-bottom:.5rem;animation:pulse 1.5s ease-in-out infinite}.vibe-description{font-size:clamp(1rem,3vw,1.3rem);color:#ccc;font-style:italic}.one-liner{font-size:clamp(.85rem,2.5vw,1rem);color:#888;margin-bottom:1.5rem}.score-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;margin-bottom:2rem;text-align:left}.score-card{background:#1a1a25;border-radius:12px;padding:1rem;border-left:4px solid}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.card-instrument{font-weight:700;text-transform:capitalize;font-size:.9rem}.card-score{font-weight:900;font-size:1.2rem}.card-feedback{font-size:.8rem;color:#aaa;margin:0;line-height:1.4}.jam-again-btn{padding:.9rem 2rem;font-size:clamp(1rem,3vw,1.2rem);font-weight:700;border:none;border-radius:50px;background:linear-gradient(135deg,#4a90d9,#6c63ff);color:#fff;cursor:pointer;transition:transform .15s;box-shadow:0 4px 20px #4a90d94d}.jam-again-btn:active{transform:scale(.95)}.score-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.review-jam-btn{padding:.9rem 2rem;font-size:clamp(1rem,3vw,1.2rem);font-weight:700;border:2px solid #4A90D9;border-radius:50px;background:transparent;color:#4a90d9;cursor:pointer;transition:transform .15s,background .2s}.review-jam-btn:hover{background:#4a90d9;color:#fff}.review-jam-btn:active{transform:scale(.95)}.playback-screen{display:flex;flex-direction:column;height:100vh;height:100dvh;background:#0a0a0f}.playback-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background:#111;flex-shrink:0}.playback-actions{display:flex;gap:.5rem}.export-btn{padding:.4rem .8rem;border:1px solid #555;border-radius:8px;background:#222;color:#ccc;font-size:.75rem;font-weight:600;cursor:pointer;transition:all .15s}.export-btn:hover{background:#333;border-color:#888;color:#fff}.export-btn:disabled{opacity:.5;cursor:not-allowed}.playback-lanes{flex:1;display:flex;overflow:hidden}.lane-controls{display:flex;gap:3px;margin-right:.4rem}.mute-btn,.solo-btn{width:28px;height:28px;min-width:44px;min-height:44px;border:1px solid #444;border-radius:6px;background:#222;color:#888;font-size:.7rem;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .1s}.mute-btn.active{background:#f44336;color:#fff;border-color:#f44336}.solo-btn.active{background:#ffc107;color:#222;border-color:#ffc107}.playback-transport{display:flex;align-items:center;gap:1rem;padding:.75rem 1.5rem;background:#111;flex-shrink:0}.transport-controls{display:flex;gap:.5rem;flex-shrink:0}.transport-btn{width:40px;height:40px;border:1px solid #444;border-radius:50%;background:#222;color:#fff;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.transport-btn:hover{background:#333;border-color:#666}.transport-btn.play-btn{width:48px;height:48px;font-size:1.2rem}.transport-btn.play-btn.playing,.transport-btn.loop-btn.active{background:#4a90d9;border-color:#4a90d9}.scrub-bar{flex:1;height:32px;background:#1a1a25;border-radius:6px;position:relative;cursor:pointer;overflow:hidden}.scrub-progress{height:100%;background:#4a90d933;border-radius:6px 0 0 6px;pointer-events:none}.scrub-playhead{position:absolute;top:0;width:3px;height:100%;background:#fff;border-radius:2px;pointer-events:none;box-shadow:0 0 6px #fff6}.scrub-loop-region{position:absolute;top:0;height:100%;background:#4a90d933;border-left:2px solid rgba(74,144,217,.6);border-right:2px solid rgba(74,144,217,.6);pointer-events:none}.transport-time{font-size:.8rem;color:#888;font-family:monospace;white-space:nowrap;flex-shrink:0}.playback-footer{display:flex;gap:.75rem;padding:.75rem 1.5rem;background:#0d0d12;flex-shrink:0;justify-content:center}.mc-overlay{position:fixed;top:0;left:0;right:0;z-index:1000;display:flex;justify-content:center;padding:max(12px,env(safe-area-inset-top));pointer-events:none;animation:mcSlideIn .4s cubic-bezier(.16,1,.3,1)}.mc-text{background:linear-gradient(135deg,#4a90d9eb,#e85d75eb);color:#fff;padding:12px 28px;border-radius:24px;font-size:15px;font-weight:700;letter-spacing:.02em;text-align:center;box-shadow:0 4px 24px #00000080,0 0 0 1px #ffffff1a;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);max-width:min(500px,90vw)}@keyframes mcSlideIn{0%{transform:translateY(-120%);opacity:0}to{transform:translateY(0);opacity:1}}.mc-overlay-phone{top:auto;bottom:0;padding:max(8px,env(safe-area-inset-bottom))}.mc-overlay-phone .mc-text{font-size:12px;padding:8px 16px;border-radius:16px;max-width:min(350px,85vw)}.export-btn.ableton-btn{background:#00d9a6;color:#000;font-weight:700;border-color:#00d9a6}.export-btn.ableton-btn:hover{background:#00f0b8;border-color:#00f0b8}.export-btn.ableton-sent{background:#4caf50;border-color:#4caf50;color:#fff}.export-btn.ableton-error{background:#f44336;border-color:#f44336;color:#fff}.hum-controls{display:flex;gap:8px;justify-content:center;align-items:center;padding:10px 8px;background:#0d0d12;flex-shrink:0}.hum-mode-btn{padding:8px 14px;border-radius:14px;border:2px solid #555;background:transparent;color:#ccc;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;min-height:36px}.hum-mode-btn.active{border-color:var(--genre-color, #4A90D9);background:#4a90d926;color:#fff}.hum-record-btn{padding:8px 20px;border-radius:20px;border:none;background:var(--genre-color, #4A90D9);color:#fff;font-size:14px;font-weight:700;cursor:pointer;min-height:40px;min-width:44px;transition:all .15s}.hum-record-btn:active{transform:scale(.94)}.hum-record-btn.recording{background:#f44336;animation:humPulse 1s ease-in-out infinite}@keyframes humPulse{0%,to{box-shadow:0 0 #f4433680}50%{box-shadow:0 0 0 8px #f4433600}}
/*# sourceMappingURL=client.css.map */
