/* ═══════════════════════════════════════════════
   AVATAR STUDIO — Design System
   ═══════════════════════════════════════════════ */

:root {
  --spire-ink: #16161C;
  --spire-paper: #F8F9FC;
  --spire-accent: #5B4FE0;
  --spire-ember: #E8A33D;
  --spire-mist: #8B93A7;
  --spire-signal: #3FB876;

  --bg: #F8F9FC;
  --bg-surface: #FFFFFF;
  --bg-elevated: #F1F3F8;
  --text-primary: #16161C;
  --text-secondary: #5a6072;
  --text-muted: #8B93A7;
  --border: #dde0e8;
  --border-focus: #5B4FE0;
  --surface-shadow: 0 1px 4px rgba(22,22,28,.06);

  --ff-display: 'Space Grotesk', sans-serif;
  --ff-body: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --ff-mono: 'IBM Plex Mono', 'SF Mono', 'Cascadia Code', monospace;

  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 18px;
  --radius-xl: 24px;

  --ease-spring: cubic-bezier(0.22, 1, 0.36, 1);
  --transition-base: 200ms var(--ease-spring);
}

/* Dark theme */
body.theme-dark,
[data-theme='dark'] body {
  --bg: #0f1112;
  --bg-surface: #16161C;
  --bg-elevated: #1c1e23;
  --text-primary: #e6eef8;
  --text-secondary: #a0aab8;
  --text-muted: #6b7280;
  --border: #2a2d35;
  --surface-shadow: 0 1px 4px rgba(0,0,0,.25);
}

/* ═══════════════════════════════════════════════
   RESET & BASE
   ═══════════════════════════════════════════════ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:var(--ff-body);
  background:var(--bg);
  color:var(--text-primary);
  min-height:100vh;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
  html{scroll-behavior:auto}
}

.av-skip-link{
  position:absolute;top:-100%;left:1rem;z-index:9999;
  padding:.75rem 1.25rem;background:var(--spire-accent);color:#fff;
  font-weight:600;font-size:.9rem;border-radius:0 0 8px 8px;text-decoration:none;transition:top .2s;
}
.av-skip-link:focus{top:0}

/* ═══════════════════════════════════════════════
   HEADER
   ═══════════════════════════════════════════════ */
.av-header{
  position:sticky;top:0;z-index:100;
  background:var(--bg-surface)/95;backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border);
  padding:0 1.5rem;
}
.av-header__inner{
  max-width:1280px;margin:0 auto;
  display:flex;align-items:center;justify-content:space-between;
  min-height:56px;gap:1rem;
}
.av-logo{
  display:flex;align-items:center;gap:.5rem;
  text-decoration:none;color:var(--text-primary);
  font-family:var(--ff-display);font-weight:700;font-size:1.05rem;
  transition:opacity var(--transition-base);
}
.av-logo:hover{opacity:.8}
.av-logo__icon{color:var(--spire-accent);font-size:1.15rem}
.av-header__nav{display:flex;align-items:center;gap:.25rem}
.av-header__tab{
  font-family:var(--ff-body);font-size:.88rem;font-weight:500;
  padding:.5rem 1rem;border:none;border-radius:var(--radius-sm);
  background:transparent;color:var(--text-secondary);cursor:pointer;
  transition:all var(--transition-base);
}
.av-header__tab:hover{background:var(--bg-elevated);color:var(--text-primary)}
.av-header__tab[aria-current="true"]{
  background:var(--spire-accent);color:#fff;font-weight:600;
}
.av-header__btn{
  display:flex;align-items:center;gap:.35rem;
  padding:.45rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);
  background:var(--bg-surface);color:var(--text-secondary);font-family:var(--ff-body);
  font-size:.82rem;cursor:pointer;transition:all var(--transition-base);
}
.av-header__btn:hover{background:var(--bg-elevated);border-color:var(--spire-accent);color:var(--text-primary)}
.av-header__btn:focus-visible{
  outline:2px solid var(--spire-accent);outline-offset:2px;
}

/* ═══════════════════════════════════════════════
   PANELS
   ═══════════════════════════════════════════════ */
.av-panel{display:none;padding:2rem 1.5rem;max-width:1280px;margin:0 auto}
.av-panel--active{display:block}

/* ═══════════════════════════════════════════════
   LIVE MODE LAYOUT
   ═══════════════════════════════════════════════ */
