/* "DT Getai Grotesk Display" (peso único, Black) -- Death of Typography /
   Sylvester Tan (deathoftypography.com), licença SIL OFL 1.1 (uso comercial
   livre, crédito ao autor). Arquivo próprio em fontes/, não depende de CDN
   de terceiros -- ver fontes/DT-Getai-Grotesk-LICENSE-OFL.txt. */
@font-face {
  font-family: "DT Getai Grotesk Display";
  src: url("fontes/dt-getai-grotesk-display-black.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
}

:root {
  --fundo: #121212; --cartao: #1D1D20; --cartao2: #26262A; --borda: #3A3A40;
  --texto: #F2F2F2; --texto2: #B9B9B9; --primaria: #A78BFA; --primaria-2: #8B5CF6;
  --primaria-texto: #241645;
  /* lilás mais claro pedido pra palavras/textos em destaque -- ícones,
     bordas, preenchimentos de botão e estados de hover continuam com o
     --primaria de sempre (mais vivo, "neon"); esse tom mais claro é só
     pra texto estático que precisa ler como "palavra em lilás" */
  --lilas-claro: #D3D3FF;
  --ok: #7CCB7C; --aviso: #FFB74D;
  /* multiplicador de acessibilidade -- trocado por window._ajustarEscalaFonte
     (app.js) e persistido em localStorage; TODO font-size do site usa
     calc(Npx * var(--escala-fonte, 1)), então mudar essa variável aumenta
     o texto do site inteiro de uma vez só */
  --escala-fonte: 1;
}
* { box-sizing: border-box; margin: 0; font-family: "Josefin Sans", "Segoe UI", system-ui, sans-serif; letter-spacing: .015em; }
body {
    color: var(--texto); min-height: 100vh; font-size: calc(18px * var(--escala-fonte, 1)); line-height: 1.6; position: relative;
    background:
        radial-gradient(ellipse 900px 700px at 20% 15%, rgba(167,139,250,.10), transparent 60%),
        radial-gradient(ellipse 800px 650px at 85% 90%, rgba(139,92,246,.08), transparent 55%),
        var(--fundo);
}
body::before {
    content: ""; position: fixed; inset: 0; pointer-events: none; opacity: .05; mix-blend-mode: overlay;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.marca { font-family: "DT Getai Grotesk Display", "Baloo 2", "Segoe UI", system-ui, sans-serif; font-weight: 400; letter-spacing: -0.01em; }
/* triplicada (era 20px) -- clamp() em vez de 60px fixo só pra não estourar
   a largura em tela de celular estreita; no computador fica nos 60px cheios */
.saudacao { font-size: calc(clamp(30px, 9vw, 60px) * var(--escala-fonte, 1)); font-weight: 700; margin: 4px 0 16px; color: var(--texto); }
.saudacao .nome-destaque { color: var(--lilas-claro); font-weight: inherit; }

/* ícone vazado padrão -- BASE de que todo `svg.ico` depende (herda
   stroke/fill/etc.); as regras mais específicas espalhadas pelo arquivo só
   sobrescrevem largura/altura/cor conforme o contexto (nav ativo, badge,
   botão de ação...). Sem essa base o ícone renderiza preenchido de preto
   (padrão do SVG), não vazado. */
svg.ico { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 1.6;
    stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; vertical-align: middle; }

/* ============================================================
   NAVEGAÇÃO EM SIDEBAR -- substitui o <header> fixo no topo.
   Reaproveita a MESMA técnica de logo arqueado da tela de login
   (arco + textPath "PLATAFORMA EDUCACIONAL" + h1.marca com glow),
   só em escala menor pra caber numa coluna estreita. Os botões de
   navegação mantêm os MESMOS ids que trocarSubaba()/trocarSubabaProfessor()/
   trocarSubabaDev() já esperavam (sub-..., prof-sub-..., dev-sub-...) -- só
   mudou a casca visual, a lógica de trocar de aba nunca foi tocada.
   ============================================================ */
.shell { display: flex; align-items: flex-start; }
.sidebar { width: 252px; flex-shrink: 0; padding: 18px 14px; border-right: 1px solid var(--borda);
    background: rgba(24,24,27,.55); display: flex; flex-direction: column;
    position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.conteudo-principal { flex: 1; min-width: 0; }

.marca-cabecalho { text-align: center; padding: 4px 4px 20px; }
.marca-arco-mini { width: 182px; height: 36px; overflow: visible; display: block; margin: 0 auto -6px; }
.marca-arco-mini path { fill: none; }
.marca-arco-mini text { font-size: calc(8.2px * var(--escala-fonte, 1)); letter-spacing: 3px;
    text-transform: uppercase; fill: var(--texto2); font-weight: 700; }
.marca-mini { font-family: "DT Getai Grotesk Display", "Baloo 2", "Segoe UI", system-ui, sans-serif;
    font-weight: 400; font-size: calc(26px * var(--escala-fonte, 1)); letter-spacing: -0.01em;
    color: var(--lilas-claro); text-shadow: 0 0 24px rgba(211,211,255,.45); }
.marca-sub-sidebar { font-size: calc(10px * var(--escala-fonte, 1)); color: var(--texto2);
    letter-spacing: .04em; margin-top: 1px; }

.nav-grupo-titulo { font-size: calc(11px * var(--escala-fonte, 1)); text-transform: uppercase;
    letter-spacing: .08em; color: var(--texto2); font-weight: 700; margin: 15px 10px 7px; opacity: .8; }
.nav-grupo:first-of-type .nav-grupo-titulo { margin-top: 4px; }
.nav-item, .subabas button, .turnos button, .segmentos button { font-family: inherit; }
.nav-item {
    display: flex; align-items: center; gap: 11px; width: 100%; text-align: left;
    padding: 10px 12px; border-radius: 11px; color: var(--texto2); cursor: pointer;
    border: 1px solid transparent; background: none; font-weight: 600;
    font-size: calc(14.5px * var(--escala-fonte, 1)); position: relative; margin-bottom: 2px;
    transition: background .12s, color .12s, border-color .12s;
}
.nav-item:hover { background: var(--cartao2); color: var(--texto); }
.nav-item.ativo { background: linear-gradient(135deg, rgba(167,139,250,.16), rgba(139,92,246,.09));
    color: var(--texto); border-color: rgba(167,139,250,.32); }
.nav-item.ativo svg.ico { stroke: var(--primaria); filter: drop-shadow(0 0 4px var(--primaria)); }
.nav-item.ativo::before { content: ""; position: absolute; left: -14px; top: 9px; bottom: 9px;
    width: 3px; border-radius: 3px; background: linear-gradient(var(--primaria), var(--primaria-2)); }
.nav-item svg.ico { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 1.6;
    stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; }
/* destaque médio -- separa visualmente "Sair" dos itens de navegação
   comuns (ação diferente das outras, merece um respiro), mas sem parecer
   um botão de perigo/erro -- por isso o tom âmbar suave, não vermelho */
#btn-sair { color: var(--aviso); border-color: rgba(255,183,77,.3); background: rgba(255,183,77,.06);
    width: auto; padding: 7px 12px; }
#btn-sair:hover { background: rgba(255,183,77,.14); border-color: rgba(255,183,77,.5); color: var(--aviso); }
#btn-sair svg.ico { stroke: var(--aviso); }
.nav-item .badge-contagem { margin-left: auto; background: var(--aviso); color: #241645;
    font-size: 10.5px; font-weight: 800; min-width: 18px; height: 18px; border-radius: 999px;
    display: flex; align-items: center; justify-content: center; padding: 0 5px; }

/* rodapé fixo, único e compartilhado pelas 3 sidebars (ver comentário no
   index.html) -- fica "grudado" embaixo de qualquer uma que esteja ativa
   sem precisar duplicar id nenhum */
.sidebar-rodape-fixo { position: fixed; bottom: 0; left: 0; width: 252px; z-index: 5;
    padding: 10px 14px 16px; border-top: 1px solid var(--borda); border-right: 1px solid var(--borda);
    background: rgba(18,18,18,.92); backdrop-filter: blur(6px); }
.sidebar { padding-bottom: 175px; } /* espaço reservado pro rodapé fixo não cobrir os últimos itens */
.usuario-chip-sidebar { font-size: calc(12.5px * var(--escala-fonte, 1)); color: var(--texto2);
    padding: 4px 4px 8px; line-height: 1.3; }
.usuario-chip-sidebar b { color: var(--texto); }
.sidebar-ferramentas { display: flex; align-items: center; gap: 8px; padding: 2px 4px 8px; }
.sidebar-escala { display: flex; border: 1px solid rgba(167,139,250,.4); border-radius: 999px; overflow: hidden;
    background: rgba(167,139,250,.1); }
.sidebar-escala button { border: none; background: transparent; color: var(--texto2); padding: 10px 14px;
    cursor: pointer; font-size: calc(15px * var(--escala-fonte, 1)); font-weight: 800; }
.sidebar-escala button:hover { background: rgba(167,139,250,.22); color: var(--texto); }
.sidebar-escala button:not(:last-child) { border-right: 1px solid rgba(167,139,250,.4); }
.sidebar-sino { width: 44px; height: 44px; border-radius: 999px; border: 1px solid var(--borda);
    background: var(--cartao); display: flex; align-items: center; justify-content: center;
    color: var(--texto2); cursor: pointer; position: relative; flex-shrink: 0; }
.sidebar-sino:hover { border-color: var(--primaria); color: var(--primaria); }
.sidebar-sino svg.ico { width: 21px; height: 21px; }

@media (max-width: 860px) {
    .shell { flex-direction: column; }
    .sidebar { position: static; width: 100%; height: auto; flex-direction: row; flex-wrap: wrap;
        border-right: none; border-bottom: 1px solid var(--borda); align-items: center; padding-bottom: 18px; }
    .marca-cabecalho { width: 100%; padding-bottom: 10px; }
    .nav-grupo { display: contents; }
    .nav-grupo-titulo { display: none; }
    .nav-item { width: auto; }
    .nav-item.ativo::before { display: none; }
    .sidebar-rodape-fixo { position: static; width: 100%; display: flex; align-items: center;
        justify-content: space-between; flex-wrap: wrap; gap: 8px; border-top: 1px solid var(--borda);
        border-right: none; padding: 12px 16px 16px; background: none; backdrop-filter: none; }
    .sidebar-ferramentas { padding: 0; }
    .usuario-chip-sidebar { padding: 0; }
}

/* ---------- Painel Geral ---------- */
.grade-widgets { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: start; }
@media (max-width: 900px) { .grade-widgets { grid-template-columns: 1fr; } }
.card-titulo { font-size: calc(13px * var(--escala-fonte, 1)); text-transform: uppercase; letter-spacing: .07em;
    color: var(--texto2); font-weight: 800; display: flex; align-items: center; gap: 8px; margin-bottom: 16px; }
.card-titulo svg.ico { stroke: var(--primaria); width: 21px; height: 21px; filter: drop-shadow(0 0 4px var(--primaria)); }
.tarefa { display: flex; gap: 13px; align-items: flex-start; padding: 12px 0; border-bottom: 1px solid var(--borda);
    cursor: pointer; }
.tarefa:last-child { border-bottom: none; padding-bottom: 2px; }
.tarefa .marcador { width: 9px; height: 9px; border-radius: 50%; margin-top: 6px; flex-shrink: 0; }
.tarefa.vencido .marcador { background: var(--aviso); box-shadow: 0 0 0 4px rgba(255,183,77,.16); }
.tarefa.ok .marcador { background: var(--primaria); box-shadow: 0 0 0 4px rgba(167,139,250,.16); }
.tarefa .conteudo { flex: 1; min-width: 0; }
.tarefa .titulo { font-weight: 700; font-size: calc(14.5px * var(--escala-fonte, 1)); }
.tarefa .prazo { font-size: calc(13px * var(--escala-fonte, 1)); color: var(--texto2); margin-top: 2px; }
.tarefa.vencido .prazo { color: var(--aviso); font-weight: 700; }
.tarefa-vazia { color: var(--texto2); font-size: calc(14px * var(--escala-fonte, 1)); padding: 4px 0; }
/* Resumo rápido: lista de linhas (selo com ícone neon + número + rótulo),
   mesmo espírito visual da lista de Tarefas ao lado -- sem caixa cinza
   embaixo de cada número */
.stats-grade { display: flex; flex-direction: column; }
.stat { display: flex; align-items: center; gap: 13px; padding: 11px 0; border-bottom: 1px solid var(--borda); }
.stat:last-child { border-bottom: none; padding-bottom: 2px; }
.stat .num { font-size: calc(20px * var(--escala-fonte, 1)); font-weight: 800; font-variant-numeric: tabular-nums;
    line-height: 1; color: var(--texto); }
.stat .lbl { font-size: calc(13px * var(--escala-fonte, 1)); color: var(--texto2); margin-top: 3px; line-height: 1.3; }
.questao-discursiva { border-left: 3px solid var(--aviso); }
.questao-previa { border: 1px solid var(--borda); border-radius: 12px; padding: 12px 14px; margin-top: 10px; font-size: calc(15px * var(--escala-fonte, 1)); }
.questao-previa div { color: var(--texto2); margin-top: 4px; }
/* "widget": mesmo cartão-com-selo-neon do Painel Geral, reaproveitado no
   Banco de Questões e na prévia de "Gerar atividade com IA" -- cartão comum
   já tinha borda/fundo, faltava o toque de destaque (selo + leve elevação
   ao passar o mouse) que o resto do redesign já usa em outro lugar */
.widget-card { transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease; }
.widget-card:hover { border-color: var(--primaria); transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(139, 92, 246, .14); }
.widget-cabecalho { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.widget-selo, .widget-selo-num { flex-shrink: 0; display: inline-flex; align-items: center;
    justify-content: center; }
.widget-selo { width: 32px; height: 32px; border-radius: 10px; background: var(--cartao);
    border: 1px solid var(--borda); }
.widget-selo svg.ico { width: 16px; height: 16px; margin: 0; stroke: var(--primaria);
    filter: drop-shadow(0 0 4px var(--primaria)); }
.widget-selo-num { width: 27px; height: 27px; border-radius: 50%; color: var(--lilas-claro);
    font-weight: 800; font-size: calc(13px * var(--escala-fonte, 1));
    background: linear-gradient(135deg, rgba(167,139,250,.22), rgba(139,92,246,.12));
    border: 1px solid rgba(167,139,250,.35); }
.widget-info { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.widget-info .sub { font-size: calc(12px * var(--escala-fonte, 1)); color: var(--texto2); }
.widget-tag { display: inline-flex; align-items: center; gap: 4px; background: var(--cartao2);
    border: 1px solid var(--borda); border-radius: 999px; padding: 3px 10px;
    font-size: calc(11.5px * var(--escala-fonte, 1)); color: var(--texto2); margin-bottom: 8px; }
.widget-tag svg.ico { width: 11px; height: 11px; margin: 0; }
/* Simulado/Criar atividades -- a caixa de campos fica mais estreita e os
   botões de destaque (Banco de questões, Gerar atividades com IA) sobem
   pro lado dela em vez de ficarem embaixo, ocupando toda a largura */
.linha-simulado-topo { display: flex; gap: 20px; align-items: stretch; margin-bottom: 16px; }
.acoes-simulado { display: flex; flex-direction: column; gap: 12px; flex: 0 0 230px; }
/* os dois widgets dividem a altura em partes iguais -- juntos, sempre do
   tamanho da caixa "Simulado" ao lado, já que a coluna estica (align-items:
   stretch no pai) até a altura dela */
.acoes-simulado .acao-widget { flex: 1; display: flex; flex-direction: column;
    justify-content: center; cursor: pointer; margin-bottom: 0; padding: 18px 20px; }
.acoes-simulado .acao-widget .widget-cabecalho b { color: var(--lilas-claro);
    font-size: calc(15px * var(--escala-fonte, 1)); font-weight: 600;
    text-transform: uppercase; letter-spacing: .03em; }
.linha-feriados-sabados { display: flex; gap: 20px; align-items: stretch; margin-bottom: 18px; }
@media (max-width: 860px) {
    .linha-simulado-topo { flex-direction: column; }
    .acoes-simulado { flex: none; }
    .linha-feriados-sabados { flex-direction: column; }
}
.chip { margin-left: auto; background: var(--cartao); border: 1px solid var(--borda);
        border-radius: 999px; padding: 9px 18px; font-size: calc(15px * var(--escala-fonte, 1)); }
.chip b { color: var(--lilas-claro); }
.sair { border: 1px solid var(--borda); background: none; color: var(--texto2);
        border-radius: 999px; padding: 9px 18px; font-size: calc(15px * var(--escala-fonte, 1)); cursor: pointer; }
.sair:hover { color: var(--primaria); border-color: var(--primaria); }
main { max-width: 1100px; margin: 0 auto; padding: 22px 30px 80px; }
.cartao { background: var(--cartao); border: 1px solid var(--borda); border-radius: 18px;
          padding: 24px 26px; margin-bottom: 18px; }
.cartao h2 { font-size: calc(21px * var(--escala-fonte, 1)); margin-bottom: 6px; }
.dica { color: var(--texto2); font-size: calc(15px * var(--escala-fonte, 1)); margin-bottom: 14px; line-height: 1.45; }
label { font-size: calc(15px * var(--escala-fonte, 1)); font-weight: 600; display: block; margin: 12px 0 5px; }
select, input[type=text], input[type=date], input[type=number] {
    border: 1px solid var(--borda); border-radius: 12px; padding: 12px 15px;
    font-size: calc(17px * var(--escala-fonte, 1)); background: var(--cartao2); color: var(--texto); min-width: 180px; }
textarea { width: 100%; border: 1px solid var(--borda); border-radius: 14px;
    padding: 13px 16px; font-size: calc(17px * var(--escala-fonte, 1)); background: var(--cartao2);
    color: var(--texto); resize: vertical; line-height: 1.4; }
::placeholder { color: #777; }
.q-formatacao { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; flex-wrap: wrap; }
.q-formatacao .mini { padding: 7px 14px; font-size: calc(15px * var(--escala-fonte, 1)); }
.q-formatacao .mini.ativo { color: var(--primaria); border-color: var(--primaria); background: var(--cartao2); }
.q-formatacao .dica { margin-bottom: 0; }
.enunciado-rico { width: 100%; min-height: 78px; border: 1px solid var(--borda); border-radius: 14px;
    padding: 13px 16px; font-size: calc(17px * var(--escala-fonte, 1)); background: var(--cartao2);
    color: var(--texto); line-height: 1.4; }
.enunciado-rico:focus { outline: 2px solid var(--primaria); outline-offset: 1px; }
.enunciado-rico div { min-height: 1.4em; }
.caixa-colar-imagem { border: 2px dashed var(--borda); border-radius: 12px; padding: 14px 16px;
    font-size: calc(14px * var(--escala-fonte, 1)); color: var(--texto2); text-align: center; margin-top: 8px; cursor: text;
    user-select: none; caret-color: transparent; }
/* dentro do q-toolbar (ao lado do botão "Inserir imagem"), vira uma faixa
   estreita paralela ao botão em vez de uma caixa cheia embaixo dele */
.q-toolbar .caixa-colar-imagem { flex: 1; margin-top: 0; min-width: 200px; }
.caixa-colar-imagem:focus { outline: none; border-color: var(--primaria); color: var(--texto); }
.mover-linha { display: flex; gap: 6px; margin-bottom: 8px; }
.texto-base-bloco { background: var(--cartao2); border-style: dashed; }
.texto-base-bloco h3 { color: var(--texto2); }
/* template da escola em "Criar atividades" -- pontilhado fino e espaçado
   em neon (era um dashed sem cor/largura próprias, caindo no padrão do
   navegador: grosso e branco) + separador embaixo pra não misturar
   visualmente com os campos de Turno/Série/etc logo abaixo */
.bloco-template-atividade { background: var(--cartao2); border: 2px dashed rgba(167,139,250,.55);
    border-radius: 14px; padding: 16px 18px; margin-bottom: 16px;
    box-shadow: 0 0 16px rgba(167,139,250,.1); }
.separador-secao { border: none; border-top: 1px solid var(--borda); margin: 18px 0 0; }
#at-tpl-arquivo { padding: 8px 10px; font-size: calc(14px * var(--escala-fonte, 1));
    border: 1px solid var(--borda); }
#at-tpl-arquivo::file-selector-button { background: var(--lilas-claro); color: var(--primaria-texto);
    border: none; border-radius: 8px; padding: 6px 12px; font-size: calc(13px * var(--escala-fonte, 1));
    font-weight: 600; margin-right: 10px; cursor: pointer; }
.linha { display: flex; gap: 16px; flex-wrap: wrap; align-items: flex-end; }
.questao { border: 1px solid var(--borda); border-radius: 16px; background: var(--cartao);
           padding: 18px 20px; margin: 14px 0; position: relative; }
.questao h3 { font-size: calc(16px * var(--escala-fonte, 1)); color: var(--lilas-claro); margin-bottom: 6px;
    font-weight: 600; text-transform: uppercase; letter-spacing: .03em; }
.questao h3 .dica { text-transform: none; letter-spacing: normal; }
.questao h3 svg.ico { width: 16px; height: 16px; vertical-align: -2.5px; margin-right: 5px; }
.questao .excluir { position: absolute; top: 14px; right: 16px; }
.questao .excluir:hover { color: var(--primaria-2); border-color: var(--primaria-2); }
.botoes { display: flex; gap: 12px; margin-top: 18px; flex-wrap: wrap; }
.btn { border: none; border-radius: 12px; padding: 14px 28px; font-size: calc(17px * var(--escala-fonte, 1));
       font-weight: 700; cursor: pointer; }
.btn-primario { background: var(--primaria); color: var(--primaria-texto); }
.btn-primario:hover { background: var(--primaria-2); color: white; }
.btn-suave { background: var(--cartao2); color: var(--texto); border: 1px solid var(--borda); }
.btn-suave:hover { border-color: var(--texto2); }
.avisos { background: #2A2115; border: 1px solid #6B5122; border-radius: 14px;
          padding: 16px 20px; margin-top: 16px; }
.avisos h3 { color: var(--aviso); font-size: calc(17px * var(--escala-fonte, 1)); margin-bottom: 10px; }
.avisos li { font-size: calc(15.5px * var(--escala-fonte, 1)); margin: 6px 0 6px 20px; line-height: 1.4; }
.avisos.ok { background: #1B2A1B; border-color: #3D6B3D; }
.avisos.ok h3 { color: var(--ok); }
.subabas { display: flex; gap: 10px; margin-bottom: 18px; flex-wrap: wrap; }
.subabas button, .turnos button, .segmentos button {
    border: 1px solid var(--borda); background: var(--cartao);
    border-radius: 12px; padding: 11px 24px; font-size: calc(16px * var(--escala-fonte, 1)); cursor: pointer;
    color: var(--texto2); font-weight: 600; }
.subabas button.ativo, .turnos button.ativo, .segmentos button.ativo {
    background: var(--primaria); border-color: var(--primaria); color: var(--primaria-texto); }
.turnos, .segmentos { display: flex; gap: 10px; margin-bottom: 16px; flex-wrap: wrap; }
.segmento-titulo { font-size: calc(15px * var(--escala-fonte, 1)); color: var(--lilas-claro); text-transform: uppercase;
    letter-spacing: 1px; margin: 18px 0 4px; font-weight: 700; }
.disciplina-bloco h3 { font-size: calc(18px * var(--escala-fonte, 1)); margin: 12px 0 8px; }
.disciplina-bloco h3 svg.ico { width: 16px; height: 16px; vertical-align: -2.5px; margin-right: 6px; }
.conjunto { display: flex; align-items: center; gap: 14px; border: 1px solid var(--borda);
    background: var(--cartao2); border-radius: 14px; padding: 14px 18px; margin: 8px 0; }
.conjunto-principal { display: flex; align-items: center; gap: 14px; flex: 1; cursor: pointer; }
.conjunto input { width: 22px; height: 22px; accent-color: var(--primaria); }
.conjunto .titulo { font-size: calc(17px * var(--escala-fonte, 1)); font-weight: 700; }
.conjunto .meta { font-size: calc(14px * var(--escala-fonte, 1)); color: var(--texto2); margin-top: 2px; }
.conjunto-acoes { display: flex; gap: 6px; flex-shrink: 0; }
.badge { margin-left: auto; font-size: calc(13.5px * var(--escala-fonte, 1)); border-radius: 999px; padding: 5px 14px;
         white-space: nowrap; }
.badge-avisos { background: #2A2115; color: var(--aviso); border: 1px solid #6B5122; }
.badge-ok { background: #1B2A1B; color: var(--ok); border: 1px solid #3D6B3D; }
.badge-exp { background: #2A1515; color: #FF8A80; border: 1px solid #6B2222; }
.badge-coord { background: #251C2A; color: #CE93D8; border: 1px solid #5E4470; }
.rodape-fixo { position: sticky; bottom: 16px; display: flex; align-items: center; gap: 16px;
    background: var(--cartao); border: 1px solid var(--borda); border-radius: 18px;
    padding: 16px 22px; box-shadow: 0 8px 22px rgba(0,0,0,.5); }
.rodape-fixo span { font-size: calc(15px * var(--escala-fonte, 1)); color: var(--texto2); }
.rodape-fixo .btn { margin-left: auto; }
.acesso, .pasta-item { display: flex; align-items: center; gap: 14px;
    border: 1px solid var(--borda); background: var(--cartao2); border-radius: 14px;
    padding: 14px 18px; margin: 8px 0; }
.acesso .nome, .pasta-item .nome { font-size: calc(17px * var(--escala-fonte, 1)); font-weight: 700; }
.acesso .meta { font-size: calc(14px * var(--escala-fonte, 1)); color: var(--texto2); margin-top: 2px; }
.acesso .acoes, .pasta-item .acoes { margin-left: auto; display: flex; gap: 8px; }
.mini { border: 1px solid var(--borda); background: none; color: var(--texto2);
        border-radius: 10px; padding: 6px 14px; font-size: calc(13.5px * var(--escala-fonte, 1)); cursor: pointer; }
.mini:hover { color: var(--primaria); border-color: var(--primaria); }
button svg.ico { width: 14px; height: 14px; vertical-align: -2.5px; margin-right: 4px; }
h2 svg.ico { width: 19px; height: 19px; vertical-align: -3px; margin-right: 7px; }
/* botão de ação só-ícone (círculo) -- lista de conjuntos/blocos, quando 5
   ações lado a lado com texto ficava apertado demais; ícone + title (hover)
   já é suficiente com os rótulos claros de cada ação */
.acao-icone { width: 34px; height: 34px; border-radius: 10px; border: 1px solid var(--borda);
    background: var(--cartao); color: var(--texto2); display: inline-flex; align-items: center;
    justify-content: center; cursor: pointer; flex-shrink: 0; padding: 0; }
.acao-icone svg.ico { width: 16px; height: 16px; margin: 0; }
.acao-icone:hover { color: var(--primaria); border-color: var(--primaria); }
.acao-icone.perigo:hover { color: #FF8A80; border-color: #FF8A80; }
/* variante maior e já neon por padrão (não só no hover) -- pro ícone de
   horário semanal em "Minhas turmas", que é a ação mais usada de cada
   turma e pediu destaque de tamanho médio */
.acao-icone.medio { width: 44px; height: 44px; border-radius: 12px;
    background: linear-gradient(135deg, rgba(167,139,250,.16), rgba(139,92,246,.09));
    border-color: rgba(167,139,250,.4); color: var(--primaria); }
.acao-icone.medio svg.ico { width: 20px; height: 20px; filter: drop-shadow(0 0 4px currentColor); }
.acao-icone.medio:hover { background: linear-gradient(135deg, rgba(167,139,250,.26), rgba(139,92,246,.16));
    border-color: var(--primaria); transform: translateY(-1px); }
.turma-check { width: 20px; height: 20px; accent-color: var(--primaria); flex-shrink: 0; cursor: pointer; }
.grupo-serie-turmas { margin-bottom: 6px; }
.badge svg.ico { width: 12px; height: 12px; vertical-align: -2px; margin-right: 3px; }
.codigo-grande { font-family: Consolas, monospace; font-size: calc(30px * var(--escala-fonte, 1)); letter-spacing: 2px;
    color: var(--lilas-claro); background: var(--cartao2); border: 1px dashed var(--primaria);
    border-radius: 14px; padding: 16px 22px; text-align: center; margin: 14px 0; }
#tela-login { display: flex; min-height: 100vh; position: relative; z-index: 1; }
.login-ilustra, .login-lado-form { display: flex; flex-direction: column;
    align-items: center; justify-content: center; padding: 40px; gap: 30px; }
.login-ilustra { flex: 0 0 30%; position: relative; min-width: 300px; }
.login-lado-form { flex: 1; }
.login-ilustra::after { content: ""; position: absolute; top: 6%; bottom: 6%; right: 0;
    width: 2px; background: linear-gradient(180deg, transparent, rgba(0,0,0,.55) 15%, rgba(0,0,0,.55) 85%, transparent);
    box-shadow: 1px 0 0 rgba(255,255,255,.05), -1px 0 0 rgba(0,0,0,.4); }
.login-brilho { position: absolute; color: var(--primaria); font-size: calc(20px * var(--escala-fonte, 1));
    text-shadow: 0 0 10px var(--primaria); opacity: .85; }
.login-brilho-1 { top: 8%; left: 10%; font-size: calc(14px * var(--escala-fonte, 1)); }
.login-brilho-2 { bottom: 10%; right: 12%; }
.login-icones { position: relative; width: 220px; height: 220px; color: var(--primaria); }
.login-icones-linhas { position: absolute; inset: 0; width: 100%; height: 100%;
    filter: drop-shadow(0 0 2px var(--primaria)); }
.login-icones-linhas line { stroke: var(--primaria); stroke-width: 1.4; stroke-opacity: .55; }
.login-icone { position: absolute; transform: translate(-50%, -50%); width: 34px; height: 34px;
    filter: drop-shadow(0 0 4px var(--primaria)); }
.login-icone svg { width: 100%; height: 100%; }
.login-icone-centro { width: 42px; height: 42px; }
.login-tagline { font-size: calc(21px * var(--escala-fonte, 1)); font-weight: 700; line-height: 1.35; text-align: left;
    max-width: 260px; }
.login-tagline .acento { color: var(--lilas-claro); }
.login-caixa { text-align: center; width: 100%; max-width: 420px; }
.login-rotulo-arco { width: 260px; height: 60px; overflow: visible; margin: 0 auto -6px; }
.login-rotulo-arco path { fill: none; }
.login-rotulo-arco text { font-size: calc(12px * var(--escala-fonte, 1)); letter-spacing: 4.5px; text-transform: uppercase;
    fill: var(--texto2); font-weight: 700; }
.login-caixa h1.marca { font-size: calc(62px * var(--escala-fonte, 1)); line-height: 1.1; color: var(--lilas-claro);
    text-shadow: 0 0 46px rgba(211,211,255,.4); margin-bottom: 8px; }
.login-caixa p { color: var(--texto2); font-size: calc(15px * var(--escala-fonte, 1)); margin-bottom: 26px; }
.login-caixa label { text-align: center; }
.login-caixa input { width: 100%; text-align: center; font-family: Consolas, monospace;
    font-size: calc(22px * var(--escala-fonte, 1)); letter-spacing: 2px; padding: 15px; }
.login-caixa .btn { width: 100%; margin-top: 16px; font-size: calc(19px * var(--escala-fonte, 1)); }
.login-lembrar { justify-content: center; padding-bottom: 0; margin-top: 14px; font-weight: 500;
    font-size: calc(14px * var(--escala-fonte, 1)); color: var(--texto2); }
.login-rodape { margin-top: 34px; text-align: center; font-size: calc(12.5px * var(--escala-fonte, 1)); color: #777;
    line-height: 1.9; }
.login-rodape a { color: var(--texto2); }
.login-rodape a:hover { color: var(--primaria); }
@media (max-width: 860px) {
    #tela-login { flex-direction: column; }
    .login-ilustra { flex: none; }
    .login-ilustra::after { display: none; }
    .login-ilustra { padding-bottom: 10px; }
    .login-tagline { text-align: center; }
}
.login-erro { color: #FF8A80; font-size: calc(15px * var(--escala-fonte, 1)); margin-top: 14px; min-height: 22px; }
.demo { margin-top: 26px; font-size: calc(13px * var(--escala-fonte, 1)); color: #8a8a8a; text-align: left;
        line-height: 1.8; border-top: 1px solid var(--borda); padding-top: 14px; }
.demo code { color: var(--texto2); background: var(--cartao2); padding: 2px 8px;
             border-radius: 6px; font-size: calc(12.5px * var(--escala-fonte, 1)); }
/* janelas flutuantes (abrirModal): sempre centralizadas na tela, num
   branco-gelo que contrasta de propósito com o resto do tema escuro, com
   detalhes em roxo/lilás pra chamar atenção -- as variáveis de cor são
   redefinidas aqui DENTRO do dialog, então todo componente que já usa
   var(--texto)/var(--cartao2)/etc (botões, ".dica", listas...) se adapta
   sozinho, sem precisar reescrever cada regra */
dialog { border: none; border-radius: 20px; padding: 30px 34px; margin: auto;
         max-width: 620px; width: min(92vw, 620px); max-height: 82vh; overflow-y: auto;
         background: radial-gradient(650px 500px at 12% 0%, rgba(139, 92, 246, .28),
             rgba(139, 92, 246, .1) 40%, transparent 68%), #FBFAFF;
         color: #2E2246; box-shadow: 0 24px 70px rgba(91,45,158,.35);
         --texto: #2E2246; --texto2: #6B6280; --cartao: #FFFFFF; --cartao2: #F1ECFB;
         --borda: #DDD3F5; --primaria-texto: #FFFFFF; }
dialog::backdrop { background: rgba(36,20,64,.6); }
dialog h2 { color: var(--lilas-claro); }
dialog code { background: var(--cartao2); color: var(--lilas-claro); padding: 2px 7px; border-radius: 6px; }

/* botão de destaque -- precisa se sobressair dos outros botões secundários
   do card, já que costuma ser o caminho principal (Gerar com IA, Revisar,
   Enviar...), mas sem preencher o botão inteiro de neon: só um fundo lilás
   bem suave + borda, texto na cor da marca, e o brilho neon fica reservado
   pro ícone (mesma lógica do item ativo da sidebar) */
.btn-ia-destaque { background: linear-gradient(135deg, rgba(167,139,250,.16), rgba(139,92,246,.09));
    color: var(--lilas-claro); border: 1px solid rgba(167,139,250,.35);
    font-size: calc(16.5px * var(--escala-fonte, 1)); padding: 12px 24px;
    transition: background .15s, border-color .15s, transform .15s; }
.btn-ia-destaque svg.ico { filter: drop-shadow(0 0 4px currentColor); }
.btn-ia-destaque:hover { background: linear-gradient(135deg, rgba(167,139,250,.26), rgba(139,92,246,.16));
    border-color: var(--primaria); transform: translateY(-1px); }
.mini-ia-destaque { color: var(--lilas-claro); border-color: var(--primaria-2); font-weight: 700; }

/* "O que será feito na prática?" é a entrada principal do card agora --
   precisa se destacar mais que um <label> comum (lilás mais claro que o
   roxo padrão dos títulos, por pedido dela) */
.rotulo-rascunho { font-size: calc(20px * var(--escala-fonte, 1)); font-weight: 800; color: var(--lilas-claro); margin: 14px 0 6px; }
.linha-rotulo-rascunho { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.botao-microfone.ativo { background: var(--primaria); border-color: var(--primaria); color: var(--primaria-texto); }
.botao-microfone.ativo:hover { background: var(--primaria-2); }

/* botões pequenos usados com frequência (recolher/expandir, horário
   semanal, editar, séries) maiores e com fundo claro -- pedido explícito
   de acessibilidade, a escola tem professores com deficiência visual */
.mini-acessivel { padding: 10px 18px; font-size: calc(15.5px * var(--escala-fonte, 1));
    font-weight: 600; background: rgba(167,139,250,.18); border-color: var(--primaria); color: var(--texto); }
.mini-acessivel:hover { background: rgba(167,139,250,.3); border-color: var(--primaria-2); }

/* rascunho (70%) lado a lado com "opções rápidas" (30%), separados por
   uma linha vertical -- em vez de um embaixo do outro */
.linha-rascunho-opcoes { display: flex; gap: 20px; align-items: stretch; margin-bottom: 2px; }
.linha-rascunho-opcoes .col-rascunho { flex: 0 0 70%; min-width: 0; }
.linha-rascunho-opcoes .col-opcoes-rapidas { flex: 1 1 30%; min-width: 0; padding-left: 20px;
    border-left: 1px solid var(--borda); display: flex; flex-direction: column; justify-content: center; }

/* linha de "Gerar Word"/"Ver prévia" mais compacta pra caberem lado a lado
   numa linha só, mesmo em telas médias */
#plan-botoes-docx .btn { padding: 10px 18px; font-size: calc(14.5px * var(--escala-fonte, 1)); }

/* caixa de "escolher arquivo" maior e mais fácil de mirar (upload de
   template/plano de curso) */
.arquivo-grande { display: block; width: 100%; padding: 14px 16px; font-size: calc(16px * var(--escala-fonte, 1));
    border: 2px dashed var(--primaria); border-radius: 12px; background: var(--cartao2); cursor: pointer; }
.arquivo-grande::file-selector-button { background: var(--primaria); color: var(--primaria-texto);
    border: none; border-radius: 8px; padding: 10px 18px; font-size: calc(15px * var(--escala-fonte, 1)); font-weight: 700;
    margin-right: 14px; cursor: pointer; }
.arquivo-grande::file-selector-button:hover { background: var(--primaria-2); }

/* avisinho flutuante pra ações que demoram (chamadas de IA, gerar Word) --
   só aparece se a ação realmente não terminar rápido (ver
   comIndicadorCarregamento em app.js); sem porcentagem/tempo estimado
   inventado, já que uma chamada de rede não tem como saber isso de verdade */
.aviso-carregando { position: fixed; bottom: 24px; right: 24px; z-index: 1000;
    background: #FBFAFF; color: #2E2246; border: 1px solid #DDD3F5; border-radius: 14px;
    padding: 14px 20px; display: flex; align-items: center; gap: 12px; max-width: 320px;
    box-shadow: 0 12px 34px rgba(91,45,158,.3); font-size: calc(15px * var(--escala-fonte, 1)); font-weight: 600;
    animation: aviso-carregando-entra .2s ease-out; }
.aviso-carregando-spinner { width: 20px; height: 20px; border-radius: 50%; flex-shrink: 0;
    border: 3px solid #DDD3F5; border-top-color: var(--primaria-2);
    animation: aviso-carregando-girar .8s linear infinite; }
@keyframes aviso-carregando-girar { to { transform: rotate(360deg); } }
@keyframes aviso-carregando-entra { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

/* confirmação discreta "✓ Salvo às HH:MM" (mostrarSalvoNaAula, app.js) --
   aparece e some sozinha, só pra tranquilizar que o campo foi salvo mesmo */
.status-salvo { color: var(--ok); font-size: calc(13.5px * var(--escala-fonte, 1)); font-weight: 600; transition: opacity .6s; }

.opcao-inline { display: flex; align-items: center; gap: 8px; font-size: calc(15px * var(--escala-fonte, 1));
    font-weight: 600; padding-bottom: 12px; }
.opcao-inline input { width: 20px; height: 20px; accent-color: var(--primaria); }
.series-caixa { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 10px;
    background: var(--cartao2); border: 1px solid var(--borda);
    border-radius: 12px; padding: 12px 16px; }
.series-caixa label { display: flex; align-items: center; gap: 6px;
    font-size: calc(15px * var(--escala-fonte, 1)); margin: 0; font-weight: 500; }
.series-caixa input { width: 18px; height: 18px; accent-color: var(--primaria); }
.badge-eletiva { background: #1A2430; color: #82B1FF; border: 1px solid #2E4A6B; }

/* "selecionar por série" do planejamento -- botões empilhados (não em
   fileira), com as turmas de cada série SEMPRE visíveis indentadas logo
   abaixo do próprio botão (a pill vira só atalho de marcar/desmarcar a
   série inteira), num bloco separado pra ficar óbvio a qual série pertence */
.serie-rapida-caixa { background: var(--cartao2); border: 1px solid var(--borda);
    border-radius: 12px; padding: 14px 16px; }
.serie-rapida-lista { display: flex; flex-direction: column; gap: 10px; }
.serie-rapida-grupo { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.serie-rapida-botao.ativa, .serie-rapida-botao.ativa:hover { background: #FBFAFF; color: #2E2246;
    border-color: #FBFAFF; }
.serie-rapida-turmas { display: flex; flex-wrap: wrap; gap: 8px 18px; margin-left: 22px;
    padding: 10px 14px; background: var(--cartao); border: 1px solid var(--borda); border-radius: 10px; }
.serie-rapida-turmas label { display: flex; align-items: center; gap: 6px;
    font-size: calc(15px * var(--escala-fonte, 1)); margin: 0; font-weight: 500; }
.serie-rapida-turmas input { width: 18px; height: 18px; accent-color: var(--primaria); }

/* painel lateral que desliza da direita -- reaproveitado pelo Banco de
   Questões e por Gerar atividade com IA; fundo em degradê (glow lilás
   suave saindo do canto superior) em vez de cor sólida chapada */
.painel-lateral { position: fixed; top: 0; right: -520px; width: 500px; height: 100vh;
    background: radial-gradient(700px 560px at 15% 0%, rgba(139, 92, 246, .5),
        rgba(139, 92, 246, .2) 38%, transparent 68%), var(--cartao);
    border-left: 1px solid var(--borda); z-index: 50;
    padding: 22px 24px; overflow-y: auto; transition: right .25s ease; }
.painel-lateral.aberto { right: 0; box-shadow: -12px 0 30px rgba(0,0,0,.55); }
.painel-lateral-topo { display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 8px; }
.painel-lateral-topo h2 { font-size: calc(19px * var(--escala-fonte, 1)); }
.banco-item { border: 1px solid var(--borda); background: var(--cartao2);
    border-radius: 14px; padding: 14px 16px; margin: 10px 0; }
.banco-item .widget-info b { color: var(--lilas-claro); }
.banco-item p { font-size: calc(14.5px * var(--escala-fonte, 1)); line-height: 1.4; margin-bottom: 8px; }
.q-toolbar { display: flex; gap: 10px; align-items: center; margin-top: 10px; flex-wrap: wrap; }
.q-img-previa { max-width: 260px; max-height: 140px; border-radius: 10px;
    border: 1px solid var(--borda); display: block; margin-top: 8px; }
.hab-linha { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.hab-linha label { flex-shrink: 0; }
.hab-linha input { flex: 1; min-width: 140px; }
.chips-sugestao { display: flex; gap: 6px; flex-wrap: wrap; margin: 2px 0 6px; }
.chips-sugestao .mini { font-size: calc(12.5px * var(--escala-fonte, 1)); }

/* tags removíveis (disciplinas escolhidas em Acessos) -- fundo branco de
   propósito, mesmo contraste "de destaque" já usado nos botões de série
   ativos e nos modais, pra chamar atenção do que já foi selecionado */
.tags-removiveis { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0; }
.tags-removiveis:empty { display: none; }
.tag-removivel { display: inline-flex; align-items: center; gap: 6px; background: #FBFAFF;
    color: #2E2246; border: 1px solid #FBFAFF; border-radius: 999px;
    padding: 6px 8px 6px 16px; font-size: calc(14.5px * var(--escala-fonte, 1)); font-weight: 600; }
.tag-removivel button { background: none; border: none; color: #8B5CF6; cursor: pointer;
    font-size: calc(16px * var(--escala-fonte, 1)); line-height: 1; padding: 2px 6px; }
.tag-removivel button svg.ico { width: 12px; height: 12px; margin: 0; vertical-align: -1px; }
.tag-removivel button:hover { color: #5B2D9E; }
.nova-sugestao { display: flex; gap: 8px; margin: 0 0 12px; }
.nova-sugestao input { flex: 1; min-width: 0; padding: 7px 12px; font-size: calc(13.5px * var(--escala-fonte, 1)); }
.barra-progresso { height: 8px; border-radius: 999px; background: var(--cartao2); overflow: hidden; }
.barra-progresso-preenchida { height: 100%; background: var(--primaria); border-radius: 999px;
    transition: width .2s ease; }

/* acordeão das aulas */
.questao-colapsada { padding: 0; }
.cabecalho-acordeao { display: block; width: 100%; text-align: left; background: none; border: none;
    color: var(--texto); font-size: calc(16px * var(--escala-fonte, 1)); font-weight: 700; padding: 14px 18px; cursor: pointer; }
.questao-colapsada .cabecalho-acordeao { color: var(--texto2); font-weight: 600; }
.questao-colapsada:hover { border-color: var(--texto2); }
.questao-expandida .cabecalho-acordeao { padding: 0; color: var(--lilas-claro); font-size: calc(17px * var(--escala-fonte, 1)); }

/* dropdown compacto de sugestões + estrela de favoritar */
.linha-sugestao { display: flex; gap: 8px; margin: 0 0 12px; }
.linha-sugestao select { flex: 1; min-width: 0; padding: 9px 12px; font-size: calc(13.5px * var(--escala-fonte, 1)); }

/* IA metodologia tradicional/ativa */
.botoes-ia-metodologia { display: flex; gap: 8px; flex-wrap: wrap; margin: 4px 0 12px; }

/* modo planilha */
.tabela-planilha { width: 100%; border-collapse: collapse; font-size: calc(13.5px * var(--escala-fonte, 1)); }
.tabela-planilha th, .tabela-planilha td { border: 1px solid var(--borda); padding: 6px; vertical-align: top; }
.tabela-planilha th { background: var(--cartao2); font-size: calc(12.5px * var(--escala-fonte, 1)); text-transform: uppercase;
    letter-spacing: .5px; color: var(--texto2); }
.tabela-planilha td.col-data { white-space: nowrap; font-weight: 600; }
.tabela-planilha textarea { width: 220px; min-width: 160px; font-size: calc(13.5px * var(--escala-fonte, 1)); padding: 6px 8px; }
.tabela-planilha input[type=text] { width: 100px; font-size: calc(13.5px * var(--escala-fonte, 1)); padding: 6px 8px; min-width: 0; }
.resposta-marcada { font-size: calc(13.5px * var(--escala-fonte, 1)); color: var(--ok); margin: 10px 0 14px; }
.resposta-marcada.aviso { color: var(--aviso); }
/* atalho de clique pra marcar a correta sem editar o "*" no texto -- o
   texto livre continua sendo a fonte de verdade (letraCorretaDeTexto),
   isso só oferece um jeito mais rápido de mexer nele */
.seletor-correta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 0 0 14px; }
.bolinha-correta { width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--borda);
    background: var(--cartao2); color: var(--texto2); font-weight: 700; cursor: pointer;
    font-size: calc(13px * var(--escala-fonte, 1)); flex-shrink: 0; }
.bolinha-correta:hover { border-color: var(--primaria); color: var(--primaria); }
.bolinha-correta.ativa { background: var(--primaria); border-color: var(--primaria); color: var(--primaria-texto); }

.painel-envios { border: 1px solid var(--borda); background: var(--cartao2);
    border-radius: 14px; padding: 14px 18px; margin: 4px 0 12px; }
.painel-envios .visoes { display: flex; gap: 8px; margin-bottom: 10px; }
.painel-envios .visoes button { border: 1px solid var(--borda); background: none;
    color: var(--texto2); border-radius: 10px; padding: 6px 16px;
    font-size: calc(13.5px * var(--escala-fonte, 1)); font-weight: 600; cursor: pointer; }
.painel-envios .visoes button.ativo { background: var(--primaria);
    border-color: var(--primaria); color: var(--primaria-texto); }
.painel-envios .grupo { font-size: calc(15px * var(--escala-fonte, 1)); line-height: 1.7; }
.painel-envios .grupo b.ok { color: var(--ok); }
.painel-envios .grupo b.falta { color: var(--aviso); }

/* controle de acessibilidade "A- A A+" no cabeçalho -- ver
   window._ajustarEscalaFonte em app.js */
.escala-fonte { display: flex; align-items: center; gap: 4px; border: 1px solid var(--primaria);
    border-radius: 999px; padding: 4px; background: var(--cartao); }
.escala-fonte button { border: none; background: rgba(167,139,250,.18); color: var(--texto); cursor: pointer;
    border-radius: 999px; padding: 9px 15px; font-size: calc(15.5px * var(--escala-fonte, 1)); font-weight: 700; line-height: 1; }
.escala-fonte button:hover { color: var(--primaria); background: rgba(167,139,250,.3); }
.escala-fonte button:disabled { opacity: .35; cursor: default; }
.escala-fonte button:disabled:hover { background: rgba(167,139,250,.18); color: var(--texto); }

/* celular -- o cabeçalho (título + chip + sino + sair) não cabe numa linha
   só; formulários (.linha) empilham um campo por linha em vez de ficarem
   espremidos com a largura mínima de 180px pensada pra tela de computador */
@media (max-width: 640px) {
    header { flex-wrap: wrap; padding: 14px 16px; gap: 10px; }
    header h1 { font-size: calc(19px * var(--escala-fonte, 1)); }
    .chip { margin-left: 0; }
    main { padding: 16px 14px 70px; }
    .cartao { padding: 18px 16px; }
    .linha { flex-direction: column; align-items: stretch; }
    .linha > div, .linha > button { width: 100%; }
    select, input[type=text], input[type=date], input[type=number] { min-width: 0; width: 100%; }
    .linha-rascunho-opcoes { flex-direction: column; }
    .linha-rascunho-opcoes .col-rascunho, .linha-rascunho-opcoes .col-opcoes-rapidas { flex: 1 1 auto; }
    .linha-rascunho-opcoes .col-opcoes-rapidas { padding-left: 0; padding-top: 12px;
        border-left: none; border-top: 1px solid var(--borda); }
}
