/* Componentes compartilhados: layout de página, botões, seletores, badges e o dialog de detalhes.
   Usados pela Biblioteca e pela Agenda de gravação. Cores e espaços vêm dos tokens (tokens.css). */

*{box-sizing:border-box}
html,body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-family);font-size:14px;line-height:20px}
body{min-height:100vh}
.app{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100vh}
.sidebar{background:var(--color-sidebar);color:var(--color-sidebar-text);padding:20px 16px;position:sticky;top:0;height:100vh;overflow:auto}
.brand{margin:0 8px 24px}
  .brand img{display:block;width:156px;height:auto}
.group{font-size:11px;line-height:16px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-sidebar-muted);margin:20px 8px 8px}
.nav a{display:flex;align-items:center;gap:12px;min-height:44px;padding:10px 12px;border-radius:var(--radius-control);color:var(--color-sidebar-text);text-decoration:none;font-weight:500}
.nav a:hover{background:var(--color-sidebar-hover)}
.nav a[aria-current="page"]{background:var(--color-primary);color:var(--color-on-primary)}
.nav svg,.ico{width:20px;height:20px;flex:0 0 20px;display:inline-block}
.sidebar-foot{margin-top:24px;padding-top:16px;border-top:1px solid var(--color-sidebar-hover)}
.sair-link{display:flex;align-items:center;gap:12px;min-height:44px;padding:10px 12px;color:var(--color-sidebar-text);text-decoration:none;font-weight:500}
main{min-width:0}
.iconbtn{width:44px;height:44px;display:inline-grid;place-items:center;border-radius:var(--radius-control);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer}
button,a,input,select{font:inherit}
:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}
.topbar{height:var(--header-height);display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 32px;background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:5}
.content{padding:32px;max-width:var(--content-max-width);margin:0 auto;min-width:0}
.stack{display:grid;gap:24px;min-width:0}
h1{font-size:32px;line-height:40px;font-weight:700;margin:0;letter-spacing:-.01em}
h2{font-size:18px;line-height:26px;font-weight:600;margin:0}
.hint{font-size:12px;line-height:18px;color:var(--color-text-muted)}
.hidden{display:none !important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.state{padding:32px 24px;text-align:center;color:var(--color-text-muted);border:1px dashed var(--color-border);border-radius:var(--radius-panel);display:grid;gap:8px;justify-items:center}
.state strong{display:block;color:var(--color-text);font-size:16px;line-height:24px}
.state p{margin:0}

/* Botões e seletores: ativo azul sólido com texto branco. */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 16px;border-radius:var(--radius-control);border:1px solid var(--color-primary);background:var(--color-primary);color:var(--color-on-primary);font-weight:500;text-decoration:none;cursor:pointer}
.btn:hover{background:var(--color-primary-hover)}
.btn:disabled{opacity:.6;cursor:default}
.btn.ghost{background:var(--color-surface);color:var(--color-link);border-color:var(--color-border)}
.btn.ghost:hover{background:var(--color-primary-soft)}
.btn.danger{background:var(--color-danger-bg);color:var(--color-danger);border-color:var(--color-danger)}
.link{display:inline-flex;align-items:center;min-height:44px;padding:0 4px;background:none;border:0;color:var(--color-link);font-weight:500;cursor:pointer}
.seletor{display:flex;flex-wrap:wrap;gap:8px;align-self:start;align-content:flex-start}
.seletor button{min-height:44px;padding:0 16px;border-radius:var(--radius-control);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.seletor button:hover{background:var(--color-primary-soft)}
.seletor button[aria-selected="true"]{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-primary);font-weight:600}
.seletor .cnt{font-variant-numeric:tabular-nums;color:var(--color-text-muted)}
.seletor button[aria-selected="true"] .cnt{color:var(--color-on-primary)}
.copy-st{display:inline-block;font-size:12px;line-height:18px;color:var(--color-success)}
.copy-st.err{color:var(--color-danger)}
.btn-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}

/* Badges por tipo de roteiro */
.badge{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border-radius:var(--radius-pill);font-size:12px;line-height:18px;font-weight:600;width:max-content}
.badge.person{background:var(--color-badge-person-bg);color:var(--color-badge-person-text)}
.badge.ai{background:var(--color-badge-ai-bg);color:var(--color-badge-ai-text)}
.chip{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border-radius:var(--radius-pill);background:var(--color-surface-subtle);border:1px solid var(--color-border);font-size:12px;line-height:18px;color:var(--color-text-muted);font-weight:500;width:max-content}

