/* ═══════════════════════════════════════════ AI Audio Story Studio — Enhanced UI v2 ═══════════════════════════════════════════ */ /* ── Hero ── */ .studio-hero { background: linear-gradient(135deg, #4361ee 0%, #7c3aed 50%, #a855f7 100%); border-radius: var(--radius-xl); padding: 28px 32px; color: #fff; position: relative; overflow: hidden; margin-bottom: 0; } .studio-hero::before { content:''; position:absolute; top:-40%; right:-10%; width:300px; height:300px; background:radial-gradient(circle,rgba(255,255,255,.12) 0%,transparent 70%); pointer-events:none; } .studio-hero::after { content:''; position:absolute; bottom:-30%; left:10%; width:200px; height:200px; background:radial-gradient(circle,rgba(255,255,255,.08) 0%,transparent 70%); pointer-events:none; } .studio-hero h2 { font-weight:800; margin:0; position:relative; z-index:1; } .studio-hero p { margin:6px 0 0; opacity:.85; font-size:.9rem; position:relative; z-index:1; } /* ── Timeline sticky ── */ .step-timeline-wrapper { position:sticky; top:0; z-index:100; background:var(--color-bg-page); padding:16px 0 0; margin-bottom:28px; box-shadow:0 2px 12px rgba(0,0,0,.06); } .step-timeline { display:flex; align-items:center; justify-content:center; padding:12px 24px; } .step-progress-bar-track { height:3px; background:#e2e8f0; overflow:hidden; } .step-progress-bar-fill { height:100%; background:linear-gradient(90deg,#4361ee,#7c3aed); transition:width .5s cubic-bezier(.4,0,.2,1); width:0%; } /* ── Step dots ── */ .step-dot { display:flex; flex-direction:column; align-items:center; gap:6px; position:relative; z-index:2; } .step-dot .dot-circle { width:42px; height:42px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-weight:800; font-size:.95rem; background:#e2e8f0; color:#94a3b8; transition:all .4s cubic-bezier(.4,0,.2,1); border:3px solid transparent; box-shadow:0 2px 8px rgba(0,0,0,.06); } .step-dot.active .dot-circle { background:linear-gradient(135deg,#4361ee,#7c3aed); color:#fff; border-color:rgba(67,97,238,.3); box-shadow:0 4px 20px rgba(67,97,238,.35); transform:scale(1.12); } .step-dot.done .dot-circle { background:linear-gradient(135deg,#10b981,#059669); color:#fff; border-color:rgba(16,185,129,.3); box-shadow:0 4px 16px rgba(16,185,129,.3); } .step-dot .dot-label { font-size:.72rem; font-weight:700; color:#94a3b8; text-transform:uppercase; letter-spacing:.04em; white-space:nowrap; transition:color .3s; } .step-dot.active .dot-label { color:var(--color-primary); } .step-dot.done .dot-label { color:#059669; } .step-line { width:80px; height:3px; background:#e2e8f0; border-radius:2px; margin:0 -4px; margin-bottom:22px; transition:background .4s; position:relative; z-index:1; } .step-line.done { background:linear-gradient(90deg,#10b981,#34d399); } /* ── Panels ── */ .step-panel { display:none; animation:panelIn .4s ease; } .step-panel.active { display:block; } @keyframes panelIn { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:translateY(0)} } /* ── Studio Cards ── */ .studio-card { background:var(--color-bg-card); border:1px solid var(--color-border); border-radius:var(--radius-lg); box-shadow:var(--shadow-card); overflow:hidden; transition:box-shadow .2s; } .studio-card:hover { box-shadow:0 4px 24px rgba(0,0,0,.10); } .studio-card .card-header-custom { background:linear-gradient(135deg,#f8fafc,#f1f5f9); padding:16px 20px; border-bottom:1px solid var(--color-border); display:flex; align-items:center; gap:10px; } .studio-card .card-header-custom h5 { margin:0; font-weight:700; font-size:.95rem; color:var(--color-text-heading); } .studio-card .card-header-custom .header-icon { width:32px; height:32px; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:.85rem; flex-shrink:0; } .icon-purple { background:#ede9fe; color:#7c3aed; } .icon-blue { background:#dbeafe; color:#2563eb; } .icon-green { background:#d1fae5; color:#059669; } .icon-amber { background:#fef3c7; color:#d97706; } .studio-card .card-body-custom { padding:20px; } /* ── Character counter ── */ .textarea-wrapper { position:relative; } .char-counter { position:absolute; bottom:10px; right:12px; font-size:.72rem; color:#94a3b8; background:rgba(255,255,255,.9); padding:2px 6px; border-radius:4px; pointer-events:none; transition:color .2s; } .char-counter.warn { color:#d97706; } .char-counter.limit { color:#dc2626; } /* ── Config Groups ── */ .config-group { background:#f8fafc; border:1px solid #e8ecf0; border-radius:var(--radius-md); padding:14px 16px 10px; margin-bottom:14px; transition:border-color .2s; } .config-group:hover { border-color:#c7d2fe; } .config-group-title { font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#94a3b8; margin-bottom:10px; } .config-separator { border:none; border-top:1px dashed #e2e8f0; margin:10px 0; } .form-select:hover:not(:focus) { border-color:#a5b4fc; } /* ── Prompt toolbar ── */ .prompt-toolbar { display:flex; align-items:center; gap:8px; padding:8px 12px; background:#f8fafc; border:1px solid var(--color-border); border-bottom:none; border-radius:var(--radius-md) var(--radius-md) 0 0; } .prompt-toolbar .word-count-badge { margin-left:auto; font-size:.72rem; color:#64748b; background:#e2e8f0; padding:2px 8px; border-radius:50px; } .prompt-toolbar .btn-toolbar-sm { font-size:.75rem; padding:4px 10px; border-radius:6px; border:1px solid #e2e8f0; background:#fff; color:#64748b; cursor:pointer; transition:all .15s; } .prompt-toolbar .btn-toolbar-sm:hover { background:#f0f3ff; color:var(--color-primary); border-color:#c7d2fe; } .prompt-has-toolbar { border-top-left-radius:0 !important; border-top-right-radius:0 !important; } /* ── Script word count badge ── */ .script-badge { display:inline-flex; align-items:center; gap:4px; padding:3px 10px; background:#ede9fe; color:#7c3aed; border-radius:50px; font-size:.72rem; font-weight:700; } /* ── Audio dark card ── */ .audio-dark-card { background:linear-gradient(135deg,#0f172a 0%,#1e1b4b 50%,#312e81 100%); border:1px solid rgba(255,255,255,.08); border-radius:var(--radius-lg); color:#fff; position:relative; overflow:hidden; } .audio-dark-card::before { content:''; position:absolute; top:-80px; right:-60px; width:200px; height:200px; background:radial-gradient(circle,rgba(99,102,241,.2) 0%,transparent 70%); pointer-events:none; } .audio-dark-card audio { width:100%; outline:none; border-radius:8px; } /* ── Audio empty state ── */ .audio-empty-state { background:linear-gradient(135deg,#0f172a 0%,#1e1b4b 50%,#312e81 100%); border:1px solid rgba(255,255,255,.08); border-radius:var(--radius-lg); color:rgba(255,255,255,.5); padding:28px 20px; text-align:center; } .audio-empty-state .empty-icon { width:56px; height:56px; border-radius:50%; background:rgba(255,255,255,.08); display:flex; align-items:center; justify-content:center; font-size:1.5rem; margin:0 auto 12px; } .audio-empty-state p { font-size:.82rem; margin:0; color:rgba(255,255,255,.4); } /* ── Waveform ── */ .waveform { display:flex; align-items:center; justify-content:center; gap:3px; height:28px; margin:8px 0; } .waveform .bar { width:3px; border-radius:2px; background:rgba(255,255,255,.6); height:4px; transition:height .1s; } .waveform.playing .bar { animation:waveBounce 1.2s ease-in-out infinite; } .waveform .bar:nth-child(1) { animation-delay:0s; } .waveform .bar:nth-child(2) { animation-delay:.1s; } .waveform .bar:nth-child(3) { animation-delay:.2s; } .waveform .bar:nth-child(4) { animation-delay:.3s; } .waveform .bar:nth-child(5) { animation-delay:.4s; } .waveform .bar:nth-child(6) { animation-delay:.15s; } .waveform .bar:nth-child(7) { animation-delay:.25s; } .waveform .bar:nth-child(8) { animation-delay:.35s; } .waveform .bar:nth-child(9) { animation-delay:.05s; } .waveform .bar:nth-child(10) { animation-delay:.45s; } .waveform .bar:nth-child(11) { animation-delay:.18s; } .waveform .bar:nth-child(12) { animation-delay:.28s; } @keyframes waveBounce { 0%,100%{height:4px} 50%{height:22px} } /* ── Voice chips ── */ .voice-chip { display:inline-flex; align-items:center; gap:5px; padding:4px 10px; border-radius:50px; font-size:.75rem; font-weight:600; } .chip-purple { background:#ede9fe; color:#7c3aed; } .chip-emerald { background:#d1fae5; color:#059669; } /* ── Nav buttons ── */ .step-nav { display:flex; gap:10px; margin-top:20px; padding-top:16px; border-top:1px solid var(--color-border-light); } .btn-step { padding:12px 24px; border-radius:var(--radius-md); font-weight:700; font-size:.9rem; border:none; cursor:pointer; transition:all .2s; display:inline-flex; align-items:center; gap:8px; } .btn-step-primary { background:linear-gradient(135deg,#4361ee,#7c3aed); color:#fff; box-shadow:0 4px 14px rgba(67,97,238,.3); } .btn-step-primary:hover { transform:translateY(-2px); box-shadow:0 8px 24px rgba(67,97,238,.5); } .btn-step-back { background:#f1f5f9; color:#64748b; border:1px solid #e2e8f0; } .btn-step-back:hover { background:#e2e8f0; } .btn-step-green { background:linear-gradient(135deg,#059669,#10b981); color:#fff; box-shadow:0 4px 14px rgba(16,185,129,.3); } .btn-step-green:hover { transform:translateY(-2px); box-shadow:0 8px 24px rgba(16,185,129,.45); } #btnStep1 { font-size:1rem; letter-spacing:.02em; } #btnStep1:hover { animation:btnGlow 1.5s ease-in-out infinite alternate; } @keyframes btnGlow { from { box-shadow:0 4px 14px rgba(67,97,238,.35); } to { box-shadow:0 8px 32px rgba(124,58,237,.65); } } /* ── Tip box ── */ .tip-box { background:linear-gradient(135deg,#eff6ff,#dbeafe); border:1px solid #bfdbfe; border-radius:var(--radius-md); padding:14px 16px; font-size:.85rem; color:#1e40af; display:flex; gap:10px; align-items:flex-start; } .tip-box i { margin-top:2px; flex-shrink:0; } /* ── AI insight ── */ .ai-insight { background:linear-gradient(135deg,#faf5ff,#ede9fe); border:1px solid #ddd6fe; border-radius:var(--radius-md); padding:16px; } .ai-insight h6 { color:#6d28d9; font-weight:700; font-size:.82rem; margin-bottom:10px; } .ai-insight .insight-row { display:flex; align-items:center; gap:8px; margin-bottom:6px; font-size:.85rem; } .ai-insight .insight-label { color:#7c3aed; font-weight:600; min-width:90px; } .ai-insight .insight-value { color:#4c1d95; } .studio-card .ai-insight { border-radius:0; border:none; border-top:1px solid #ddd6fe; } /* ── Error slide-in ── */ #errorArea { animation:slideDown .3s ease; } @keyframes slideDown { from{opacity:0;transform:translateY(-12px)} to{opacity:1;transform:translateY(0)} } /* ── Loader enhanced ── */ .loader-overlay { display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(248,250,252,.92); backdrop-filter:blur(4px); z-index:1000; justify-content:center; align-items:center; flex-direction:column; } .loader-box { background:#fff; border-radius:var(--radius-xl); box-shadow:0 8px 40px rgba(67,97,238,.15); padding:36px 48px; text-align:center; min-width:280px; } .loader-progress-track { height:4px; background:#e2e8f0; border-radius:2px; overflow:hidden; margin-top:16px; width:100%; } .loader-progress-fill { height:100%; background:linear-gradient(90deg,#4361ee,#7c3aed); border-radius:2px; width:0%; transition:width .4s ease; } .loader-sub-text { font-size:.78rem; color:#94a3b8; margin-top:8px; } /* ── Responsive ── */ @media (max-width:768px) { .studio-hero { padding:20px 18px; } .step-dot .dot-label { display:none; } .step-dot .dot-circle { width:34px; height:34px; font-size:.85rem; } .step-line { width:40px; } .btn-step { width:100%; justify-content:center; font-size:.85rem; } .step-nav { flex-direction:column; } .prompt-toolbar { flex-wrap:wrap; gap:6px; } #btnStep1 { font-size:.9rem; } .loader-box { min-width:240px; padding:24px 28px; } }