/* Sound Lab — app-specific styles (shared styles in /theme.css) */

:root{--radius:8px}

/* === QUICK GENERATE BAR === */
.gen-bar{
    position:relative;z-index:1;
    display:flex;align-items:center;gap:6px;
    padding:8px 16px;
    margin-top:52px;
    background:var(--surface);
    border-bottom:1px solid var(--border);
    overflow-x:auto;
    flex-shrink:0;
}
.gen-label{
    font-size:10px;font-weight:700;
    text-transform:uppercase;letter-spacing:1px;
    color:var(--dim);white-space:nowrap;
    margin-right:4px;
}
.gen-btn{
    padding:6px 14px;border-radius:6px;
    font-size:11px;font-weight:600;
    background:var(--surface2);
    border:1px solid var(--border);
    color:var(--text);cursor:pointer;
    transition:all 0.2s;white-space:nowrap;
}
.gen-btn:hover{
    border-color:var(--cyan);color:var(--cyan);
    background:rgba(0,229,255,0.08);
    box-shadow:0 0 8px rgba(0,229,255,0.15);
}
.gen-btn:active{transform:scale(0.95)}
.gen-btn-random{
    background:linear-gradient(135deg,rgba(168,85,247,0.15),rgba(0,229,255,0.15));
    border-color:rgba(168,85,247,0.4);
    color:var(--purple);
}
.gen-btn-random:hover{
    border-color:var(--purple);color:var(--lime);
    box-shadow:0 0 10px rgba(168,85,247,0.2);
}
.gen-btn-mutate{
    background:linear-gradient(135deg,rgba(57,255,20,0.12),rgba(0,229,255,0.12));
    border-color:rgba(57,255,20,0.35);
    color:var(--lime);
}
.gen-btn-mutate:hover{
    border-color:var(--lime);color:var(--cyan);
    box-shadow:0 0 10px rgba(57,255,20,0.2);
}

/* === APP LAYOUT === */
.app-layout{
    display:flex;
    height:calc(100vh - 52px - 42px);
    position:relative;z-index:1;
    overflow:hidden;
}

/* === PANELS === */
.panel{
    background:var(--surface);
    border:1px solid var(--border);
    overflow-y:auto;
}
.panel::-webkit-scrollbar{width:4px}
.panel::-webkit-scrollbar-track{background:transparent}
.panel::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}

.panel-left{
    width:260px;min-width:260px;
    border-right:1px solid var(--border);
    border-left:none;border-top:none;border-bottom:none;
    display:flex;flex-direction:column;
}
.panel-center{
    flex:1;
    display:flex;flex-direction:column;
    border:none;
    background:transparent;
    overflow:hidden;
}
.panel-right{
    width:280px;min-width:280px;
    border-left:1px solid var(--border);
    border-right:none;border-top:none;border-bottom:none;
    display:flex;flex-direction:column;
    overflow-y:auto;
}

/* === PANEL HEADERS === */
.panel-header{
    display:flex;align-items:center;justify-content:space-between;
    padding:14px 16px 10px;
    border-bottom:1px solid var(--border);
    position:sticky;top:0;
    background:var(--surface);z-index:2;
}
.panel-header h2{
    font-size:13px;font-weight:700;
    text-transform:uppercase;letter-spacing:1.5px;
    color:var(--dim);
}
.panel-section{
    padding:14px 16px;
    border-bottom:1px solid var(--border);
}
.panel-section:last-child{border-bottom:none}
.panel-section h3{
    font-size:12px;font-weight:700;
    text-transform:uppercase;letter-spacing:1px;
    color:var(--cyan);margin-bottom:10px;
}

