/* ==========================================================================
   Giz — folha de estilo unica.
   Mobile-first, tema claro/escuro, sem dependencia externa.
   Ordem: variaveis > base > estrutura > componentes > utilitarios.
   ========================================================================== */

:root{
  color-scheme:light;   /* deixa scrollbar, autofill e widgets nativos na cor certa */
  /* superficies e texto */
  --bg:#f6f7f9;
  --superficie:#ffffff;
  --superficie2:#f1f3f6;
  --superficie3:#e9ecf1;
  --borda:#e4e7ec;
  --borda-forte:#d3d8e0;
  --texto:#14161a;
  --texto2:#616b7a;
  --texto3:#8b95a4;

  /* marca e estados */
  --marca:#4f46e5;
  --marca-forte:#4338ca;
  --marca-suave:#eef0fe;
  --ok:#15803d;      --ok-suave:#e8f6ed;
  --alerta:#b45309;  --alerta-suave:#fdf3e3;
  --ruim:#b91c1c;    --ruim-suave:#fdecec;
  --info:#0369a1;    --info-suave:#e6f3fb;

  --sombra-1:0 1px 2px rgba(16,24,40,.05);
  --sombra-2:0 1px 3px rgba(16,24,40,.06),0 8px 24px -12px rgba(16,24,40,.14);
  --sombra-3:0 12px 40px -12px rgba(16,24,40,.22);

  --r-g:16px; --r-m:11px; --r-p:8px;
  --topo:58px;
  --lateral:244px;
  --trans:.16s cubic-bezier(.4,0,.2,1);
}

@media (prefers-color-scheme:dark){
  html:not([data-tema="claro"]){
    color-scheme:dark;
    --bg:#0d0f13;
    --superficie:#15181e;
    --superficie2:#1c2027;
    --superficie3:#242932;
    --borda:#262b34;
    --borda-forte:#333a45;
    --texto:#eaecef;
    --texto2:#98a1b0;
    --texto3:#6f7889;
    --marca:#818cf8; --marca-forte:#a5b4fc; --marca-suave:#1e2140;
    --ok:#4ade80;    --ok-suave:#10261a;
    --alerta:#fbbf24;--alerta-suave:#2a2110;
    --ruim:#f87171;  --ruim-suave:#2b1616;
    --info:#38bdf8;  --info-suave:#0d2230;
    --sombra-1:0 1px 2px rgba(0,0,0,.4);
    --sombra-2:0 1px 3px rgba(0,0,0,.4),0 8px 24px -12px rgba(0,0,0,.6);
    --sombra-3:0 12px 40px -12px rgba(0,0,0,.7);
  }
}
html[data-tema="escuro"]{
  color-scheme:dark;
  --bg:#0d0f13; --superficie:#15181e; --superficie2:#1c2027; --superficie3:#242932;
  --borda:#262b34; --borda-forte:#333a45; --texto:#eaecef; --texto2:#98a1b0; --texto3:#6f7889;
  --marca:#818cf8; --marca-forte:#a5b4fc; --marca-suave:#1e2140;
  --ok:#4ade80; --ok-suave:#10261a; --alerta:#fbbf24; --alerta-suave:#2a2110;
  --ruim:#f87171; --ruim-suave:#2b1616; --info:#38bdf8; --info-suave:#0d2230;
  --sombra-1:0 1px 2px rgba(0,0,0,.4);
  --sombra-2:0 1px 3px rgba(0,0,0,.4),0 8px 24px -12px rgba(0,0,0,.6);
  --sombra-3:0 12px 40px -12px rgba(0,0,0,.7);
}

/* ---------------------------------------------------------------- base -- */
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--texto);
  font:400 15px/1.55 ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  font-feature-settings:"cv02","cv03","cv04";
  -webkit-font-smoothing:antialiased;
}
a{color:var(--marca);text-decoration:none}
a:hover{color:var(--marca-forte)}
h1,h2,h3{margin:0;line-height:1.25;letter-spacing:-.019em;font-weight:650}
h1{font-size:1.4rem}
h2{font-size:1.02rem}
h3{font-size:.94rem}
p{margin:0}
small{font-size:.8rem;color:var(--texto2)}
::selection{background:var(--marca-suave);color:var(--marca-forte)}
:focus-visible{outline:2px solid var(--marca);outline-offset:2px;border-radius:4px}

