Spaces:
Sleeping
Sleeping
| /* ═══════════════════════════════════════════ | |
| 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 ; border-top-right-radius:0 ; } | |
| /* ── 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; } | |
| } | |