:root {
  --bg:#08080e; --surface:#0f0f1a; --surface2:#161622;
  --border:#1e1e30; --border2:#282840;
  --accent:#a090e0; --accent2:#d4caff;
  --text:#ddd8f8; --muted:#5a5878; --muted2:#9090b0;
  --feminine:#b06878; --feminine2:#e8a8b8;
  --tts:#60a890; --tts2:#a0d8c8;
  --red:#e05060; --touch:52px; --radius:12px;
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:'Karla',sans-serif;font-weight:300;min-height:100vh;padding-bottom:56px;overflow-x:hidden}
[hidden]{display:none!important}

/* HEADER */
.app-header{padding:56px 20px 22px;text-align:center}
.app-eyebrow{font-size:0.58rem;letter-spacing:0.38em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.app-title{font-family:'Cormorant Garamond',serif;font-size:clamp(2rem,6vw,2.8rem);font-weight:300;font-style:italic;color:var(--accent2);letter-spacing:0.04em;line-height:1;margin-bottom:8px}
.app-sub{font-size:0.6rem;letter-spacing:0.28em;text-transform:uppercase;color:var(--muted)}
.app-main{max-width:700px;margin:0 auto;padding:0 14px}

/* CARD */
.card{margin-bottom:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.card-stripe{height:2px;background:linear-gradient(to right,var(--accent),transparent)}
.card-stripe.tts{background:linear-gradient(to right,var(--tts),transparent)}
.card-stripe.feminine{background:linear-gradient(to right,var(--feminine),transparent)}
.card-body{padding:18px 20px 24px}
.card-head{display:flex;align-items:center;gap:10px;margin-bottom:20px}
.step{width:22px;height:22px;border-radius:50%;border:1px solid var(--border2);display:flex;align-items:center;justify-content:center;font-size:0.58rem;color:var(--muted);flex-shrink:0}
.card-title{font-size:0.6rem;letter-spacing:0.3em;text-transform:uppercase;color:var(--muted)}

/* TABS */
.tabs{display:flex;border:1px solid var(--border2);border-radius:8px;overflow:hidden;margin-bottom:20px}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:11px 4px;background:transparent;border:none;border-right:1px solid var(--border2);color:var(--muted);font-family:'Karla',sans-serif;font-size:0.58rem;letter-spacing:0.14em;text-transform:uppercase;cursor:pointer;transition:all 0.18s;min-height:var(--touch)}
.tab:last-child{border-right:none}
.tab .tab-icon{font-size:1.1rem;line-height:1}
.tab.active{color:var(--accent2);background:rgba(160,144,224,0.1)}
.tab:hover:not(.active){background:rgba(255,255,255,0.02);color:var(--muted2)}

/* PANELS */
.panel{display:none}
.panel.active{display:block;animation:fadeUp 0.2s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}

/* TEXT */
#textInput{width:100%;min-height:108px;background:var(--surface2);border:1px solid var(--border2);border-radius:8px;color:var(--text);font-family:'Cormorant Garamond',serif;font-size:1.1rem;font-style:italic;font-weight:300;line-height:1.7;padding:13px 15px;resize:none;outline:none;transition:border-color 0.2s;-webkit-appearance:none}
#textInput:focus{border-color:var(--tts)}
#textInput::placeholder{color:var(--muted);font-style:italic}
.char-count{text-align:right;font-size:0.6rem;color:var(--muted);margin:5px 0 16px}
.voice-label{font-size:0.58rem;letter-spacing:0.25em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.voice-list{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.voice-chip{background:transparent;border:1px solid var(--border2);border-radius:6px;color:var(--muted2);padding:8px 13px;font-family:'Karla',sans-serif;font-size:0.63rem;letter-spacing:0.1em;text-transform:uppercase;cursor:pointer;min-height:36px;transition:all 0.18s}
.voice-chip.active{border-color:var(--tts);color:var(--tts2);background:rgba(96,168,144,0.1)}
.notice{font-size:0.7rem;color:var(--muted2);line-height:1.6;margin-top:12px;padding:10px 14px;background:rgba(176,104,120,0.06);border:1px solid rgba(176,104,120,0.15);border-radius:6px}

/* RECORD */
.record-zone{display:flex;flex-direction:column;align-items:center;gap:16px;padding:8px 0 4px}
.record-btn{width:84px;height:84px;border-radius:50%;border:2px solid var(--accent);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all 0.25s}
.record-inner{width:30px;height:30px;border-radius:50%;background:var(--accent);display:block;transition:all 0.25s}
.record-btn.recording{border-color:var(--red);box-shadow:0 0 28px rgba(224,80,96,0.28)}
.record-btn.recording .record-inner{background:var(--red);border-radius:6px;width:22px;height:22px;animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.35}}
.record-timer{font-family:'Cormorant Garamond',serif;font-size:2rem;font-weight:300;color:var(--muted2);letter-spacing:0.1em}
.record-timer.on{color:var(--red)}
.record-status{font-size:0.65rem;letter-spacing:0.2em;text-transform:uppercase;color:var(--muted);text-align:center}

/* UPLOAD */
.upload-zone{border:1.5px dashed var(--border2);border-radius:10px;padding:36px 20px;text-align:center;cursor:pointer;transition:all 0.2s}
.upload-zone:hover,.upload-zone.dragover{border-color:var(--accent);background:rgba(160,144,224,0.04)}
.upload-icon{font-size:2rem;margin-bottom:10px;opacity:0.3}
.upload-text{font-size:0.68rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.upload-sub{font-family:'Cormorant Garamond',serif;font-size:0.88rem;font-style:italic;color:var(--muted)}
#fileInput{display:none}

/* LOADED / WAVE */
.loaded-bar{display:flex;align-items:center;gap:10px;margin-top:12px;padding:11px 14px;background:var(--surface2);border:1px solid var(--border2);border-radius:8px}
.loaded-dot{width:7px;height:7px;border-radius:50%;background:var(--tts);box-shadow:0 0 6px var(--tts);flex-shrink:0}
.loaded-name{font-size:0.68rem;color:var(--muted2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.waveform-wrap{height:38px;background:var(--surface2);border:1px solid var(--border);border-radius:6px;overflow:hidden;margin-top:10px}
#waveCanvas{width:100%;height:100%;display:block}

/* TOGGLE */
.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:16px}
.toggle-title{font-size:0.68rem;letter-spacing:0.16em;text-transform:uppercase;color:var(--feminine2);margin-bottom:3px}
.toggle-sub{font-family:'Cormorant Garamond',serif;font-size:0.88rem;font-style:italic;color:var(--muted)}
.sw{position:relative;width:48px;height:26px;flex-shrink:0}
.sw input{opacity:0;width:0;height:0;position:absolute}
.sw-track{position:absolute;cursor:pointer;inset:0;background:var(--border2);transition:0.3s;border-radius:26px}
.sw-track::before{content:'';position:absolute;width:20px;height:20px;left:3px;bottom:3px;background:var(--muted);transition:0.3s;border-radius:50%}
.sw input:checked~.sw-track{background:rgba(176,104,120,0.3);border:1px solid var(--feminine)}
.sw input:checked~.sw-track::before{transform:translateX(22px);background:var(--feminine)}
.vt-body{margin-top:18px;padding-top:18px;border-top:1px solid var(--border)}
.vt-body.hidden{display:none}

/* PRESETS — base */
.presets{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:18px}
.preset{background:transparent;border:1px solid var(--border2);border-radius:20px;color:var(--muted2);padding:8px 16px;font-family:'Karla',sans-serif;font-size:0.63rem;letter-spacing:0.13em;text-transform:uppercase;cursor:pointer;min-height:36px;transition:all 0.18s}
.preset:hover:not(.active){color:var(--text);background:rgba(255,255,255,0.03);border-color:var(--border2)}

/* PRESETS — active states by type */
.preset-f.active{border-color:var(--feminine)!important;color:var(--feminine2)!important;background:rgba(176,104,120,0.12)!important}
.preset-w.active{border-color:var(--accent)!important;color:var(--accent2)!important;background:rgba(160,144,224,0.12)!important}
.preset-c.active{border-color:var(--tts)!important;color:var(--tts2)!important;background:rgba(96,168,144,0.12)!important}

/* SLIDERS */
.slider-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px 28px}
.slider-group{display:flex;flex-direction:column;gap:10px}
.slider-label{display:flex;justify-content:space-between;align-items:center}
.slider-name{font-size:0.63rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--muted2)}
.slider-val{font-size:0.72rem;color:var(--accent2);font-variant-numeric:tabular-nums}
.slider-val.feminine{color:var(--feminine2)}
input[type="range"]{-webkit-appearance:none;width:100%;height:3px;background:var(--border2);outline:none;border-radius:2px;cursor:pointer}
input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;background:var(--accent);border:2px solid var(--bg);box-shadow:0 0 0 1px var(--accent);cursor:pointer;transition:box-shadow 0.15s}
input[type="range"]::-webkit-slider-thumb:hover{box-shadow:0 0 0 4px rgba(160,144,224,0.2)}
input[type="range"]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--accent);border:2px solid var(--bg);cursor:pointer}
.slider-f::-webkit-slider-thumb{background:var(--feminine)!important;box-shadow:0 0 0 1px var(--feminine)!important}
.slider-f::-webkit-slider-thumb:hover{box-shadow:0 0 0 4px rgba(176,104,120,0.2)!important}
.slider-f::-moz-range-thumb{background:var(--feminine)!important}