/* icones do sprite */
.ico{width:1.15em;height:1.15em;flex:none;vertical-align:-.18em}
.ico-g{width:1.5em;height:1.5em}

/* ----------------------------------------------------------- estrutura -- */
.topo{
  position:sticky;top:0;z-index:40;height:var(--topo);
  display:flex;align-items:center;gap:.5rem;padding:0 .85rem;
  background:color-mix(in srgb,var(--superficie) 88%,transparent);
  backdrop-filter:saturate(1.6) blur(10px);
  border-bottom:1px solid var(--borda);
}
.marca{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:1.1rem;color:var(--texto);letter-spacing:-.03em}
.marca-simbolo{width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,var(--marca),#a855f7);
  display:grid;place-items:center;color:#fff;box-shadow:var(--sombra-1)}
.marca-simbolo .ico{width:15px;height:15px}
.topo-acoes{margin-left:auto;display:flex;align-items:center;gap:.35rem}
.icone-btn{
  display:grid;place-items:center;width:36px;height:36px;border:0;border-radius:10px;
  background:transparent;color:var(--texto2);cursor:pointer;transition:var(--trans)
}
.icone-btn:hover{background:var(--superficie2);color:var(--texto)}
.icone-btn .ico{width:19px;height:19px}
.avatar{
  width:33px;height:33px;border-radius:50%;display:grid;place-items:center;
  background:var(--marca);color:#fff;font-size:.75rem;font-weight:700;letter-spacing:.02em
}

.moldura{display:flex;min-height:calc(100dvh - var(--topo))}
.principal{flex:1;min-width:0;padding:1.05rem .85rem calc(84px + env(safe-area-inset-bottom))}
.principal-limpa{
  max-width:400px;margin:0 auto;padding:1.5rem 1.1rem;
  min-height:100dvh;display:flex;flex-direction:column;justify-content:center
}

/* menu lateral */
.lateral{
  position:fixed;inset:var(--topo) auto 0 0;width:var(--lateral);z-index:45;
  display:flex;flex-direction:column;gap:.15rem;padding:.7rem .6rem;overflow-y:auto;
  background:var(--superficie);border-right:1px solid var(--borda);
  transform:translateX(-101%);transition:transform var(--trans);
}
.lateral.aberta{transform:none;box-shadow:var(--sombra-3)}
.lateral-grupo{
  padding:.85rem .6rem .3rem;font-size:.68rem;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;color:var(--texto3)
}
.lateral-grupo:first-child{padding-top:.25rem}
.lateral a{
  display:flex;align-items:center;gap:.65rem;padding:.55rem .65rem;border-radius:9px;
  color:var(--texto2);font-size:.9rem;font-weight:500;transition:var(--trans)
}
.lateral a:hover{background:var(--superficie2);color:var(--texto)}
.lateral a.ativo{background:var(--marca-suave);color:var(--marca);font-weight:600}
.lateral a .ico{width:18px;height:18px}
.lateral-rodape{margin-top:auto;padding-top:.6rem;border-top:1px solid var(--borda)}
.lateral-fundo{position:fixed;inset:0;z-index:44;background:rgba(9,11,15,.45);backdrop-filter:blur(2px)}

/* barra inferior (celular) */
.barra-inferior{
  position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;
  background:color-mix(in srgb,var(--superficie) 92%,transparent);
  backdrop-filter:saturate(1.6) blur(10px);
  border-top:1px solid var(--borda);padding-bottom:env(safe-area-inset-bottom)
}
.barra-inferior a{
  flex:1;display:grid;justify-items:center;gap:3px;padding:.5rem .15rem .45rem;
  font-size:.66rem;font-weight:500;color:var(--texto3);transition:var(--trans)
}
.barra-inferior .ico{width:21px;height:21px}
.barra-inferior a.ativo{color:var(--marca)}

@media (min-width:900px){
  :root{--topo:60px}
  .lateral{position:sticky;top:var(--topo);height:calc(100dvh - var(--topo));transform:none;box-shadow:none}
  .lateral-fundo,.barra-inferior,#btn-menu{display:none!important}
  .principal{padding:1.6rem 1.8rem 3rem;max-width:1180px}
}

/* ---------------------------------------------------------- componentes -- */
.cabecalho{display:flex;align-items:flex-start;gap:.8rem;flex-wrap:wrap;margin-bottom:1.1rem}
.cabecalho .titulo{flex:1;min-width:min(100%,240px)}
.cabecalho .sub{margin-top:.2rem;color:var(--texto2);font-size:.875rem}
.cabecalho .acoes{display:flex;gap:.4rem;flex-wrap:wrap}

.cartao{
  background:var(--superficie);border:1px solid var(--borda);border-radius:var(--r-g);
  padding:1.05rem;box-shadow:var(--sombra-1)
}
.cartao + .cartao{margin-top:.85rem}
.cartao-topo{display:flex;align-items:center;justify-content:space-between;gap:.7rem;flex-wrap:wrap;margin-bottom:.2rem}
.cartao-topo h2{display:flex;align-items:center;gap:.5rem}
.cartao-topo h2 .ico{width:17px;height:17px;color:var(--texto3)}
a.cartao{display:block;color:inherit;transition:var(--trans)}
a.cartao:hover{border-color:var(--borda-forte);box-shadow:var(--sombra-2);transform:translateY(-1px)}

.grade{display:grid;gap:.85rem}
.grade > *{min-width:0}   /* sem isso o input de data estica o grid e a pagina rola de lado */
.grade.g4{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
@media (min-width:640px){
  .grade.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grade.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (min-width:1000px){.grade.g4{grid-template-columns:repeat(4,minmax(0,1fr));gap:.85rem}}
.linha{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.entre{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap}

/* metricas */
.metrica{
  background:var(--superficie);border:1px solid var(--borda);border-radius:var(--r-m);
  padding:.75rem .85rem;display:flex;flex-direction:column;gap:.15rem;min-width:0
}
.metrica .valor{font-size:1.55rem;font-weight:680;letter-spacing:-.03em;line-height:1.1}
.metrica .rot{font-size:.745rem;color:var(--texto2);line-height:1.3}
.metrica.destaque{border-color:color-mix(in srgb,var(--marca) 35%,var(--borda));background:var(--marca-suave)}
.metrica.destaque .valor{color:var(--marca)}

/* etiquetas */
.etiqueta{
  display:inline-flex;align-items:center;gap:.28rem;padding:.16rem .5rem;border-radius:999px;
  font-size:.735rem;font-weight:600;line-height:1.45;background:var(--superficie2);color:var(--texto2);
  border:1px solid transparent;white-space:nowrap
}
.etiqueta .ico{width:13px;height:13px}
.etiqueta.ok{background:var(--ok-suave);color:var(--ok)}
.etiqueta.alerta{background:var(--alerta-suave);color:var(--alerta)}
.etiqueta.ruim{background:var(--ruim-suave);color:var(--ruim)}
.etiqueta.marca{background:var(--marca-suave);color:var(--marca)}
.etiqueta.info{background:var(--info-suave);color:var(--info)}
.etiqueta.contorno{background:transparent;border-color:var(--borda-forte);color:var(--texto2)}

/* botoes */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
  padding:.56rem .9rem;border:1px solid transparent;border-radius:10px;
  background:var(--marca);color:#fff;font:inherit;font-size:.885rem;font-weight:600;
  cursor:pointer;transition:var(--trans);white-space:nowrap;text-decoration:none
}
.btn:hover{background:var(--marca-forte);color:#fff}
.btn:active{transform:translateY(1px)}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.btn .ico{width:16px;height:16px}
.btn.suave{background:var(--superficie2);color:var(--texto);border-color:var(--borda)}
.btn.suave:hover{background:var(--superficie3);color:var(--texto)}
.btn.ghost{background:transparent;color:var(--texto2);border-color:var(--borda)}
.btn.ghost:hover{background:var(--superficie2);color:var(--texto)}
.btn.perigo{background:var(--ruim)}
.btn.perigo:hover{background:color-mix(in srgb,var(--ruim) 82%,#000)}
.btn.ia{background:linear-gradient(120deg,var(--marca),#9333ea);box-shadow:0 4px 14px -6px var(--marca)}
.btn.ia:hover{filter:brightness(1.08)}
.btn.pequeno{padding:.35rem .65rem;font-size:.8rem;border-radius:8px}
.btn.pequeno .ico{width:14px;height:14px}
.btn.bloco{width:100%}

/* formularios */
label{display:block;margin:.85rem 0 .3rem;font-size:.82rem;font-weight:600;color:var(--texto2)}
label.inline{display:flex;align-items:center;gap:.55rem;margin:.7rem 0 0;font-weight:500;color:var(--texto);cursor:pointer}
input,select,textarea,.campo{
  width:100%;padding:.58rem .7rem;font:inherit;font-size:.92rem;color:var(--texto);
  background:var(--superficie);border:1px solid var(--borda-forte);border-radius:10px;
  transition:border-color var(--trans),box-shadow var(--trans)
}
input[type=checkbox]{width:18px;height:18px;accent-color:var(--marca);cursor:pointer}
input[type=color]{height:42px;padding:.2rem;cursor:pointer}
/* o widget nativo de data/hora tem largura minima propria; sem isto ele empurra o layout */
input[type=date],input[type=time],input[type=number]{min-width:0}
textarea{min-height:120px;resize:vertical;line-height:1.6}
input:focus,select:focus,textarea:focus{
  outline:none;border-color:var(--marca);box-shadow:0 0 0 3px var(--marca-suave)
}
select{appearance:none;cursor:pointer;padding-right:2rem;
  background-image:linear-gradient(45deg,transparent 50%,var(--texto3) 50%),linear-gradient(135deg,var(--texto3) 50%,transparent 50%);
  background-position:calc(100% - 15px) 52%,calc(100% - 10px) 52%;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.dica{margin-top:.3rem;font-size:.79rem;color:var(--texto3);line-height:1.5}
fieldset{border:1px solid var(--borda);border-radius:var(--r-m);padding:.5rem .85rem .85rem;margin:.9rem 0 0}
legend{padding:0 .35rem;font-size:.78rem;font-weight:700;color:var(--texto2);text-transform:uppercase;letter-spacing:.05em}

/* avisos */
.flash{
  display:flex;align-items:flex-start;gap:.55rem;padding:.7rem .85rem;margin-bottom:.9rem;
  border-radius:var(--r-m);font-size:.88rem;font-weight:500;border:1px solid transparent
}
.flash .ico{width:17px;height:17px;margin-top:.1rem}
.flash.ok{background:var(--ok-suave);color:var(--ok);border-color:color-mix(in srgb,var(--ok) 22%,transparent)}
.flash.erro{background:var(--ruim-suave);color:var(--ruim);border-color:color-mix(in srgb,var(--ruim) 22%,transparent)}
.flash.aviso{background:var(--alerta-suave);color:var(--alerta);border-color:color-mix(in srgb,var(--alerta) 22%,transparent)}

/* listas */
.lista{display:grid;gap:.45rem;grid-template-columns:minmax(0,1fr)}  /* minmax(0) impede o item de crescer com o texto */
.item{
  display:flex;align-items:center;gap:.7rem;padding:.7rem .8rem;color:inherit;
  background:var(--superficie);border:1px solid var(--borda);border-radius:var(--r-m);transition:var(--trans)
}
a.item:hover{border-color:var(--borda-forte);background:var(--superficie2)}
.item .corpo{flex:1;min-width:0;display:block}
.item .titulo{display:block;font-size:.9rem;font-weight:600;color:var(--texto);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item .sub{display:block;margin-top:.1rem;font-size:.795rem;color:var(--texto2);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item .fim{display:flex;align-items:center;gap:.15rem;flex:none}
.item .fim .icone-btn{width:32px;height:32px}
.item .fim .icone-btn .ico{width:17px;height:17px}
.pino{
  width:32px;height:32px;flex:none;border-radius:9px;display:grid;place-items:center;
  background:var(--superficie2);color:var(--texto2)
}
.pino .ico{width:17px;height:17px}
.pino.marca{background:var(--marca-suave);color:var(--marca)}
.pino.ok{background:var(--ok-suave);color:var(--ok)}
.pino.alerta{background:var(--alerta-suave);color:var(--alerta)}
.pino.ruim{background:var(--ruim-suave);color:var(--ruim)}
.bolinha{width:9px;height:9px;border-radius:50%;flex:none}
.data-grupo{margin:.9rem 0 .3rem;font-size:.75rem;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;color:var(--texto3)}
.data-grupo:first-child{margin-top:0}

/* tabelas */
.tabela-rolagem{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--borda);
  border-radius:var(--r-m);background:var(--superficie)}
table{width:100%;border-collapse:separate;border-spacing:0;font-size:.885rem}
th,td{padding:.6rem .75rem;text-align:left;white-space:nowrap;border-bottom:1px solid var(--borda)}
th{position:sticky;top:0;z-index:1;background:var(--superficie2);color:var(--texto2);
  font-size:.71rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover td{background:var(--superficie2)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.col-presa{position:sticky;left:0;z-index:2;background:var(--superficie);
  box-shadow:1px 0 0 var(--borda)}
th.col-presa{z-index:3;background:var(--superficie2)}
tbody tr:hover td.col-presa{background:var(--superficie2)}
.grade-notas input{width:74px;padding:.32rem .3rem;text-align:center;font-variant-numeric:tabular-nums}
.linha-clicavel{cursor:pointer}
/* nome dentro de lista/tabela nao precisa gritar de azul; o hover mostra que e clicavel */
.item .titulo a,td a{color:inherit}
.item .titulo a:hover,td a:hover{color:var(--marca)}

/* tabela que vira lista no celular: cada linha vira um bloco com o rotulo na frente.
   So vale pra tabela marcada como .responsiva — a grade de notas continua rolando. */
@media (max-width:639px){
  .tabela-rolagem:has(.responsiva){border:0;background:transparent;overflow:visible}
  table.responsiva thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  table.responsiva tr{display:grid;grid-template-columns:1fr auto;gap:.15rem .6rem;
    padding:.65rem .8rem;margin-bottom:.45rem;background:var(--superficie);
    border:1px solid var(--borda);border-radius:var(--r-m)}
  table.responsiva td{display:flex;align-items:center;gap:.4rem;padding:0;border:0;white-space:normal}
  table.responsiva td::before{content:attr(data-rot);font-size:.73rem;color:var(--texto3);font-weight:600}
  table.responsiva td:first-child{grid-column:1/-1;font-weight:600;font-size:.94rem;margin-bottom:.15rem}
  table.responsiva td:first-child::before{display:none}
  table.responsiva td.num{justify-content:flex-start;text-align:left}
  table.responsiva tbody tr:hover td{background:transparent}
}

/* estado vazio */
.vazio{display:grid;justify-items:center;gap:.5rem;padding:2rem 1rem;text-align:center;color:var(--texto2)}
.vazio .simbolo{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;
  background:var(--superficie2);color:var(--texto3)}
.vazio .simbolo .ico{width:22px;height:22px}
.vazio p{font-size:.89rem;max-width:34ch}

/* barras e mini-graficos */
.barra{height:7px;border-radius:999px;background:var(--superficie3);overflow:hidden}
.barra i{display:block;height:100%;border-radius:999px;background:var(--marca);transition:width var(--trans)}
.barra i.ok{background:var(--ok)} .barra i.alerta{background:var(--alerta)} .barra i.ruim{background:var(--ruim)}
.colunas{display:flex;align-items:stretch;gap:5px;height:56px;margin:.8rem 0 .6rem}
.colunas i{flex:1;position:relative;background:var(--superficie2);border-radius:5px}
.colunas i b{position:absolute;inset:auto 0 0;display:block;border-radius:5px;
  background:linear-gradient(180deg,var(--marca),color-mix(in srgb,var(--marca) 70%,#a855f7))}
.colunas-rot{display:flex;gap:5px}
.colunas-rot span{flex:1;text-align:center;font-size:.7rem;color:var(--texto3)}

/* abas e chips */
.abas{display:flex;gap:.15rem;overflow-x:auto;scrollbar-width:none;margin-bottom:1rem;
  border-bottom:1px solid var(--borda)}
.abas::-webkit-scrollbar{display:none}
.abas a{padding:.5rem .75rem;font-size:.865rem;font-weight:600;color:var(--texto2);
  white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-1px;transition:var(--trans)}
.abas a:hover{color:var(--texto)}
.abas a.ativo{color:var(--marca);border-bottom-color:var(--marca)}
.chip{display:inline-flex;align-items:center;gap:.3rem;padding:.32rem .7rem;border-radius:999px;
  border:1px solid var(--borda-forte);background:var(--superficie);color:var(--texto2);
  font-size:.82rem;font-weight:500;cursor:pointer;transition:var(--trans)}
.chip:hover{background:var(--superficie2);color:var(--texto)}
.chip.ativo{background:var(--marca-suave);border-color:transparent;color:var(--marca);font-weight:600}
.chip .ico{width:14px;height:14px}

/* texto gerado pela IA */
.texto-ia{font-size:.92rem;line-height:1.68;color:var(--texto)}
.texto-ia p{margin:.5rem 0;white-space:pre-wrap}
.texto-ia h3{margin:1.1rem 0 .35rem;font-size:.9rem;color:var(--marca);letter-spacing:0}
.texto-ia ul,.texto-ia ol{margin:.4rem 0 .7rem;padding-left:1.25rem}
.texto-ia li{margin:.22rem 0}
.texto-ia > *:first-child{margin-top:0}
.texto-ia.placeholder{color:var(--texto2)}
.marca-dagua{display:flex;align-items:center;gap:.4rem;margin-top:.7rem;font-size:.755rem;color:var(--texto3)}
.marca-dagua .ico{width:13px;height:13px}

/* competencias da redacao */
.comp{padding:.8rem;border:1px solid var(--borda);border-radius:var(--r-m);background:var(--superficie)}
.comp + .comp{margin-top:.5rem}
.comp .nota{font-size:1.02rem;font-weight:700;font-variant-numeric:tabular-nums}
.comp .nota small{font-weight:500;color:var(--texto3)}
.comp p{margin:.45rem 0 0;font-size:.83rem;color:var(--texto2);line-height:1.55}


/* ------------------------------------------------- modal de formulario -- */
.modalx-fundo{position:fixed;inset:0;z-index:55;display:flex;align-items:flex-end;justify-content:center;
  background:rgba(9,11,15,.5);backdrop-filter:blur(3px);animation:surge .14s ease}
.modalx{display:flex;flex-direction:column;width:100%;max-height:92dvh;
  background:var(--superficie);border-radius:var(--r-g) var(--r-g) 0 0;box-shadow:var(--sombra-3);
  animation:sobeFolha .2s cubic-bezier(.2,.9,.3,1)}
.modalx-topo{display:flex;align-items:center;gap:.6rem;padding:.9rem 1rem;border-bottom:1px solid var(--borda)}
.modalx-topo h3{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.modalx-topo .pino{width:30px;height:30px}
.modalx-corpo{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:1rem;-webkit-overflow-scrolling:touch}
/* dentro do modal o cartao vira secao simples: quem desenha a moldura e o modal */
.modalx-corpo .cartao{border:0;box-shadow:none;padding:0;background:transparent}
.modalx-corpo .cartao + .cartao{margin-top:1.1rem;padding-top:1.1rem;border-top:1px solid var(--borda)}
.modalx-corpo .cartao-topo h2{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--texto3)}
.modalx-corpo .cartao-topo h2 .ico{width:15px;height:15px}
.modalx-corpo > *:first-child > label:first-child{margin-top:0}
.acoes-form{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}
.modalx-corpo .acoes-form{position:sticky;bottom:-1rem;margin:1.1rem -1rem -1rem;padding:.85rem 1rem;
  background:var(--superficie);border-top:1px solid var(--borda);z-index:2}
@media (min-width:640px){
  .modalx-fundo{align-items:center;padding:1.2rem}
  .modalx{max-width:560px;border-radius:var(--r-g);animation:sobe .18s cubic-bezier(.2,.9,.3,1)}
  .modalx.largo{max-width:900px}
}
@keyframes sobeFolha{from{transform:translateY(14px);opacity:.6}}

/* esqueleto de carregamento */
.esqueleto{display:grid;gap:.6rem;padding:.3rem 0}
.esqueleto span{display:block;height:14px;border-radius:7px;
  background:linear-gradient(90deg,var(--superficie2),var(--superficie3),var(--superficie2));
  background-size:200% 100%;animation:brilho 1.2s ease-in-out infinite}
@keyframes brilho{to{background-position:-200% 0}}

/* ---------------------------------------------------------- barra busca -- */
.busca{position:relative;flex:1;min-width:160px}
.busca .ico{position:absolute;left:.62rem;top:50%;transform:translateY(-50%);
  width:16px;height:16px;color:var(--texto3);pointer-events:none}
.busca input{padding-left:2.05rem}
.busca input::-webkit-search-cancel-button{cursor:pointer}
.barra-ferramentas{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;margin-bottom:.9rem}
.barra-ferramentas select{width:auto;min-width:150px;max-width:100%}
/* no celular a busca fica com a linha inteira e os filtros descem pra linha de baixo */
@media (max-width:639px){
  .barra-ferramentas .busca{flex:1 1 100%}
  .cartao-topo .busca{flex:1 1 100%;order:3}
}
.atalho{display:none;position:absolute;right:.5rem;top:50%;transform:translateY(-50%);
  padding:.05rem .35rem;border:1px solid var(--borda-forte);border-radius:5px;
  font-size:.7rem;color:var(--texto3);background:var(--superficie2)}
@media (min-width:900px){.busca:not(:focus-within) .atalho{display:block}}

/* resultado da busca global */
.res-grupo{margin:.7rem 0 .25rem;font-size:.7rem;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--texto3)}
.res-grupo:first-child{margin-top:0}

/* modal e overlay */
.modal-fundo{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:1rem;
  background:rgba(9,11,15,.5);backdrop-filter:blur(3px);animation:surge .14s ease}
.modal{width:min(430px,100%);padding:1.15rem;border-radius:var(--r-g);background:var(--superficie);
  box-shadow:var(--sombra-3);animation:sobe .18s cubic-bezier(.2,.9,.3,1)}
.modal h3{font-size:1.02rem}
.modal p{margin:.35rem 0 0;font-size:.89rem;color:var(--texto2);line-height:1.55}
.modal-botoes{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.1rem}
.overlay-ia{position:fixed;inset:0;z-index:70;display:grid;place-items:center;padding:1rem;
  background:rgba(9,11,15,.55);backdrop-filter:blur(3px)}
.overlay-caixa{width:min(330px,100%);padding:1.5rem 1.2rem;border-radius:var(--r-g);text-align:center;
  background:var(--superficie);box-shadow:var(--sombra-3)}
.overlay-caixa p{margin:.85rem 0 .25rem;font-weight:600;font-size:.94rem}
.overlay-caixa small{display:block;margin-bottom:1rem}
.rodela{width:42px;height:42px;margin:0 auto;border-radius:50%;
  background:conic-gradient(from 0deg,transparent,var(--marca),#a855f7,transparent);
  animation:girar 1s linear infinite;
  -webkit-mask:radial-gradient(circle 14px at center,transparent 98%,#000);
  mask:radial-gradient(circle 14px at center,transparent 98%,#000)}
@keyframes girar{to{transform:rotate(360deg)}}
@keyframes surge{from{opacity:0}}
@keyframes sobe{from{opacity:0;transform:translateY(10px) scale(.98)}}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* passos (primeiros passos) */
.passo{display:flex;gap:.85rem;align-items:flex-start;padding:.85rem 0}
.passo + .passo{border-top:1px solid var(--borda)}
.passo .numero{width:28px;height:28px;flex:none;border-radius:50%;display:grid;place-items:center;
  background:var(--superficie2);color:var(--texto2);font-size:.82rem;font-weight:700}
.passo.feito .numero{background:var(--ok-suave);color:var(--ok)}
.passo .corpo{flex:1;min-width:0}
.passo .corpo strong{display:block;font-size:.92rem}
.passo .corpo p{margin-top:.15rem;font-size:.83rem;color:var(--texto2)}

/* utilitarios */
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.mt{margin-top:.85rem}
.mt-p{margin-top:.5rem}
.centro{text-align:center}
.esticar{flex:1}