/* === BUTTONS === */
.btn-small{
    padding:5px 12px;border-radius:5px;
    font-size:11px;font-weight:600;
    border:1px solid var(--border);
    background:var(--surface2);
    color:var(--text);cursor:pointer;
    transition:all 0.2s;
}
.btn-small:hover{border-color:var(--purple)}
.btn-accent{
    border-color:rgba(0,229,255,0.3);
    color:var(--cyan);
    background:rgba(0,229,255,0.06);
}
.btn-accent:hover{
    border-color:var(--cyan);
    background:rgba(0,229,255,0.12);
}
.btn-primary{
    display:inline-flex;align-items:center;justify-content:center;gap:8px;
    padding:10px 20px;border-radius:var(--radius);
    font-size:14px;font-weight:600;
    background:linear-gradient(135deg,var(--cyan),var(--purple));
    color:#000;border:none;cursor:pointer;
    transition:all 0.25s;
}
.btn-primary:hover{
    transform:translateY(-1px);
    box-shadow:0 6px 24px rgba(0,229,255,0.3);
}
.btn-full{width:100%;margin-top:12px}
.btn-danger{
    border-color:rgba(255,45,149,0.3);
    color:var(--pink);
    background:rgba(255,45,149,0.06);
}
.btn-danger:hover{
    border-color:var(--pink);
    background:rgba(255,45,149,0.12);
}

/* === RECORDER SECTION === */
.recorder-section{
    border-bottom:1px solid var(--border);
    padding:10px 12px;
}
.recorder-header{
    display:flex;align-items:center;justify-content:space-between;
    margin-bottom:8px;
}
.recorder-header h2{
    font-size:13px;font-weight:700;
    text-transform:uppercase;letter-spacing:1.5px;
    color:var(--dim);
}
.recorder-controls{
    display:flex;align-items:center;gap:8px;
    margin-bottom:8px;
}
.rec-btn{
    width:36px;height:36px;
    border-radius:50%;
    border:2px solid rgba(255,45,149,0.4);
    background:rgba(255,45,149,0.08);
    cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    transition:all 0.2s;
    position:relative;
}
.rec-btn:hover{
    border-color:var(--pink);
    background:rgba(255,45,149,0.15);
    box-shadow:0 0 12px rgba(255,45,149,0.2);
}
.rec-dot{
    width:14px;height:14px;
    border-radius:50%;
    background:var(--pink);
    transition:all 0.2s;
}
.rec-btn.recording{
    border-color:var(--pink);
    background:rgba(255,45,149,0.15);
    animation:rec-pulse 1.2s ease-in-out infinite;
}
.rec-btn.recording .rec-dot{
    width:12px;height:12px;
    border-radius:2px;
    background:var(--pink);
}
@keyframes rec-pulse{
    0%,100%{box-shadow:0 0 0 0 rgba(255,45,149,0.4)}
    50%{box-shadow:0 0 0 8px rgba(255,45,149,0)}
}
.rec-action-btn{
    width:30px;height:30px;
    border-radius:6px;
    border:1px solid var(--border);
    background:var(--surface2);
    color:var(--dim);
    cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    transition:all 0.15s;
}
.rec-action-btn:hover:not(:disabled){
    border-color:var(--cyan);color:var(--cyan);
}
.rec-action-btn:disabled{
    opacity:0.35;cursor:default;
}
.rec-action-normal{
    border-color:rgba(57,255,20,0.3);
    color:var(--lime);
}
.rec-action-normal:hover:not(:disabled){
    border-color:var(--lime);color:var(--lime);
    background:rgba(57,255,20,0.08);
}
.rec-action-del:hover:not(:disabled){
    border-color:var(--pink);color:var(--pink);
}
.rec-timer{
    font-size:12px;font-weight:600;
    color:var(--dim);
    font-variant-numeric:tabular-nums;
    margin-left:auto;
}
.rec-timer.active{color:var(--pink)}
.rec-waveform-canvas{
    width:100%;height:40px;
    background:rgba(0,0,0,0.2);
    border:1px solid var(--border);
    border-radius:4px;
    margin-bottom:8px;
    display:block;
}
.rec-waveform-canvas.hidden{display:none}
.rec-mode-row{
    display:flex;align-items:center;gap:8px;
}
.rec-mode-toggle{
    position:relative;display:inline-block;
    width:28px;height:16px;
}
.rec-mode-toggle input{opacity:0;width:0;height:0}
.rec-mode-label{
    font-size:11px;font-weight:500;
    color:var(--dim);
}
.rec-mode-label.active{color:var(--pink)}

/* Recording mode: dim oscillators */
.panel-left.recording-mode .osc-list{
    opacity:0.35;
    pointer-events:none;
}
.panel-left.recording-mode .panel-header{
    opacity:0.35;
    pointer-events:none;
}