/* BUTTONS */
.btn{width:100%;min-height:var(--touch);border-radius:8px;border:1px solid;background:transparent;font-family:'Karla',sans-serif;font-size:0.72rem;letter-spacing:0.2em;text-transform:uppercase;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all 0.2s}
.btn:disabled{opacity:0.3;cursor:not-allowed}
.btn-tts{border-color:var(--tts);color:var(--tts2);margin-top:14px}
.btn-tts:hover:not(:disabled){background:rgba(96,168,144,0.08)}
.btn-generate{border-color:var(--accent);color:var(--accent2);background:linear-gradient(135deg,rgba(160,144,224,0.08),rgba(176,104,120,0.05));font-family:'Cormorant Garamond',serif;font-size:1.15rem;font-style:italic;letter-spacing:0.06em;min-height:58px}
.btn-generate:hover:not(:disabled){background:linear-gradient(135deg,rgba(160,144,224,0.16),rgba(176,104,120,0.1));box-shadow:0 0 20px rgba(160,144,224,0.12)}
.btn-download{border-color:var(--tts);color:var(--tts2)}
.btn-download:hover{background:rgba(96,168,144,0.08)}

/* PROCESSING */
.processing-msg{text-align:center;padding:14px 0 2px;font-size:0.63rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--muted)}
.spinner{display:inline-block;width:10px;height:10px;border:1.5px solid var(--border2);border-top-color:var(--accent);border-radius:50%;animation:spin 0.8s linear infinite;margin-right:8px;vertical-align:middle}
@keyframes spin{to{transform:rotate(360deg)}}

/* PLAYBACK */
.playback-row{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.play-btn{width:50px;height:50px;border-radius:50%;border:1.5px solid var(--tts);background:transparent;cursor:pointer;color:var(--tts2);font-size:15px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all 0.2s}
.play-btn:hover{background:rgba(96,168,144,0.1);box-shadow:0 0 12px rgba(96,168,144,0.2)}
.progress-bar{flex:1;height:3px;background:var(--border2);border-radius:2px;cursor:pointer;position:relative}
.progress-fill{height:100%;background:var(--tts);border-radius:2px;width:0%;pointer-events:none}
.time-display{font-size:0.65rem;color:var(--muted);min-width:32px;text-align:right;font-variant-numeric:tabular-nums}
.tip{font-family:'Cormorant Garamond',serif;font-size:0.95rem;font-style:italic;color:var(--muted);line-height:1.8;margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}
audio{display:none}

/* RESPONSIVE */
@media(max-width:480px){
  .slider-grid{grid-template-columns:1fr}
  .card-body{padding:16px 16px 20px}
}
@media(min-width:600px){
  .card-body{padding:22px 28px 28px}
  .app-header{padding-top:64px}
}
