@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400;1,500&family=Space+Grotesk:wght@500;600;700&family=Urbanist:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400&display=swap');
    /* Tokens de design: cores, raios e sombras reutilizados por todos os componentes abaixo */
    :root{
      --bg:#f7f7f6;--card:#ffffff;--muted:#68686a;--accent:#F6BE00;--accent-ink:#1a1a1a;--text:#17171a;
      --border:#e5e5e3;--border-strong:#d3d3d0;--surface-muted:#f7f7f5;--accent-weak:rgba(246,190,0,.16);--text-faint:#9a9a98;
      --white:#ffffff;--accent-hover:#d9a600;--on-accent:#1a1a1a;--selection-text:#000000;
      --danger:#dc2626;--danger-bg:#fef2f2;--danger-bg-strong:#fee2e2;--danger-border:#fecaca;
      --success:#16a34a;--success-bg:#f0fdf4;--success-border:#bbf7d0;
      --backdrop:rgba(15,15,13,.5);
      --radius-sm:8px;--radius-md:12px;--radius-lg:16px;
      --shadow-sm:0 1px 2px rgba(15,15,13,.06);--shadow-md:0 6px 16px rgba(15,15,13,.08);--shadow-lg:0 20px 40px rgba(15,15,13,.16);
      --event-shadow:0 1px 3px rgba(15,15,13,.10),0 1px 2px rgba(15,15,13,.06);--event-shadow-hover:0 10px 22px rgba(15,15,13,.14),0 2px 6px rgba(15,15,13,.08);
      --font-display:'Space Grotesk',Segoe UI,Arial,sans-serif;
      --font-body:'Plus Jakarta Sans',Segoe UI,Arial,sans-serif;
      --font-ui:'Urbanist',Segoe UI,Arial,sans-serif;
      --base-font-family:var(--font-body);
      /* altura padrão compartilhada por inputs de texto/data/número, selects, o seletor de cor e
         botões (tamanho normal) — garante que fiquem alinhados quando aparecem lado a lado, como
         em "Nova rede" (campo + cor + Adicionar) */
      --control-h:38px;
    }
    /* Modo escuro: os mesmos tokens, com os fundos claros trocados por tons de preto/cinza
       e o roxo de acento trocado por amarelo (base #F6BE00). Ativado via [data-theme="dark"]
       na tag <html>, alternado pelo botão de tema e persistido pelo JS. */
    :root[data-theme="dark"]{
      --bg:#121214;--card:#1c1d22;--muted:#9aa1ac;--accent:#F6BE00;--accent-ink:#F6BE00;--text:#f1f2f4;
      --border:#2c2d33;--border-strong:#3d3e46;--surface-muted:#202126;--accent-weak:rgba(246,190,0,.16);--text-faint:#6b7280;
      --accent-hover:#d9a600;--on-accent:#1a1a1a;
      --danger:#f87171;--danger-bg:#3a1518;--danger-bg-strong:#4a1a1e;--danger-border:#5c2328;
      --success:#4ade80;--success-bg:#142a1c;--success-border:#1f4b2c;
      --backdrop:rgba(0,0,0,.65);
      --shadow-sm:0 1px 2px rgba(0,0,0,.25);--shadow-md:0 6px 16px rgba(0,0,0,.35);--shadow-lg:0 20px 40px rgba(0,0,0,.5);
      --event-shadow:0 1px 3px rgba(0,0,0,.35),0 1px 2px rgba(0,0,0,.25);--event-shadow-hover:0 10px 24px rgba(0,0,0,.5),0 2px 6px rgba(0,0,0,.35);
    }
    /* Reset global e layout base da página */
    *{box-sizing:border-box}
    ::selection{background:var(--accent);color:var(--selection-text)}
    body{font-family:var(--base-font-family);background:var(--bg);margin:0;padding:0;color:var(--text);-webkit-font-smoothing:antialiased;transition:background .2s,color .2s}
    button,input,select,textarea,option{font-family:var(--font-ui)}
    .container{max-width:1900px;margin:0 auto}

    /* Brilho de fundo que acompanha o mouse (Início e Login) — canvas inserido via
       mouse-light.js como 1º filho do body, substitui o gradiente radial estático de
       .auth-page::before/.home-body::before (que continua servindo de fallback em telas sem
       mouse ou com "reduzir movimento" ativado). Desenho (rastro de blobs desbotando) é feito
       em JS a cada frame; aqui só o posicionamento/tamanho do canvas. */
    .mouse-light-canvas{position:fixed;inset:0;pointer-events:none}

    /* Shell do portal: sidebar fixa à esquerda (menu de ferramentas + seletor de marca,
       montados por portal-shell.js) + área de conteúdo da ferramenta atual à direita. O
       padding:28px que antes vivia no body agora é do .portal-main, pra sidebar ficar
       encostada nas bordas da janela. */
    .portal-shell{display:flex;align-items:stretch;min-height:100vh}
    .portal-sidebar{width:236px;flex-shrink:0;background:var(--card);border-right:1px solid var(--border);display:flex;flex-direction:column;gap:18px;padding:18px 14px;position:sticky;top:0;height:100vh;overflow-y:auto;transition:width .2s ease,padding .2s ease}
    .portal-main{flex:1;min-width:0;padding:28px}

    .portal-topbar{display:flex;align-items:center;justify-content:space-between;gap:8px}
    .portal-logo{display:flex;align-items:center;gap:8px;padding:0 4px;font-weight:900;font-size:15px;color:var(--text);letter-spacing:-.01em;min-width:0}
    .portal-logo-mark{width:26px;height:26px;border-radius:8px;background:var(--accent);color:var(--on-accent);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:13px;flex-shrink:0}

    /* Navegação entre ferramentas do portal — mesma linguagem visual de .settings-nav-btn
       (usado no menu lateral de Configurações), só que como links <a> em vez de <button> */
    .portal-nav{display:flex;flex-direction:column;gap:2px}
    .portal-nav-item{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:var(--radius-sm);color:var(--muted);font-weight:700;font-size:13px;text-decoration:none;transition:background .12s,color .12s}
    /* [hidden] some vencer o display:flex acima — a regra nativa do navegador pra [hidden] tem
       prioridade mais baixa que qualquer seletor do autor, então precisa ser repetida aqui */
    .portal-nav-item[hidden]{display:none}
    .portal-nav-item svg{flex-shrink:0}
    .portal-nav-item:hover{background:var(--surface-muted);color:var(--text)}
    .portal-nav-item.active{background:var(--accent-weak);color:var(--accent-ink)}
    /* variante <button> (ex.: "Configurações" no rodapé da sidebar) — mesma aparência do link,
       só zerando o chrome nativo do elemento */
    button.portal-nav-item{width:100%;border:0;background:transparent;font-family:inherit;cursor:pointer;text-align:left}

    /* Botão de recolher/expandir a sidebar — quadradinho só com ícone, ao lado da logo
       (mesmo estilo compacto do toggle "|←" de referência) */
    .portal-collapse-btn{flex-shrink:0;width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--muted);cursor:pointer;transition:background .12s,color .12s}
    .portal-collapse-btn:hover{background:var(--surface-muted);color:var(--text)}
    .portal-collapse-btn svg{flex-shrink:0}

    /* Seletor de marca: mesmo mecanismo de trigger+popover ancorado no <body> via
       position:fixed que .icon-picker-trigger/.icon-picker-popover já usam — necessário
       porque a sidebar tem overflow-y:auto, que cortaria um popover position:absolute preso nela */
    .portal-brand-trigger{display:flex;align-items:center;gap:9px;width:100%;padding:8px 9px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--card);cursor:pointer;text-align:left;font-family:inherit;transition:border-color .12s,background .12s}
    .portal-brand-trigger:hover{background:var(--surface-muted)}
    .portal-brand-trigger.open{border-color:var(--accent-ink);box-shadow:0 0 0 2px var(--accent-weak)}
    .portal-brand-dot{width:28px;height:28px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:900;color:var(--on-accent);overflow:hidden}
    .portal-brand-dot img{width:100%;height:100%;object-fit:cover;display:block}
    .portal-brand-trigger-body{flex:1;min-width:0}
    .portal-brand-trigger-name{font-size:13.5px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .portal-brand-trigger-chevron{flex-shrink:0;display:flex;color:var(--text-faint)}

    /* Barra de conta no rodapé da sidebar: quem está logado, sempre em uma única linha (o
       nome+e-mail truncam com reticências antes de empurrar o ícone de sair). A barra inteira é
       clicável (abre o menu com Redefinir senha/Sair pra cima, ver portal-shell.js) — o ícone de
       sair dentro dela é só um atalho e usa stopPropagation pra não abrir o menu junto. */
    .portal-account-bar{display:flex;align-items:center;gap:8px;width:100%;padding:6px 7px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--card);cursor:pointer;transition:border-color .12s,background .12s}
    .portal-account-bar:hover{background:var(--surface-muted)}
    .portal-account-bar.open{border-color:var(--accent-ink);box-shadow:0 0 0 2px var(--accent-weak)}
    .portal-account-avatar{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:var(--surface-muted);color:var(--muted);display:flex;align-items:center;justify-content:center}
    .portal-account-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
    .portal-account-name{font-size:11.5px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .portal-account-email{font-size:10px;font-weight:300;font-style:italic;color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .portal-account-btn{flex-shrink:0;width:26px;height:26px;padding:0;display:flex;align-items:center;justify-content:center;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;transition:background .12s,color .12s}
    .portal-account-btn:hover{background:var(--surface-muted);color:var(--text)}
    #portalLogoutBtn:hover{background:var(--danger-bg);color:var(--danger)}

    /* Textos que somem ao recolher a sidebar: em vez de display:none (que troca de estado na
       hora, dessincronizado da largura da sidebar animando), encolhem/desaparecem juntos com
       a mesma duração — sem isso o texto "pipocava" largo antes do menu terminar de encolher */
    .portal-logo-text,
    .portal-nav-item span,
    .portal-brand-trigger-body,
    .portal-brand-trigger-chevron{
      overflow:hidden;white-space:nowrap;max-width:170px;opacity:1;
      transition:max-width .2s ease,opacity .12s ease;
    }

    .portal-brand-popover{position:fixed;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:8px;width:250px;z-index:200;max-height:70vh;overflow-y:auto}
    .portal-brand-row{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:var(--radius-sm);cursor:pointer}
    .portal-brand-row:hover{background:var(--surface-muted)}
    .portal-brand-row.active{background:var(--accent-weak)}
    .portal-brand-row .portal-brand-dot{width:24px;height:24px;font-size:10px}
    .portal-brand-row-name{flex:1;min-width:0;font-size:12.5px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .portal-brand-row-edit{flex-shrink:0;width:24px;height:24px;border:0;background:transparent;color:var(--text-faint);border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center}
    .portal-brand-row-edit:hover{background:var(--card);color:var(--text)}
    .portal-brand-edit-fields{display:flex;align-items:center;gap:6px;padding:6px 8px}
    .portal-brand-edit-fields input[type=text]{flex:1;height:30px;padding:0 8px;font-size:12.5px}
    .pb-edit-photo{flex-shrink:0;cursor:pointer;display:block}
    .pb-edit-photo .portal-brand-dot{width:30px;height:30px;font-size:11px}
    .portal-brand-divider{height:1px;background:var(--border);margin:6px 2px}
    .portal-brand-add{display:flex;align-items:center;gap:8px;width:100%;padding:8px;border:0;background:transparent;color:var(--accent-ink);font-weight:700;font-size:12.5px;border-radius:var(--radius-sm);cursor:pointer;font-family:inherit}
    .portal-brand-add:hover{background:var(--accent-weak)}
    .portal-account-menu{padding:4px;width:200px}
    .portal-account-menu-item{display:flex;align-items:center;gap:9px;width:100%;padding:9px 10px;border:0;background:transparent;color:var(--text);font-size:12.5px;font-weight:500;font-family:inherit;border-radius:5px;cursor:pointer;text-align:left}
    .portal-account-menu-item:hover{background:var(--surface-muted)}
    .portal-account-menu-item.danger:hover{background:var(--danger-bg);color:var(--danger)}
    .portal-account-menu-divider{height:1px;background:var(--border);margin:3px 6px}

    /* Upload de foto de perfil no modal "Nova marca" */
    .portal-brand-photo-upload{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px dashed var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;font-size:12.5px;font-weight:700;color:var(--muted);transition:background .12s,border-color .12s}
    .portal-brand-photo-upload:hover{background:var(--surface-muted);border-color:var(--accent-ink)}
    .portal-brand-photo-preview{width:36px;height:36px;border-radius:50%;flex-shrink:0;background:var(--surface-muted);display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--text-faint)}
    .portal-brand-photo-preview img{width:100%;height:100%;object-fit:cover;display:block}

    /* Sidebar recolhida: tanto via botão manual (.collapsed, alternado por portal-shell.js e
       persistido) quanto automaticamente em telas estreitas (media query abaixo). O topbar
       (logo + botão de recolher) empilha na vertical pra caber nos 72px de largura. */
    .portal-sidebar.collapsed{width:72px;padding:14px 10px}
    .portal-sidebar.collapsed .portal-topbar{flex-direction:column;gap:10px}
    .portal-sidebar.collapsed .portal-logo-text,
    .portal-sidebar.collapsed .portal-nav-item span,
    .portal-sidebar.collapsed .portal-brand-trigger-body,
    .portal-sidebar.collapsed .portal-brand-trigger-chevron,
    .portal-sidebar.collapsed .portal-account-info{max-width:0;opacity:0;transition:max-width .2s ease,opacity .08s ease}
    /* o "gap" do flex ainda reserva espaço ao redor de um filho escondido via max-width:0 —
       sem zerar o gap aqui, o ícone visível (logo/avatar) fica puxado pra esquerda, fora do
       centro real da coluna de ícones, e cada linha desalinha numa medida diferente */
    .portal-sidebar.collapsed .portal-logo{gap:0}
    .portal-sidebar.collapsed .portal-nav-item{justify-content:center;gap:0}
    .portal-sidebar.collapsed .portal-brand-trigger{width:auto;margin:0 auto;justify-content:center;gap:0;padding:5px;border-color:transparent;background:transparent}
    .portal-sidebar.collapsed .portal-brand-trigger:hover{background:var(--surface-muted)}
    /* recolhida, os 3 ícones (avatar + 2 botões) não cabem lado a lado nos 72px — empilha.
       max-width:0 (regra acima) só zera a largura; numa pilha vertical isso não tira a altura
       do texto invisível, então precisa de display:none aqui pra não sobrar um vão entre os ícones */
    .portal-sidebar.collapsed .portal-account-bar{flex-direction:column;width:auto;margin:0 auto;gap:4px;padding:5px;border-color:transparent;background:transparent}
    .portal-sidebar.collapsed .portal-account-info{display:none}

    @media (max-width:760px){
      .portal-sidebar{width:72px;padding:14px 10px}
      .portal-topbar{flex-direction:column;gap:10px}
      .portal-logo-text,.portal-nav-item span,.portal-brand-trigger-body,.portal-brand-trigger-chevron,.portal-account-info{max-width:0;opacity:0}
      .portal-account-bar{flex-direction:column;width:auto;margin:0 auto;gap:4px;padding:5px;border-color:transparent;background:transparent}
      .portal-account-info{display:none}
      .portal-logo{gap:0}
      .portal-nav-item{justify-content:center;gap:0}
      .portal-brand-trigger{width:auto;margin:0 auto;justify-content:center;gap:0;padding:5px;border-color:transparent;background:transparent}
      .portal-brand-trigger:hover{background:var(--surface-muted)}
    }

    /* Escala tipográfica do site — sempre usar a tag semântica correspondente ao nível:
       H1 · título da página (só existe um, no topo) — 23px/900
       H2 · título de modal (Filtros, Configurações, Editar postagem...) — 17px/900
       H3 · título de seção dentro de um modal (ex: "Publicação", "Redes sociais" no
            formulário de postagem) — discreto e em caixa alta, mas com peso suficiente
            pra se destacar dos labels de campo comuns
       H4 · reservado para um 4º nível (subtítulo dentro de uma seção), ainda sem uso hoje —
            definido aqui pra já nascer consistente quando alguma tela precisar dele */
    h1,h2,h3,h4,h5,h6{margin:0;font-family:var(--font-display);color:var(--text)}
    h1{font-size:23px;font-weight:900;letter-spacing:-.01em}
    h2{font-size:17px;font-weight:900;letter-spacing:-.005em}
    h3{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--accent-ink)}
    h4{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint)}

    /* Cabeçalho da página: título + ações "Buscar"/"Configurações"/"Nova postagem" */
    .page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}
    .page-header h1{margin:0 0 4px}
    .page-subtitle{margin:0;font-size:13px;color:var(--muted)}
    .page-header-actions{display:flex;gap:10px;align-items:center;flex-shrink:0}

    /* Busca de postagens (lupa no cabeçalho): em repouso é só o botão-lupa; ao abrir, a barra
       cresce por cima do espaço vazio do cabeçalho (entre o título e os botões) como uma camada
       flutuante (position:absolute), ancorada pela direita no lugar do próprio botão-lupa. Como
       ela sai do fluxo normal, Configurações/Nova postagem nunca se movem — só a barra anima. */
    .search-wrap{position:relative;flex-shrink:0}
    .search-toggle-btn{display:flex}
    .search-active .search-toggle-btn{display:none}
    .search-bar{
      position:absolute;top:50%;right:0;transform:translateY(-50%);
      display:flex;align-items:center;gap:8px;overflow:hidden;
      width:32px;height:var(--control-h);padding:0 6px 0 4px;
      border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);
      opacity:0;pointer-events:none;
      transition:width .3s cubic-bezier(.16,1,.3,1),opacity .18s ease,border-color .12s,box-shadow .12s;
    }
    .search-active .search-bar{width:clamp(240px,32vw,480px);opacity:1;pointer-events:auto}
    .search-bar:focus-within{border-color:var(--accent-ink);box-shadow:0 0 0 3px var(--accent-weak)}
    .search-bar input{flex:1;min-width:0;height:auto;padding:0;border:0;background:transparent}
    .search-bar input:focus{outline:none;box-shadow:none}
    .search-bar-icon{display:flex;align-items:center;justify-content:center;color:var(--text-faint);flex-shrink:0}
    .search-results{display:none;flex-direction:column;gap:2px;position:absolute;top:50%;transform:translateY(calc(var(--control-h) / 2 + 6px));right:0;width:clamp(240px,32vw,480px);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:6px;max-height:360px;overflow-y:auto;z-index:45}
    .search-active .search-results.open{display:flex;animation:searchResultsIn .2s cubic-bezier(.16,1,.3,1) .18s both}
    @keyframes searchResultsIn{from{opacity:0;transform:translateY(calc(var(--control-h) / 2))}to{opacity:1;transform:translateY(calc(var(--control-h) / 2 + 6px))}}
    @media (prefers-reduced-motion: reduce){
      .search-bar{transition:none}
      .search-active .search-results.open{animation:none}
    }
    .search-result-row{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:var(--radius-sm);cursor:pointer;transition:background .12s}
    .search-result-row:hover{background:var(--surface-muted)}
    .search-result-nets{display:flex;align-items:center;gap:2px;flex-shrink:0}
    .search-result-nets .net-icon-img,.search-result-nets svg{width:15px;height:15px;border-radius:50%}
    .search-result-body{flex:1;min-width:0;display:flex;align-items:baseline;gap:8px}
    .search-result-title{flex:1;min-width:0;font-size:12.5px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .search-result-meta{flex-shrink:0;font-size:11px;color:var(--muted);white-space:nowrap}
    .search-empty,.search-hint{padding:9px 4px;text-align:center;font-size:12px;color:var(--text-faint)}

    /* Superfície de cartão genérica, reaproveitada pela toolbar, pelo card de sugestão e pelos grupos da lista */
    .card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px;box-shadow:var(--shadow-sm)}

    /* Campos de formulário compartilhados por todos os modais (criar/editar postagem, filtros, edição em lote, configurações) */
    label{font-size:12px;color:var(--muted);display:block;margin-bottom:6px}
    /* input:not([type]) cobre campos de texto sem o atributo type explícito no HTML (o navegador já
       trata como texto, mas o seletor [type=text] só bate se o atributo estiver presente) */
    input[type=text],input[type=email],input[type=password],input:not([type]),input[type=date],input[type=number],select,textarea{width:100%;padding:9px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:14px;font-family:inherit;background:var(--card);color:var(--text);transition:border-color .12s,box-shadow .12s}
    /* controles de uma linha só (não o textarea, que precisa crescer em altura) ficam todos com a mesma altura */
    input[type=text],input[type=email],input[type=password],input:not([type]),input[type=date],input[type=number],select{height:var(--control-h);padding:0 10px}
    input[type=color]{border:1px solid var(--border);border-radius:var(--radius-sm);height:var(--control-h);padding:2px;width:44px;cursor:pointer;flex-shrink:0}
    input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-ink);box-shadow:0 0 0 3px var(--accent-weak)}

    /* Botões — altura igual à dos campos de texto/select/cor, para ficarem alinhados quando lado a lado */
    .btn{height:var(--control-h);display:inline-flex;align-items:center;justify-content:center;gap:6px;flex-shrink:0;background:var(--accent);color:var(--on-accent);padding:0 14px;border-radius:var(--radius-sm);border:0;cursor:pointer;font-weight:700;font-size:13px;transition:background .12s,transform .06s,box-shadow .12s;font-family:inherit}
    .btn svg{flex-shrink:0}
    .btn:hover{background:var(--accent-hover);box-shadow:var(--shadow-sm)}
    .btn:active{transform:translateY(1px)}
    .btn:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}
    .btn.ghost{background:var(--card);color:var(--text);border:1px solid var(--border);font-weight:700}
    .btn.ghost:hover{background:var(--surface-muted);border-color:var(--border-strong)}
    /* variante "small", usada tanto para botões compactos com texto (Cancelar, Aplicar) quanto para
       ícones soltos (✕ de remover) — ambas as classes .btn.small e .btn.ghost.small compartilham a
       mesma altura reduzida, para não desalinhar quando aparecem juntas numa mesma linha */
    .btn.ghost.small,.btn.small{height:28px;padding:0 10px;font-size:12px}
    .btn.ghost.danger{color:var(--danger);border-color:var(--danger-border)}
    .btn.ghost.danger:hover{background:var(--danger-bg);border-color:var(--danger)}
    .btn-icon{width:32px;height:32px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--card);color:var(--muted);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s,border-color .12s}
    .btn-icon:hover{background:var(--surface-muted);color:var(--text);border-color:var(--border-strong)}

    /* Barra de ferramentas: navegação de mês, alternância de visão, abas de canal e botões de ação acima da grade */
    .toolbar-card{margin-top:0;padding:14px}
    .toolbar-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
    .toolbar-row + .toolbar-row{margin-top:10px}
    .toolbar-spacer{flex:1}
    /* Ações secundárias da toolbar: exportações e reset ficam agrupados para preservar
       a leitura dos filtros e das redes como controles principais do calendário. */
    .toolbar-more-wrap{position:relative;flex-shrink:0}
    .toolbar-more-caret{display:inline-flex;align-items:center;color:var(--text-faint);transition:transform .15s}
    .toolbar-more-wrap.open .toolbar-more-caret{transform:rotate(180deg)}
    .toolbar-more-menu{position:absolute;top:calc(100% + 6px);right:0;display:none;flex-direction:column;min-width:210px;padding:6px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:50}
    .toolbar-more-menu.open{display:flex}
    .toolbar-more-item{width:100%;display:flex;align-items:center;gap:9px;padding:8px 10px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);font:700 12.5px var(--base-font-family);text-align:left;cursor:pointer;white-space:nowrap}
    .toolbar-more-item svg{flex-shrink:0;color:var(--muted)}
    .toolbar-more-item:hover{background:var(--surface-muted)}
    .toolbar-more-item.danger{color:var(--danger)}
    .toolbar-more-item.danger svg{color:var(--danger)}
    .toolbar-more-item.danger:hover{background:var(--danger-bg)}
    .toolbar-more-separator{height:1px;background:var(--border);margin:5px 4px}
    .month-nav{display:flex;align-items:center;gap:8px}
    .month-label-wrap{position:relative}
    .month-label{min-width:160px;text-align:center;font-weight:700;font-size:14px;background:transparent;border:1px solid transparent;color:var(--text);font-family:inherit;cursor:pointer;padding:5px 8px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;gap:4px;transition:background .12s,border-color .12s}
    .month-label:hover{background:var(--surface-muted)}
    /* enquanto o popover de mês está aberto, o rótulo (agora mostrando só o ano) fica com uma caixa ativa,
       como um campo em foco — sinaliza que as setas ‹ › do cabeçalho agora navegam por ano */
    .month-label[aria-expanded="true"]{border-color:var(--accent-ink);background:var(--card)}
    .month-label-caret{font-size:10px;color:var(--muted);transition:transform .15s}
    .month-label[aria-expanded="true"] .month-label-caret{transform:rotate(180deg)}
    .ai-info{font-size:12.5px;color:var(--muted);background:var(--surface-muted);border:1px solid var(--border);padding:6px 12px;border-radius:var(--radius-sm);cursor:pointer;font-family:inherit;transition:background .12s,border-color .12s}
    .ai-info:hover{background:var(--card);border-color:var(--border-strong);color:var(--text)}

    /* Dropdown do resumo do mês: ancorado logo abaixo do botão de contagem da toolbar, com um
       alternador (Tipo/Editoria/Rede) e uma lista simples de nome + contagem por categoria */
    .ai-summary-wrap{position:relative}
    .month-summary-dropdown{position:absolute;top:calc(100% + 6px);right:0;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:14px;width:260px;z-index:40;display:none}
    .month-summary-dropdown.open{display:block}
    .month-summary-dropdown-title{font-size:12px;font-weight:700;color:var(--text);margin-bottom:10px}
    .ms-list{display:flex;flex-direction:column;gap:9px;margin-top:12px}
    .ms-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12.5px}
    .ms-row-label{display:flex;align-items:center;gap:7px;font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
    .ms-row-count{flex:0 0 auto;font-weight:700;color:var(--muted)}

    /* Popover de seleção rápida de mês dentro do ano, ancorado abaixo do rótulo (que mostra o ano
       enquanto o popover está aberto). Não tem navegação de ano própria — reaproveita as setas ‹ › do cabeçalho. */
    .month-year-picker{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:12px;width:240px;z-index:40;display:none}
    .month-year-picker.open{display:block}
    .myp-months{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
    .myp-month{border:0;background:transparent;color:var(--text);font-size:12.5px;font-weight:700;padding:9px 4px;border-radius:var(--radius-sm);cursor:pointer;text-align:center;transition:background .12s,color .12s}
    .myp-month:hover{background:var(--surface-muted)}
    .myp-month.past{color:var(--text-faint);font-weight:400}
    .myp-month.current{outline:1px solid var(--accent);outline-offset:-1px}
    .myp-month.selected{background:var(--accent);color:var(--on-accent)}

    /* Indicador de sincronização com o servidor (api.php) — texto discreto que só some
       quando vazio; "ok" e "warn" mudam a cor pro estado atual */
    .sync-status{font-size:11px;color:var(--text-faint);white-space:nowrap}
    .sync-status:empty{display:none}
    .sync-status.ok{color:var(--success)}
    .sync-status.warn{color:var(--danger)}

    /* Alternador de visão (Mês / Lista) */
    .view-toggle{display:flex;background:var(--surface-muted);border:1px solid var(--border);border-radius:10px;padding:3px;gap:2px}
    .view-toggle button{border:0;background:transparent;padding:6px 14px;border-radius:8px;font-size:12.5px;font-weight:700;color:var(--muted);cursor:pointer;font-family:inherit;transition:background .12s,color .12s}
    .view-toggle button.active{background:var(--card);color:var(--accent-ink);box-shadow:var(--shadow-sm)}

    /* Abas de canal (Todas, Instagram, LinkedIn...), geradas dinamicamente pelo JS.
       "Todas" fica como pill de texto; as redes viram círculos só com o ícone, do mesmo
       tamanho/altura da pill pra alinhar. Rede não selecionada fica em P&B (grayscale);
       ao selecionar "Todas" (classe .all-active no container), todas ficam coloridas. */
    .tabs{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
    #tabs button{border-radius:var(--radius-sm);padding:6px 13px;font-size:12.5px;height:30px}
    #tabs button.icon-only{position:relative;width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:transparent;border:0}
    /* X pequeno que aparece sobre o ícone quando aquela rede está selecionada (seleção múltipla) —
       puramente indicativo: o clique continua indo pro botão inteiro, que já alterna a seleção */
    .tab-remove{display:none;position:absolute;top:-3px;right:-3px;width:14px;height:14px;border-radius:50%;background:var(--accent-ink);color:var(--card);align-items:center;justify-content:center;font-size:10px;line-height:1;border:1.5px solid var(--card);pointer-events:none}
    #tabs button.icon-only:not(.ghost) .tab-remove{display:flex}
    #tabs button.icon-only:hover{box-shadow:0 0 0 2px var(--surface-muted)}
    #tabs button.icon-only:not(.ghost){box-shadow:0 0 0 2px var(--accent-ink)}
    #tabs button.icon-only .net-icon-img,
    #tabs button.icon-only svg{width:30px;height:30px;border-radius:50%}
    #tabs button.icon-only .dot{width:30px;height:30px;border-radius:50%}
    #tabs button.icon-only.ghost .net-icon-img,
    #tabs button.icon-only.ghost svg{filter:grayscale(1);opacity:.5;transition:filter .15s,opacity .15s}
    #tabs button.icon-only.ghost:hover .net-icon-img,
    #tabs button.icon-only.ghost:hover svg{opacity:.8}
    #tabs.all-active button.icon-only.ghost .net-icon-img,
    #tabs.all-active button.icon-only.ghost svg{filter:none;opacity:1}

    /* Chips (pílulas de rádio/checkbox usadas em vários modais) */
    .chip{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--card);font-family:var(--base-font-family);font-size:12.5px;font-weight:700;line-height:1.25;cursor:pointer;user-select:none;transition:background .12s,border-color .12s,color .12s;color:var(--text)}
    .chip:hover{border-color:var(--border-strong)}
    .chip input{margin:0}
    .chip:has(input:checked){background:var(--accent-weak);border-color:var(--accent-ink);color:var(--accent-ink)}
    .chip button{margin-left:2px;padding:3px 6px;font-size:11px;border-radius:8px}
    .dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}

    /* Seleção de redes sociais no modal de postagem: mesmo padrão de círculo só-ícone das
       abas de canal no topo (ver #tabs button.icon-only acima) — sem borda, sem texto. Rede
       não marcada fica em P&B (grayscale); ao marcar, ganha cor cheia + anel de destaque. */
    .chip-net{position:relative;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;user-select:none}
    .chip-net input{position:absolute;inset:0;margin:0;opacity:0;cursor:pointer}
    .chip-net .net-icon-img,.chip-net svg{width:32px;height:32px;border-radius:50%;filter:grayscale(1);opacity:.5;transition:filter .15s,opacity .15s,box-shadow .15s}
    .chip-net .dot{width:32px;height:32px;opacity:.5;transition:opacity .15s,box-shadow .15s}
    .chip-net:hover .net-icon-img,.chip-net:hover svg,.chip-net:hover .dot{opacity:.8}
    .chip-net:has(input:checked) .net-icon-img,.chip-net:has(input:checked) svg{filter:none;opacity:1;box-shadow:0 0 0 2px var(--accent-ink)}
    .chip-net:has(input:checked) .dot{opacity:1;box-shadow:0 0 0 2px var(--accent-ink)}

    /* Agendamento mensal das editorias: dias em uma régua legível e redes no mesmo padrão
       circular só-ícone usado no restante do sistema. */
    .sched-weekdays{display:grid;grid-template-columns:repeat(7,minmax(48px,1fr)) minmax(96px,auto);gap:6px;margin-top:8px}
    .sched-day-chip{position:relative;min-height:38px;display:flex;align-items:center;justify-content:center;padding:0 9px;border:1px solid var(--border);border-radius:10px;background:var(--card);color:var(--muted);font-size:11.5px;font-weight:800;letter-spacing:.025em;cursor:pointer;user-select:none;transition:background .12s,border-color .12s,color .12s,box-shadow .12s}
    .sched-day-chip:hover{border-color:var(--border-strong);color:var(--text)}
    .sched-day-chip input{position:absolute;inset:0;margin:0;opacity:0;cursor:pointer}
    .sched-day-chip:has(input:checked){background:var(--accent-weak);border-color:var(--accent-ink);color:var(--accent-ink);box-shadow:inset 0 -2px 0 var(--accent-ink)}
    .sched-day-chip:has(input:disabled){opacity:.52;cursor:default;box-shadow:none}
    .sched-day-chip:has(input:disabled) input{cursor:default}
    .sched-all-days-chip{font-weight:700;letter-spacing:0;white-space:nowrap}
    .sched-nets{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;min-height:34px}
    .sched-net-choice{width:34px;height:34px}
    .sched-net-choice .net-icon-img,.sched-net-choice svg,.sched-net-choice .dot{width:34px;height:34px}
    .sched-net-config-title{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:800;margin-bottom:7px}
    .sched-net-config-icon{display:inline-flex;align-items:center;justify-content:center}
    .sched-net-config-icon .net-icon-img,.sched-net-config-icon svg,.sched-net-config-icon .dot{width:20px;height:20px;border-radius:50%}
    .chip > svg{flex:0 0 auto}
    @media (max-width:760px){
      .sched-weekdays{grid-template-columns:repeat(4,1fr)}
      .sched-all-days-chip{grid-column:span 4}
    }

    /* Formato do modal de criar/editar postagem: um grupo por rede social selecionada, cada
       formato com o nome e, como subtexto, as dimensões em pixels */
    .format-net-group{display:flex;flex-direction:column;gap:6px}
    .format-net-group + .format-net-group{margin-top:12px}
    .format-net-group-label{display:flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em}
    /* largura fixa baseada em 3 colunas por linha (não usa 1fr) — se não, um grupo com só
       1 ou 2 formatos esticaria o(s) chip(s) pra preencher a linha toda */
    .format-net-group-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(0,calc((100% - 16px)/3)));gap:8px}
    .format-chip{display:flex;align-items:flex-start;gap:7px;padding:7px 11px;border-radius:12px;border:1px solid var(--border);background:var(--card);font-family:var(--base-font-family);cursor:pointer;user-select:none;transition:background .12s,border-color .12s,color .12s}
    .format-chip:hover{border-color:var(--border-strong)}
    .format-chip:has(input:checked){background:var(--accent-weak);border-color:var(--accent-ink);color:var(--accent-ink)}
    .format-chip input{margin:2px 0 0}
    .format-chip-icon{display:inline-flex;align-items:center;margin-top:1px}
    .format-chip-body{display:flex;flex-direction:column;gap:1px;line-height:1.25}
    .format-chip-name{font-size:12.5px;font-weight:700;line-height:1.25;color:var(--text)}
    .format-chip:has(input:checked) .format-chip-name{color:var(--accent-ink)}
    .format-chip-dims{font-size:10.5px;font-weight:400;color:var(--muted)}
    .format-chip:has(input:checked) .format-chip-dims{color:var(--accent-ink);opacity:.75}

    /* Cabeçalho de dias da semana + grade do calendário mensal */
    .weekday-header{display:grid;grid-template-columns:repeat(7,1fr);gap:14px;margin-top:16px}
    .weekday-header div{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);padding-left:6px}
    /* cada linha (semana) cresce com o conteúdo: uma semana vazia fica baixa (só o mínimo de
       110px), uma semana com cards cresce pra caber — em vez de toda semana ter a mesma altura
       fixa, o que deixava muito espaço vazio nas semanas sem postagem */
    .grid-month{display:grid;grid-template-columns:repeat(7,1fr);gap:14px;margin-top:8px;grid-auto-rows:minmax(110px,auto)}
    /* min-height:0 permite que o item de grid encolha até o mínimo da linha (110px) mesmo sem
       conteúdo; overflow:hidden continua como rede de segurança para o raro caso de um card
       individual ultrapassar a altura da célula (o badge "+N" já cuida do excesso de cards) */
    /* a transição de "height" só entra em ação quando o JS anima a troca de altura (ao mover um
       card pra outro dia, ver render() em app.js) — em uso normal a célula segue esticada pela
       grade (height:auto), sem valor inline, então nada dispara a transição à toa */
    .day{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px;position:relative;display:flex;flex-direction:column;min-height:0;overflow:hidden;transition:border-color .15s,box-shadow .15s,height .32s cubic-bezier(.2,.9,.2,1)}
    .day:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}
    .day.empty{background:transparent;border:1px dashed var(--border);box-shadow:none}
    /* dia de hoje: contorno na cor de destaque em vez de --accent-ink (que rendia um marrom
       escuro esquisito ao lado do halo amarelo) — agora borda e halo usam o mesmo amarelo,
       ficando coerentes com a bolinha da data logo abaixo */
    .day.today{border:2px solid var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}
    .day-head{display:flex;align-items:center;justify-content:space-between;gap:6px}
    /* data em destaque — maior e mais peso, pra ser a primeira coisa que o olho pega na célula */
    .day .date{box-sizing:border-box;font-size:16px;line-height:1;font-weight:900;color:var(--text);width:27px;height:27px;min-width:27px;min-height:27px;max-width:27px;max-height:27px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}
    .day.today .date{background:var(--accent);color:var(--on-accent)}
    /* nome da data comemorativa (feriado/data comercial), ao lado do número do dia — ver
       commemorativeDateName() em app.js. Trunca com "..." na grade do mês (pouco espaço
       horizontal); o title="" no elemento mostra o nome completo ao passar o mouse. */
    .holiday-name{font-size:12px;font-weight:300;font-style:italic;color:var(--accent-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1;cursor:pointer;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:2px;transition:text-decoration-color .12s}
    .holiday-name:hover{text-decoration-color:currentColor}
    .week-day-head .holiday-name{white-space:normal;overflow:visible;text-overflow:clip;flex:none;line-height:1.3}
    /* contador "x/y" fica discreto (opacidade reduzida) pra não competir com a data */
    .day-count{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:var(--radius-sm);background:var(--surface-muted);color:var(--muted);border:1px solid var(--border);white-space:nowrap;opacity:.55;transition:opacity .12s;flex-shrink:0}
    .day:hover .day-count{opacity:.85}
    .day-count.low{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}
    .day-count.ok{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}
    /* agrupa contador + ícone de status pra ficarem colados um no outro, mesmo com o .day-head
       pai usando justify-content:space-between entre data/feriado/contador */
    .day-count-wrap{display:flex;align-items:center;gap:4px;flex-shrink:0}
    /* ícone ao lado do contador: avisa se algum card do dia tem campo essencial faltando (triângulo
       amarelo de alerta) ou se todos estão completos (círculo verde) — só existe quando o dia tem
       pelo menos um card. Cor do alerta é fixa (não segue --accent do tema), pra continuar lendo
       como "atenção" mesmo se o usuário escolher um tema de cor amarelo/dourado */
    .day-status-icon{width:14px;height:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:help}
    .day-status-icon.is-complete{border-radius:50%;background:var(--success);color:#1a1a1a;font-size:9.5px;font-weight:900;line-height:1}
    .day-status-icon.is-pending svg{width:100%;height:100%}
    .posts{margin-top:8px;flex:1;overflow:hidden;position:relative;display:flex;flex-direction:column}
    .more-badge{position:absolute;right:8px;bottom:8px;background:var(--card);border-radius:var(--radius-sm);padding:3px 9px;border:1px solid var(--border);font-size:11px;font-weight:700;color:var(--accent-ink);box-shadow:var(--shadow-sm);cursor:pointer}
    .more-badge:hover{background:var(--accent-weak)}

    /* Visão em semana: 7 colunas (Dom→Sáb), só com as postagens daquela semana — reaproveita a
       célula .day (fundo, borda, hoje/data em destaque) mas sem o limite de 3 cards + "+N" do mês:
       aqui a coluna cresce com o conteúdo, então mostra tudo (ver render() em app.js). */
    .week-view{margin-top:16px}
    .grid-week{display:grid;grid-template-columns:repeat(7,1fr);gap:14px;align-items:start}
    .week-day{overflow:visible;min-height:160px}
    .week-day-head{display:flex;flex-direction:column;gap:6px}
    /* label + contador "x/y" na mesma linha, contador encostado na direita — igual ao mês, onde
       ele fica no canto superior direito da célula em vez de embaixo da data */
    .week-day-top-row{display:flex;align-items:center;justify-content:space-between;gap:6px}
    .week-day-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint)}
    .week-day .posts{overflow:visible}
    .week-day-add{border:0;background:transparent;color:var(--muted);font-size:12px;font-weight:700;text-align:left;padding:6px 4px;margin-top:2px;border-radius:var(--radius-sm);cursor:pointer;font-family:inherit;transition:background .12s,color .12s}
    .week-day-add:hover{background:var(--surface-muted);color:var(--text)}
    @media (max-width:1000px){.grid-week{grid-template-columns:repeat(2,1fr)}}

    /* Cartão de postagem (evento) dentro de uma célula do calendário */
    .event{position:relative;display:flex;background:var(--card);border:1px solid var(--border);border-radius:9px;padding:6px 8px 6px 10px;margin-bottom:5px;box-shadow:var(--event-shadow);cursor:grab;overflow:hidden;transition:box-shadow .15s,border-color .15s,transform .15s}
    .event:hover{box-shadow:var(--event-shadow-hover);border-color:var(--border-strong);transform:translateY(-2px)}
    .event[draggable="true"]{transition:transform .22s cubic-bezier(.2,.8,.2,1),opacity .18s,box-shadow .15s,border-color .15s}
    .event.dragging{opacity:0.5;transform:scale(.98)}
    .event.moving{transition:transform .36s cubic-bezier(.2,.9,.2,1)}
    .event-bar{position:absolute;left:0;top:0;bottom:0;width:3px}
    .event-body{flex:1;min-width:0;padding-left:3px}
    .event-eyebrow{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;line-height:1.2;margin-bottom:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .event-title{font-weight:700;font-size:12.5px;color:var(--text);line-height:1.3;margin-bottom:5px}
    .event-subtitle{font-size:10.5px;color:var(--muted)}
    .event-nets{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin-bottom:8px}
    .event-net-icon{display:inline-flex;align-items:center}

    /* Menu "⋮" de ações do card (duplicar/excluir), no card do calendário e na linha da lista */
    .event-menu-btn{position:absolute;top:2px;right:2px;width:20px;height:20px;border:none;background:transparent;color:var(--text-faint);cursor:pointer;border-radius:6px;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;z-index:6;font-family:inherit}
    .event-menu-btn:hover{background:var(--surface-muted);color:var(--text)}
    .list-row-menu-btn{align-self:center;border:none;background:transparent;color:var(--text-faint);cursor:pointer;border-radius:6px;width:24px;height:24px;font-size:15px;line-height:1;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:inherit}
    .list-row-menu-btn:hover{background:var(--card);color:var(--text)}
    /* position:fixed e reposicionado via JS a cada abertura — se nascesse dentro do card
       (que tem overflow:hidden para arredondar cantos), o menu seria cortado */
    .event-menu{position:fixed;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:1000;display:none;flex-direction:column;min-width:130px;overflow:hidden}
    .event-menu.open{display:flex}
    .event-menu button{background:none;border:none;text-align:left;padding:8px 11px;font-size:12.5px;color:var(--text);cursor:pointer;font-family:inherit}
    .event-menu button:hover{background:var(--surface-muted)}
    .event-menu button.danger{color:var(--danger)}

    /* Destaque visual da célula quando um card está sendo arrastado sobre ela */
    .day.drag-over{outline:2px dashed var(--accent);outline-offset:-2px;border-radius:var(--radius-md)}

    /* Indicador de posição ao arrastar um card/linha para reordenar dentro do mesmo dia */
    .event.drop-before,.list-row.drop-before{box-shadow:inset 0 2px 0 0 var(--accent)}
    .event.drop-after,.list-row.drop-after{box-shadow:inset 0 -2px 0 0 var(--accent)}

    /* Layout responsivo: grade de 7 colunas vira 2 colunas em telas estreitas */
    @media (max-width:1000px){.grid-month,.weekday-header{grid-template-columns:repeat(2,1fr)}}

    /* Visão em lista (alternativa ao calendário mensal), agrupada por dia */
    .list-view{margin-top:10px;display:flex;flex-direction:column;gap:16px}
    .list-group{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}
    .list-date{display:flex;align-items:baseline;gap:8px;padding:10px 14px;background:var(--surface-muted);border-bottom:1px solid var(--border)}
    .list-date-num{font-weight:700;font-size:14px;color:var(--text)}
    .list-date-dow{font-size:12px;color:var(--muted);text-transform:capitalize}
    .list-date.today .list-date-num{color:var(--accent-ink)}
    .today-badge{margin-left:auto;background:var(--accent);color:var(--on-accent);font-size:10px;font-weight:700;padding:2px 9px;border-radius:var(--radius-sm)}
    .list-row{position:relative;display:flex;align-items:flex-start;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s}
    .list-row:last-child{border-bottom:none}
    .list-row:hover{background:var(--surface-muted)}
    .list-row.dragging{opacity:0.5}
    .list-row-bar{width:4px;align-self:stretch;border-radius:4px;flex-shrink:0}
    .drag-handle{cursor:grab;color:var(--text-faint);font-size:14px;flex-shrink:0;line-height:1;display:inline-flex;align-items:center;margin-top:2px}
    .list-row-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
    .list-row-eyebrow{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
    .list-row-title{font-weight:700;font-size:13px;color:var(--text)}
    .list-row-subtitle{font-size:11px;color:var(--muted)}
    .list-row-nets{display:flex;flex-wrap:wrap;align-items:center;gap:5px}
    .list-empty{padding:44px 20px;text-align:center;color:var(--muted);background:var(--card);border-radius:var(--radius-md);border:1px dashed var(--border);font-size:13px}

    .net-icon-img{width:16px;height:16px;display:inline-block;vertical-align:middle;border-radius:50%}
    .net-view-icon{display:inline-flex;align-items:center;justify-content:center}

    /* seletor de ícone de rede (presets + upload de SVG), usado em "Adicionar rede" e na edição de
       cada rede: um botão-gatilho circular que mostra o ícone atual e abre um popover ancorado
       embaixo dele — evita jogar presets + upload numa fileira inline que quebrava torto ao lado
       dos outros campos da linha. */
    .icon-picker-wrap{position:relative;flex-shrink:0}
    .icon-picker-trigger{width:30px;height:30px;padding:0;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--border);border-radius:50%;background:var(--card);cursor:pointer;flex-shrink:0;transition:border-color .12s}
    .icon-picker-trigger:hover{border-color:var(--border-strong)}
    .icon-picker-trigger.open{border-color:var(--accent-ink);box-shadow:0 0 0 2px var(--accent-ink) inset,0 0 0 1px var(--accent-ink)}
    .icon-picker-trigger img{width:20px;height:20px;border-radius:50%}
    .icon-picker-none{font-size:14px;line-height:1;color:var(--muted)}
    /* posicionado via JS (position:fixed + top/left calculados do gatilho) porque é anexado
       direto ao <body> — foge de qualquer ancestral com overflow:hidden/auto que o cortaria */
    .icon-picker-popover{position:fixed;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:10px;width:190px;z-index:200}
    .icon-picker-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}
    .icon-picker-opt{width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--border);border-radius:50%;background:var(--card);cursor:pointer}
    .icon-picker-opt:hover{border-color:var(--border-strong)}
    .icon-picker-opt.selected{border-color:var(--accent-ink);box-shadow:0 0 0 2px var(--accent-ink) inset,0 0 0 1px var(--accent-ink)}
    .icon-picker-opt img{width:20px;height:20px;border-radius:50%}
    .icon-picker-upload-btn{display:flex;align-items:center;gap:7px;width:100%;margin-top:9px;padding:7px 9px;border:1px dashed var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-muted);color:var(--muted);font-size:11.5px;font-weight:700;cursor:pointer;transition:background .12s,border-color .12s,color .12s;box-sizing:border-box}
    .icon-picker-upload-btn:hover{background:var(--accent-weak);border-color:var(--accent-ink);color:var(--accent-ink)}
    .icon-picker-upload-btn.selected{border-style:solid;border-color:var(--accent-ink);color:var(--accent-ink)}
    .icon-picker-upload-btn svg{flex-shrink:0}
    .icon-picker-upload-preview{width:18px;height:18px;border-radius:50%;flex-shrink:0}


    /* Títulos de seção maiores dentro do workspace da Central de Inteligência (Nova peça de
       referência, Peças já adicionadas, Orientações adicionais etc.) */
    #intelWorkspaceBody .fg-label{font-size:15px}

    /* Assistente de "nova peça de referência" — os 4 passos (rede → briefing → artes por
       formato → legenda) usados pra montar uma unidade completa de conhecimento da editoria */
    .intel-piece-step{margin-top:16px}
    .intel-piece-step:first-child{margin-top:0}
    .intel-piece-step-label{font-size:12px;font-weight:700;color:var(--text);margin-bottom:7px}
    .intel-piece-step-optional{font-weight:400;color:var(--text-faint)}
    /* Fileira de módulos em linha única (artes por formato e peças já adicionadas
       reaproveitam exatamente o mesmo padrão de card) */
    #intelPieceFormats{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:stretch;gap:12px;overflow-x:auto;padding-bottom:4px}
    .intel-format-slot{display:flex;flex-direction:column;flex:1 1 0;min-width:200px;border:1px solid var(--border);border-radius:var(--radius-md);padding:12px;background:var(--surface-muted);transition:background .12s,border-color .12s}
    .intel-format-slot--piece{flex:0 0 240px;min-width:0}

    /* Peças já adicionadas — seccionadas por rede social e, dentro de cada rede, por formato
       (a mesma peça pode aparecer em mais de um formato se tiver artes em vários); os formatos
       ficam lado a lado na mesma linha horizontal, igual em "Artes por formato" */
    #intelPiecesList{display:flex;flex-direction:column;gap:16px}
    .intel-pieces-network-section{border-top:1px solid var(--border);padding-top:12px}
    .intel-pieces-network-section:first-child{border-top:0;padding-top:0}
    .intel-pieces-network-label{font-size:14px;font-weight:700;color:var(--text);margin-bottom:10px}
    .intel-pieces-format-rowset{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:stretch;gap:12px;overflow-x:auto;padding-bottom:4px}
    .intel-pieces-format-group{display:flex;flex-direction:column;flex:1 1 0;min-width:220px;border:1px solid var(--border);border-radius:var(--radius-md);padding:12px;background:var(--surface-muted)}
    .intel-pieces-format-stack{display:flex;flex-direction:column;gap:10px;margin-top:8px}
    .intel-pieces-format-stack .intel-format-slot--piece{flex:none;width:100%}
    .intel-format-slot.dragover{background:var(--accent-weak);border-color:var(--accent-ink)}
    .intel-format-slot-body{display:flex;gap:12px;align-items:flex-start}
    .intel-format-slot-header{text-align:left;font-size:15px;font-weight:700;color:var(--text)}
    .intel-format-slot-dims{display:block;text-align:left;font-style:italic;font-weight:400;font-size:11.5px;color:var(--text-faint);margin-top:2px}
    .intel-format-info{display:flex;flex-direction:column;min-width:0}
    .intel-module-link{margin-top:auto;padding-top:10px;font-size:12.5px;font-weight:600;color:var(--accent-ink);text-decoration:underline;cursor:pointer;width:fit-content;background:none;border:0}
    .intel-module-link:hover{opacity:.8}
    .intel-format-previews{display:flex;flex-wrap:wrap;gap:10px;flex-shrink:0}

    /* Campo de arrastar/selecionar mostrado só quando o formato ainda não tem referência */
    .intel-format-empty-drop{display:flex;align-items:center;justify-content:center;text-align:center;margin-top:10px;min-height:64px;padding:12px 14px;border:2px dashed var(--border-strong);border-radius:var(--radius-md);background:var(--card);color:var(--muted);font-size:11.5px;font-weight:600;line-height:1.4;cursor:pointer;transition:background .12s,border-color .12s,color .12s}
    .intel-format-empty-drop:hover{background:var(--accent-weak);border-color:var(--accent-ink);color:var(--accent-ink)}

    /* Preview de cada arte enviada — miniatura de proporção fixa 4:5 (não varia com o tamanho
       do arquivo enviado); a dimensão real do formato aparece como texto no título do slot */
    .intel-preview-box{position:relative;width:120px;aspect-ratio:4/5;border-radius:var(--radius-md);overflow:hidden;cursor:pointer;border:1px solid var(--border);background:var(--card);flex-shrink:0}
    .intel-preview-box--empty{display:flex;align-items:center;justify-content:center;border-style:dashed;background:var(--card);color:var(--text-faint);cursor:default}
    .intel-preview-box img{width:100%;height:100%;object-fit:cover;display:block}
    .intel-preview-video-badge{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--surface-muted);color:var(--muted)}
    .intel-preview-remove{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .12s}
    .intel-preview-remove:hover{background:rgba(0,0,0,.8)}

    /* Lightbox — clique numa arte pra ver maior: cantos arredondados, fundo escurecido, X pra fechar */
    .intel-lightbox-backdrop{position:fixed;inset:0;background:var(--backdrop,rgba(0,0,0,.72));display:flex;align-items:center;justify-content:center;z-index:500;padding:40px}
    .intel-lightbox-box{position:relative;max-width:min(720px,90vw);max-height:90vh;border-radius:var(--radius-lg);overflow:hidden;background:var(--card);box-shadow:var(--shadow-lg)}
    .intel-lightbox-box img,.intel-lightbox-box video{display:block;max-width:100%;max-height:90vh;object-fit:contain}
    .intel-lightbox-close{position:absolute;top:10px;right:10px;width:34px;height:34px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;border:0;font-size:22px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2;transition:background .12s}
    .intel-lightbox-close:hover{background:rgba(0,0,0,.78)}

    /* Modal genérico: fundo escurecido (backdrop) + caixa central, usado por todos os modais.
       Estrutura em 3 partes empilhadas (header/body/footer) numa coluna flex — o header (título +
       ações) e o footer (botões) ficam fixos, só o body rola. O "overflow:hidden" no .modal (em
       vez de overflow-y:auto direto nele) é o que garante os 4 cantos igualmente arredondados:
       como a caixa toda vira a "moldura" e cada parte é só uma faixa retangular dentro dela, o
       clique do border-radius nunca fica cortado no meio de uma faixa, só nos cantos reais da caixa. */
    .modal-backdrop{position:fixed;inset:0;background:var(--backdrop);display:none;align-items:center;justify-content:center;z-index:60;padding:20px}
    .modal{position:relative;background:var(--card);border-radius:var(--radius-lg);max-width:820px;width:100%;max-height:90vh;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden}
    .modal-sm{max-width:420px}
    /* modal de Configurações: mais largo, para caber o menu lateral + o conteúdo da seção */
    .modal.modal--wide{max-width:900px}
    /* modais mais simples (ex.: Exportar briefing), sem menu lateral nem grade — não precisam da largura padrão */
    .modal.modal--narrow{max-width:440px}
    .modal-header{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 18px;border-bottom:1px solid var(--border)}
    .modal-header h2{margin:0}
    .modal-header-actions{display:flex;align-items:center;gap:2px;flex-shrink:0}
    /* Agrupa o botão "Voltar" (quando presente) com o título, à esquerda do header */
    .modal-header-title{display:flex;align-items:center;gap:6px;min-width:0}
    .modal-body{flex:1 1 auto;overflow-y:auto;padding:16px 18px}
    .modal-footer{flex:0 0 auto;display:flex;gap:8px;justify-content:flex-end;padding:14px 18px;border-top:1px solid var(--border)}
    /* modal sem rodapé de botões (ex: "Postagens do dia") — o body já encosta no canto de baixo */
    .modal-body:last-child{padding-bottom:18px}
    /* Botão "X" (e o "⋮" de mais ações) — agora um item normal na linha do header, não mais
       posicionado sobre o texto do título */
    .modal-close{position:static;width:28px;height:28px;border:0;background:transparent;color:var(--muted);font-size:15px;line-height:1;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}
    .modal-close:hover{background:var(--surface-muted);color:var(--text)}
    .sync-conflict-backdrop{backdrop-filter:blur(3px)}
    .sync-conflict-backdrop.is-open{display:flex}
    .sync-conflict-modal{width:min(460px,calc(100vw - 24px));max-width:460px;box-sizing:border-box;border:1px solid var(--border-strong)}
    .sync-conflict-title{gap:12px}
    .sync-conflict-title>div>span{display:block;margin-bottom:3px;color:var(--accent-ink);font-size:9px;font-weight:900;letter-spacing:.1em}
    .sync-conflict-icon{width:40px;height:40px;border-radius:12px;background:var(--accent-weak);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;flex:0 0 40px}
    .sync-conflict-body{padding-top:18px;padding-bottom:18px}
    .sync-conflict-body>p{margin:0;color:var(--text);font-size:13px;line-height:1.6}
    .sync-conflict-hint{display:flex;align-items:flex-start;gap:9px;margin-top:14px;padding:11px 12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-muted);color:var(--muted);font-size:11.5px;line-height:1.5}
    .sync-conflict-hint svg{flex:0 0 auto;margin-top:1px;color:var(--accent-ink)}
    .sync-conflict-modal :focus-visible{outline:2px solid var(--accent-ink);outline-offset:2px}
    @media(max-width:520px){.sync-conflict-backdrop{padding:12px}.sync-conflict-title{gap:9px}.sync-conflict-icon{width:36px;height:36px;flex-basis:36px}.sync-conflict-modal .modal-header,.sync-conflict-modal .modal-body,.sync-conflict-modal .modal-footer{padding-left:14px;padding-right:14px}}
    @media(prefers-reduced-motion:no-preference){.sync-conflict-backdrop.is-open .sync-conflict-modal{animation:sync-conflict-in .18s ease-out both}@keyframes sync-conflict-in{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}}
    /* Botão "Voltar" (ícone + texto), à esquerda do título do modal */
    .modal-back-btn{position:static;flex-shrink:0;border:0;background:transparent;color:var(--muted);font:inherit;font-size:12.5px;font-weight:600;line-height:1;border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:4px;padding:6px 8px 6px 6px;transition:background .12s,color .12s}
    .modal-back-btn:hover{background:var(--surface-muted);color:var(--text)}

    /* Menu lateral de Configurações: categorias à esquerda, conteúdo da seção selecionada à direita */
    .settings-layout{display:flex;gap:18px;min-height:380px}
    .settings-sidebar{display:flex;flex-direction:column;gap:2px;flex:0 0 170px;border-right:1px solid var(--border);padding-right:14px}
    .settings-nav-btn{width:100%;text-align:left;padding:9px 11px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--muted);font-weight:700;font-size:13px;cursor:pointer;font-family:inherit;transition:background .12s,color .12s}
    .settings-nav-btn:hover{background:var(--surface-muted);color:var(--text)}
    .settings-nav-btn.active{background:var(--accent-weak);color:var(--accent-ink)}
    .settings-content{flex:1;min-width:0;overflow-y:auto;max-height:64vh}
    .settings-panel{display:none;flex-direction:column;gap:8px}
    .settings-panel.active{display:flex}

    /* seta giratória, reaproveitada em qualquer botão que abre/fecha algo (ex: sub-dropdown de formatos) */
    .settings-caret{font-size:10px;color:var(--muted);transition:transform .15s;flex-shrink:0}

    /* Seletor de cor do tema (Configurações > Aparência): cada bolinha mostra a cor de
       destaque no modo escuro (metade superior) e no modo claro (metade inferior). */
    .color-theme-grid{display:grid;grid-template-columns:repeat(4,44px);gap:12px}
    .color-swatch{position:relative;width:44px;height:44px;border-radius:50%;padding:0;border:0;cursor:pointer;background:linear-gradient(135deg, var(--sw-dark) 50%, var(--sw-light) 50%);box-shadow:0 0 0 1px var(--border);transition:transform .12s,box-shadow .12s}
    .color-swatch:hover{transform:scale(1.06)}
    .color-swatch.selected{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--sw-dark)}
    .color-swatch-check{position:absolute;top:-3px;left:-3px;width:18px;height:18px;border-radius:50%;background:var(--card);color:var(--sw-dark);display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 1px var(--border)}
    .color-swatch-custom{background:var(--surface-muted);display:flex;align-items:center;justify-content:center;color:var(--muted)}
    .color-swatch-custom input[type=color]{position:absolute;inset:0;width:100%;height:100%;border:0;padding:0;opacity:0;cursor:pointer}

    /* Linha de rede social (dentro de Configurações > Redes), com seus formatos em um sub-dropdown */
    .net-row{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}
    .net-row-head{display:flex;align-items:center;gap:8px;padding:7px 9px;background:var(--card);flex-wrap:wrap}
    /* exibição normal (somente leitura) vs. campos editáveis — só um dos dois aparece por vez */
    .net-view{display:flex;align-items:center;gap:6px;flex:1;min-width:0}
    .net-view-name{font-weight:700;color:var(--text)}
    .net-view-short{color:var(--text-faint)}
    .net-edit-fields{display:none;align-items:center;gap:6px;flex:1;min-width:0}
    .net-row.editing .net-view{display:none}
    .net-row.editing .net-edit-fields{display:flex}
    .net-row-formats-toggle{flex-shrink:0;background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 9px;font-size:11.5px;color:var(--muted);cursor:pointer;font-family:inherit;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
    .net-row-formats-toggle:hover{color:var(--text);border-color:var(--border-strong)}
    .net-row-formats{display:none;flex-direction:column;gap:8px;padding:10px;border-top:1px solid var(--border);background:var(--surface-muted)}
    .net-row.open .net-row-formats{display:flex}
    .net-row.open .net-row-formats-toggle .settings-caret{transform:rotate(180deg)}
    /* Linha de um formato cadastrado (nome + largura×altura + extensões), dentro do sub-dropdown de uma rede */
    .format-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);font-size:12px}
    .format-row-name{font-weight:700;color:var(--text)}
    .format-row-meta{color:var(--muted);flex:1}
    /* modal de criar/editar postagem: blocos empilhados numa coluna só, um abaixo do outro */
    .grid-2{display:grid;grid-template-columns:1fr;gap:16px}

    /* Fluxo guiado do modal de postagem. O próprio bloco de preview é movido, sem ser
       recriado, para permanecer visível na lateral durante todas as etapas. */
    .modal.modal--guided-post{max-width:1120px}
    .guided-flow-nav{display:flex;align-items:center;gap:14px;padding-bottom:14px;margin-bottom:16px;border-bottom:1px solid var(--border)}
    .guided-flow-steps{display:flex;align-items:center;gap:6px;flex:1}
    .guided-step-btn{display:flex;align-items:center;gap:7px;padding:6px 9px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--muted);font:700 12.5px var(--base-font-family);cursor:pointer}
    .guided-step-btn:hover{background:var(--surface-muted);color:var(--text)}
    .guided-step-btn.active{background:var(--accent-weak);color:var(--accent-ink)}
    .guided-step-number{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--surface-muted);border:1px solid var(--border);font-size:10.5px;color:var(--muted)}
    .guided-step-btn.active .guided-step-number{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
    .guided-post-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}
    .guided-form-panel{min-width:0}
    .guided-form-panel .grid-2{display:block}
    .guided-form-panel .grid-2 > div{display:contents}
    .modal--guided-post [data-guided-step][hidden]{display:none}
    /* Ocultação exclusiva do fluxo institucional: não interfere nas etapas guiadas. */
    .modal--guided-post .institutional-hidden{display:none!important}
    .modal--guided-post .guided-post-footer [hidden]{display:none!important}
    .guided-preview-panel{position:sticky;top:0;min-width:0}
    .guided-preview-panel .form-group{margin-bottom:0}
    .guided-preview-panel #mBriefingPreview{max-height:48vh;overflow-y:auto}
    .guided-post-footer #cancelModal{margin-right:auto}
    /* telas estreitas: o menu de Configurações vira uma barra horizontal de abas acima do conteúdo */
    @media (max-width:640px){
      .settings-layout{flex-direction:column;gap:10px}
      .settings-sidebar{flex-direction:row;flex-wrap:wrap;flex:none;border-right:0;border-bottom:1px solid var(--border);padding-right:0;padding-bottom:10px}
      .settings-nav-btn{width:auto}
    }
    .field-gap{margin-top:10px}
    hr{border:0;border-top:1px solid var(--border);margin:6px 0;width:100%}

    /* Autocomplete do catálogo de produtos (campo "Nome do produto" no modal de postagem) */
    .autocomplete-wrap{position:relative}
    .autocomplete-list{position:absolute;top:100%;left:0;right:0;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);max-height:230px;overflow-y:auto;z-index:80;margin-top:4px;display:none}
    .autocomplete-item{display:flex;align-items:center;gap:8px;padding:6px 8px;cursor:pointer}
    .autocomplete-item:hover,.autocomplete-item.active{background:var(--surface-muted)}
    .autocomplete-item img{width:28px;height:28px;object-fit:contain;border-radius:6px;border:1px solid var(--border);background:var(--white);flex-shrink:0}
    .autocomplete-item .ac-name{flex:1;line-height:1.25;font-size:12.5px;color:var(--text)}
    .autocomplete-item .ac-code{font-size:10.5px;color:var(--muted);flex-shrink:0}
    .autocomplete-item.ac-manual .ac-name{color:var(--accent-ink);font-weight:700}
    .selected-products{display:flex;flex-direction:column;gap:8px;margin-top:8px}
    .product-chip{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:12px;background:var(--card);box-shadow:var(--shadow-sm);transition:box-shadow .15s,border-color .15s}
    .product-chip:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong)}
    .product-chip img{width:44px;height:44px;object-fit:contain;border-radius:9px;background:var(--surface-muted);border:1px solid var(--border);flex-shrink:0;padding:3px}
    .product-chip .pc-body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
    .product-chip .pc-name{font-size:13px;font-weight:700;color:var(--text);line-height:1.3}
    .product-chip .pc-code{font-size:10.5px;color:var(--muted);font-weight:400}
    .product-chip .pc-remove{border:0;background:var(--surface-muted);color:var(--muted);cursor:pointer;font-size:13px;padding:4px 8px;border-radius:8px;flex-shrink:0;font-family:inherit;display:inline-flex;align-items:center;justify-content:center}
    .product-chip .pc-remove:hover{background:var(--danger-bg-strong);color:var(--danger)}

    /* Modal "Aplicar editoria ao mês" — uma linha por data gerada pelo agendamento fixo */
    .ae-list{display:flex;flex-direction:column;gap:10px}
    .ae-row{border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 12px;background:var(--card);transition:opacity .12s}
    .ae-row.ae-row-inactive{opacity:.55}
    .ae-row.ae-row-inactive .ae-row-body{display:none}
    .ae-row-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
    .ae-row-check{display:flex;align-items:center;gap:8px;font-weight:700;font-size:13px;cursor:pointer;user-select:none}
    .ae-row-check input{margin:0}
    .ae-date-label{text-transform:capitalize}
    .ae-row-body{display:flex;flex-direction:column;gap:6px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}
    .ae-row-body label{font-size:11px;color:var(--muted)}
    .ae-row-body .selected-products{margin-top:2px}

    /* Seções agrupadas dentro dos formulários dos modais (ex: "Conteúdo", "Categorização") */
    .form-group{background:var(--surface-muted);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 16px;margin-bottom:12px}
    .form-group:last-child{margin-bottom:0}
    /* título de seção (H3) — linha fina embaixo pra ancorar visualmente o bloco, já que o fundo
       cinza-claro do .form-group sozinho não destacava o suficiente onde uma seção termina e a
       próxima começa */
    .form-group .fg-label{font-size:12px;padding-bottom:8px;margin-bottom:12px;border-bottom:1px solid var(--border)}
    .form-group label:not(.chip){color:var(--muted)}


    /* Caixa de sugestões de título (gerada a partir do(s) produto(s) selecionado(s)) */
    .title-suggestion{display:none;flex-direction:column;gap:6px;margin-top:6px;padding:8px 10px;border:1px dashed var(--accent);border-radius:var(--radius-sm);background:var(--accent-weak)}
    .title-suggestion .ts-header{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;color:var(--accent-ink);text-transform:uppercase;letter-spacing:.03em}
    .title-suggestion .ts-header .ts-icon{display:inline-flex;align-items:center}
    .title-suggestion .ts-shuffle{margin-left:auto;border:0;background:transparent;cursor:pointer;font-size:13px;padding:2px 6px;border-radius:6px;line-height:1;display:inline-flex;align-items:center}
    .title-suggestion .ts-shuffle:hover{background:var(--card)}
    .title-suggestion .ts-option{display:flex;align-items:center;gap:8px;padding:5px 8px;background:var(--card);border-radius:8px;border:1px solid var(--border)}
    .title-suggestion .ts-text{flex:1;font-size:12.5px;font-style:italic;color:var(--text)}
    .title-suggestion .ts-use{border:0;background:var(--accent);color:var(--on-accent);font-weight:700;font-size:11.5px;height:24px;padding:0 10px;border-radius:var(--radius-sm);cursor:pointer;flex-shrink:0;font-family:inherit}
    .title-suggestion .ts-use:hover{background:var(--accent-hover)}

    /* Bloco de sugestões de conteúdo (pauta + estrutura) de acordo com a editoria selecionada */
    .cs-list{display:flex;flex-direction:column;gap:8px}
    .cs-empty{font-size:12.5px;color:var(--text-faint);padding:8px 2px}
    .cs-card{padding:9px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted)}
    .cs-editoria{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--accent-ink);margin-bottom:4px}
    .cs-subject{font-size:12.5px;font-weight:700;color:var(--text);line-height:1.4}
    .cs-actions{display:flex;justify-content:flex-end;margin-top:7px}
    .cs-use{border:0;background:var(--accent);color:var(--on-accent);font-weight:700;font-size:11.5px;height:24px;padding:0 10px;border-radius:var(--radius-sm);cursor:pointer;flex-shrink:0;font-family:inherit}
    .cs-use:hover{background:var(--accent-hover)}
    /* pauta atualmente inserida no campo Texto — ver lastInsertedPautaBlock em app.js */
    .cs-card--active{border-color:var(--accent);background:var(--surface-muted)}
    .cs-use:disabled{background:var(--border);color:var(--text-faint);cursor:default}

    /* Pré-visualização do briefing: título como cabeçalho, campos em linhas rotuladas
       (label + valor) em vez de um parágrafo corrido, e o conteúdo isolado num bloco à parte */
    .bp-title{font-weight:700;font-size:14px;color:var(--text);margin-bottom:8px;line-height:1.3}
    .bp-meta{display:flex;flex-direction:column;gap:5px}
    .bp-row{display:flex;align-items:flex-start;gap:7px;font-size:12.5px;line-height:1.5}
    .bp-row-label{flex:0 0 auto;font-weight:700;color:var(--accent-ink);white-space:nowrap;padding-top:1px}
    .bp-row-value{color:var(--text);min-width:0;overflow-wrap:anywhere}
    .bp-row-value--clip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .bp-row-list{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:2px;min-width:0;color:var(--text)}
    .bp-row-list li{overflow-wrap:anywhere}
    .bp-separator{color:var(--border-strong);font-size:11px;letter-spacing:1px;line-height:1;white-space:nowrap;overflow:hidden;margin:10px 0}
    .bp-content{margin-top:2px}
    .bp-content-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--accent-ink);margin-bottom:5px}
    .bp-row-link{color:var(--accent-ink);text-decoration:underline;cursor:pointer}
    .bp-row-images{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
    .bp-ref-thumb{width:52px;height:52px;object-fit:cover;border-radius:8px;border:1px solid var(--border);background:var(--card)}

    /* Imagens de referência anexadas no campo "Referências salvas em:" (upload local,
       comprimido/redimensionado no navegador) — miniaturas com botão de remover, refletidas na
       pré-visualização do briefing e embutidas no .docx exportado */
    .reference-images-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
    .ref-image-thumb{position:relative;width:64px;height:64px;border-radius:10px;overflow:hidden;border:1px solid var(--border);background:var(--surface-muted);flex-shrink:0}
    .ref-image-thumb img{width:100%;height:100%;object-fit:cover;display:block}
    .ref-image-remove{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;line-height:1}
    .ref-image-remove:hover{background:var(--danger)}

    /* ============================================================
       Layout de página inteira com menu lateral (usado pela Central de Inteligência,
       intelligence-center.html), reaproveitando .settings-layout/.settings-sidebar/
       .settings-nav-btn/.settings-panel do modal de Configurações (mesmo padrão visual
       de abas laterais), mas sem os limites de altura/largura pensados para um modal,
       já que aqui é o conteúdo principal da página.
       ============================================================ */
    .bg-layout-card{padding:0;overflow:hidden}
    .bg-layout{display:flex;align-items:stretch}
    .bg-layout .settings-sidebar{flex:0 0 220px;padding:20px 14px;border-right:1px solid var(--border)}
    .bg-layout .settings-content{flex:1;min-width:0;max-height:none;overflow:visible;padding:22px 26px}
    .bg-layout .settings-panel{gap:18px}
    @media (max-width:640px){
      .bg-layout{flex-direction:column}
      .bg-layout .settings-sidebar{flex-direction:row;flex-wrap:wrap;flex:none;border-right:0;border-bottom:1px solid var(--border);padding:12px 14px}
      .bg-layout .settings-content{padding:18px}
      .bg-layout .settings-nav-btn{width:auto}
    }

    /* texto de apoio discreto abaixo de um h3 de seção, explicando pra que serve o cadastro */
    .bg-section-desc{font-size:11.5px;color:var(--muted);margin:-4px 0 2px;line-height:1.5}

    /* lista de itens já cadastrados — uma .bg-list-row por item, com título + subtítulo(s) à
       esquerda e um botão de remover à direita; usada pelas listas de referências da Central
       de Inteligência (artes, legendas, briefings — ver intelligence-center.js) */
    .bg-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}
    .bg-list-row{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted)}
    .bg-list-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
    .bg-list-row-title{font-size:13px;font-weight:700;color:var(--text);word-break:break-word}
    .bg-list-row-sub{font-size:12px;color:var(--muted);line-height:1.5;word-break:break-word}
    .bg-list-row a{color:var(--accent-ink);font-weight:700;text-decoration:none}
    .bg-list-row a:hover{text-decoration:underline}
    .bg-list-row .btn-icon{flex-shrink:0}
    .bg-empty{font-size:12px;color:var(--text-faint);padding:10px 2px}

    .bp-content-text{font-size:13px;line-height:1.6;color:var(--text)}

    /* ============================================================
       Usadas pela Central de Inteligência (intelligence-center.html) e pelo bloco de
       integração dentro do modal de criar/editar postagem (visual-editor.html/app.js).
       ============================================================ */
    /* aviso inline (ex: editoria ainda sem DNA gerado) — só avisa, não impede salvar */
    .bg-inline-warning{margin-top:8px;padding:8px 10px;border:1px solid var(--danger-border);border-radius:var(--radius-sm);background:var(--danger-bg);color:var(--danger);font-size:12px;line-height:1.5}

    /* linha "rótulo: valor(es)" — usada no painel de DNA da editoria (palavras/CTAs identificados) */
    .bg-quick-insert-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
    .bg-quick-insert-label{font-size:11px;font-weight:700;color:var(--muted);flex:0 0 auto;margin-right:2px}

    /* ============================================================
       CENTRAL DE INTELIGÊNCIA (intelligence-center.html/js) — biblioteca de editorias,
       pílulas de status do aprendizado, listas de regras do DNA e barra de aderência da
       validação inteligente. Também usadas no bloco de integração dentro do modal de
       criar/editar postagem (visual-editor.html), alimentadas pelo IntelStore em app.js.
       ============================================================ */
    .intel-editoria-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
    .intel-editoria-card{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-muted);cursor:pointer;transition:background .12s,border-color .12s}
    .intel-editoria-card:hover{border-color:var(--border-strong)}
    .intel-editoria-card.active{background:var(--accent-weak);border-color:var(--accent-ink)}
    .intel-editoria-card-top{display:flex;align-items:center;gap:8px}
    .intel-editoria-card-name{font-size:13.5px;font-weight:700;color:var(--text)}
    .intel-editoria-card-stat{font-size:12px;color:var(--muted)}
    .intel-editoria-card-updated{font-size:11px;color:var(--text-faint)}

    .intel-status-pill{display:inline-flex;align-items:center;width:fit-content;padding:3px 9px;border-radius:99px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;border:1px solid transparent}
    .intel-status-pill.muted{background:var(--surface-muted);color:var(--text-faint);border-color:var(--border)}
    .intel-status-pill.warn{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}
    .intel-status-pill.ok{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}

    .intel-workspace-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:18px 20px 0}
    .intel-workspace-title{margin:0;display:flex;align-items:center;gap:9px;font-size:16px}

    .intel-rule-list{list-style:none;display:flex;flex-direction:column;gap:7px;margin:0;padding:0;font-size:12.5px;line-height:1.5;color:var(--text)}
    .intel-rule-list li{padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted)}
    .intel-rule-list--ordered{list-style:decimal;padding-left:20px}
    .intel-rule-list--ordered li{background:transparent;border:0;padding:2px 0}
    .intel-rule-list--positive li{border-color:var(--success-border);background:var(--success-bg);color:var(--success)}
    .intel-rule-list--warn li{border-color:var(--danger-border);background:var(--danger-bg);color:var(--danger)}

    .intel-adherence-header{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;font-weight:700;color:var(--muted);margin-bottom:6px}
    .intel-score-bar{height:8px;border-radius:99px;background:var(--surface-muted);overflow:hidden;border:1px solid var(--border)}
    .intel-score-bar-fill{height:100%;border-radius:99px;transition:width .25s}
    .intel-main-concept{font-size:12.5px;line-height:1.55;color:var(--muted);margin-top:10px}
    .intel-main-concept b{color:var(--text)}

    /* bloco de integração no modal de postagem (app.js) — mesma linguagem visual de
       .bg-quick-insert, mas com destaque de cor de acento pra sinalizar que é a IA falando */
    .intel-modal-box{margin-top:10px;padding:12px 14px;border:1px solid var(--accent-ink);border-radius:var(--radius-sm);background:var(--accent-weak);display:flex;flex-direction:column;gap:10px}
    .intel-modal-box-title{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--accent-ink)}
    .intel-modal-box .intel-rule-list li{background:var(--card)}
    .intel-modal-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}