/* === OSCILLATOR CARDS === */
.osc-list{
    flex:1;overflow-y:auto;
    padding:8px;
    display:flex;flex-direction:column;gap:6px;
}
.osc-card{
    background:var(--surface2);
    border:1px solid var(--border);
    border-radius:var(--radius);
    overflow:hidden;
    transition:border-color 0.2s;
}
.osc-card:hover{border-color:var(--border-hover)}
.osc-card.active{border-color:rgba(0,229,255,0.3)}
.osc-card-header{
    display:flex;align-items:center;justify-content:space-between;
    padding:8px 10px;
    background:rgba(0,0,0,0.2);
    border-bottom:1px solid var(--border);
}
.osc-card-title{
    font-size:11px;font-weight:700;
    text-transform:uppercase;letter-spacing:0.5px;
    color:var(--text);
}
.osc-card-buttons{display:flex;gap:4px}
.osc-btn{
    width:24px;height:24px;
    display:flex;align-items:center;justify-content:center;
    border-radius:4px;border:1px solid var(--border);
    background:transparent;color:var(--dim);
    font-size:10px;font-weight:700;
    cursor:pointer;transition:all 0.15s;
}
.osc-btn:hover{border-color:var(--purple);color:var(--text)}
.osc-btn.active{
    background:rgba(0,229,255,0.15);
    border-color:var(--cyan);
    color:var(--cyan);
}
.osc-btn-del{font-size:14px;line-height:1}
.osc-btn-del:hover{border-color:var(--pink);color:var(--pink)}
.osc-card-body{padding:8px 10px}

/* === PARAM ROWS === */
.param-group{display:flex;flex-direction:column;gap:6px}
.param-row{
    display:grid;
    grid-template-columns:60px 1fr 52px;
    align-items:center;gap:6px;
}
.param-row label{
    font-size:11px;font-weight:500;color:var(--dim);
    white-space:nowrap;
}
.slider-val{
    font-size:10px;font-weight:600;
    color:var(--cyan);
    text-align:right;
    font-variant-numeric:tabular-nums;
}

/* === RANGE SLIDERS === */
input[type="range"]{
    -webkit-appearance:none;appearance:none;
    width:100%;height:4px;
    background:var(--border);
    border-radius:2px;outline:none;
    cursor:pointer;
}
input[type="range"]::-webkit-slider-thumb{
    -webkit-appearance:none;appearance:none;
    width:14px;height:14px;
    border-radius:50%;
    background:linear-gradient(135deg,var(--cyan),var(--purple));
    border:2px solid var(--surface);
    box-shadow:0 0 6px rgba(0,229,255,0.3);
    cursor:pointer;
    transition:box-shadow 0.15s;
}
input[type="range"]::-webkit-slider-thumb:hover{
    box-shadow:0 0 12px rgba(0,229,255,0.5);
}
input[type="range"]::-moz-range-thumb{
    width:14px;height:14px;
    border-radius:50%;
    background:linear-gradient(135deg,var(--cyan),var(--purple));
    border:2px solid var(--surface);
    box-shadow:0 0 6px rgba(0,229,255,0.3);
    cursor:pointer;
}

/* === SELECT / INPUT === */
.field-select, select{
    width:100%;padding:4px 6px;
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:4px;
    color:var(--text);font-size:11px;
    outline:none;cursor:pointer;
}
.field-select:focus, select:focus{border-color:var(--purple)}
.field-input{
    width:100%;padding:8px 10px;
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:var(--radius);
    color:var(--text);font-size:13px;
    outline:none;margin-bottom:10px;
}
.field-input:focus{border-color:var(--purple)}
.field-label{
    display:block;font-size:11px;font-weight:600;
    color:var(--dim);margin-bottom:4px;
    text-transform:uppercase;letter-spacing:0.5px;
}

/* === VISUALIZATION === */
.viz-container{
    flex:1;display:flex;flex-direction:column;
    padding:12px;gap:8px;
    min-height:0;
    max-height:calc(100vh - 220px);
}
.viz-box{
    flex:1;position:relative;
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:var(--radius);
    overflow:hidden;
    min-height:0;
}
.viz-label{
    position:absolute;top:6px;left:10px;
    font-size:10px;font-weight:600;
    text-transform:uppercase;letter-spacing:1px;
    color:var(--dim);z-index:1;
    pointer-events:none;
}
.viz-box canvas{
    width:100%;height:100%;display:block;
}