/* Dialog sobreposto: uma rolagem principal. Mobile até 767 px: tela inteira com safe-area. */
.dlg-wrap{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:32px}
.dlg-scrim{position:absolute;inset:0;background:rgba(0,0,0,.6)}
.dlg{position:relative;width:min(1120px,calc(100vw - 64px));max-height:calc(100dvh - 64px);display:flex;flex-direction:column;min-height:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;box-shadow:var(--shadow-overlay)}
.dlg-head{flex:none;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:16px;padding:20px 24px;border-bottom:1px solid var(--color-border)}
.dlg-head-txt{display:grid;gap:8px;min-width:0}
.dlg-title{font-size:20px;line-height:28px;font-weight:600;margin:0;overflow-wrap:anywhere}
.dlg-title:focus{outline:none}
.dlg-close{flex:none;min-height:44px}
.dlg-close .ico{display:none;width:20px;height:20px;flex-basis:20px}
.dlg-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:20px 24px;display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start;align-content:start}
.dref{display:grid;grid-template-columns:56px minmax(0,1fr);gap:12px;align-items:start;min-width:0}
.dref-photo{width:56px;height:56px;border-radius:var(--radius-thumbnail);background:var(--color-surface-subtle);border:1px solid var(--color-border);display:grid;place-items:center;color:var(--color-primary)}
.dref-photo .ico{width:24px;height:24px;flex-basis:24px}
.dref-txt{display:grid;gap:6px;min-width:0;justify-items:start}
.dref-prod{margin:0;font-size:14px;line-height:20px;font-weight:600;overflow-wrap:anywhere}
.dref-meta{margin:0;font-size:12px;line-height:18px;color:var(--color-text-muted)}
.saved{display:inline-flex;align-items:center;justify-self:start;margin:0;gap:6px;min-height:24px;font-size:12px;line-height:18px;font-weight:600;color:var(--color-success)}
.saved .ico{width:16px;height:16px;flex-basis:16px}
.dlg-main{display:grid;gap:16px;min-width:0;align-content:start;container-type:inline-size;align-self:start}
.dh{font-size:18px;line-height:26px;font-weight:600;margin:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dsub{margin:4px 0 0;color:var(--color-text-muted)}
.dpanel{display:grid;gap:16px;min-width:0;align-content:start}
.seletor.det{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;width:100%}
.seletor.det button{min-height:48px;padding:6px;font-size:14px;line-height:20px;justify-content:center;text-align:center;white-space:normal}

/* Análise da copy: quantidade variável de blocos, pela ordem do texto */
.acards{list-style:none;margin:0;padding:0;display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}
.acard{border:1px solid var(--color-border);border-radius:var(--radius-panel);padding:16px;display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;background:var(--color-surface);min-width:0;align-content:start}
.anum{width:28px;height:28px;border-radius:50%;background:var(--color-primary-soft);color:var(--color-link);display:grid;place-items:center;font-size:13px;font-weight:600}
.acard .chip{margin-bottom:8px}
.trecho{margin:0;font-weight:500;overflow-wrap:anywhere}
.funcao{margin:4px 0 0;color:var(--color-text-muted);overflow-wrap:anywhere}
/* Duas colunas iguais quando cada uma tem pelo menos 260 px (260 + 12 + 260). Último ímpar ocupa uma coluna. */
@container (min-width:532px){
  .acards{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* Transcrição: 16 px exatos entre o cabeçalho e a caixa */
.transc-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.transc-box{background:var(--color-surface-subtle);border:1px solid var(--color-border);border-radius:8px;padding:20px}
.transc{margin:0;max-width:68ch;white-space:pre-wrap;overflow-wrap:anywhere;font-size:16px;line-height:26px;font-weight:400;text-align:left}

/* Seus roteiros */
.blocos{margin:0;display:grid;gap:12px}
.bloco{border:1px solid var(--color-border);border-radius:var(--radius-panel);padding:16px;background:var(--color-surface)}
.bloco dt{font-weight:600;margin:0 0 4px}
.bloco dd{margin:0;overflow-wrap:anywhere}
.cena{border:1px solid var(--color-border);border-radius:var(--radius-panel);background:var(--color-surface);min-width:0}
.cena-h{width:100%;min-height:44px;padding:12px 16px;display:flex;justify-content:space-between;align-items:center;gap:12px;background:none;border:0;color:var(--color-text);font-weight:600;cursor:pointer;text-align:left}
.cena-h:hover{background:var(--color-primary-soft)}
.cena-h .chev{color:var(--color-text-muted)}
.cena-b{padding:0 16px 16px;display:grid;gap:12px;min-width:0}
.flabel{margin:0;font-size:12px;line-height:18px;color:var(--color-text-muted);font-weight:600}
.fala{margin:0;overflow-wrap:anywhere}
.prompt-box{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface-subtle);padding:12px;display:grid;gap:12px;min-width:0}
.prompt-preview{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:20px;color:var(--color-text);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-height:40px;overflow-wrap:anywhere}
.prompt-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}
.expand-btn{display:none}
@media (min-width:768px){
  .prompt-preview{-webkit-line-clamp:3;max-height:60px}
  .prompt-preview.open{display:block;-webkit-line-clamp:unset;max-height:none;overflow:visible}
  .expand-btn{display:inline-flex}
}

@media (min-width:1024px){
  .dlg-body{grid-template-columns:180px minmax(0,1fr);gap:24px;padding:20px}
  .dref{grid-template-columns:minmax(0,1fr);gap:8px}
  .dref-photo{width:100%;max-width:144px;height:120px}
}
@media (max-width:1199px){
  .content{padding:24px}
  .topbar{padding:0 24px}
}
@media (max-width:767px){
  .content{padding:16px}
  .topbar{padding:0 16px}
  h1{font-size:26px;line-height:34px}
  .dlg-wrap{padding:0}
  .dlg{width:100vw;height:100vh;height:100dvh;max-height:none;border-radius:0;border:0}
  .dlg-head{padding:16px;padding-top:calc(16px + env(safe-area-inset-top));gap:12px}
  .dlg-title{font-size:18px;line-height:24px}
  .dlg-close{width:44px;height:44px;padding:0}
  .dlg-close .close-txt{display:none}
  .dlg-close .ico{display:inline-block}
  .dlg-body{padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom));gap:16px}
  .acard{padding:16px}
  .transc-head{flex-direction:column;align-items:flex-start}
  .transc-box{padding:16px}
  .cena-b{padding:0 12px 12px}
  .prompt-actions,.prompt-actions .btn-row{width:100%}
  .prompt-actions .btn-row .btn{width:100%}
  .prompt-actions .link{width:100%;justify-content:flex-start}
}
@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
/* Ver loja (conexão com a aba Lojas, 14/11/2026) */
.ver-loja{padding:6px 12px;margin-top:6px;justify-self:start;align-self:flex-start;white-space:nowrap}
