/* Design System oficial da Cassiellos (Brand Book v1.0 / Brand Lab v1.1, aprovado 21-22/07/2026).
   Este arquivo deve ser carregado por último: ele redefine os tokens de cor/tipografia
   já usados em todo o app.css, sem precisar reescrever cada regra individual. */
:root{
  /* tokens oficiais */
  --cassiellos-navy:#07101F;--cassiellos-navy-2:#0C182B;--cassiellos-navy-3:#14243D;
  --cassiellos-white:#FFFFFF;--cassiellos-paper:#F6F8FF;--cassiellos-gray:#A8B4C9;
  --cassiellos-line:#263650;--cassiellos-signal-red:#F13C4B;
  --cassiellos-system-blue:#246BFF;--cassiellos-system-violet:#7B35F5;--cassiellos-flow-cyan:#22C7F2;
  --cassiellos-graphite:#243044;--cassiellos-mist:#DCE3EE;
  --cassiellos-font-display:'Inter Tight',Inter,Arial,sans-serif;
  --cassiellos-font-body:Inter,Arial,sans-serif;
  --cassiellos-radius-sm:8px;--cassiellos-radius-md:16px;--cassiellos-radius-lg:24px;--cassiellos-space-unit:4px;

  /* remapeamento dos tokens legados usados em app.css para os tokens oficiais acima */
  --bg:var(--cassiellos-navy);--panel:var(--cassiellos-navy-2);--panel2:var(--cassiellos-navy-3);
  --line:var(--cassiellos-line);--text:var(--cassiellos-white);--muted:var(--cassiellos-gray);
  --orange:var(--cassiellos-signal-red);
  --ink:var(--cassiellos-navy);--soft:var(--cassiellos-navy-2);--soft-2:var(--cassiellos-navy-3);
  --stroke:var(--cassiellos-line);--copy:var(--cassiellos-white);--dim:var(--cassiellos-gray);
  --blue:var(--cassiellos-system-blue);--purple:var(--cassiellos-system-violet);--cyan:var(--cassiellos-flow-cyan);
}
body{font-family:var(--cassiellos-font-body)}
h1,h2,h3,.brand strong,.dashboard-topbar h1{font-family:var(--cassiellos-font-display);letter-spacing:-.02em}
.brand strong span{color:var(--cassiellos-system-blue)}
.brand .mark{background:linear-gradient(145deg,var(--cassiellos-flow-cyan),var(--cassiellos-signal-red))}
/* !important necessário: app.css já tem "button.primary, .new-project, .taskflow-add{background:...!important}"
   (patch antigo de cascata) que, sem isso, venceria mesmo com especificidade menor. */