/* === TRANSPORT BAR === */
.transport-bar{
    display:flex;align-items:center;gap:16px;
    padding:10px 16px;
    background:var(--surface);
    border-top:1px solid var(--border);
}
.transport-btn{
    width:40px;height:40px;
    display:flex;align-items:center;justify-content:center;
    border-radius:50%;border:1px solid var(--border);
    background:var(--surface2);
    color:var(--dim);cursor:pointer;
    transition:all 0.2s;
}
.transport-btn:hover{border-color:var(--purple);color:var(--text)}
.transport-play{
    background:linear-gradient(135deg,rgba(0,229,255,0.15),rgba(168,85,247,0.15));
    border-color:rgba(0,229,255,0.3);
    color:var(--cyan);
}
.transport-play:hover{
    box-shadow:0 0 16px rgba(0,229,255,0.2);
    border-color:var(--cyan);
}
.transport-play.playing{
    background:linear-gradient(135deg,rgba(57,255,20,0.15),rgba(0,229,255,0.15));
    border-color:var(--lime);
    color:var(--lime);
    box-shadow:0 0 16px rgba(57,255,20,0.2);
}
.transport-dur{
    display:flex;align-items:center;gap:8px;
}
.transport-dur label{
    font-size:11px;font-weight:600;color:var(--dim);
    text-transform:uppercase;letter-spacing:0.5px;
}
.transport-dur input[type="range"]{width:100px}
.transport-vol{
    display:flex;align-items:center;gap:8px;flex:1;
}
.transport-vol label{
    font-size:11px;font-weight:600;color:var(--dim);
    text-transform:uppercase;letter-spacing:0.5px;
}
.transport-vol input[type="range"]{max-width:180px}
.transport-loop{
    display:flex;align-items:center;gap:6px;
    font-size:11px;color:var(--dim);cursor:pointer;
    user-select:none;
}
.transport-loop input{accent-color:var(--cyan)}

/* === ADSR CANVAS === */
#canvas-adsr, #canvas-filter{
    width:100%;
    background:rgba(0,0,0,0.2);
    border:1px solid var(--border);
    border-radius:4px;
    margin-bottom:10px;
}

/* === EFFECTS PANEL === */
.effects-panel{
    position:relative;z-index:1;
    background:var(--surface);
    border-top:1px solid var(--border);
}
.effects-header{
    display:flex;align-items:center;justify-content:space-between;
    padding:10px 20px;
    cursor:pointer;
    user-select:none;
}
.effects-header h3{
    font-size:12px;font-weight:700;
    text-transform:uppercase;letter-spacing:1.5px;
    color:var(--dim);
}
.effects-chevron{
    color:var(--dim);
    transition:transform 0.25s;
}
.effects-panel.collapsed .effects-chevron{
    transform:rotate(-90deg);
}
.effects-body{
    padding:0 12px 12px;
    transition:max-height 0.3s ease,padding 0.3s ease,opacity 0.2s;
    max-height:300px;
    overflow:hidden;
    opacity:1;
}
.effects-panel.collapsed .effects-body{
    max-height:0;
    padding:0 12px;
    opacity:0;
}
.fx-cards{
    display:flex;gap:8px;
    overflow-x:auto;
}
.fx-card{
    min-width:200px;flex:1;
    background:var(--surface2);
    border:1px solid var(--border);
    border-radius:var(--radius);
    overflow:hidden;
    transition:border-color 0.2s;
}
.fx-card:hover{border-color:var(--border-hover)}
.fx-card.active{border-color:rgba(168,85,247,0.4)}
.fx-card-header{
    display:flex;align-items:center;gap:8px;
    padding:8px 10px;
    background:rgba(0,0,0,0.2);
    border-bottom:1px solid var(--border);
}
.fx-name{
    font-size:12px;font-weight:700;
    text-transform:uppercase;letter-spacing:0.5px;
    color:var(--text);
}
.fx-params{
    padding:8px 10px;
    display:flex;flex-direction:column;gap:6px;
}