.notifications-list{display:grid;gap:8px;padding:12px}.notification-item{display:flex;gap:12px;align-items:flex-start;width:100%;padding:14px;border:1px solid var(--border);border-radius:10px;background:var(--card);color:var(--text);text-align:left;font:inherit;cursor:pointer}.notification-item:hover{background:var(--surface-muted)}.notification-item.unread{border-color:var(--accent)}.notification-item strong{display:block;font-size:13px;line-height:1.45}.notification-item small{display:block;margin-top:4px;color:var(--muted)}.notification-dot{width:9px;height:9px;flex:0 0 auto;margin-top:5px;border-radius:50%;background:var(--accent)}.notifications-empty{padding:44px 20px;text-align:center;color:var(--muted)}

.event-status-dot{position:absolute;right:27px;top:8px;width:8px;height:8px;border-radius:50%;box-shadow:0 0 0 2px var(--card)}.list-status-dot{width:8px;height:8px;flex:0 0 auto;border-radius:50%;margin-top:6px}

.admin-notification-brands{display:flex;flex-wrap:wrap;gap:5px}.admin-badge.notification-brand{background:var(--accent-weak);color:var(--accent-ink);font-weight:700}

.portal-notifications-link{position:relative;display:flex;align-items:center;gap:10px;margin:0 0 10px;padding:11px 12px;border:1px solid var(--accent);border-radius:10px;background:var(--accent-weak);color:var(--accent-ink);font-size:12px;font-weight:800;text-decoration:none}.portal-notifications-link:hover{filter:brightness(.97)}.portal-notifications-icon{display:flex;align-items:center;justify-content:center;width:25px;height:25px;border-radius:50%;background:var(--accent);color:var(--on-accent)}
.portal-notifications-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;margin-left:auto;padding:0 6px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:10px;font-weight:900;line-height:1;font-variant-numeric:tabular-nums;box-shadow:0 0 0 2px var(--card)}
.portal-notifications-count[hidden]{display:none}
.portal-sidebar.collapsed .portal-notifications-label{display:none}
.portal-sidebar.collapsed .portal-notifications-link{justify-content:center;padding:7px}
.portal-sidebar.collapsed .portal-notifications-count{position:absolute;top:-6px;right:-6px;min-width:17px;height:17px;margin:0;padding:0 4px;font-size:9px;box-shadow:0 0 0 2px var(--bg)}
@media(max-width:760px){.portal-notifications-label{display:none}.portal-notifications-link{justify-content:center;padding:7px}.portal-notifications-count{position:absolute;top:-6px;right:-6px;min-width:17px;height:17px;margin:0;padding:0 4px;font-size:9px;box-shadow:0 0 0 2px var(--bg)}}