button.primary,.new-project,.taskflow-add{background:linear-gradient(135deg,var(--cassiellos-signal-red),#c92a38)!important;border-color:var(--cassiellos-signal-red)!important;box-shadow:0 8px 25px #f13c4b3d!important}
.primary.compact{background:linear-gradient(135deg,var(--cassiellos-signal-red),#c92a38)!important}
.auth-action{background:linear-gradient(100deg,var(--cassiellos-signal-red),#c92a38)!important;box-shadow:0 10px 24px #f13c4b45!important}
.badge.archived{background:#2a3346;color:var(--cassiellos-gray)}
.client-row.archived{opacity:.62}
.archived-toggle{display:flex;align-items:center;gap:6px;color:var(--cassiellos-gray);font-size:12px;cursor:pointer;user-select:none}
.archived-toggle input{accent-color:var(--cassiellos-signal-red)}
#taskflowClients.loading{opacity:.4;pointer-events:none;transition:opacity .15s ease}
.batch-planning-list{max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:10px;margin:16px 0}
.batch-planning-row{display:grid;grid-template-columns:20px 1fr auto;gap:12px;align-items:center;padding:11px 14px;border-bottom:1px solid var(--line);font-size:13px;cursor:pointer}
.batch-planning-row:last-child{border-bottom:0}
.batch-planning-row input{accent-color:var(--cassiellos-signal-red)}
.batch-planning-row .batch-planning-status{color:var(--muted);font-size:11px;white-space:nowrap}
.batch-planning-row.done .batch-planning-status{color:var(--cassiellos-gray)}
.batch-planning-row.processing .batch-planning-status{color:var(--cassiellos-system-blue)}
.batch-planning-row.error .batch-planning-status{color:var(--cassiellos-signal-red)}
.batch-planning-summary{color:var(--muted);font-size:12px}
.ai-scripts-modal-card{width:min(640px,95vw)}
.ai-scripts-intro{color:var(--muted);font-size:13px;margin:0 0 14px}
.ai-scripts-config{display:grid;grid-template-columns:1fr 110px 90px auto;gap:10px;align-items:end;margin-bottom:12px}
.ai-scripts-config label{display:block;font-size:11px;color:var(--muted);margin-bottom:4px}
.ai-scripts-warning{background:#3a2a14;color:#f2b25c;border:1px solid #6b4a1e;border-radius:8px;padding:9px 12px;font-size:12px;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.ai-scripts-warning.hidden{display:none}
.ai-scripts-warning .text-button{color:#f2b25c;text-decoration:underline;white-space:nowrap;flex-shrink:0}
.field-hint{display:block;color:var(--muted);font-size:11px;margin-top:6px;font-weight:400}
.ai-scripts-list{max-height:420px;overflow:auto;border:1px solid var(--line);border-radius:10px;margin:0 0 16px}
.ai-scripts-row{grid-template-columns:20px 1fr auto;align-items:start;cursor:default;flex-direction:column;display:flex;gap:6px;padding:12px 14px}
.ai-scripts-row>input,.ai-scripts-row>.batch-planning-name,.ai-scripts-row>.batch-planning-status{display:inline-block}
.ai-scripts-row small{color:var(--muted);font-weight:400}
.ai-scripts-preview{width:100%;display:flex;flex-direction:column;gap:8px;margin-top:6px}
.ai-scripts-textarea{width:100%;min-height:110px;resize:vertical;background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:10px;font:inherit;font-size:12.5px;line-height:1.5}
.ai-scripts-preview-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:11px}
.ai-scripts-preview-actions{display:flex;gap:8px;justify-content:flex-end}
.ai-scripts-row.error .batch-planning-status{color:var(--cassiellos-signal-red)}
.ai-scripts-row.done .batch-planning-status{color:var(--cassiellos-gray)}
.ai-scripts-intro code{background:var(--panel2);border:1px solid var(--line);border-radius:4px;padding:1px 5px;font-size:11px}
.import-scripts-dropzone{border:1.5px dashed var(--line);border-radius:10px;padding:22px;text-align:center;color:var(--muted);font-size:13px;margin-bottom:12px;cursor:pointer;transition:border-color .15s ease,background .15s ease}
.import-scripts-dropzone.dragover{border-color:var(--cassiellos-signal-red);background:#2a1418}
.import-scripts-filename{margin-top:8px;color:var(--text);font-weight:600;font-size:12px}
.import-scripts-summary-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.import-scripts-summary-bar span{font-size:11px;padding:5px 10px;border-radius:20px;background:var(--panel2);color:var(--muted);border:1px solid var(--line)}
.import-scripts-summary-bar span.count-encontrado{color:#7fd99a;border-color:#2f5a3f}
.import-scripts-summary-bar span.count-ja_existe{color:#f2b25c;border-color:#6b4a1e}
.import-scripts-summary-bar span.count-nao_encontrado,.import-scripts-summary-bar span.count-invalido,.import-scripts-summary-bar span.count-conflito{color:var(--cassiellos-signal-red);border-color:#6b2530}
.import-scripts-row-textarea{width:100%;min-height:60px;resize:vertical;background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px;font:inherit;font-size:12px;margin-top:6px}
.import-scripts-motivo{color:var(--cassiellos-signal-red);font-size:11px;margin-top:4px}
/* Bug pre-existente achado ao testar este modal: a sidebar fixa (app.css) usa z-index:75!important,
   maior que .modal (z-index:10), entao o canto esquerdo de QUALQUER modal ficava escondido atras dela. */
.modal{z-index:90!important}
.client-modal-card{width:min(760px,95vw)}
.client-tabs{display:flex;gap:2px;overflow-x:auto;border-bottom:1px solid var(--line);margin:18px 0 4px;padding-bottom:0}
.client-tab{border:0;background:none;color:var(--muted);padding:10px 14px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-1px}
.client-tab:hover{color:var(--text)}
.client-tab.active{color:var(--cassiellos-signal-red);border-bottom-color:var(--cassiellos-signal-red)}
.client-tab-panel{display:none;padding:18px 0}
.client-tab-panel.active{display:block}
.client-tab-intro{color:var(--muted);font-size:12px;margin:0 0 14px}
.client-tab-placeholder{color:var(--muted);font-size:13px;text-align:center;padding:40px 10px}
.client-historico{color:var(--muted);font-size:13px;display:flex;flex-direction:column;gap:8px}
.client-historico b{color:var(--text)}

/* ---- MediaFlow: importação de mídias (Etapa 3) ----
   Reaproveita os tokens oficiais do Brand Lab já remapeados acima.
   O acento é o Signal Red apenas em ação e erro; progresso usa o System Blue
   para não competir com o botão primário. */
.mediaflow-header-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.import-media-card{width:min(820px,95vw)}
.import-media-intro{color:var(--muted);font-size:13px;margin:0 0 16px;line-height:1.55}
.import-media-intro b{color:var(--text);font-weight:600}
.import-media-config{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:14px}
.import-media-config label,.import-media-card>label{display:block;font-size:11px;color:var(--muted);margin-bottom:4px;font-weight:600;letter-spacing:.02em;text-transform:uppercase}
.import-media-card>label{margin-top:12px}
.import-media-card code{background:var(--panel2);border:1px solid var(--line);border-radius:4px;padding:1px 5px;font-size:11px}
.import-media-dropzone{border:1.5px dashed var(--line);border-radius:var(--cassiellos-radius-md);padding:26px 18px;text-align:center;color:var(--muted);font-size:13px;margin:16px 0 12px;cursor:pointer;transition:border-color .15s ease,background .15s ease}
.import-media-dropzone:hover,.import-media-dropzone:focus-visible{border-color:var(--cassiellos-system-blue);outline:none}
.import-media-dropzone.dragover{border-color:var(--cassiellos-signal-red);background:#2a1418}
.import-media-dropzone b{color:var(--text)}
.import-media-dropzone small{display:block;margin-top:6px;font-size:11.5px}
.import-media-summary{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.import-media-summary.hidden{display:none}
.import-media-summary span{font-size:11px;padding:5px 10px;border-radius:20px;background:var(--panel2);color:var(--muted);border:1px solid var(--line)}
.import-media-list{max-height:340px;overflow:auto;border:1px solid var(--line);border-radius:var(--cassiellos-radius-sm);margin-bottom:16px}
.import-media-list:empty{display:none}
.import-media-row{display:grid;grid-template-columns:1fr auto;gap:6px 12px;padding:12px 14px;border-bottom:1px solid var(--line);font-size:13px}
.import-media-row:last-child{border-bottom:0}
.import-media-row-name{color:var(--text);font-weight:600;word-break:break-word}
.import-media-row-meta{color:var(--muted);font-size:11.5px;font-variant-numeric:tabular-nums}
.import-media-row-actions{display:flex;gap:8px;align-items:flex-start}
.import-media-bar{grid-column:1/-1;height:5px;border-radius:3px;background:var(--panel2);overflow:hidden;margin-top:2px}
.import-media-bar i{display:block;height:100%;width:0;background:var(--cassiellos-system-blue);transition:width .2s ease}
.import-media-row.concluido .import-media-bar i{background:#3fa864}
.import-media-row.erro .import-media-bar i,.import-media-row.cancelado .import-media-bar i{background:var(--cassiellos-signal-red)}
.import-media-status{font-size:11.5px;font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}
.import-media-row.enviando .import-media-status,.import-media-row.preparando .import-media-status{color:var(--cassiellos-system-blue)}
.import-media-row.concluido .import-media-status{color:#7fd99a}
.import-media-row.erro .import-media-status,.import-media-row.cancelado .import-media-status{color:var(--cassiellos-signal-red)}
.import-media-row-erro{grid-column:1/-1;color:var(--cassiellos-signal-red);font-size:11.5px}
.import-media-row-dup{grid-column:1/-1;background:#3a2a14;color:#f2b25c;border:1px solid #6b4a1e;border-radius:var(--cassiellos-radius-sm);padding:8px 10px;font-size:11.5px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.import-media-row-dup .text-button{color:#f2b25c;text-decoration:underline}
.import-media-totals{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.import-media-retomada{background:var(--panel2);border:1px solid var(--line);border-radius:var(--cassiellos-radius-sm);padding:10px 12px;font-size:12px;color:var(--muted);margin-bottom:12px;display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.import-media-retomada.hidden{display:none}
.import-media-retomada b{color:var(--text)}
.import-media-card>select,.import-media-card>textarea,.import-media-card>input{width:100%;background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:var(--cassiellos-radius-sm);padding:9px 10px;font:inherit;font-size:13px}
.import-media-card>textarea{resize:vertical;min-height:56px;line-height:1.5}
.import-media-card .field-hint{margin-bottom:2px}
/* Os campos dentro de .import-media-config nao sao filhos diretos do card,
   entao precisam da mesma pintura dos tokens que os de fora. */
.import-media-config input,.import-media-config select{width:100%;background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:var(--cassiellos-radius-sm);padding:9px 10px;font:inherit;font-size:13px}
.import-media-config input::placeholder,.import-media-card>textarea::placeholder{color:var(--muted)}
.import-media-config input[type="date"]{color-scheme:dark}

/* ---- MediaFlow: biblioteca de importações ---- */
.media-library{margin-top:18px}
.media-library-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;padding:14px 0;border-bottom:1px solid var(--line)}
.media-library-filters label{display:flex;flex-direction:column;gap:5px;font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.02em;text-transform:uppercase}
.media-library-filters select,.media-library-filters input{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:var(--cassiellos-radius-sm);padding:8px 10px;font:inherit;font-size:12.5px;text-transform:none;font-weight:400;min-width:140px}
.media-library-filters .text-button{margin-bottom:8px}
.media-library-summary{display:flex;flex-wrap:wrap;gap:8px;padding:12px 0}
.media-library-summary:empty{display:none}
.media-library-summary span{font-size:11px;padding:5px 10px;border-radius:20px;background:var(--panel2);color:var(--muted);border:1px solid var(--line);font-variant-numeric:tabular-nums}
.media-library-summary span.pendente{color:var(--cassiellos-system-blue);border-color:#24408a}
.media-library-summary span.erro{color:var(--cassiellos-signal-red);border-color:#6b2530}
.media-library-list{display:flex;flex-direction:column;gap:8px;max-height:420px;overflow:auto}
.media-library-row{display:flex;gap:14px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;padding:12px 14px;border:1px solid var(--line);border-radius:var(--cassiellos-radius-sm);background:var(--panel2)}
.media-library-row>div:first-child{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1 1 260px}
.media-library-row b{color:var(--text);font-size:13px;word-break:break-word}
.media-library-row span{color:var(--muted);font-size:11.5px}
.media-library-row .media-library-erro{color:var(--cassiellos-signal-red)}
.media-library-acoes{display:flex;flex-direction:column;align-items:flex-end;gap:6px;white-space:nowrap}
.media-library-status{font-size:11px;font-weight:600;text-transform:capitalize;font-variant-numeric:tabular-nums;color:var(--muted)}
.media-library-row.concluido .media-library-status{color:#7fd99a}
.media-library-row.enviando .media-library-status,.media-library-row.processando .media-library-status,.media-library-row.pausado .media-library-status{color:var(--cassiellos-system-blue)}
.media-library-row.erro .media-library-status,.media-library-row.cancelado .media-library-status{color:var(--cassiellos-signal-red)}
.media-library-row.erro{border-color:#6b2530}