/* === TOGGLE SWITCH === */
.fx-toggle{
    position:relative;display:inline-block;
    width:28px;height:16px;
}
.fx-toggle input{opacity:0;width:0;height:0}
.fx-toggle-slider{
    position:absolute;cursor:pointer;inset:0;
    background:var(--border);border-radius:16px;
    transition:0.2s;
}
.fx-toggle-slider::before{
    content:'';position:absolute;
    height:12px;width:12px;left:2px;bottom:2px;
    background:#fff;border-radius:50%;
    transition:0.2s;
}
.fx-toggle input:checked + .fx-toggle-slider{
    background:var(--cyan);
}
.fx-toggle input:checked + .fx-toggle-slider::before{
    transform:translateX(12px);
}

/* === MODALS === */
.modal{
    position:fixed;inset:0;z-index:1000;
    display:flex;align-items:center;justify-content:center;
}
.modal.hidden{display:none}
.modal-backdrop{
    position:absolute;inset:0;
    background:var(--modal-overlay);
    backdrop-filter:blur(4px);
}
.modal-content{
    position:relative;
    width:560px;max-width:92vw;max-height:80vh;
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:12px;
    overflow:hidden;
    display:flex;flex-direction:column;
}
.modal-small{width:360px}
.modal-header h3{
    font-size:16px;font-weight:700;
    background:linear-gradient(135deg,var(--cyan),var(--purple));
    -webkit-background-clip:text;-webkit-text-fill-color:transparent;
    background-clip:text;
}
.modal-close{
    width:28px;height:28px;
    display:flex;align-items:center;justify-content:center;
    border-radius:6px;border:1px solid var(--border);
    background:transparent;color:var(--dim);
    font-size:18px;cursor:pointer;
    transition:all 0.15s;
}
.modal-close:hover{border-color:var(--pink);color:var(--pink)}
.modal-body{
    padding:16px 20px;
    overflow-y:auto;flex:1;
}

/* === PRESET GRID === */
.preset-section{margin-bottom:16px}
.preset-section:last-child{margin-bottom:0}
.preset-section h4{
    font-size:11px;font-weight:700;
    text-transform:uppercase;letter-spacing:1px;
    color:var(--purple);margin-bottom:8px;
}
.preset-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(120px,1fr));
    gap:6px;
    margin-bottom:8px;
}
.preset-btn{
    padding:8px 10px;
    background:var(--surface2);
    border:1px solid var(--border);
    border-radius:6px;
    color:var(--text);font-size:12px;font-weight:500;
    cursor:pointer;transition:all 0.15s;
    text-align:left;
    position:relative;
}
.preset-btn:hover{
    border-color:var(--purple);
    background:rgba(168,85,247,0.08);
}
.preset-btn .preset-del{
    position:absolute;top:4px;right:6px;
    font-size:14px;color:var(--dim);
    opacity:0;transition:opacity 0.15s;
}
.preset-btn:hover .preset-del{opacity:1}
.preset-btn .preset-del:hover{color:var(--pink)}
.preset-save-row{
    display:flex;gap:6px;margin-top:8px;
}
.preset-save-row input{
    flex:1;padding:6px 10px;
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:6px;
    color:var(--text);font-size:12px;
    outline:none;
}
.preset-save-row input:focus{border-color:var(--purple)}

/* === EXPORT STATUS === */
.export-status{
    margin-top:10px;padding:8px 12px;
    border-radius:var(--radius);
    font-size:12px;font-weight:500;
    text-align:center;
}
.export-status.success{
    background:rgba(57,255,20,0.1);
    border:1px solid rgba(57,255,20,0.3);
    color:var(--lime);
}
.export-status.error{
    background:rgba(255,45,149,0.1);
    border:1px solid rgba(255,45,149,0.3);
    color:var(--pink);
}
.export-status.working{
    background:rgba(0,229,255,0.1);
    border:1px solid rgba(0,229,255,0.3);
    color:var(--cyan);
}

/* === RESPONSIVE === */
@media(max-width:900px){
    .app-layout{flex-direction:column;height:auto}
    .panel-left,.panel-right{width:100%;min-width:0;border:none;border-bottom:1px solid var(--border)}
    .panel-center{min-height:300px}
    .fx-cards{flex-wrap:nowrap;overflow-x:auto}
}