.event-status-dot{position:absolute;right:27px;top:8px;width:9px;height:9px;border-radius:50%;box-shadow:0 0 0 2px var(--card)}.list-status-dot{width:9px;height:9px;flex:0 0 auto;border-radius:50%;margin-top:6px}

.post-status-select{display:flex;align-items:center;gap:9px}.post-status-select select{flex:1}.post-status-dot{width:12px;height:12px;flex:0 0 auto;border-radius:50%;box-shadow:0 0 0 3px var(--accent-weak)}

.modal-header{position:relative}.modal-status-control{display:flex;align-items:center;gap:8px;margin-left:auto;margin-right:12px}.modal-status-control select{width:210px;min-height:34px;border-radius:8px;font-weight:700}.post-status-dot{width:10px;height:10px;flex:0 0 auto;border-radius:50%;box-shadow:0 0 0 2px var(--card)}
.modal-status-control{position:relative;margin-left:auto;margin-right:12px}.modal-status-trigger{display:flex;align-items:center;gap:7px;min-height:34px;padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface-muted);color:var(--text);font:700 12px/1 inherit;cursor:pointer}.modal-status-trigger:hover{border-color:var(--accent)}.modal-status-choices{display:none;position:absolute;right:0;top:calc(100% + 6px);z-index:1005;min-width:205px;padding:5px;border:1px solid var(--border);border-radius:10px;background:var(--card);box-shadow:var(--shadow-md)}.modal-status-choices.open{display:grid}.modal-status-choices button{display:flex;align-items:center;gap:8px;padding:9px;border:0;border-radius:7px;background:transparent;color:var(--text);font:600 12px/1.2 inherit;text-align:left;cursor:pointer}.modal-status-choices button:hover{background:var(--accent-weak)}.modal-status-choices button[aria-selected=true]{background:var(--accent-weak)}

.event-status-dot{border:0;padding:0;cursor:pointer}.quick-status-menu{position:fixed;z-index:1005;display:grid;min-width:205px;padding:5px;border:1px solid var(--border);border-radius:10px;background:var(--card);box-shadow:var(--shadow-md)}.quick-status-menu button{display:flex;align-items:center;gap:8px;padding:9px;border:0;border-radius:7px;background:transparent;color:var(--text);font:600 12px/1.2 inherit;text-align:left;cursor:pointer}.quick-status-menu button:hover{background:var(--accent-weak)}

.modal-status-chevron{display:block;margin-left:2px;flex:0 0 auto;transition:transform .15s ease}.modal-status-trigger[aria-expanded=true] .modal-status-chevron{transform:rotate(180deg)}