.av-live-layout{
  display:grid;grid-template-columns:1fr 360px;gap:1.5rem;align-items:start;
}
.av-live__viewport{display:flex;flex-direction:column;gap:1rem}
.av-live__sidebar{display:flex;flex-direction:column;gap:1rem}

/* Avatar stage */
.av-avatar-stage{
  background:var(--bg-surface);border:1px solid var(--border);
  border-radius:var(--radius-lg);overflow:hidden;
  position:relative;aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;
}
.av-avatar-placeholder{
  text-align:center;display:flex;flex-direction:column;align-items:center;gap:1rem;
}
.av-avatar-face{
  width:160px;height:200px;background:linear-gradient(135deg,var(--spire-accent),#7c6ff7);
  border-radius:50% 50% 45% 45%;position:relative;
  box-shadow:0 0 40px rgba(91,79,224,.25);
}
.av-avatar-mouth{
  position:absolute;bottom:35px;left:50%;transform:translateX(-50%);
  width:40px;height:12px;background:rgba(0,0,0,.3);
  border-radius:0 0 20px 20px;transition:height .1s,border-radius .1s;
}
.av-avatar-mouth--speaking{height:30px;border-radius:50%}
.av-avatar-label{color:var(--text-muted);font-family:var(--ff-mono);font-size:.78rem}
.av-avatar-canvas{width:100%;height:100%;object-fit:contain}
.av-live-status{
  display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;
  background:var(--bg-elevated);border-radius:var(--radius-sm);
}
.av-status-dot{
  width:10px;height:10px;border-radius:50%;background:var(--text-muted);
  flex-shrink:0;transition:background .3s;
}
.av-status-dot--live{background:var(--spire-signal);animation:av-pulse 1.5s ease infinite}
.av-status-dot--error{background:#ef4444}
@keyframes av-pulse{
  0%,100%{opacity:1}50%{opacity:.4}
}
.av-status-text{font-size:.85rem;color:var(--text-secondary)}

.av-live__controls{display:flex;gap:.75rem;flex-wrap:wrap}

/* Transcript */
.av-transcript-panel,.av-tts-panel{
  background:var(--bg-surface);border:1px solid var(--border);
  border-radius:var(--radius-md);padding:1.25rem;
}
.av-panel-title{
  font-family:var(--ff-display);font-size:1rem;font-weight:600;
  color:var(--text-primary);margin-bottom:.75rem;
}
.av-transcript-box{
  min-height:120px;max-height:300px;overflow-y:auto;
  background:var(--bg-elevated);border-radius:var(--radius-sm);padding:.75rem;
  font-size:.88rem;line-height:1.5;color:var(--text-secondary);
}
.av-transcript-placeholder{color:var(--text-muted);font-style:italic}
.av-transcript-box p{margin-bottom:.35rem}

/* TTS Selector */
.av-tts-selector{display:flex;flex-direction:column;gap:.5rem}
.av-radio-card{
  display:flex;align-items:center;gap:.65rem;padding:.65rem .85rem;
  border:1.5px solid var(--border);border-radius:var(--radius-sm);
  cursor:pointer;transition:all var(--transition-base);
}
.av-radio-card:hover{border-color:var(--spire-accent)}
.av-radio-card:has(input:checked){
  border-color:var(--spire-accent);background:rgba(91,79,224,.06);
}
.av-radio-card input[type="radio"]{accent-color:var(--spire-accent)}
.av-radio-card__content{display:flex;flex-direction:column}
.av-radio-card__content strong{font-size:.88rem;display:flex;align-items:center;gap:.35rem}
.av-radio-card__content small{font-size:.75rem;color:var(--text-muted)}
.av-tts-info{margin-top:.75rem;font-size:.82rem}
.av-voice-select-wrap{margin-top:.65rem}
.av-voice-select-label{display:block;font-size:.78rem;font-weight:500;color:var(--text-secondary);margin-bottom:.3rem}
.av-voice-select-wrap .av-input{font-size:.82rem;padding:.45rem .65rem}
.av-muted{color:var(--text-muted);font-size:.85rem;line-height:1.5}

/* Browser check */
.av-browser-check{
  background:var(--bg-surface);border:1px solid var(--border);
  border-radius:var(--radius-md);padding:1rem;
}
.av-check-title{font-family:var(--ff-display);font-size:.9rem;font-weight:600;margin-bottom:.65rem}
.av-check-list{list-style:none;display:flex;flex-direction:column;gap:.4rem}
.av-check-list li{font-size:.82rem;display:flex;align-items:center;gap:.4rem;color:var(--text-secondary)}
.av-check-list li .fa-check{color:var(--spire-signal)}
.av-check-list li .fa-xmark{color:#ef4444}
.av-check-list li .fa-triangle-exclamation{color:var(--spire-ember)}

/* ═══════════════════════════════════════════════
   STUDIO MODE LAYOUT
   ═══════════════════════════════════════════════ */
.av-studio-layout{display:flex;flex-direction:column;gap:1.5rem}
.av-section-title{
  font-family:var(--ff-display);font-size:1.5rem;font-weight:700;color:var(--text-primary);
}
.av-section-desc{color:var(--text-secondary);font-size:.95rem;margin-bottom:.5rem}

.av-timeline-toolbar{
  display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem;
}
.av-timeline-stats{display:flex;gap:1rem;flex-wrap:wrap}
.av-stat{font-family:var(--ff-mono);font-size:.82rem;color:var(--text-muted)}
.av-stat span{color:var(--text-primary);font-weight:600}

.av-timeline-canvas-wrap{
  position:relative;background:var(--bg-surface);border:1px solid var(--border);
  border-radius:var(--radius-md);min-height:140px;overflow:hidden;
}
.av-timeline-canvas{width:100%;height:140px;display:block}
.av-timeline-empty{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:.5rem;
  color:var(--text-muted);font-size:.9rem;pointer-events:none;
}
.av-timeline-empty i{font-size:2rem;opacity:.4}

/* Studio blocks */
.av-studio-blocks{display:flex;flex-direction:column;gap:.65rem}
.av-studio-block{
  background:var(--bg-surface);border:1px solid var(--border);
  border-radius:var(--radius-md);padding:.85rem 1rem;
  transition:border-color var(--transition-base);
}
.av-studio-block:hover{border-color:var(--spire-accent)}
.av-studio-block__header{
  display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;
}
.av-studio-block__number{
  font-family:var(--ff-mono);font-size:.85rem;font-weight:600;
  color:var(--spire-accent);min-width:24px;text-align:center;
}
.av-studio-block__text{flex:1;min-width:200px}
.av-studio-block__time-label{
  display:flex;align-items:center;gap:.35rem;font-size:.78rem;
  color:var(--text-muted);white-space:nowrap;
}
.av-studio-block__duration{
  font-family:var(--ff-mono);font-size:.78rem;color:var(--spire-ember);
  min-width:55px;text-align:right;
}
.av-studio-block--generating .av-studio-block__duration{color:var(--text-muted);animation:av-pulse 1s ease infinite}
.av-timeline-canvas{cursor:crosshair;touch-action:none}

.av-studio-actions{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center}

/* ═══════════════════════════════════════════════
   BUTTONS
   ═══════════════════════════════════════════════ */
.av-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.45rem;
  padding:.65rem 1.1rem;border:1.5px solid var(--border);border-radius:var(--radius-sm);
  font-size:.88rem;font-weight:500;cursor:pointer;
  font-family:var(--ff-body);text-decoration:none;text-align:center;
  transition:all var(--transition-base);min-height:42px;
  background:var(--bg-surface);color:var(--text-primary);
}
.av-btn:hover{transform:translateY(-1px)}
.av-btn:active{transform:translateY(0)}
.av-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.av-btn:focus-visible{outline:2px solid var(--spire-accent);outline-offset:2px}
.av-btn--sm{min-height:34px;padding:.35rem .7rem;font-size:.78rem}
.av-btn--lg{min-height:50px;padding:.85rem 1.5rem;font-size:.95rem}
.av-btn--primary{
  background:var(--spire-accent);color:#fff;border-color:var(--spire-accent);
  font-weight:600;box-shadow:0 2px 8px rgba(91,79,224,.25);
}
.av-btn--primary:hover{
  background:#4a3fd4;border-color:#4a3fd4;
  box-shadow:0 6px 20px rgba(91,79,224,.35);transform:translateY(-2px);
}
body.theme-dark .av-btn--primary:hover{box-shadow:0 6px 22px rgba(91,79,224,.4)}
.av-btn--outline{background:transparent;border-color:var(--border);color:var(--text-secondary)}
.av-btn--outline:hover{
  background:var(--bg-elevated);border-color:var(--spire-accent);color:var(--spire-accent);
}
.av-btn--ghost{background:transparent;border-color:transparent;color:var(--text-muted)}
.av-btn--ghost:hover{background:rgba(239,68,68,.08);color:#ef4444}

/* ═══════════════════════════════════════════════
   INPUTS
   ═══════════════════════════════════════════════ */
.av-input{
  font-family:var(--ff-body);font-size:.88rem;padding:.55rem .75rem;
  border:1.5px solid var(--border);border-radius:var(--radius-sm);
  background:var(--bg-elevated);color:var(--text-primary);
  transition:border-color var(--transition-base);width:100%;
}
.av-input:focus{outline:none;border-color:var(--spire-accent);box-shadow:0 0 0 3px rgba(91,79,224,.12)}
.av-input::placeholder{color:var(--text-muted)}
.av-input--sm{width:70px;text-align:right;font-family:var(--ff-mono);font-size:.8rem}

.av-link{
  background:none;border:none;color:var(--spire-accent);cursor:pointer;
  font-family:var(--ff-body);font-size:inherit;text-decoration:underline;
  text-underline-offset:2px;padding:0;
}
.av-link:hover{color:#4a3fd4}

/* ═══════════════════════════════════════════════
   MODAL
   ═══════════════════════════════════════════════ */
.av-modal{
  position:fixed;inset:0;z-index:200;display:none;
  align-items:center;justify-content:center;padding:1rem;
}
.av-modal--open{display:flex}
.av-modal__backdrop{
  position:absolute;inset:0;background:rgba(0,0,0,.55);
  backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
}
.av-modal__content{
  position:relative;background:var(--bg-surface);border:1px solid var(--border);
  border-radius:var(--radius-lg);max-width:560px;width:100%;
  max-height:90vh;max-height:90dvh;display:flex;flex-direction:column;
  box-shadow:0 24px 48px rgba(0,0,0,.18);
  overflow-y:auto;
}
.av-modal__header{
  display:flex;align-items:center;justify-content:space-between;gap:.75rem;
  padding:1.25rem 1.5rem;border-bottom:1px solid var(--border);flex-shrink:0;
}
.av-modal__header h2{font-family:var(--ff-display);font-size:1.15rem;font-weight:700}
.av-modal__close{
  border:1px solid var(--border);background:var(--bg-elevated);border-radius:999px;
  width:36px;height:36px;font-size:1.1rem;cursor:pointer;display:flex;
  align-items:center;justify-content:center;color:var(--text-secondary);
  transition:all var(--transition-base);
}
.av-modal__close:hover{background:var(--bg);border-color:var(--spire-accent);color:var(--text-primary)}
.av-modal__body{padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem}

/* Key fields */
.av-key-field{display:flex;flex-direction:column;gap:.5rem}
.av-key-field__label{
  font-family:var(--ff-display);font-size:.9rem;font-weight:600;
  color:var(--text-primary);display:flex;align-items:center;gap:.4rem;
}
.av-key-field__input-row{display:flex;gap:.4rem}
.av-key-field__input-row .av-input{flex:1}
.av-key-field__help{
  font-size:.78rem;display:inline-flex;align-items:center;gap:.3rem;
  color:var(--spire-accent);text-decoration:none;
}
.av-key-field__help:hover{text-decoration:underline}
.av-settings-note{
  display:flex;align-items:flex-start;gap:.5rem;
  background:rgba(91,79,224,.06);border:1px solid rgba(91,79,224,.15);
  border-radius:var(--radius-sm);padding:.75rem .85rem;font-size:.8rem;color:var(--text-secondary);
}
.av-settings-note i{color:var(--spire-accent);margin-top:2px;flex-shrink:0}
.av-settings-note code{font-family:var(--ff-mono);font-size:.75rem;background:var(--bg-elevated);padding:1px 4px;border-radius:3px}

/* ═══════════════════════════════════════════════
   RESPONSIVE
   ═══════════════════════════════════════════════ */
@media(max-width:900px){
  .av-live-layout{grid-template-columns:1fr}
  .av-avatar-stage{aspect-ratio:16/9}
  .av-studio-block__header{flex-wrap:wrap}
  .av-studio-block__text{min-width:150px}
}
@media(max-width:640px){
  .av-header__inner{flex-wrap:wrap;min-height:auto;padding:.5rem 0}
  .av-header__nav{width:100%;justify-content:center;flex-wrap:wrap;gap:.15rem}
  .av-header__tab{padding:.4rem .65rem;font-size:.78rem}
  .av-panel{padding:1rem .75rem}
  .av-live__controls{flex-direction:column}
  .av-live__controls .av-btn{width:100%}
  .av-studio-actions{flex-direction:column}
  .av-studio-actions .av-btn{width:100%}
  .av-modal__content{margin:1rem;max-height:85vh}
}