  @font-face {
    font-family: 'Poppins ExtraBold Editor';
    src: url('/fonts/Poppins-ExtraBold.ttf') format('truetype');
    font-weight: 800;
    font-display: block;
  }
  :root {
    /* emplo.ia tokens (HSL) — dark theme profissional pra video editor
       Surface hierarchy (darkest → lightest):
       Level 0 (base):     --background    ~#0f1014
       Level 1 (card):     --card          ~#181920
       Level 2 (elevated): --elevated-hsl  ~#21222d
       Level 3 (overlay):  --overlay-hsl   ~#2a2b38  */
    --background: 240 18% 7%;
    --foreground: 220 15% 90%;
    --card: 240 15% 11%;
    --elevated-hsl: 240 13% 15%;
    --overlay-hsl: 240 11% 19%;
    --primary: 263 70% 58%;
    --primary-foreground: 0 0% 100%;
    --secondary: 240 12% 16%;
    --muted-hsl: 240 10% 20%;
    --muted-fg: 240 8% 52%;
    --destructive: 0 72% 51%;
    --success-hsl: 160 84% 39%;
    --border-hsl: 240 10% 18%;
    --input: 240 10% 18%;
    --ring: 263 70% 58%;
    --radius: 0.75rem;

    --sidebar-bg: 250 22% 9%;
    --sidebar-fg: 240 12% 58%;
    --sidebar-fg-strong: 220 15% 90%;
    --sidebar-accent: 250 18% 14%;
    --sidebar-border: 250 14% 14%;
    --sidebar-primary: 263 80% 72%;

    /* Aliases de compatibilidade */
    --bg: hsl(var(--background));
    --panel: hsl(var(--card));
    --elevated: hsl(var(--elevated-hsl));
    --overlay-bg: hsl(var(--overlay-hsl));
    --border: hsl(var(--border-hsl));
    --accent: hsl(var(--primary));
    --accent-dark: hsl(263 70% 48%);
    --accent-contrast: hsl(240 18% 7%);
    --text: hsl(var(--foreground));
    --muted: hsl(var(--muted-fg));
    --success: hsl(var(--success-hsl));
    --error: hsl(var(--destructive));

    /* Primary com alpha (substitui rgba(124,58,237,...) hardcoded) */
    --primary-a05: hsla(263, 70%, 58%, 0.05);
    --primary-a10: hsla(263, 70%, 58%, 0.10);
    --primary-a15: hsla(263, 70%, 58%, 0.15);
    --primary-a25: hsla(263, 70%, 58%, 0.25);

    /* Shadow scale */
    --shadow-sm: 0 1px 3px rgba(0,0,0,0.3);
    --shadow-md: 0 4px 16px rgba(0,0,0,0.4);
    --shadow-lg: 0 8px 32px rgba(0,0,0,0.5);
    --shadow-primary: 0 4px 20px var(--primary-a15);

    /* Hook (texto sobre o video) — defaults do produto final, nao da UI */
    --hook-cor: #F5E08C;
    --hook-size: 60px;
    --hook-outline: 4px;
    --hook-pos-y: 9%;
    --hook-font: 'Poppins ExtraBold Editor', sans-serif;
  }
  * { box-sizing: border-box; margin: 0; padding: 0; }

  /* ── SVG Icon System (replaces emojis) ── */
  .icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1em;
    height: 1em;
    vertical-align: -0.125em;
    flex-shrink: 0;
  }
  .icon svg {
    width: 100%;
    height: 100%;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
  }
  .icon-lg { width: 28px; height: 28px; }
  .icon-md { width: 20px; height: 20px; }
  .icon-sm { width: 16px; height: 16px; }
  .hub-card-icon {
    font-size: 28px;
    line-height: 1;
    margin-bottom: 6px;
    color: hsl(var(--primary));
  }
  .hub-card-icon .icon { width: 28px; height: 28px; }

  /* ── Focus states (accessibility) ── */
  :focus-visible {
    outline: 2px solid hsl(var(--primary));
    outline-offset: 2px;
  }
  button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
    outline: 2px solid hsl(var(--primary));
    outline-offset: 2px;
  }

  /* ── Skip to content (accessibility) ── */
  .skip-link {
    position: absolute;
    top: -100%;
    left: 16px;
    background: hsl(var(--primary));
    color: hsl(var(--primary-foreground));
    padding: 8px 16px;
    border-radius: var(--radius);
    font-size: 14px;
    font-weight: 500;
    z-index: 9999;
    text-decoration: none;
  }
  .skip-link:focus { top: 8px; }
  h1, h2, h3, h4, h5, h6 {
    font-family: 'Lexend', 'Poppins', sans-serif;
    font-weight: 600;
  }
  body {
    font-family: 'Poppins', -apple-system, "Segoe UI", system-ui, sans-serif;
    font-weight: 400;
    background: var(--bg);
    color: var(--text);
    min-height: 100vh;
  }
  /* Layout do editor: grid 3 colunas + topbar. So aplicado quando body
     tem a classe .editor-page (editor.html). Outras paginas (hub, tipos,
     modelos) ficam com layout simples padrao. */
  body.editor-page {
    height: 100vh;
    display: grid;
    grid-template-rows: 52px 1fr;
    grid-template-columns: 280px 1fr 340px;
    grid-template-areas:
      "topbar topbar topbar"
      "leftsb center rightsb";
    overflow: hidden;
  }
  /* Layout de paginas simples (hub, tipos, modelos): topbar + conteudo */
  body.page-shell {
    display: flex;
    flex-direction: column;
  }
  body.page-shell .topbar { width: 100%; }
  body.page-shell main.page-content {
    flex: 1;
    padding: 32px;
    max-width: 1200px;
    margin: 0 auto;
    width: 100%;
  }
  body.page-shell main.page-content h1 {
    font-size: 28px;
    margin-bottom: 8px;
  }
  body.page-shell main.page-content > p.subtitle {
    color: var(--muted);
    font-size: 14px;
    margin-bottom: 28px;
  }
  /* Hub: grid de cards de funcionalidades */
  .hub-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 16px;
    margin-bottom: 40px;
  }
  .hub-card {
    display: flex;
    flex-direction: column;
    gap: 8px;
    background: hsl(var(--card));
    border: 1px solid hsl(var(--border-hsl));
    border-radius: 12px;
    padding: 20px;
    text-decoration: none;
    color: var(--text);
    transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
    cursor: pointer;
  }
  .hub-card:hover {
    border-color: hsl(var(--primary));
    transform: translateY(-2px);
    box-shadow: 0 8px 24px var(--primary-a15);
  }
  .hub-card h3 {
    font-family: 'Lexend', sans-serif;
    font-size: 16px;
    color: var(--text);
    margin: 0;
  }
  .hub-card p {
    font-size: 13px;
    color: var(--muted);
    margin: 0;
    line-height: 1.5;
  }
  .hub-card .badge {
    align-self: flex-start;
    background: var(--primary-a10);
    color: hsl(var(--primary));
    font-size: 11px;
    padding: 2px 8px;
    border-radius: 10px;
    margin-top: auto;
  }
  /* Pagina de tipos/modelos: header + lista */
  .page-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
  }
  .page-toolbar h1 { margin: 0; }
  /* Voltar pro hub */
  .back-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--muted);
    text-decoration: none;
    font-size: 13px;
    margin-bottom: 8px;
  }
  .back-link:hover { color: hsl(var(--primary)); }
  /* Topbar — dark purple emplo.ia. Logo branca da emplo.ia fica perfeita. */
  .topbar {
    grid-area: topbar;
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 0 20px;
    background: hsl(var(--sidebar-bg));
    border-bottom: 1px solid hsl(var(--sidebar-border));
    color: hsl(var(--sidebar-fg-strong));
    box-shadow: 0 1px 6px rgba(0,0,0,0.15);
  }
  .topbar .brand {
    flex-shrink: 0;
    width: 248px;
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .topbar .brand a {
    color: inherit;
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .topbar .brand img {
    height: 26px;
    object-fit: contain;
    display: block;
  }
  /* compat: caso ainda exista o texto antigo no fallback */
  .topbar .brand span { color: hsl(var(--sidebar-primary)); }
  .topbar-center {
    flex: 1;
    min-width: 0;
    text-align: center;
    font-size: 13px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: hsl(var(--sidebar-fg-strong));
  }
  .topbar-center .muted { color: hsl(var(--sidebar-fg)); opacity: 0.8; }
  #topbar-video-name { color: hsl(var(--sidebar-fg-strong)); }
  #topbar-video-name.muted { color: hsl(var(--sidebar-fg)); opacity: 0.8; }
  .topbar-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
  }
  .topbar .process-btn {
    padding: 8px 18px;
    font-size: 13px;
  }
  /* icon-btn padrao (paginas claras) */
  .icon-btn {
    background: transparent;
    color: var(--muted);
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 6px 10px;
    cursor: pointer;
    font-size: 13px;
    line-height: 1;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
  }
  .icon-btn:hover { border-color: var(--accent); color: var(--accent); }
  /* icon-btn DENTRO da topbar (dark) — fundo escuro, texto claro */
  .topbar .icon-btn {
    background: rgba(255, 255, 255, 0.08);
    color: hsl(var(--sidebar-fg-strong));
    border-color: hsl(var(--sidebar-border));
  }
  .topbar .icon-btn:hover {
    background: rgba(255, 255, 255, 0.16);
    border-color: hsl(var(--sidebar-primary));
    color: #fff;
  }
  /* Dropzone */
  .dropzone {
    border: 2px dashed var(--border);
    border-radius: 8px;
    padding: 24px 12px;
    text-align: center;
    cursor: pointer;
    transition: all 0.15s;
    color: var(--muted);
  }
  .dropzone:hover, .dropzone.drag-over {
    border-color: var(--accent);
    background: var(--primary-a05);
    color: var(--text);
  }
  .dropzone strong { color: var(--accent); }
  .dropzone.uploading {
    border-color: var(--accent);
    background: var(--primary-a10);
  }
  .dropzone.uploading::after {
    content: 'Enviando...';
    color: var(--accent);
    display: block;
    margin-top: 8px;
  }

  /* Sidebar */
  /* Sidebar esquerda — SEMPRE dark purple, mesmo no light theme.
     Padrão emplo.ia: o painel de navegacao destaca-se do conteudo claro. */
  aside.leftsb {
    grid-area: leftsb;
    background: hsl(var(--sidebar-bg));
    border-right: 1px solid hsl(var(--sidebar-border));
    color: hsl(var(--sidebar-fg));
    padding: 16px;
    overflow-y: auto;
  }
  aside.leftsb h2 {
    color: hsl(var(--sidebar-fg));
    opacity: 0.75;
  }
  /* Sidebar direita (painel de propriedades) — clara, conteudo do projeto */
  aside.rightsb {
    grid-area: rightsb;
    background: hsl(var(--background));
    border-left: 1px solid hsl(var(--border-hsl));
    padding: 16px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 14px;
  }
  aside {
    background: hsl(var(--card));
  }
  aside h2 {
    font-size: 14px;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: 12px;
    letter-spacing: 1px;
  }
  .video-list { list-style: none; display: flex; flex-direction: column; gap: 4px; }
  .vid-card {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px;
    border-radius: 6px;
    cursor: pointer;
    transition: background 0.1s;
    border: 1px solid transparent;
  }
  .vid-card:hover { background: rgba(255,255,255,0.05); }
  .vid-card.active {
    background: var(--primary-a10);
    border-color: var(--accent);
  }
  .vid-thumb {
    width: 56px;
    height: 56px;
    object-fit: cover;
    border-radius: 4px;
    background: var(--elevated);
    flex-shrink: 0;
    display: block;
  }
  .vid-thumb.loading { background: var(--elevated); }
  .vid-info {
    flex: 1;
    min-width: 0;
    overflow: hidden;
  }
  .vid-name {
    font-size: 12px;
    font-weight: 500;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .vid-card.active .vid-name { color: var(--accent); }
  .vid-meta {
    font-size: 10px;
    color: var(--muted);
    margin-top: 2px;
    font-family: monospace;
  }
  .vid-card .del-btn {
    background: transparent;
    color: var(--muted);
    border: none;
    cursor: pointer;
    font-size: 14px;
    padding: 4px 6px;
    border-radius: 4px;
    flex-shrink: 0;
    opacity: 0;
    transition: opacity 0.1s;
  }
  .vid-card:hover .del-btn { opacity: 1; }
  .vid-card .del-btn:hover { background: var(--error); color: #fff; opacity: 1; }
  /* projected duration */
  .projected-dur {
    background: var(--panel);
    border-left: 3px solid var(--accent);
    padding: 6px 12px;
    margin: 8px 0 0;
    border-radius: 0 4px 4px 0;
    font-size: 12px;
    color: var(--muted);
  }
  .projected-dur strong { color: var(--accent); }
  .video-list .empty {
    color: var(--muted);
    font-style: italic;
    font-size: 12px;
    padding: 10px;
  }
  .refresh-btn {
    width: 100%;
    padding: 8px;
    background: transparent;
    color: var(--muted);
    border: 1px solid var(--border);
    border-radius: 6px;
    cursor: pointer;
    font-size: 12px;
    margin-top: 12px;
  }
  .refresh-btn:hover { color: var(--text); border-color: var(--accent); }

  /* === SIDEBAR ESQUERDA (dark) — overrides emplo.ia === */
  aside.leftsb .vid-card:hover { background: rgba(255,255,255,0.06); }
  aside.leftsb .vid-card.active {
    background: rgba(255, 255, 255, 0.10);
    border-color: hsl(var(--sidebar-primary));
  }
  aside.leftsb .vid-name { color: hsl(var(--sidebar-fg-strong)); }
  aside.leftsb .vid-card.active .vid-name { color: hsl(var(--sidebar-primary)); }
  aside.leftsb .vid-meta { color: hsl(var(--sidebar-fg)); opacity: 0.7; }
  aside.leftsb .vid-thumb,
  aside.leftsb .vid-thumb.loading { background: hsl(var(--sidebar-accent)); }
  aside.leftsb .audio-name { color: hsl(var(--sidebar-fg-strong)); }
  aside.leftsb .audio-card.active .audio-name { color: hsl(var(--sidebar-primary)); }
  aside.leftsb .audio-meta { color: hsl(var(--sidebar-fg)); opacity: 0.7; }
  aside.leftsb .audio-card:hover { background: rgba(255,255,255,0.06); }
  aside.leftsb .audio-card.active {
    background: rgba(255, 255, 255, 0.10);
    border-color: hsl(var(--sidebar-primary));
  }
  aside.leftsb .audio-icon {
    background: hsl(var(--sidebar-accent));
    color: hsl(var(--sidebar-primary));
  }
  aside.leftsb .dropzone {
    border-color: hsl(var(--sidebar-border));
    color: hsl(var(--sidebar-fg));
    background: transparent;
  }
  aside.leftsb .dropzone strong { color: hsl(var(--sidebar-primary)); }
  aside.leftsb .dropzone:hover, aside.leftsb .dropzone.drag-over {
    border-color: hsl(var(--sidebar-primary));
    background: rgba(255,255,255,0.04);
    color: hsl(var(--sidebar-fg-strong));
  }
  aside.leftsb .refresh-btn {
    color: hsl(var(--sidebar-fg));
    border-color: hsl(var(--sidebar-border));
    background: transparent;
  }
  aside.leftsb .refresh-btn:hover {
    color: hsl(var(--sidebar-fg-strong));
    border-color: hsl(var(--sidebar-primary));
  }
  aside.leftsb .video-list .empty,
  aside.leftsb .audio-list .empty { color: hsl(var(--sidebar-fg)); opacity: 0.7; }

  /* Main */
  main.center {
    grid-area: center;
    padding: 20px 24px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 16px;
  }
  /* editor interno: ainda em flex column */
  #editor {
    display: none;
    flex-direction: column;
    gap: 14px;
  }
  #editor.active { display: flex; }
  /* Bloco da timeline com toolbar */
  .timeline-block {
    background: var(--panel);
    border-radius: 8px;
    padding: 14px;
    display: flex;
    flex-direction: column;
    gap: 10px;
  }
  .toolbar-spacer { flex: 1; }
  .adv-section {
    margin-top: 4px;
    border-top: 1px solid var(--border);
    padding-top: 8px;
  }
  .adv-section summary {
    cursor: pointer;
    font-size: 11px;
    color: var(--muted);
    user-select: none;
    padding: 4px 0;
  }
  .adv-section summary:hover { color: var(--accent); }
  .adv-section[open] summary { color: var(--accent); }
  /* Blocos de camadas (textos e musica) */
  .layer-block {
    background: var(--panel);
    border-radius: 8px;
    padding: 14px;
    display: flex;
    flex-direction: column;
    gap: 10px;
  }
  .layer-block-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  .layer-block-header h3 {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--muted);
  }
  /* Painel de propriedades a direita */
  .props-section {
    background: hsl(var(--card));
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 10px;
  }
  .props-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
  .props-header h3 {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--accent);
  }
  .props-close {
    background: transparent;
    color: var(--muted);
    border: none;
    cursor: pointer;
    font-size: 14px;
    padding: 2px 6px;
    border-radius: 4px;
  }
  .props-close:hover { background: var(--error); color: #fff; }
  .props-body {
    display: flex;
    flex-direction: column;
    gap: 10px;
  }
  .props-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
  }
  .props-field > label {
    font-size: 10px;
    text-transform: uppercase;
    color: var(--muted);
    letter-spacing: 0.5px;
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
  .props-field input[type="text"],
  .props-field input[type="number"],
  .props-field select {
    background: var(--elevated);
    border: 1px solid var(--border);
    color: var(--text);
    padding: 6px 8px;
    border-radius: 4px;
    font-size: 13px;
    font-family: inherit;
  }
  .props-field input[type="color"] {
    width: 100%;
    height: 32px;
    background: var(--elevated);
    border: 1px solid var(--border);
    border-radius: 4px;
    cursor: pointer;
    padding: 2px;
  }
  .props-field input[type="range"] {
    width: 100%;
    accent-color: var(--accent);
    -webkit-appearance: none;
    appearance: none;
    height: 6px;
    background: hsl(var(--muted-hsl));
    border-radius: 3px;
    outline: none;
    cursor: pointer;
  }
  .props-field input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: hsl(var(--primary));
    border: 2px solid #fff;
    box-shadow: 0 1px 4px rgba(0,0,0,0.25);
    cursor: grab;
    transition: transform 0.1s;
  }
  .props-field input[type="range"]::-webkit-slider-thumb:hover { transform: scale(1.15); }
  .props-field input[type="range"]:active::-webkit-slider-thumb { cursor: grabbing; transform: scale(1.2); }
  .props-field input[type="range"]::-moz-range-thumb {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: hsl(var(--primary));
    border: 2px solid #fff;
    box-shadow: 0 1px 4px rgba(0,0,0,0.25);
    cursor: grab;
  }
  .props-grid-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }
  .props-row {
    display: flex;
    align-items: center;
    gap: 6px;
  }
  .props-row input[type="color"] {
    width: 36px;
    height: 30px;
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: 1px;
    background: transparent;
    cursor: pointer;
    flex-shrink: 0;
  }
  .props-row input[type="text"] {
    flex: 1;
    min-width: 0;
  }
  /* Painel direito agora aceita selects também */
  #props-badge-body select {
    width: 100%;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 5px;
    padding: 7px 8px;
    color: var(--text);
    font-family: inherit;
    font-size: 13px;
  }
  #props-badge-body input[type="number"],
  #props-badge-body input[type="text"] {
    width: 100%;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 5px;
    padding: 7px 8px;
    color: var(--text);
    font-family: inherit;
    font-size: 13px;
    outline: none;
  }
  #props-badge-body input:focus { border-color: hsl(var(--primary)); }
  .value-badge {
    color: var(--accent);
    font-family: monospace;
    font-size: 11px;
    text-transform: none;
    font-weight: 600;
  }
  .props-field small { font-size: 10px; color: var(--muted); }
  /* Modal de atalhos */
  .modal-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.7);
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .modal-card {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 20px;
    max-width: calc(100vw - 32px);
    max-height: 80vh;
    overflow-y: auto;
    box-shadow: 0 10px 60px rgba(0, 0, 0, 0.6);
  }
  .modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 14px;
  }
  .modal-header h3 {
    font-size: 16px;
    color: var(--text);
  }
  .modal-body { color: var(--text); }
  .atalhos-table {
    width: 100%;
    border-collapse: collapse;
  }
  .atalhos-table td {
    padding: 8px 4px;
    border-bottom: 1px solid var(--border);
    font-size: 13px;
  }
  .atalhos-table tr:last-child td { border-bottom: none; }
  .atalhos-table td:first-child { width: 40%; }
  .atalhos-table kbd {
    background: var(--border);
    padding: 2px 6px;
    border-radius: 3px;
    font-family: monospace;
    font-size: 11px;
    color: var(--text);
  }
  /* Grid de modelos */
  .modelos-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
    max-height: 60vh;
    overflow-y: auto;
  }
  .modelos-grid .empty {
    grid-column: 1 / -1;
    text-align: center;
    color: var(--muted);
    font-style: italic;
    padding: 24px;
  }
  .modelo-card {
    background: hsl(var(--card));
    border: 1px solid hsl(var(--border-hsl));
    border-radius: 8px;
    padding: 12px;
    cursor: pointer;
    transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  .modelo-card:hover {
    border-color: hsl(var(--primary));
    transform: translateY(-1px);
    box-shadow: 0 6px 16px var(--primary-a10);
  }
  .modelo-card h4 {
    font-family: 'Lexend', sans-serif;
    font-size: 14px;
    color: hsl(var(--foreground));
    margin: 0;
  }
  .modelo-card .desc {
    font-size: 11px;
    color: var(--muted);
    min-height: 14px;
  }
  .modelo-card .tags {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
    margin-top: 4px;
  }
  .modelo-card .tag {
    background: var(--primary-a10);
    color: hsl(var(--primary));
    font-size: 10px;
    padding: 2px 6px;
    border-radius: 10px;
    font-family: monospace;
  }
  .modelo-card .actions {
    display: flex;
    gap: 6px;
    margin-top: 8px;
    border-top: 1px solid hsl(var(--border-hsl));
    padding-top: 8px;
  }
  .modelo-card .actions button {
    flex: 1;
    background: transparent;
    border: 1px solid hsl(var(--border-hsl));
    color: var(--text);
    padding: 4px 8px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 11px;
  }
  .modelo-card .actions button.primary {
    background: hsl(var(--primary));
    color: hsl(var(--primary-foreground));
    border-color: hsl(var(--primary));
  }
  .modelo-card .actions button.primary:hover { background: hsl(270 60% 45%); }
  .modelo-card .actions button.danger:hover { background: var(--error); color: #fff; border-color: var(--error); }
  /* Banner de sugestao da IA */
  .ia-suggestion {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 16px;
    background: hsl(var(--card));
    border: 1px solid hsl(var(--primary));
    border-left: 4px solid hsl(var(--primary));
    border-radius: 8px;
    box-shadow: 0 4px 16px var(--primary-a10);
    animation: fade-in 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  }
  .ia-suggestion.ia-loading {
    border-style: dashed;
    opacity: 0.85;
  }
  @keyframes fade-in {
    from { opacity: 0; transform: translateY(-6px); }
    to { opacity: 1; transform: translateY(0); }
  }
  .ia-suggestion .ia-icon {
    font-size: 24px;
    line-height: 1;
    flex-shrink: 0;
  }
  .ia-suggestion .ia-body {
    flex: 1;
    min-width: 0;
  }
  .ia-suggestion .ia-title {
    font-family: 'Lexend', sans-serif;
    font-size: 14px;
    font-weight: 500;
    color: hsl(var(--foreground));
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
  }
  .ia-suggestion .ia-title strong {
    color: hsl(var(--primary));
    font-weight: 700;
  }
  .ia-suggestion .ia-badge {
    background: var(--primary-a10);
    color: hsl(var(--primary));
    font-size: 10px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 10px;
    font-family: monospace;
  }
  .ia-suggestion .ia-reason {
    font-size: 12px;
    color: var(--muted);
    margin-top: 3px;
    line-height: 1.4;
  }
  .ia-suggestion .ia-actions {
    display: flex;
    gap: 6px;
    flex-shrink: 0;
    align-items: center;
  }
  .ia-suggestion .process-btn {
    padding: 6px 14px;
    font-size: 12px;
  }
  /* Opções do modal de render */
  .render-opts {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }
  .render-opt {
    text-align: left;
    background: hsl(var(--card));
    border: 1px solid hsl(var(--border-hsl));
    border-radius: 6px;
    padding: 12px 14px;
    cursor: pointer;
    transition: all 0.15s;
    color: var(--text);
    font-family: inherit;
  }
  .render-opt:hover {
    border-color: hsl(var(--primary));
    background: var(--primary-a05);
  }
  .render-opt.primary {
    border-color: hsl(var(--primary));
    background: hsl(var(--primary));
    color: hsl(var(--primary-foreground));
  }
  .render-opt.primary:hover { background: hsl(270 60% 48%); }
  .render-opt-titulo {
    font-family: 'Lexend', sans-serif;
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 3px;
  }
  .render-opt-sub {
    font-size: 11px;
    opacity: 0.75;
  }
  .placeholder {
    margin: auto;
    color: var(--muted);
    font-size: 16px;
    text-align: center;
  }
  .placeholder code {
    background: var(--panel);
    padding: 2px 8px;
    border-radius: 4px;
    color: var(--accent);
  }

  /* Video player */
  .player-wrap {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    background: black;
    border-radius: 8px;
    overflow: hidden;
    height: 50vh;
    min-height: 360px;
    flex-shrink: 0;
  }
  video {
    max-height: 100%;
    max-width: 100%;
    height: 100%;
    width: auto;
    display: block;
    background: #000;
  }
  /* Overlay do hook sobre o video — match 9:16 */
  .hook-overlay {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    height: 100%;
    aspect-ratio: 9 / 16;
    pointer-events: none;
    overflow: hidden;
  }
  .hook-text {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    width: 88%;
    text-align: center;
    font-weight: 800;
    line-height: 1.10;
    letter-spacing: 0.01em;
    paint-order: stroke fill;
    user-select: none;
    transition: opacity 0.15s;
  }
  .hook-text .linha {
    white-space: nowrap;
    overflow: visible;
  }
  .hook-text.pos-topo { top: var(--top, 9%); }
  .hook-text.pos-centro { top: 50%; transform: translate(-50%, -50%); }
  .hook-text.pos-rodape { bottom: var(--bottom, 9%); top: auto; }
  .hook-text.pos-custom { top: var(--top, 9%); }
  .hook-text.hidden { opacity: 0; }

  /* Timeline */
  .timeline {
    position: relative;
    background: var(--panel);
    border-radius: 8px;
    padding: 16px;
  }
  .track-wrap {
    position: relative;
    height: 44px;
    background: hsl(270 25% 18%);  /* dark slate roxado — convencao de editor de video */
    border: 1px solid hsl(var(--border-hsl));
    border-radius: 6px;
    margin: 12px 0;
    overflow: hidden;
  }
  .waveform-bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: fill;
    pointer-events: none;
    opacity: 0.95;
    z-index: 0;
    background: hsl(270 25% 18%);
  }
  /* Tiles da waveform no modo final: usam o mesmo fundo dark da track-wrap */
  .wave-tile { background: hsl(270 25% 18%); }
  .waveform-bg.empty { display: none; }
  .track-active {
    position: absolute;
    top: 0;
    bottom: 0;
    background: var(--primary-a25);
    border-left: 3px solid var(--accent);
    border-right: 3px solid var(--accent);
    pointer-events: none;
  }
  .playhead {
    position: absolute;
    top: -8px;
    bottom: -8px;
    width: 2px;
    background: #fff;
    box-shadow: 0 0 6px rgba(255,255,255,0.6);
    pointer-events: none;
    transform: translateX(-1px);
    z-index: 4;
  }
  .playhead::before {
    content: '';
    position: absolute;
    top: -4px;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 0;
    border-left: 7px solid transparent;
    border-right: 7px solid transparent;
    border-top: 8px solid #fff;
    filter: drop-shadow(0 0 4px rgba(255,255,255,0.5));
  }
  .track-wrap { cursor: ew-resize; }
  .track-wrap.scrubbing { cursor: grabbing; }
  /* Linha de hover (preview do cursor antes do click) */
  .hover-line {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 1px;
    background: rgba(255, 255, 255, 0.45);
    pointer-events: none;
    z-index: 3;
    transform: translateX(-0.5px);
    display: none;
    box-shadow: 0 0 4px rgba(255, 255, 255, 0.3);
  }
  .track-wrap:hover .hover-line { display: block; }
  /* Time tooltip no hover */
  .hover-tip {
    position: absolute;
    top: -22px;
    transform: translateX(-50%);
    background: hsl(var(--foreground));
    color: hsl(var(--card));
    font-family: monospace;
    font-size: 10px;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 3px;
    pointer-events: none;
    z-index: 5;
    white-space: nowrap;
    display: none;
  }
  .track-wrap:hover .hover-tip { display: block; }
  .time-display {
    text-align: center;
    font-family: monospace;
    font-size: 13px;
    color: var(--muted);
    margin-bottom: 4px;
  }
  .time-display .cur { color: var(--accent); font-weight: 600; }
  .handle {
    position: absolute;
    top: -8px;
    bottom: -8px;
    width: 14px;
    background: var(--accent);
    border: 2px solid #000;
    border-radius: 3px;
    cursor: ew-resize;
    transform: translateX(-7px);
    z-index: 2;
  }
  .handle:hover { background: #fff; }
  .handle.left::after, .handle.right::after {
    content: '';
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 2px;
    height: 16px;
    background: rgba(0,0,0,0.4);
  }
  /* Split markers na timeline */
  .split-marker {
    position: absolute;
    top: -6px;
    bottom: -6px;
    width: 2px;
    background: #ff7676;
    z-index: 2;
    pointer-events: none;
  }
  /* Toolbar */
  .editor-toolbar {
    display: flex;
    gap: 8px;
    margin-top: 12px;
    align-items: center;
    flex-wrap: wrap;
  }
  .tool-btn {
    background: var(--border);
    color: var(--text);
    border: none;
    padding: 8px 14px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 13px;
    font-weight: 500;
    display: inline-flex;
    align-items: center;
    gap: 6px;
  }
  .tool-btn:hover { background: var(--accent); color: var(--accent-contrast); }
  .tool-btn.danger:hover { background: var(--error); color: #fff; }
  .tool-btn.active {
    background: var(--accent);
    color: var(--accent-contrast);
    font-weight: 600;
  }
  .tool-btn.cta {
    background: var(--accent);
    color: var(--accent-contrast);
    font-weight: 600;
  }
  .tool-btn.cta:hover { background: #fff; }
  /* Faixas de silencio sugerido sobre a timeline */
  .silencios-layer {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 3;  /* acima do waveform (0), track-active (default) e splits (2), abaixo do playhead (4) */
  }
  .silencio-strip {
    position: absolute;
    top: -2px;
    bottom: -2px;
    background: rgba(239, 68, 68, 0.42);
    border-left: 3px solid #ef4444;
    border-right: 3px solid #ef4444;
    pointer-events: none;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5) inset, 0 0 6px rgba(239, 68, 68, 0.5);
    overflow: hidden;
    min-width: 6px;
  }
  .silencio-strip::after {
    content: '✂';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    color: #fff;
    font-size: 13px;
    font-weight: bold;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8);
    line-height: 1;
  }
  .silencio-strip.curto::after { content: ''; }  /* muito estreito, sem icone */
  .tool-btn kbd {
    background: rgba(0,0,0,0.4);
    color: rgba(255,255,255,0.7);
    padding: 1px 6px;
    border-radius: 3px;
    font-size: 10px;
    font-family: monospace;
  }
  .tool-btn:hover kbd { background: rgba(0,0,0,0.2); color: rgba(0,0,0,0.6); }
  /* Segmentos */
  .segments-track {
    margin-top: 16px;
    display: flex;
    gap: 2px;
    background: hsl(270 25% 18%);
    border: 1px solid hsl(var(--border-hsl));
    border-radius: 6px;
    overflow: hidden;
    min-height: 48px;
  }
  .segment {
    background: linear-gradient(180deg, #3a78c2 0%, #2a5a96 100%);
    color: white;
    padding: 6px 8px;
    font-size: 11px;
    font-family: monospace;
    cursor: pointer;
    transition: all 0.1s;
    display: flex;
    align-items: center;
    justify-content: center;
    text-shadow: 0 1px 2px rgba(0,0,0,0.4);
    border: 2px solid transparent;
    box-sizing: border-box;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    min-width: 40px;
  }
  .segment:hover { filter: brightness(1.2); }
  .segment.selected {
    border-color: var(--accent);
    box-shadow: 0 0 0 2px var(--accent);
  }
  .segment.deleted {
    background: linear-gradient(180deg, #5a2a2a 0%, #3a1414 100%);
    color: #888;
    text-decoration: line-through;
    cursor: pointer;
    opacity: 0.5;
  }
  .segment.deleted:hover { opacity: 0.7; }
  /* Divisor de corte: substitui o segmento deletado, mostrando que kept se juntam */
  .segment-divider {
    flex: 0 0 10px;
    background: var(--error);
    cursor: pointer;
    position: relative;
    transition: flex 0.1s, background 0.1s;
  }
  .segment-divider:hover {
    flex: 0 0 14px;
    background: #ff8a8a;
  }
  .segment-divider::after {
    content: '✕';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    color: white;
    font-size: 11px;
    font-weight: bold;
    text-shadow: 0 1px 1px rgba(0,0,0,0.4);
    pointer-events: none;
  }
  .hint-row {
    margin-top: 8px;
    font-size: 11px;
    color: var(--muted);
  }
  .hint-row kbd {
    background: var(--border);
    padding: 1px 6px;
    border-radius: 3px;
    font-family: monospace;
    color: var(--text);
  }
  /* Toast */
  .toast {
    position: fixed;
    bottom: 24px;
    left: 50%;
    transform: translateX(-50%) translateY(20px);
    background: var(--panel);
    color: var(--text);
    border: 1px solid var(--border);
    padding: 12px 20px;
    border-radius: 8px;
    font-size: 13px;
    line-height: 1.4;
    max-width: min(640px, 90vw);
    text-align: center;
    opacity: 0;
    transition: all 0.2s;
    pointer-events: none;
    z-index: 1000;
    box-shadow: 0 8px 24px rgba(0,0,0,0.18);
  }
  .toast.show { opacity: 1; transform: translateX(-50%) translateY(0); pointer-events: auto; }
  .toast.success { border-color: var(--success); color: var(--success); }
  .toast.error { border-color: var(--error); color: var(--error); }
  .time-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin-top: 8px;
    font-size: 13px;
  }
  .time-input {
    display: flex;
    align-items: center;
    gap: 6px;
  }
  .time-input label {
    color: var(--muted);
    font-size: 11px;
    text-transform: uppercase;
  }
  .time-input input {
    width: 80px;
    background: var(--elevated);
    border: 1px solid var(--border);
    color: var(--text);
    padding: 6px 8px;
    border-radius: 4px;
    font-family: monospace;
    text-align: right;
  }
  .set-btn {
    background: var(--border);
    color: var(--text);
    border: none;
    padding: 6px 12px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 12px;
  }
  .set-btn:hover { background: var(--accent); color: var(--accent-contrast); }

  /* Painel de textos */
  .hook-panel {
    background: var(--panel);
    border-radius: 8px;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
  .hook-panel-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
  }
  .hook-panel-header h3 {
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--muted);
  }
  .add-text-btn {
    background: var(--accent);
    color: var(--accent-contrast);
    border: none;
    border-radius: 4px;
    padding: 6px 14px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
  }
  .add-text-btn:hover { background: #fff; }
  .textos-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }
  .texto-card {
    background: hsl(var(--card));
    border: 1px solid var(--border);
    border-radius: 6px;
    overflow: hidden;
  }
  .texto-card.expanded,
  .texto-card.selected { border-color: var(--accent); background: var(--primary-a05); }
  .texto-header {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    cursor: pointer;
    user-select: none;
  }
  .texto-header:hover { background: rgba(255,255,255,0.02); }
  .texto-caret {
    color: var(--muted);
    font-size: 12px;
    width: 12px;
    flex-shrink: 0;
    transition: transform 0.15s;
  }
  .texto-card.expanded .texto-caret { transform: rotate(90deg); color: var(--accent); }
  .texto-summary {
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 10px;
    overflow: hidden;
  }
  .texto-summary .resumo-texto {
    font-size: 13px;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    flex: 1;
  }
  .texto-summary .resumo-texto.empty { color: var(--muted); font-style: italic; }
  .texto-summary .resumo-meta {
    font-size: 11px;
    color: var(--muted);
    font-family: monospace;
    flex-shrink: 0;
  }
  .texto-del {
    background: transparent;
    color: var(--muted);
    border: none;
    font-size: 14px;
    padding: 4px 8px;
    border-radius: 4px;
    cursor: pointer;
    flex-shrink: 0;
  }
  .texto-del:hover { background: var(--error); color: #fff; }
  .texto-body {
    padding: 12px;
    border-top: 1px solid var(--border);
    display: none;
    flex-direction: column;
    gap: 10px;
  }
  .texto-card.expanded .texto-body { display: flex; }
  .texto-input {
    width: 100%;
    background: var(--elevated);
    border: 1px solid var(--border);
    color: var(--text);
    padding: 10px 12px;
    border-radius: 6px;
    font-size: 15px;
    font-family: inherit;
  }
  .texto-input:focus {
    outline: none;
    border-color: var(--accent);
  }
  .tempo-row {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    font-size: 12px;
    color: var(--muted);
  }
  .tempo-row .num {
    width: 70px;
    background: var(--elevated);
    border: 1px solid var(--border);
    color: var(--text);
    padding: 6px 8px;
    border-radius: 4px;
    font-family: monospace;
    text-align: right;
  }
  .tempo-row label.check {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    color: var(--text);
    font-size: 12px;
  }
  .pos-row {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    font-size: 12px;
    color: var(--muted);
  }
  .pos-row label {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    cursor: pointer;
    color: var(--text);
  }
  .pos-row .custom-range {
    display: inline-flex;
    align-items: center;
    gap: 6px;
  }
  .pos-row .custom-range input[type="range"] {
    width: 100px;
    accent-color: var(--accent);
  }
  .pos-row .custom-range span {
    font-family: monospace;
    font-size: 11px;
    color: var(--accent);
    min-width: 28px;
  }
  .estilo-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 10px 14px;
  }
  .estilo-row .ctrl {
    display: flex;
    flex-direction: column;
    gap: 4px;
  }
  .estilo-row .ctrl label {
    font-size: 10px;
    text-transform: uppercase;
    color: var(--muted);
    letter-spacing: 0.5px;
  }
  .estilo-row .ctrl input[type="number"],
  .estilo-row .ctrl select {
    background: var(--elevated);
    border: 1px solid var(--border);
    color: var(--text);
    padding: 6px 8px;
    border-radius: 4px;
    font-size: 13px;
    font-family: inherit;
  }
  .estilo-row .ctrl input[type="color"] {
    width: 100%;
    height: 32px;
    background: var(--elevated);
    border: 1px solid var(--border);
    border-radius: 4px;
    cursor: pointer;
    padding: 2px;
  }
  .estilo-row .ctrl input[type="range"] { width: 100%; accent-color: var(--accent); }
  .estilo-row .ctrl .range-row {
    display: flex; align-items: center; gap: 6px;
  }
  .estilo-row .ctrl .range-row span {
    font-family: monospace; font-size: 11px; color: var(--accent); min-width: 32px; text-align: right;
  }
  .estilo-row .ctrl small { font-size: 10px; color: var(--muted); }

  /* Biblioteca de musicas (sidebar) */
  .audio-list { list-style: none; display: flex; flex-direction: column; gap: 4px; }
  .audio-card {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px;
    border-radius: 6px;
    cursor: pointer;
    transition: background 0.1s;
    border: 1px solid transparent;
  }
  .audio-card:hover { background: rgba(255,255,255,0.05); }
  .audio-card.active {
    background: var(--primary-a10);
    border-color: var(--accent);
  }
  .audio-icon {
    width: 32px;
    height: 32px;
    border-radius: 4px;
    background: var(--primary-a15);
    color: var(--accent);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 14px;
  }
  .audio-info { flex: 1; min-width: 0; overflow: hidden; }
  .audio-name {
    font-size: 12px;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .audio-card.active .audio-name { color: var(--accent); font-weight: 500; }
  .audio-meta {
    font-size: 10px;
    color: var(--muted);
    margin-top: 2px;
    font-family: monospace;
  }
  .audio-card .audio-actions {
    display: flex;
    gap: 2px;
    flex-shrink: 0;
    opacity: 0;
    transition: opacity 0.1s;
  }
  .audio-card:hover .audio-actions { opacity: 1; }
  .audio-card .audio-actions button {
    background: transparent;
    color: var(--muted);
    border: none;
    cursor: pointer;
    font-size: 13px;
    padding: 4px 6px;
    border-radius: 4px;
  }
  .audio-card .audio-actions .play-btn:hover { background: var(--accent); color: var(--accent-contrast); }
  .audio-card .audio-actions .del-btn-audio:hover { background: var(--error); color: #fff; }

  /* Painel de musica no editor */
  .musica-panel {
    background: var(--panel);
    border-radius: 8px;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
  .musica-panel-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  .musica-panel-header h3 {
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--muted);
  }
  .musica-panel-header .musica-current {
    font-size: 13px;
    color: var(--accent);
    font-weight: 500;
  }
  .musica-panel-header .musica-current.empty { color: var(--muted); font-style: italic; font-weight: normal; }
  /* Timeline da musica (escala = duracao final) */
  .musica-track-wrap {
    position: relative;
    height: 40px;
    background: hsl(270 25% 18%);
    border-radius: 6px;
    border: 1px solid hsl(var(--border-hsl));
    overflow: hidden;
  }
  .musica-track-wrap.empty::after {
    content: 'Sem música. Selecione uma da biblioteca à esquerda.';
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--muted);
    font-size: 12px;
    pointer-events: none;
  }
  .musica-block {
    position: absolute;
    top: 4px;
    bottom: 4px;
    background: linear-gradient(180deg, #5a4a8c 0%, #3a2a6c 100%);
    border: 1px solid var(--accent);
    border-radius: 4px;
    cursor: move;
    display: flex;
    align-items: center;
    padding: 0 8px;
    gap: 6px;
    color: white;
    font-size: 11px;
    user-select: none;
    overflow: hidden;
    min-width: 30px;
  }
  .musica-block .nome {
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    pointer-events: none;
  }
  .musica-block .resize-handle {
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    width: 8px;
    cursor: ew-resize;
    background: rgba(255,255,255,0.15);
  }
  .musica-block .resize-handle:hover { background: rgba(255,255,255,0.35); }
  .musica-controls {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px 14px;
  }
  .musica-controls .ctrl {
    display: flex;
    flex-direction: column;
    gap: 4px;
  }
  .musica-controls .ctrl label {
    font-size: 10px;
    text-transform: uppercase;
    color: var(--muted);
    letter-spacing: 0.5px;
  }
  .musica-controls .ctrl input[type="range"] { width: 100%; accent-color: var(--accent); }
  .musica-controls .ctrl .range-row {
    display: flex; align-items: center; gap: 6px;
  }
  .musica-controls .ctrl .range-row span {
    font-family: monospace; font-size: 11px; color: var(--accent); min-width: 36px; text-align: right;
  }
  .musica-controls .ctrl .mute-btn {
    background: var(--border);
    color: var(--text);
    border: none;
    padding: 4px 10px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 11px;
    margin-left: 4px;
  }
  .musica-controls .ctrl .mute-btn.muted {
    background: var(--error);
    color: #fff;
  }
  .musica-controls .ctrl label.check {
    display: flex; align-items: center; gap: 6px; cursor: pointer; color: var(--text); font-size: 12px; text-transform: none; letter-spacing: 0;
  }
  .musica-remover {
    background: transparent;
    color: var(--muted);
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: 4px 10px;
    font-size: 11px;
    cursor: pointer;
  }
  .musica-remover:hover { color: var(--error); border-color: var(--error); }

  /* Form */
  .form-row {
    display: flex;
    gap: 16px;
    align-items: end;
  }
  .field {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  .field label {
    color: var(--muted);
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
  }
  .field input[type="text"] {
    background: var(--panel);
    border: 1px solid var(--border);
    color: var(--text);
    padding: 10px 12px;
    border-radius: 6px;
    font-size: 15px;
  }
  .field input[type="text"]:focus {
    outline: none;
    border-color: var(--accent);
  }

  .process-btn {
    background: var(--accent);
    color: var(--accent-contrast);
    border: none;
    padding: 12px 32px;
    border-radius: 6px;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
  }
  .process-btn:hover { background: #fff; }
  .process-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
  }
  /* Botoes preset de velocidade */
  .vel-preset {
    background: var(--elevated);
    color: var(--text);
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: 4px 10px;
    font-size: 12px;
    font-family: monospace;
    cursor: pointer;
    transition: all 0.1s;
  }
  .vel-preset:hover { border-color: var(--accent); color: var(--accent); }
  .vel-preset.active {
    background: var(--accent);
    color: var(--accent-contrast);
    border-color: var(--accent);
    font-weight: 600;
  }

  /* Status / log */
  .status {
    padding: 12px 16px;
    background: var(--panel);
    border-radius: 6px;
    font-size: 13px;
    color: var(--muted);
    display: none;
  }
  .status.show { display: block; }
  .status.success { color: var(--success); border-left: 3px solid var(--success); }
  .status.error { color: var(--error); border-left: 3px solid var(--error); }
  .status.loading { color: var(--accent); border-left: 3px solid var(--accent); }
  /* Progress bar */
  .progress-wrap {
    margin-top: 10px;
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  .progress-bar {
    width: 100%;
    height: 10px;
    background: var(--elevated);
    border-radius: 6px;
    overflow: hidden;
    border: 1px solid var(--border);
  }
  .progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--accent) 0%, #fff 100%);
    width: 0%;
    transition: width 0.2s ease;
  }
  .progress-meta {
    display: flex;
    justify-content: space-between;
    font-size: 11px;
    font-family: monospace;
    color: var(--muted);
  }
  .progress-meta .pct { color: var(--accent); font-weight: 600; }
  pre.log-stream {
    background: #0a0a0e;
    padding: 10px;
    border-radius: 4px;
    font-size: 11px;
    color: var(--muted);
    margin-top: 6px;
    max-height: 140px;
    overflow-y: auto;
    font-family: ui-monospace, "Cascadia Code", "Consolas", monospace;
    white-space: pre-wrap;
    word-break: break-word;
  }
  pre.log {
    background: #0a0a0e;
    padding: 12px;
    border-radius: 4px;
    font-size: 11px;
    color: var(--muted);
    margin-top: 8px;
    max-height: 200px;
    overflow-y: auto;
    font-family: ui-monospace, "Cascadia Code", "Consolas", monospace;
    white-space: pre-wrap;
    word-break: break-word;
  }
  .result-video {
    margin-top: 12px;
    max-width: 100%;
    max-height: 40vh;
    border-radius: 6px;
  }

  /* ============================================================
     Calendario de postagem (/calendario)
     ============================================================ */
  .btn-primary {
    background: hsl(var(--primary));
    color: hsl(var(--primary-foreground));
    border: none;
    padding: 9px 16px;
    border-radius: 6px;
    font-family: inherit;
    font-weight: 600;
    font-size: 13px;
    cursor: pointer;
    transition: background 0.15s;
  }
  .btn-primary:hover { background: var(--accent-dark); }
  .btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }
  .btn-secondary {
    background: transparent;
    color: var(--text);
    border: 1px solid var(--border);
    padding: 8px 14px;
    border-radius: 6px;
    font-family: inherit;
    font-weight: 500;
    font-size: 13px;
    cursor: pointer;
    transition: background 0.15s;
  }
  .btn-secondary:hover { background: hsl(var(--muted-hsl)); }
  .btn-ghost {
    background: transparent;
    color: var(--muted);
    border: none;
    padding: 6px 10px;
    border-radius: 6px;
    font-family: inherit;
    font-weight: 500;
    font-size: 13px;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
  }
  .btn-ghost:hover { background: hsl(var(--muted-hsl)); color: var(--text); }
  .btn-ghost.btn-hoje { font-weight: 600; color: hsl(var(--primary)); }
  .topbar-title {
    font-family: 'Lexend', sans-serif;
    font-size: 15px;
    font-weight: 600;
    color: hsl(var(--sidebar-fg-strong));
    margin: 0;
  }

  /* Layout principal: backlog esquerda + grade direita */
  body.calendario-page { height: 100vh; overflow: hidden; }
  body.calendario-page .topbar { width: 100%; }
  .calendario-layout {
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: 0;
    height: calc(100vh - 52px);
    background: var(--bg);
  }

  /* === BACKLOG === */
  .cal-backlog {
    background: var(--panel);
    border-right: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    overflow: hidden;
  }
  .cal-backlog-header {
    padding: 18px 18px 12px;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    border-bottom: 1px solid var(--border);
  }
  .cal-backlog-header h2 {
    font-family: 'Lexend', sans-serif;
    font-size: 15px;
    font-weight: 600;
  }
  .cal-backlog-count {
    background: hsl(var(--muted-hsl));
    color: var(--muted);
    font-size: 11px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 10px;
    font-family: monospace;
  }
  .cal-backlog-search {
    padding: 12px 18px;
    border-bottom: 1px solid var(--border);
  }
  .cal-backlog-search input {
    width: 100%;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 7px 10px;
    color: var(--text);
    font-family: inherit;
    font-size: 13px;
    outline: none;
  }
  .cal-backlog-search input:focus { border-color: hsl(var(--ring)); }
  .cal-backlog-list {
    flex: 1;
    overflow-y: auto;
    padding: 12px 18px 18px;
  }
  .cal-empty {
    color: var(--muted);
    font-size: 13px;
    text-align: center;
    padding: 32px 12px;
    line-height: 1.5;
  }

  /* Card mini (backlog) */
  .cal-card-mini {
    background: var(--bg);
    border: 1px solid var(--border);
    border-left: 4px solid var(--tipo-color, hsl(var(--muted-hsl)));
    border-radius: 8px;
    padding: 8px 10px 8px 12px;
    margin-bottom: 8px;
    cursor: grab;
    display: flex;
    gap: 10px;
    transition: box-shadow 0.15s, transform 0.1s;
    user-select: none;
  }
  .cal-card-mini:hover {
    box-shadow: 0 4px 14px var(--primary-a10);
    transform: translateY(-1px);
  }
  .cal-card-mini.dragging { opacity: 0.4; }
  .cal-card-mini-thumb {
    width: 42px;
    height: 75px;
    background: #000;
    border-radius: 4px;
    flex-shrink: 0;
    object-fit: cover;
    display: block;
  }
  .cal-card-mini-info { min-width: 0; flex: 1; }
  .cal-card-mini-title {
    font-family: 'Lexend', sans-serif;
    font-weight: 500;
    font-size: 12px;
    line-height: 1.3;
    color: var(--text);
    word-break: break-word;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .cal-card-mini-meta {
    margin-top: 4px;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    font-size: 10px;
    font-family: monospace;
    color: var(--muted);
  }
  .cal-card-mini-meta .chip {
    background: var(--tipo-color, hsl(var(--muted-hsl)));
    color: #fff;
    padding: 1px 6px;
    border-radius: 8px;
    font-weight: 600;
  }
  .cal-card-mini-meta .chip-cta {
    background: transparent;
    color: hsl(var(--primary));
    border: 1px solid hsl(var(--primary));
  }

  /* === GRADE / CALENDARIO === */
  .cal-grid-wrap {
    display: flex;
    flex-direction: column;
    overflow: hidden;
  }
  .cal-nav {
    padding: 12px 20px;
    background: var(--panel);
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    gap: 6px;
  }
  .cal-nav-range {
    font-family: 'Lexend', sans-serif;
    font-weight: 500;
    color: var(--text);
    margin-left: 12px;
    font-size: 14px;
  }
  .cal-legend {
    margin-left: auto;
    display: flex;
    gap: 14px;
    align-items: center;
  }
  .cal-legend-item {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: var(--muted);
    font-family: monospace;
  }
  .cal-legend-item .dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    display: inline-block;
  }

  /* Barra de filtros */
  .cal-filtros {
    padding: 10px 20px;
    background: var(--panel);
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
  }
  .cal-filtro-grupo {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
  }
  .cal-filtro-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--muted);
    font-weight: 600;
  }
  .cal-filtro-chips {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
  }
  .filtro-chip {
    background: transparent;
    color: var(--muted);
    border: 1px solid var(--border);
    padding: 4px 12px;
    border-radius: 100px;
    font-family: inherit;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s;
    display: inline-flex;
    align-items: center;
    gap: 6px;
  }
  .filtro-chip:hover {
    border-color: hsl(var(--primary));
    color: var(--text);
  }
  .filtro-chip.active {
    background: hsl(var(--primary));
    color: hsl(var(--primary-foreground));
    border-color: hsl(var(--primary));
  }
  .filtro-chip.active:hover {
    background: var(--accent-dark);
  }
  .filtro-chip .chip-color-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    display: inline-block;
    background: var(--chip-color, hsl(0 0% 60%));
  }
  .filtro-chip.active .chip-color-dot {
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.4);
  }
  .cal-empty-inline {
    color: var(--muted);
    font-size: 12px;
    font-style: italic;
  }
  .cal-filtro-limpar {
    margin-left: auto;
    font-size: 12px;
  }

  /* Slot/card desabilitado pelo filtro (visualmente esmaecido) */
  .cal-card.filtered-out {
    opacity: 0.25;
    pointer-events: none;
  }

  .cal-grid {
    flex: 1;
    overflow-y: auto;
    display: grid;
    grid-template-columns: 60px repeat(7, 1fr);
    background: var(--bg);
    border-bottom: 1px solid var(--border);
  }
  .cal-grid-corner {
    background: var(--panel);
    border-right: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    position: sticky;
    top: 0;
    z-index: 2;
  }
  .cal-day-header {
    background: var(--panel);
    border-right: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    padding: 10px 8px;
    position: sticky;
    top: 0;
    z-index: 2;
    text-align: center;
  }
  .cal-day-header.is-today {
    background: hsl(270 60% 96%);
  }
  .cal-day-header.is-today .cal-day-num { color: hsl(var(--primary)); }
  .cal-day-name {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--muted);
    font-weight: 600;
  }
  .cal-day-num {
    font-family: 'Lexend', sans-serif;
    font-size: 18px;
    font-weight: 600;
    color: var(--text);
    margin-top: 2px;
  }
  .cal-hour-label {
    background: var(--bg);
    border-right: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    padding: 8px 6px 0;
    font-size: 11px;
    color: var(--muted);
    text-align: right;
    font-family: monospace;
  }
  .cal-slot {
    background: var(--panel);
    border-right: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    min-height: 100px;
    padding: 6px;
    position: relative;
    transition: background 0.15s;
  }
  .cal-slot.is-today { background: hsl(270 60% 98%); }
  .cal-slot.drag-over {
    background: hsl(270 60% 92%) !important;
    box-shadow: inset 0 0 0 2px hsl(var(--primary));
  }
  .cal-slot.drop-blocked {
    background: hsl(0 60% 96%) !important;
  }
  .cal-slot-empty {
    width: 100%;
    height: 100%;
    min-height: 88px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: hsl(270 8% 75%);
    font-size: 18px;
    border: 2px dashed transparent;
    border-radius: 6px;
  }
  .cal-slot:hover .cal-slot-empty { border-color: hsl(270 30% 85%); }

  /* Card preenchido no slot */
  .cal-card {
    background: var(--panel);
    border: 1px solid var(--border);
    border-left: 4px solid var(--tipo-color, hsl(var(--muted-hsl)));
    border-radius: 6px;
    padding: 6px 8px;
    height: 100%;
    cursor: grab;
    display: flex;
    flex-direction: column;
    gap: 4px;
    user-select: none;
    transition: box-shadow 0.15s;
  }
  .cal-card:hover { box-shadow: 0 4px 14px var(--primary-a15); }
  .cal-card.dragging { opacity: 0.4; }
  .cal-card.status-planejado {
    background: hsl(252 40% 94%);
    border-color: hsl(252 40% 80%);
  }
  .cal-card.status-agendado {
    background: hsl(270 60% 90%);
    border-color: hsl(var(--primary));
    box-shadow: 0 0 0 1px hsla(270, 60%, 55%, 0.3);
  }
  .cal-card.status-postado {
    background: hsl(160 60% 92%);
    border-color: hsl(var(--success-hsl));
  }
  .cal-card-title {
    font-family: 'Lexend', sans-serif;
    font-size: 11px;
    font-weight: 500;
    line-height: 1.25;
    color: var(--text);
    word-break: break-word;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .cal-card-meta {
    display: flex;
    gap: 4px;
    align-items: center;
    flex-wrap: wrap;
    font-size: 9px;
    font-family: monospace;
    color: var(--muted);
    margin-top: auto;
  }
  .cal-card-status-badge {
    background: var(--tipo-color);
    color: #fff;
    padding: 1px 5px;
    border-radius: 6px;
    font-weight: 600;
    font-size: 9px;
  }
  .cal-card-cta-icon { color: hsl(var(--primary)); font-weight: 700; }

  /* Modal slots editor */
  .slot-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
    padding: 8px 10px;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 6px;
  }
  .slot-row input[type="time"] {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: 5px 8px;
    color: var(--text);
    font-family: inherit;
    font-size: 13px;
    flex: 1;
  }
  .slot-row .slot-remove {
    background: transparent;
    color: var(--muted);
    border: none;
    cursor: pointer;
    font-size: 16px;
    padding: 4px 8px;
    border-radius: 4px;
  }
  .slot-row .slot-remove:hover { background: var(--error); color: #fff; }

  /* Acoes do post (modal de clique no card) */
  .post-acoes-info {
    display: flex;
    gap: 12px;
    margin-bottom: 16px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--border);
  }
  .post-acoes-info img {
    width: 80px;
    height: 142px;
    object-fit: cover;
    border-radius: 6px;
    background: #000;
  }
  .post-acoes-info-text { flex: 1; min-width: 0; }
  .post-acoes-info-title {
    font-family: 'Lexend', sans-serif;
    font-size: 14px;
    font-weight: 500;
    margin-bottom: 4px;
    word-break: break-word;
  }
  .post-acoes-info-meta { font-size: 11px; color: var(--muted); font-family: monospace; }
  .post-acoes-botoes {
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  .post-acao-btn {
    width: 100%;
    text-align: left;
    padding: 10px 14px;
    border-radius: 6px;
    border: 1px solid var(--border);
    background: var(--bg);
    color: var(--text);
    font-family: inherit;
    font-size: 13px;
    cursor: pointer;
    transition: background 0.15s;
  }
  .post-acao-btn:hover { background: hsl(var(--muted-hsl)); }
  .post-acao-btn.danger { color: var(--error); border-color: hsl(0 50% 88%); }
  .post-acao-btn.primary {
    background: hsl(var(--primary));
    color: hsl(var(--primary-foreground));
    border-color: hsl(var(--primary));
    font-weight: 600;
  }
  .post-acao-btn.primary:hover { background: var(--accent-dark); }

  /* ============================================================
     Render overlay — fullscreen, gamificado, centralizado
     ============================================================ */
  .render-overlay {
    position: fixed;
    inset: 0;
    background: radial-gradient(ellipse at center, hsla(270, 60%, 30%, 0.92), hsla(270, 52%, 12%, 0.96));
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    z-index: 5000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    animation: render-fade-in 0.25s ease-out;
  }
  @keyframes render-fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
  }
  .render-overlay-card {
    background: hsl(var(--card));
    border-radius: 20px;
    padding: 36px 40px;
    width: min(560px, 100%);
    max-height: 92vh;
    overflow-y: auto;
    box-shadow:
      0 24px 80px rgba(0, 0, 0, 0.5),
      0 0 0 1px hsla(270, 60%, 80%, 0.1),
      0 0 40px hsla(270, 60%, 55%, 0.2);
    animation: render-card-pop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    text-align: center;
  }
  @keyframes render-card-pop {
    from { opacity: 0; transform: scale(0.92) translateY(20px); }
    to { opacity: 1; transform: scale(1) translateY(0); }
  }

  /* Icone pulsante no topo */
  .render-icon-pulse {
    width: 84px;
    height: 84px;
    margin: 0 auto 18px;
    border-radius: 50%;
    background: linear-gradient(135deg, hsl(270 60% 65%), hsl(270 60% 45%));
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 40px;
    box-shadow: 0 8px 32px hsla(270, 60%, 55%, 0.4);
    animation: render-pulse 2s ease-in-out infinite;
    position: relative;
  }
  .render-icon-pulse::before {
    content: '';
    position: absolute;
    inset: -8px;
    border-radius: 50%;
    border: 2px solid hsla(270, 60%, 70%, 0.4);
    animation: render-ring 2s ease-out infinite;
  }
  @keyframes render-pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.06); }
  }
  @keyframes render-ring {
    0% { transform: scale(0.9); opacity: 0.8; }
    100% { transform: scale(1.5); opacity: 0; }
  }

  .render-title {
    font-family: 'Lexend', sans-serif;
    font-size: 22px;
    font-weight: 600;
    color: hsl(var(--foreground));
    margin: 0 0 6px;
  }
  .render-subtitle {
    font-size: 14px;
    color: var(--muted);
    margin-bottom: 28px;
    min-height: 20px;
    transition: opacity 0.3s;
  }
  .render-subtitle.swap { opacity: 0; }

  /* Barra de progresso ampla com shimmer */
  .render-progress-track {
    width: 100%;
    height: 14px;
    background: hsl(270 10% 92%);
    border-radius: 100px;
    overflow: hidden;
    margin-bottom: 12px;
    position: relative;
  }
  .render-progress-fill {
    height: 100%;
    width: 0%;
    background: linear-gradient(90deg,
      hsl(270 60% 65%) 0%,
      hsl(270 80% 60%) 50%,
      hsl(280 70% 65%) 100%);
    border-radius: 100px;
    transition: width 0.4s ease-out;
    position: relative;
    overflow: hidden;
  }
  .render-progress-fill::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg,
      transparent 0%,
      rgba(255,255,255,0.4) 50%,
      transparent 100%);
    animation: render-shimmer 1.5s linear infinite;
  }
  @keyframes render-shimmer {
    from { transform: translateX(-100%); }
    to { transform: translateX(100%); }
  }

  .render-meta {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    font-family: monospace;
    margin-bottom: 18px;
  }
  .render-pct {
    font-family: 'Lexend', sans-serif;
    font-size: 28px;
    font-weight: 600;
    color: hsl(var(--primary));
  }
  .render-time {
    font-size: 12px;
    color: var(--muted);
  }

  .render-log-details {
    margin-top: 8px;
    text-align: left;
  }
  .render-log-details summary {
    cursor: pointer;
    font-size: 11px;
    color: var(--muted);
    padding: 4px 0;
    user-select: none;
    list-style: none;
  }
  .render-log-details summary::before {
    content: '▸ ';
    display: inline-block;
    transition: transform 0.15s;
  }
  .render-log-details[open] summary::before {
    transform: rotate(90deg);
  }
  .render-log-details summary:hover { color: var(--text); }
  .render-log {
    background: hsl(270 10% 96%);
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 10px 12px;
    font-size: 11px;
    line-height: 1.5;
    max-height: 200px;
    overflow-y: auto;
    margin-top: 8px;
    color: var(--muted);
    white-space: pre-wrap;
    word-break: break-word;
    text-align: left;
  }

  /* Sucesso: check verde animado */
  .render-check {
    width: 84px;
    height: 84px;
    margin: 0 auto 18px;
    border-radius: 50%;
    background: hsl(var(--success-hsl));
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 44px;
    font-weight: 700;
    box-shadow: 0 8px 32px hsla(160, 100%, 38%, 0.35);
    animation: render-check-pop 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
  }
  @keyframes render-check-pop {
    0% { transform: scale(0); opacity: 0; }
    60% { transform: scale(1.15); opacity: 1; }
    100% { transform: scale(1); }
  }
  .render-success-filename {
    font-family: monospace;
    font-size: 12px;
    color: var(--muted);
    margin-bottom: 16px;
    word-break: break-all;
    background: hsl(270 10% 96%);
    padding: 8px 12px;
    border-radius: 6px;
  }
  .render-success-preview {
    width: 220px;
    max-height: 360px;
    border-radius: 10px;
    background: #000;
    margin-bottom: 20px;
  }
  .render-success-actions {
    display: flex;
    gap: 8px;
    justify-content: center;
    flex-wrap: wrap;
  }
  .render-success-actions .btn-primary,
  .render-success-actions .btn-secondary {
    padding: 10px 18px;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }

  /* Erro: X vermelho */
  .render-x {
    width: 84px;
    height: 84px;
    margin: 0 auto 18px;
    border-radius: 50%;
    background: hsl(var(--destructive));
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 44px;
    font-weight: 700;
    animation: render-check-pop 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
  }
  .render-error-msg {
    font-size: 13px;
    color: var(--muted);
    margin-bottom: 16px;
    padding: 10px 14px;
    background: hsl(0 50% 96%);
    border-radius: 8px;
    border: 1px solid hsl(0 50% 90%);
  }

  /* ============================================================
     Login / Auth — visual cinematográfico
     ============================================================ */
  body.login-page {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    overflow: hidden;
    position: relative;
    background: #15101f;  /* fallback enquanto imagem carrega */
  }

  /* Camada 1: imagem de fundo (escolhida pelo JS) com zoom suave infinito */
  body.login-page::before {
    content: "";
    position: fixed;
    inset: -2%;
    background-image: var(--login-bg-img, none);
    background-size: cover;
    background-position: center;
    z-index: 0;
    animation: login-kenburns 30s ease-in-out infinite alternate;
    filter: blur(2px) brightness(0.45) saturate(1.1);
  }
  @keyframes login-kenburns {
    0%   { transform: scale(1.05) translate(-0.5%, -0.3%); }
    100% { transform: scale(1.12) translate(0.5%, 0.3%); }
  }

  /* Camada 2: overlay roxo (identidade da brand) + vinheta nas bordas */
  body.login-page::after {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
      radial-gradient(ellipse at center, transparent 0%, rgba(0,0,0,0.65) 90%),
      linear-gradient(135deg, hsla(270, 70%, 22%, 0.55) 0%, hsla(270, 80%, 12%, 0.7) 100%);
  }

  /* Camada 3: bokeh — pontinhos de luz flutuando no fundo */
  .login-bokeh {
    position: fixed;
    inset: 0;
    z-index: 2;
    pointer-events: none;
    overflow: hidden;
  }
  .login-bokeh span {
    position: absolute;
    border-radius: 50%;
    background: radial-gradient(circle, hsla(280, 80%, 80%, 0.6) 0%, transparent 70%);
    filter: blur(1px);
    animation: login-bokeh-float linear infinite;
    opacity: 0;
  }
  .login-bokeh span:nth-child(1)  { left: 8%;  width: 90px; height: 90px;  animation-duration: 22s; animation-delay: 0s;  }
  .login-bokeh span:nth-child(2)  { left: 22%; width: 60px; height: 60px;  animation-duration: 28s; animation-delay: 3s;  background: radial-gradient(circle, hsla(330, 80%, 75%, 0.5), transparent 70%); }
  .login-bokeh span:nth-child(3)  { left: 38%; width: 120px;height: 120px; animation-duration: 35s; animation-delay: 6s;  }
  .login-bokeh span:nth-child(4)  { left: 55%; width: 50px; height: 50px;  animation-duration: 18s; animation-delay: 1s;  background: radial-gradient(circle, hsla(45, 90%, 75%, 0.5), transparent 70%); }
  .login-bokeh span:nth-child(5)  { left: 72%; width: 100px;height: 100px; animation-duration: 26s; animation-delay: 4s;  }
  .login-bokeh span:nth-child(6)  { left: 88%; width: 70px; height: 70px;  animation-duration: 32s; animation-delay: 8s;  }
  .login-bokeh span:nth-child(7)  { left: 15%; width: 40px; height: 40px;  animation-duration: 20s; animation-delay: 10s; background: radial-gradient(circle, hsla(45, 90%, 80%, 0.55), transparent 70%); }
  .login-bokeh span:nth-child(8)  { left: 65%; width: 80px; height: 80px;  animation-duration: 24s; animation-delay: 12s; }
  @keyframes login-bokeh-float {
    0%   { transform: translateY(110vh) scale(0.5); opacity: 0; }
    10%  { opacity: 1; }
    50%  { transform: translateY(50vh)  scale(1.1); }
    90%  { opacity: 0.8; }
    100% { transform: translateY(-20vh) scale(0.6); opacity: 0; }
  }

  /* Camada 4: card de login com glassmorphism */
  .login-wrap {
    width: 100%;
    max-width: 440px;
    position: relative;
    z-index: 10;
    animation: render-card-pop 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
  }
  .login-card {
    background: hsla(270, 30%, 12%, 0.55);
    backdrop-filter: blur(24px) saturate(140%);
    -webkit-backdrop-filter: blur(24px) saturate(140%);
    border: 1px solid hsla(270, 60%, 80%, 0.18);
    border-radius: 20px;
    padding: 40px 36px;
    box-shadow:
      0 24px 90px rgba(0, 0, 0, 0.55),
      0 0 0 1px hsla(0, 0%, 100%, 0.04),
      inset 0 1px 0 hsla(0, 0%, 100%, 0.1);
    color: #fff;
  }
  .login-card .login-title { color: #fff; }
  .login-card .login-subtitle { color: hsla(0, 0%, 100%, 0.65); }
  .login-card .form-field label { color: hsla(0, 0%, 100%, 0.65); }
  .login-card .form-field input[type="text"],
  .login-card .form-field input[type="password"] {
    background: hsla(0, 0%, 100%, 0.08);
    border: 1px solid hsla(0, 0%, 100%, 0.15);
    color: #fff;
    backdrop-filter: blur(8px);
  }
  .login-card .form-field input:focus {
    background: hsla(0, 0%, 100%, 0.12);
    border-color: hsl(270 80% 70%);
    box-shadow: 0 0 0 3px hsla(270, 80%, 60%, 0.25);
  }
  .login-card .form-field input::placeholder { color: hsla(0, 0%, 100%, 0.4); }
  .login-card .login-error {
    background: hsla(0, 60%, 50%, 0.18);
    border: 1px solid hsla(0, 60%, 60%, 0.35);
    color: hsl(0 90% 88%);
  }
  .login-card .btn-primary {
    background: linear-gradient(135deg, hsl(270 70% 60%), hsl(280 70% 55%));
    box-shadow: 0 8px 32px hsla(270, 70%, 40%, 0.4);
    font-size: 14px;
  }
  .login-card .btn-primary:hover {
    background: linear-gradient(135deg, hsl(270 75% 65%), hsl(280 75% 60%));
    transform: translateY(-1px);
  }

  .login-brand {
    text-align: center;
    margin-bottom: 28px;
    padding: 0;
    background: transparent;
    border-radius: 0;
  }
  .login-logo {
    height: 36px;
    object-fit: contain;
  }
  .login-title {
    font-family: 'Lexend', sans-serif;
    font-size: 24px;
    font-weight: 600;
    color: hsl(var(--foreground));
    margin-bottom: 6px;
    text-align: center;
  }
  .login-subtitle {
    font-size: 13px;
    color: var(--muted);
    text-align: center;
    margin-bottom: 24px;
  }
  .form-field {
    margin-bottom: 14px;
  }
  .form-field label {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--muted);
    font-weight: 600;
    margin-bottom: 6px;
  }
  .form-field input[type="text"],
  .form-field input[type="password"] {
    width: 100%;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 10px 12px;
    color: var(--text);
    font-family: inherit;
    font-size: 14px;
    outline: none;
    transition: border-color 0.15s, box-shadow 0.15s;
  }
  .form-field input:focus {
    border-color: hsl(var(--primary));
    box-shadow: 0 0 0 3px hsla(270, 60%, 55%, 0.15);
  }
  .btn-block {
    width: 100%;
    padding: 11px 16px;
    margin-top: 6px;
  }
  .login-error {
    background: hsl(0 60% 96%);
    border: 1px solid hsl(0 50% 88%);
    color: hsl(0 70% 40%);
    border-radius: 6px;
    padding: 9px 12px;
    font-size: 13px;
    margin-bottom: 12px;
  }

  /* Topbar: chip de usuário + dropdown */
  .topbar-user {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: hsla(0, 0%, 100%, 0.08);
    border: 1px solid hsla(0, 0%, 100%, 0.12);
    border-radius: 100px;
    padding: 5px 12px 5px 5px;
    color: hsl(var(--sidebar-fg-strong));
    font-size: 13px;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.15s;
    position: relative;
  }
  .topbar-user:hover { background: hsla(0, 0%, 100%, 0.14); }
  .topbar-user-avatar {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: hsl(var(--primary));
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 13px;
    font-family: 'Lexend', sans-serif;
  }
  .topbar-user-menu {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    background: hsl(var(--card));
    border: 1px solid var(--border);
    border-radius: 10px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
    min-width: 220px;
    overflow: hidden;
    z-index: 1500;
    color: var(--text);
  }
  .topbar-user-menu-header {
    padding: 12px 14px;
    background: hsl(var(--muted-hsl));
    border-bottom: 1px solid var(--border);
  }
  .topbar-user-menu-header b {
    font-family: 'Lexend', sans-serif;
    font-size: 13px;
    display: block;
  }
  .topbar-user-menu-header small {
    font-size: 11px;
    color: var(--muted);
    font-family: monospace;
  }
  .topbar-user-menu a, .topbar-user-menu button {
    display: block;
    width: 100%;
    text-align: left;
    padding: 10px 14px;
    background: transparent;
    border: none;
    color: var(--text);
    font-family: inherit;
    font-size: 13px;
    cursor: pointer;
    text-decoration: none;
  }
  .topbar-user-menu a:hover, .topbar-user-menu button:hover {
    background: hsl(var(--muted-hsl));
  }
  .topbar-user-menu .danger { color: var(--error); }

  /* Página de usuários (admin) */
  .usuarios-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 18px;
  }
  .usuario-row {
    background: hsl(var(--card));
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 12px 16px;
    display: flex;
    align-items: center;
    gap: 12px;
  }
  .usuario-row .usuario-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: hsl(var(--primary));
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-family: 'Lexend', sans-serif;
    flex-shrink: 0;
  }
  .usuario-row .usuario-info { flex: 1; min-width: 0; }
  .usuario-row .usuario-nome {
    font-family: 'Lexend', sans-serif;
    font-weight: 500;
    font-size: 14px;
  }
  .usuario-row .usuario-meta {
    font-size: 11px;
    color: var(--muted);
    font-family: monospace;
    margin-top: 2px;
  }
  .role-badge {
    display: inline-block;
    background: hsl(var(--primary));
    color: hsl(var(--primary-foreground));
    padding: 2px 8px;
    border-radius: 100px;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-weight: 700;
    font-family: 'Lexend', sans-serif;
  }
  .role-badge.role-user {
    background: hsl(var(--muted-hsl));
    color: var(--muted);
  }

  /* ============================================================
     Badges (selos arredondados sobre o video)
     ============================================================ */

  /* Overlay no player: container absoluto sobre o video */
  .player-wrap { position: relative; }
  .badges-overlay {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
  }
  .badges-overlay .badge-preview {
    position: absolute;
    transform-origin: center center;
    pointer-events: auto;
    cursor: grab;
    user-select: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1.1;
    white-space: nowrap;
    box-shadow: 0 2px 12px rgba(0,0,0,0.25);
    transition: outline 0.1s;
  }
  /* Selecionado: anel sutil COLADO no badge (sem espaçamento) — apenas pra você
     saber que está editando, sem distorcer o visual do badge em si. */
  .badges-overlay .badge-preview.selected {
    box-shadow:
      0 0 0 2px rgba(255,255,255,0.9),
      0 0 0 4px hsl(var(--primary)),
      0 4px 16px rgba(124,58,237,0.35);
  }
  .badges-overlay .badge-preview.dragging {
    cursor: grabbing;
  }
  /* Quando pausado e fora do tempo (só pra você editar o badge selecionado). */
  .badges-overlay .badge-preview.fora-do-tempo {
    opacity: 0.4;
  }
  .badges-overlay .badge-rotate-handle {
    position: absolute;
    top: -30px;
    left: 50%;
    transform: translateX(-50%);
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid hsl(var(--primary));
    cursor: grab;
    box-shadow: 0 1px 4px rgba(0,0,0,0.4);
  }
  .badges-overlay .badge-rotate-handle::before {
    content: '';
    position: absolute;
    top: 100%;
    left: 50%;
    width: 1px;
    height: 18px;
    background: hsla(var(--primary), 0.6);
    transform: translateX(-50%);
  }

  /* Lista lateral dos badges no painel direito */
  .badges-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 10px;
  }
  .badge-row {
    background: hsl(var(--card));
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 10px 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    transition: border-color 0.15s, box-shadow 0.15s;
  }
  .badge-row.selected {
    border-color: hsl(var(--primary));
    box-shadow: 0 0 0 2px hsla(var(--primary), 0.15);
  }
  .badge-row-head {
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .badge-row-preview {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: 100px;
    color: #fff;
    font-size: 10px;
    font-weight: 600;
    white-space: nowrap;
    max-width: 120px;
    overflow: hidden;
    text-overflow: ellipsis;
    flex-shrink: 0;
  }
  .badge-row-actions { margin-left: auto; display: flex; gap: 4px; }
  .badge-row-actions button {
    background: transparent;
    border: none;
    color: var(--muted);
    cursor: pointer;
    padding: 4px 6px;
    border-radius: 4px;
    font-size: 12px;
  }
  .badge-row-actions button:hover { background: hsl(var(--muted-hsl)); color: var(--text); }
  .badge-row-actions button.danger:hover { background: var(--error); color: #fff; }
  .badge-row-body { display: none; flex-direction: column; gap: 8px; }
  .badge-row.expanded .badge-row-body { display: flex; }
  .badge-row-body label {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: var(--muted);
    font-weight: 600;
    display: block;
    margin-bottom: 3px;
  }
  .badge-row-body input[type="text"],
  .badge-row-body input[type="number"],
  .badge-row-body select {
    width: 100%;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 5px;
    padding: 6px 8px;
    font-family: inherit;
    font-size: 12px;
    color: var(--text);
    outline: none;
  }
  .badge-row-body input[type="color"] {
    width: 36px;
    height: 30px;
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: 1px;
    background: transparent;
    cursor: pointer;
  }
  .badge-row-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }
  .badge-row-grid-3 {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 6px;
  }
  .badge-row-row {
    display: flex;
    align-items: center;
    gap: 6px;
  }
  .badge-row-slider {
    flex: 1;
  }
  .badge-row-slider input[type="range"] {
    width: 100%;
    margin: 2px 0;
  }
  .badge-row-slider-label {
    display: flex;
    justify-content: space-between;
    font-size: 10px;
    color: var(--muted);
    font-family: monospace;
  }

  /* Modal: lista de modelos salvos */
  .badge-modelo-card {
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 12px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 12px;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
  }
  .badge-modelo-card:hover {
    border-color: hsl(var(--primary));
    background: hsl(var(--muted-hsl));
  }
  .badge-modelo-card-preview {
    display: inline-flex;
    align-items: center;
    padding: 6px 14px;
    border-radius: 100px;
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    flex-shrink: 0;
  }
  .badge-modelo-card-info { flex: 1; }
  .badge-modelo-card-info .nome {
    font-family: 'Lexend', sans-serif;
    font-weight: 600;
    font-size: 13px;
  }
  .badge-modelo-card-info .meta {
    font-size: 10px;
    color: var(--muted);
    font-family: monospace;
    margin-top: 2px;
  }

  /* ================================================================
     REDESIGN ADDITIONS — Batches 2-8
     ================================================================ */

  /* ── Form Utilities (extracted from inline styles) ── */
  .form-textarea {
    background: var(--elevated);
    border: 1px solid var(--border);
    color: var(--text);
    padding: 8px 10px;
    border-radius: 6px;
    font-size: 13px;
    font-family: inherit;
    resize: vertical;
    width: 100%;
  }
  .form-textarea:focus { border-color: hsl(var(--primary)); outline: none; }
  .form-input-mono {
    width: 80px;
    background: var(--elevated);
    border: 1px solid var(--border);
    color: var(--text);
    padding: 6px 8px;
    border-radius: 4px;
    font-family: monospace;
    font-size: 13px;
  }
  .form-input-mono:focus { border-color: hsl(var(--primary)); outline: none; }

  /* ── Batch 2: Responsive Modals ── */
  .modal-card {
    width: min(560px, calc(100vw - 32px));
    max-width: calc(100vw - 32px);
  }
  .modal-card.modal-lg {
    width: min(680px, calc(100vw - 32px));
  }
  .modal-card.modal-xl {
    width: min(840px, calc(100vw - 32px));
  }

  /* ── Batch 4: Skeleton / Loading States ── */
  @keyframes skeleton-shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
  }
  .skeleton {
    background: linear-gradient(
      90deg,
      var(--elevated) 25%,
      var(--overlay-bg) 50%,
      var(--elevated) 75%
    );
    background-size: 200% 100%;
    animation: skeleton-shimmer 1.5s ease-in-out infinite;
    border-radius: 6px;
    color: transparent !important;
    pointer-events: none;
    user-select: none;
  }
  .skeleton * { visibility: hidden; }
  .skeleton-text { height: 14px; margin-bottom: 8px; border-radius: 4px; }
  .skeleton-text.short { width: 60%; }
  .skeleton-text.medium { width: 80%; }
  .skeleton-card { height: 100px; border-radius: 8px; }
  .skeleton-thumb { width: 56px; height: 56px; border-radius: 4px; }
  .hub-card.skeleton { min-height: 140px; }

  /* ── Batch 5: Button & Interaction States ── */
  button:disabled, .btn-primary:disabled, .btn-secondary:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
  }
  .btn-loading {
    position: relative;
    color: transparent !important;
    pointer-events: none;
  }
  .btn-loading::after {
    content: '';
    position: absolute;
    top: 50%; left: 50%;
    width: 16px; height: 16px;
    margin: -8px 0 0 -8px;
    border: 2px solid hsl(var(--foreground));
    border-top-color: transparent;
    border-radius: 50%;
    animation: btn-spin 0.6s linear infinite;
  }
  @keyframes btn-spin { to { transform: rotate(360deg); } }

  .process-btn {
    transition: background 0.15s, transform 0.1s;
  }
  .process-btn:hover:not(:disabled) { transform: translateY(-1px); }
  .process-btn:active:not(:disabled) { transform: translateY(0); }

  /* ── Batch 6: Reduced Motion ── */
  @media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
      animation-duration: 0.01ms !important;
      animation-iteration-count: 1 !important;
      transition-duration: 0.01ms !important;
      scroll-behavior: auto !important;
    }
    .hub-card:hover,
    .modelo-card:hover,
    .process-btn:hover {
      transform: none !important;
    }
    .render-progress-fill::after { animation: none !important; }
    body.login-page::before { animation: none !important; }
    .login-bokeh span { animation: none !important; display: none; }
    .skeleton { animation: none !important; background: var(--elevated) !important; }
  }

  /* ── Batch 8: Responsive Breakpoints ── */
  @media (max-width: 1200px) {
    body.editor-page {
      grid-template-columns: 240px 1fr 300px;
    }
  }
  @media (max-width: 1024px) {
    body.editor-page {
      grid-template-columns: 220px 1fr 280px;
    }
    .topbar .brand { width: auto; }
  }
  @media (max-width: 768px) {
    body.editor-page {
      grid-template-columns: 1fr;
      grid-template-rows: 52px auto;
      grid-template-areas: "topbar" "center";
      overflow-y: auto;
    }
    aside.leftsb, aside.rightsb { display: none; }
    aside.leftsb.mobile-open, aside.rightsb.mobile-open {
      display: flex;
      flex-direction: column;
      position: fixed;
      top: 52px; bottom: 0;
      width: min(320px, 85vw);
      z-index: 1000;
      box-shadow: 4px 0 24px rgba(0,0,0,0.5);
    }
    aside.leftsb.mobile-open { left: 0; }
    aside.rightsb.mobile-open { right: 0; }
    .mobile-panel-toggle { display: inline-flex; }
    .player-wrap { height: 40vh; min-height: 240px; }
    .topbar-actions { gap: 4px; }
    .topbar .icon-btn span:not(.icon) { display: none; }
  }
  .mobile-panel-toggle { display: none; }

  @media (max-width: 640px) {
    body.page-shell main.page-content { padding: 20px 16px; }
    .hub-grid { grid-template-columns: 1fr; }
    body.page-shell main.page-content h1 { font-size: 22px; }
    .page-toolbar { flex-direction: column; gap: 12px; align-items: flex-start; }
  }
