/* =============================================================================
   Horário · aparência
   Layout: barra da marca no topo (menu único) + área de trabalho larga.
   Duas cores vêm da engrenagem (--marca e --acento); o resto deriva delas.
   As cores de turno e as cores das linhas são as mesmas da planilha.
   ============================================================================= */
:root {
  --marca: #0B2A5B; --acento: #F2B705; --sobre-acento: #141A24;
  --marca-esc: color-mix(in srgb, var(--marca) 82%, #000);
  --marca-suave: color-mix(in srgb, var(--marca) 8%, #fff);
  --marca-media: color-mix(in srgb, var(--marca) 22%, #fff);
  --marca-veu: color-mix(in srgb, var(--marca) 9%, transparent);
  --fundo: color-mix(in srgb, var(--marca) 4%, #F4F5F7);
  --sup: #FFFFFF; --tinta: #141A24; --cinza: #566070; --cinza2: #8A93A2; --linha: #DFE3EA; --linha2: #ECEFF3; --grade: #D9DEE6;
  --ok: #17804A; --okF: #E3F5EA; --er: #B42318; --erF: #FDECEA; --av: #9A5B00; --avF: #FFF3D6; --nd: #5B6472; --ndF: #EEF0F3;
  --tM: #D9861C; --tMf: #FFEFD4; --tT: #2E8B57; --tTf: #DAF3E3; --tN: #1F5FA8; --tNf: #DDEBFB;
  --raio: 12px;
  --f-ui: 'Public Sans', 'Segoe UI', system-ui, sans-serif;
  color-scheme: light;
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html, body { margin: 0; height: 100%; }
body { font-family: var(--f-ui); font-size: 14px; line-height: 1.45; color: var(--tinta); background: var(--fundo); }
button, input, select { font: inherit; color: inherit; }
a { color: var(--marca); }
.ic { width: 1.15em; height: 1.15em; flex: 0 0 auto; vertical-align: -0.2em; }
:focus-visible { outline: 2px solid var(--acento); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; } }

/* ---------- topo ---------- */
.topo { position: sticky; top: 0; z-index: 30; background: var(--marca); color: #fff; display: flex; align-items: center; gap: 14px; padding: 0 18px; height: 60px; }
.marcaTopo { display: flex; align-items: center; gap: 10px; min-width: 0; text-decoration: none; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
.marcaTopo .lg { height: 38px; display: flex; align-items: center; }
.marcaTopo .lg svg { width: 38px; height: 38px; }
.marcaTopo .lg img { max-height: 38px; max-width: 150px; object-fit: contain; background: #fff; border-radius: 8px; padding: 3px 6px; }
.marcaTopo .nm { display: flex; flex-direction: column; line-height: 1.1; text-align: left; }
.marcaTopo .nm b { font-size: 15px; white-space: nowrap; }
.marcaTopo .nm span { font-size: 12px; opacity: .78; white-space: nowrap; }
.menu { display: flex; gap: 2px; height: 100%; margin-left: 14px; flex: 1; min-width: 0; overflow-x: auto; scrollbar-width: none; }
.menu::-webkit-scrollbar { display: none; }
.menu button { position: relative; background: none; border: 0; color: rgba(255,255,255,.82); padding: 0 13px; display: flex; align-items: center; gap: 8px; cursor: pointer; white-space: nowrap; font-size: 13.5px; }
.menu button:hover { color: #fff; background: rgba(255,255,255,.07); }
.menu button.ativo { color: #fff; font-weight: 700; }
.menu button.ativo::after { content: ''; position: absolute; left: 10px; right: 10px; bottom: 0; height: 4px; border-radius: 4px 4px 0 0; background: var(--acento); }
.topoDir { display: flex; align-items: center; gap: 6px; }
.btTopo { width: 40px; height: 40px; border-radius: 10px; border: 0; background: transparent; color: #fff; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
.btTopo:hover, .btTopo.ativo { background: rgba(255,255,255,.14); }
.btTopo .ic { width: 21px; height: 21px; }
.eu { width: 36px; height: 36px; border-radius: 50%; background: var(--acento); color: var(--sobre-acento); font-weight: 700; border: 0; cursor: pointer; font-size: 12.5px; }
.euMenu { position: fixed; top: 58px; right: 14px; z-index: 40; background: var(--sup); color: var(--tinta); border: 1px solid var(--linha); border-radius: 12px; box-shadow: 0 10px 30px rgba(20,26,36,.16); padding: 8px; min-width: 240px; }
.euMenu .q { padding: 8px 10px 10px; border-bottom: 1px solid var(--linha2); margin-bottom: 6px; font-size: 12.5px; }
.euMenu .q b { display: block; font-size: 13.5px; }
.euMenu button { width: 100%; text-align: left; background: none; border: 0; padding: 9px 10px; border-radius: 8px; display: flex; gap: 10px; align-items: center; cursor: pointer; }
.euMenu button:hover { background: var(--marca-suave); }

/* ---------- páginas comuns ---------- */
main { min-height: calc(100% - 60px); }
.pgLivre { max-width: 1180px; margin: 0 auto; padding: 30px 24px 60px; }
h1 { font-size: 25px; line-height: 1.15; margin: 0; text-wrap: balance; letter-spacing: -.2px; }
h2 { font-size: 17px; margin: 0; }
.sub { color: var(--cinza); margin: 4px 0 0; font-size: 14px; }
.meta { color: var(--cinza); font-size: 12.5px; }
.bt { min-height: 42px; padding: 0 18px; border-radius: 10px; border: 1px solid transparent; background: var(--marca); color: #fff; font-weight: 700; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.bt:hover { background: var(--marca-esc); }
.bt:disabled { opacity: .5; cursor: default; }
.bt.sec { background: var(--sup); color: var(--tinta); border-color: #C3CAD5; }
.bt.sec:hover { border-color: var(--marca); color: var(--marca); }
.bt.perigo { background: var(--sup); color: var(--er); border-color: #F0B4AE; }
.bt.peq { min-height: 34px; padding: 0 12px; font-size: 12.5px; border-radius: 8px; }
.linha { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.caixaAviso { padding: 13px 16px; border-radius: var(--raio); margin: 12px 0; display: flex; gap: 10px; align-items: flex-start; }
.caixaAviso .ic { margin-top: 2px; }
.cxOk { background: var(--okF); color: #0E5132; } .cxEr { background: var(--erF); color: #7A1A12; white-space: pre-wrap; } .cxAv { background: var(--avF); color: #6B3F00; }
.giro { width: 36px; height: 36px; border: 4px solid var(--linha); border-top-color: var(--marca); border-radius: 50%; animation: g 1s linear infinite; margin: 40px auto; }
@keyframes g { to { transform: rotate(360deg); } }
.dlg { position: fixed; inset: 0; background: rgba(17,24,39,.45); display: none; align-items: center; justify-content: center; padding: 16px; z-index: 60; }
.dlg.aberto { display: flex; }
.dlgC { background: var(--sup); border-radius: 16px; padding: 24px; max-width: 540px; width: 100%; display: flex; flex-direction: column; gap: 14px; }
.toast { position: fixed; left: 50%; bottom: 62px; transform: translateX(-50%); background: #1B2230; color: #fff; padding: 12px 20px; border-radius: 12px; z-index: 70; display: none; max-width: 90vw; }
.campo { display: flex; flex-direction: column; gap: 5px; }
.campo label { font-size: 13px; font-weight: 700; color: #344054; }
.campo input[type=text], .campo input[type=email], .campo select { min-height: 42px; padding: 0 12px; border: 1px solid #C3CAD5; border-radius: 10px; background: var(--sup); }
.campo .ajuda { font-size: 12.5px; color: var(--cinza); }
.pill { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: 12.5px; background: var(--ndF); color: var(--nd); font-weight: 700; }
.pill.az { background: var(--marca-suave); color: var(--marca); }

/* ---------- entrada ---------- */
.entradaFundo { min-height: 100%; display: flex; align-items: center; justify-content: center; padding: 24px; background: linear-gradient(160deg, var(--marca) 0 38%, var(--fundo) 38%); }
.entrada { background: var(--sup); border-radius: 22px; padding: 38px 36px 30px; max-width: 440px; width: 100%; text-align: center; box-shadow: 0 18px 50px rgba(11,20,40,.18); }
.entrada .lg { height: 72px; display: flex; justify-content: center; margin-bottom: 14px; }
.entrada .lg svg { width: 72px; height: 72px; }
.entrada .lg img { max-height: 72px; max-width: 240px; object-fit: contain; }
.entrada h1 { font-size: 25px; }
.btGoogle { display: inline-flex; align-items: center; gap: 12px; padding: 12px 22px; border-radius: 12px; border: 1px solid #C3CAD5; background: var(--sup); font-weight: 700; cursor: pointer; font-size: 16px; margin-top: 22px; }
.btGoogle:hover { border-color: var(--marca); background: var(--marca-suave); }

/* ---------- início ---------- */
.ola { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; flex-wrap: wrap; margin-bottom: 22px; }
.atalhos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.atalho { text-align: left; background: var(--sup); border: 1px solid var(--linha); border-radius: 16px; padding: 18px; cursor: pointer; display: flex; flex-direction: column; gap: 10px; transition: border-color .15s, transform .15s; }
.atalho:hover { border-color: var(--marca); transform: translateY(-2px); }
.atalho .ico { width: 42px; height: 42px; border-radius: 12px; background: var(--marca-suave); color: var(--marca); display: flex; align-items: center; justify-content: center; }
.atalho .ico .ic { width: 22px; height: 22px; }
.atalho b { font-size: 15.5px; }
.atalho .n { font-size: 27px; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }
.atalho .d { color: var(--cinza); font-size: 12.5px; }
.blocoT { margin: 34px 0 12px; display: flex; align-items: baseline; gap: 10px; }
.etapas { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.etapa { border: 1px dashed #C3CAD5; border-radius: 14px; padding: 14px 16px; display: flex; gap: 12px; align-items: flex-start; color: var(--cinza); background: rgba(255,255,255,.5); }
.etapa .ic { width: 22px; height: 22px; color: var(--cinza2); margin-top: 2px; }
.etapa b { display: block; color: var(--tinta); }
.etapa .em { font-size: 12px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; color: var(--av); }

/* ---------- telas de dados ---------- */
.pg { height: calc(100vh - 60px); display: flex; flex-direction: column; background: var(--sup); }
.pgCab { display: flex; align-items: center; gap: 16px; padding: 14px 20px 10px; flex-wrap: wrap; }
.acoes { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.pgCab .tt { flex: 1; min-width: 260px; }
.salvo { font-size: 13px; color: var(--cinza); display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.salvo.sv { color: var(--av); } .salvo.er { color: var(--er); font-weight: 700; }
.inds { display: flex; gap: 8px; padding: 0 20px 12px; overflow-x: auto; scrollbar-width: thin; }
.ind { flex: 0 0 auto; border: 1px solid var(--linha); border-radius: 12px; padding: 5px 12px; min-width: 0; background: var(--sup); }
.ind .v { font-size: 17px; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1.15; color: var(--marca); }
.ind .r { font-size: 12px; color: var(--cinza); white-space: nowrap; }
.ferr { display: flex; align-items: center; gap: 8px; padding: 8px 20px; border-top: 1px solid var(--linha2); flex-wrap: wrap; }
.busca { position: relative; display: flex; align-items: center; }
.busca .ic { position: absolute; left: 10px; color: var(--cinza2); }
.busca input { height: 36px; width: 240px; padding: 0 10px 0 34px; border: 1px solid #C3CAD5; border-radius: 9px; background: var(--sup); }
.chips { display: flex; gap: 6px; flex-wrap: wrap; }
.chip { display: inline-flex; align-items: center; gap: 7px; height: 32px; padding: 0 11px; border-radius: 999px; border: 1px solid var(--linha); background: var(--sup); cursor: pointer; font-size: 13px; }
.chip:hover { border-color: var(--marca-media); }
.chip.on { border-color: var(--marca); box-shadow: inset 0 0 0 1px var(--marca); font-weight: 700; }
.chip .sw { width: 14px; height: 14px; border-radius: 4px; border: 1px solid rgba(0,0,0,.12); }
.chip small { color: var(--cinza); font-weight: 400; }
.chip.fixo { cursor: default; border-style: dashed; }
.esp { flex: 1; }
.btF { height: 36px; padding: 0 12px; border-radius: 9px; border: 1px solid #C3CAD5; background: var(--sup); display: inline-flex; align-items: center; gap: 7px; cursor: pointer; font-size: 12.5px; white-space: nowrap; }
.btF:hover { border-color: var(--marca); color: var(--marca); }
.btF.pri { background: var(--marca); border-color: var(--marca); color: #fff; }
.btF.pri:hover { background: var(--marca-esc); color: #fff; }
.zoom { display: inline-flex; align-items: center; border: 1px solid #C3CAD5; border-radius: 9px; overflow: hidden; height: 36px; }
.zoom button { border: 0; background: var(--sup); width: 32px; height: 100%; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.zoom button:hover { background: var(--marca-suave); }
.zoom span { min-width: 44px; text-align: center; font-size: 12.5px; font-variant-numeric: tabular-nums; }
.det { display: flex; align-items: center; gap: 10px; padding: 6px 20px; background: var(--marca-suave); border-top: 1px solid var(--linha2); border-bottom: 1px solid var(--linha); min-height: 38px; }
.det .ref { font-size: 12px; font-weight: 700; color: var(--marca); text-transform: uppercase; letter-spacing: .4px; white-space: nowrap; max-width: 260px; overflow: hidden; text-overflow: ellipsis; }
.det .ref.vazio { color: var(--cinza2); text-transform: none; letter-spacing: 0; font-weight: 400; }
.det .fx { flex: 1; min-width: 0; display: flex; align-items: center; gap: 12px; }
.gsVal { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.gsDica { flex: 0 0 auto; margin-left: auto; color: var(--cinza); font-size: 12px; display: inline-flex; align-items: center; gap: 5px; }
.gsDica.ed { color: var(--ok); }
.hfGrade { flex: 1; min-height: 0; display: flex; }

/* ---------- a grade ---------- */
.gsFolha { flex: 1; overflow: auto; position: relative; outline: none; background: var(--sup); }
.gsVazio { padding: 30px; color: var(--cinza); }
table.gs { border-collapse: separate; border-spacing: 0; table-layout: fixed; user-select: none; -webkit-user-select: none; }
.gs td { padding: 0 8px; border-bottom: 1px solid var(--grade); border-right: 1px solid var(--grade); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; background: var(--sup); cursor: default; vertical-align: middle; line-height: 1.25; font-variant-numeric: tabular-nums; }
.gs td .qb { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.gs td.cc, .gs th.cc { position: sticky; z-index: 2; }
.gs td.ccFim { box-shadow: 6px 0 8px -6px rgba(20,26,36,.18); }
.gs thead th { position: sticky; z-index: 5; background: var(--sup); text-align: left; }
.gs thead th.cc { z-index: 7; }
.gs tr.gsTit th { height: 48px; padding: 4px 22px; border-bottom: 2px solid #C9CFD8; border-right: 1px solid var(--grade); font-size: .86em; font-weight: 700; color: #344054; line-height: 1.15; white-space: normal; vertical-align: middle; text-align: center; cursor: s-resize; }
.gs tr.gsTit th.semFl { padding: 4px 0; }
.gs tr.gsTit th.rgT { background: var(--marca-media); color: var(--marca-esc); }
.gs tr.gsTit th.colSel { background: var(--marca-suave); color: var(--marca); }
.gs tr.gsTit th .gsT { display: block; }
.gsFl { position: absolute; right: 2px; top: 50%; margin-top: -10px; border: 0; background: transparent; color: var(--cinza2); cursor: pointer; width: 20px; height: 20px; border-radius: 5px; display: flex; align-items: center; justify-content: center; padding: 0; }
.gsFl:hover { background: var(--linha2); color: var(--tinta); }
.gsFl.on { color: #fff; background: var(--marca); }
.gsRz { position: absolute; top: 0; right: -3px; width: 7px; height: 100%; cursor: col-resize; z-index: 3; }
.gsRz:hover { background: var(--marca-media); }
body.gsArrastando, body.gsArrastando * { cursor: col-resize !important; }
.gs tr.gsExtra th { height: 26px; font-size: .8em; font-weight: 700; text-align: center; border-right: 1px solid rgba(255,255,255,.6); padding: 0 2px; white-space: nowrap; }
.gs th.gsVazioCab { background: var(--sup); border-right: 0; }
.gs th.cabTurno { color: #fff; }
.gs th.cabTurno .ic { width: 14px; height: 14px; margin-right: 6px; vertical-align: -2px; }
.gs th.cabTurno.tM { background: var(--tM); } .gs th.cabTurno.tT { background: var(--tT); } .gs th.cabTurno.tN { background: var(--tN); }
.gs th.cabFaixa { font-weight: 400; font-size: .76em; color: #263041; }
.gs th.cabFaixa.tM { background: var(--tMf); } .gs th.cabFaixa.tT { background: var(--tTf); } .gs th.cabFaixa.tN { background: var(--tNf); }
.gs tr.gsTit th.cabDia { text-align: center; padding: 4px 0; font-size: .8em; }
.gs th.cabDia.tM { color: var(--tM); } .gs th.cabDia.tT { color: var(--tT); } .gs th.cabDia.tN { color: var(--tN); }
.gs .fimFaixa { border-right: 1px solid #B4BCC8 !important; }
.gs tr.linSel td { background-image: linear-gradient(var(--marca-veu), var(--marca-veu)); }
.gs td.sel { outline: 2px solid var(--marca); outline-offset: -2px; }
.gs td.al { text-align: left; } .gs td.ac { text-align: center; } .gs td.ar { text-align: right; }
.gs td.forte { font-weight: 600; }
.gs td.fraco { color: var(--cinza2); }
.gs td.mail { color: #2B3442; font-size: .93em; }
.gs td.calc { color: var(--cinza); }
.gs td.fora { color: #B45309; font-style: italic; }
.gsDd { float: right; color: var(--cinza2); padding-left: 4px; cursor: pointer; display: none; }
.gs tr:hover .gsDd, .gs td.sel .gsDd { display: inline; }
.gs td.gsGravando { opacity: .45; }
.gsEd { position: absolute; z-index: 20; border: 2px solid var(--marca); padding: 2px 8px; font-size: 12.5px; box-shadow: 0 4px 14px rgba(0,0,0,.2); background: var(--sup); border-radius: 4px; }
.gsLista { position: absolute; z-index: 20; border: 1px solid var(--marca); font-size: 13px; box-shadow: 0 6px 18px rgba(0,0,0,.2); background: var(--sup); padding: 3px; border-radius: 6px; }
.gsFiltro { position: fixed; z-index: 75; width: 292px; background: var(--sup); border: 1px solid var(--linha); border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,.18); padding: 10px; display: flex; flex-direction: column; gap: 6px; font-size: 12.5px; }
.gsFh { font-weight: 700; color: var(--marca); padding: 2px 6px 4px; }
.gsFo { text-align: left; background: none; border: 0; padding: 7px 8px; border-radius: 7px; cursor: pointer; }
.gsFo:hover { background: var(--marca-suave); }
.gsFt { font-weight: 700; font-size: 12.5px; color: #344054; border-top: 1px solid var(--linha2); padding-top: 8px; }
.gsFb { height: 34px; padding: 0 9px; border: 1px solid #C3CAD5; border-radius: 7px; }
.gsFl2 { font-size: 12.5px; }
.gsLk { background: none; border: 0; color: var(--marca); cursor: pointer; padding: 0; text-decoration: underline; }
.gsFv { max-height: 240px; overflow: auto; border: 1px solid var(--linha2); border-radius: 7px; padding: 4px 6px; }
.gsFv label { display: block; padding: 3px 0; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gsFv small { color: var(--cinza2); }
.gsFbts { display: flex; justify-content: flex-end; gap: 8px; }
.gsBt { background: var(--marca); color: #fff; border: 0; border-radius: 8px; padding: 8px 16px; cursor: pointer; font-weight: 700; }
.gsBt.sec { background: var(--sup); color: var(--marca); border: 1px solid var(--linha); }

/* pílulas, turnos e cursos dentro da grade */
.pl { display: inline-block; padding: 1px 9px; border-radius: 999px; font-size: .86em; font-weight: 700; line-height: 1.6; }
.pl-ok { background: var(--okF); color: var(--ok); } .pl-er { background: var(--erF); color: var(--er); }
.pl-av { background: var(--avF); color: var(--av); } .pl-nd { background: var(--ndF); color: var(--nd); }
.tu { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; font-size: .92em; }
.tu .ic { width: 15px; height: 15px; }
.tuD { color: #A15C07; } .tuN { color: var(--tN); }
.sepC { color: var(--cinza2); margin: 0 3px; }
.soma { display: inline-flex; align-items: center; gap: 5px; }
.soma .ic { width: 14px; height: 14px; color: var(--cinza); }

/* bolinhas dos mapas */
.gs td.cg { padding: 0; text-align: center; cursor: pointer; }
.pt { display: inline-block; vertical-align: middle; border-radius: 50%; }
.pt.vazio { width: 6px; height: 6px; background: #E4E7EC; }
.gs td.cg:hover .pt.vazio { width: 14px; height: 14px; background: transparent; box-shadow: inset 0 0 0 2px #C3CAD5; }
.pt.pode { width: 12px; height: 12px; }
.pt.pode.tM { background: var(--tMf); box-shadow: inset 0 0 0 1.6px var(--tM); }
.pt.pode.tT { background: var(--tTf); box-shadow: inset 0 0 0 1.6px var(--tT); }
.pt.pode.tN { background: var(--tNf); box-shadow: inset 0 0 0 1.6px var(--tN); }
.pt.aula { width: 16px; height: 16px; color: #fff; display: inline-flex; align-items: center; justify-content: center; }
.pt.aula .ic { width: 10px; height: 10px; stroke-width: 3.4; }
.pt.aula.tM { background: var(--tM); } .pt.aula.tT { background: var(--tT); } .pt.aula.tN { background: var(--tN); }
.pt.oc { width: 15px; height: 15px; }
.pt.oc.tM { background: var(--tM); } .pt.oc.tT { background: var(--tT); } .pt.oc.tN { background: var(--tN); }
.barra { display: inline-block; width: 52px; height: 8px; border-radius: 4px; background: var(--linha2); overflow: hidden; vertical-align: middle; margin-right: 8px; }
.barra span { display: block; height: 100%; border-radius: 4px; }
.barra.tM span { background: var(--tM); } .barra.tT span { background: var(--tT); } .barra.tN span { background: var(--tN); }
.barraT { font-size: .9em; color: var(--cinza); }

/* cores das linhas: as mesmas da planilha */
.gs tr.k-irmaNoite td { background-color: #CFE8FF; color: #0B2A5B; }
.gs tr.k-irmaDiurno td { background-color: #CCF8DB; color: #163108; }
.gs tr.k-coordenacao td { background-color: #F7E8FF; color: #434343; }
.gs tr.k-extrasala td { background-color: #FCE5CD; }
.gs tr.k-semPresencial td { background-color: #F3F3F3; }
.gs tr.k-inativo td { background-color: #FEE2E2; color: #5B0F00; }
.gs tr.k-naoOfertado td { background-color: #E3E3E3; color: #555; }
.gs tr.k-pendente td { background-color: #FFF4D6; }
.gs tr.k-semDisp td { color: var(--cinza2); }
.gs tr.k-semEmail td.mail { background-color: #FFF4D6; }
.sw.k-irmaNoite { background: #CFE8FF; } .sw.k-irmaDiurno { background: #CCF8DB; } .sw.k-coordenacao { background: #F7E8FF; }
.sw.k-extrasala { background: #FCE5CD; } .sw.k-semPresencial { background: #F3F3F3; } .sw.k-inativo { background: #FEE2E2; }
.sw.k-naoOfertado { background: #E3E3E3; } .sw.k-pendente { background: #FFF4D6; } .sw.k-semDisp { background: #fff; } .sw.k-semEmail { background: #FFF4D6; }

/* ---------- configurações ---------- */
.cfg { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 28px; margin-top: 22px; }
.cfgNav { display: flex; flex-direction: column; gap: 4px; }
.cfgNav button { text-align: left; background: none; border: 0; padding: 10px 12px; border-radius: 10px; display: flex; align-items: center; gap: 10px; cursor: pointer; color: var(--cinza); }
.cfgNav button:hover { background: var(--sup); color: var(--tinta); }
.cfgNav button.ativo { background: var(--sup); color: var(--marca); font-weight: 700; box-shadow: inset 3px 0 0 var(--marca); }
.painel { background: var(--sup); border: 1px solid var(--linha); border-radius: 16px; padding: 24px; display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.painel h2 { display: flex; align-items: center; gap: 10px; }
.grade2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.logoBox { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.logoPrev { width: 150px; height: 80px; border: 1px dashed #C3CAD5; border-radius: 12px; display: flex; align-items: center; justify-content: center; background: var(--fundo); overflow: hidden; }
.logoPrev svg { width: 56px; height: 56px; }
.logoPrev img { max-width: 130px; max-height: 64px; object-fit: contain; }
.temas { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
.tema { border: 2px solid var(--linha); border-radius: 14px; overflow: hidden; cursor: pointer; background: var(--sup); padding: 0; text-align: left; }
.tema:hover { border-color: #AEB6C2; }
.tema.on { border-color: var(--tinta); }
.tema .tp { height: 54px; display: flex; align-items: flex-end; padding: 0 10px; gap: 6px; }
.tema .tp i { display: block; height: 4px; width: 26px; border-radius: 3px 3px 0 0; }
.tema .tp em { display: block; height: 6px; width: 30px; border-radius: 3px; margin-bottom: 18px; background: rgba(255,255,255,.55); }
.tema .tn { padding: 8px 10px; font-size: 12.5px; display: flex; justify-content: space-between; align-items: center; }
.tema .tn .ic { width: 16px; height: 16px; }
.livre { display: flex; gap: 16px; flex-wrap: wrap; align-items: center; }
.livre label { display: flex; align-items: center; gap: 8px; font-size: 12.5px; }
.livre input[type=color] { width: 42px; height: 34px; border: 1px solid #C3CAD5; border-radius: 8px; padding: 2px; background: var(--sup); }
.solta { border: 2px dashed #B6BECA; border-radius: 16px; background: var(--fundo); padding: 34px 24px; text-align: center; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 6px; }
.solta .ic { width: 32px; height: 32px; color: var(--marca); }
.solta.sobre { border-color: var(--marca); background: var(--marca-suave); }
.solta b { font-size: 15.5px; }
.cartoes3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.cartao { border: 1px solid var(--linha); border-radius: 14px; padding: 16px; }
.cartao .n { font-size: 27px; font-weight: 700; color: var(--marca); line-height: 1.1; }
table.tab { width: 100%; border-collapse: collapse; font-size: 13.5px; }
table.tab th { text-align: left; font-size: 12px; text-transform: uppercase; letter-spacing: .4px; color: var(--cinza); padding: 8px 10px; border-bottom: 2px solid var(--linha); }
table.tab td { padding: 10px; border-bottom: 1px solid var(--linha2); vertical-align: middle; }
ol.passos { margin: 0; padding-left: 22px; display: flex; flex-direction: column; gap: 4px; }

@media (max-width: 900px) {
  .topo { padding: 0 10px; gap: 6px; }
  .marcaTopo .nm span { display: none; }
  .menu { margin-left: 4px; }
  .menu button { padding: 0 9px; }
  .menu button .rt { display: none; }
  .atalhos, .etapas, .cartoes3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cfg { grid-template-columns: 1fr; }
  .cfgNav { flex-direction: row; overflow-x: auto; }
  .grade2 { grid-template-columns: 1fr; }
  .busca input { width: 170px; }
  .pgLivre { padding: 22px 16px 50px; }
}
@media (max-width: 520px) {
  .marcaTopo .nm { display: none; }
  .atalhos, .etapas, .cartoes3 { grid-template-columns: 1fr; }
  .pgCab, .ferr, .det, .inds { padding-left: 16px; padding-right: 16px; }
}

/* ---------- seleção de várias células ---------- */
.gs td.rg { background-image: linear-gradient(color-mix(in srgb, var(--marca) 16%, transparent), color-mix(in srgb, var(--marca) 16%, transparent)) !important; }
.gs td.inval { background-image: linear-gradient(225deg, #D92D20 0 7px, transparent 7px) !important; }
.gsDica.er { color: var(--er); }

/* ---------- rodapé com as abas ---------- */
.rodape { flex: 0 0 auto; display: flex; align-items: stretch; gap: 10px; background: #EEF0F3; border-top: 1px solid var(--linha); min-height: 46px; padding: 0 10px 0 0; overflow-x: auto; scrollbar-width: thin; }
.rpAbas { display: flex; align-items: stretch; gap: 1px; flex: 0 0 auto; }
.rpAba { border: 0; background: transparent; padding: 0 13px; display: flex; align-items: center; gap: 7px; cursor: pointer; color: #475467; font-size: 12.5px; white-space: nowrap; border-top: 3px solid transparent; }
.rpAba:hover { background: #E3E6EB; color: var(--tinta); }
.rpAba.ativa { background: var(--sup); color: var(--marca); font-weight: 700; border-top-color: var(--marca); box-shadow: 1px 0 0 var(--linha), -1px 0 0 var(--linha); }
.rpAba .ic { width: 16px; height: 16px; }
.rpFerr { display: flex; align-items: center; gap: 4px; padding: 0 10px; border-left: 1px solid #D0D5DD; border-right: 1px solid #D0D5DD; flex: 0 0 auto; }
.rpBt { height: 32px; min-width: 32px; padding: 0 8px; border-radius: 8px; border: 1px solid transparent; background: transparent; display: inline-flex; align-items: center; justify-content: center; gap: 6px; cursor: pointer; font-size: 13px; color: #344054; white-space: nowrap; }
.rpBt:hover { background: var(--sup); border-color: var(--linha); color: var(--marca); }
.rpBt .ic { width: 17px; height: 17px; }
.rpBt.cx { font-weight: 700; font-size: 12.5px; min-width: 34px; letter-spacing: .3px; }
.rpGrupo { display: inline-flex; border: 1px solid var(--linha); border-radius: 9px; background: var(--sup); padding: 1px; }
.rpGrupo .rpBt { height: 28px; border-radius: 7px; }
.rpSep { width: 1px; height: 22px; background: #D0D5DD; margin: 0 4px; }
.rpResumo { flex: 1; display: block; line-height: 46px; text-align: right; overflow: hidden; text-overflow: ellipsis; font-size: 12.5px; color: #344054; white-space: nowrap; font-variant-numeric: tabular-nums; min-width: 0; padding-left: 10px; }
.zoomR { display: flex; align-items: center; gap: 4px; flex: 0 0 auto; }
.zoomR > button:not(.zRot) { width: 28px; height: 28px; border: 0; border-radius: 7px; background: transparent; cursor: pointer; display: flex; align-items: center; justify-content: center; color: #344054; }
.zoomR > button:not(.zRot):hover { background: var(--sup); }
.zoomR input[type=range] { width: 110px; accent-color: var(--marca); }
.zRot { min-width: 56px; height: 28px; border: 1px solid var(--linha); border-radius: 7px; background: var(--sup); cursor: pointer; font-size: 12.5px; font-variant-numeric: tabular-nums; }
.zMenu { position: fixed; z-index: 80; background: var(--sup); border: 1px solid var(--linha); border-radius: 10px; box-shadow: 0 10px 30px rgba(0,0,0,.18); padding: 6px; display: flex; flex-direction: column; min-width: 96px; }
.zMenu button { border: 0; background: none; text-align: left; padding: 6px 12px; border-radius: 6px; cursor: pointer; font-variant-numeric: tabular-nums; }
.zMenu button:hover { background: var(--marca-suave); } .zMenu button.on { font-weight: 700; color: var(--marca); }

/* cabeçalho das telas de dados: título e indicadores na mesma linha */
.pgCab .inds { padding: 0; margin-left: auto; flex-wrap: wrap; justify-content: flex-end; overflow: visible; }
.pgCab .tt { flex: 0 1 auto; min-width: 240px; }

/* validação de dados (janela) */
.dlgC textarea { min-height: 120px; padding: 10px 12px; border: 1px solid #C3CAD5; border-radius: 10px; font: inherit; resize: vertical; }
.dlgC h2 { display: flex; align-items: center; gap: 8px; }
.vModo { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.vModo label { display: flex; gap: 10px; align-items: flex-start; border: 1px solid var(--linha); border-radius: 10px; padding: 10px 12px; cursor: pointer; font-weight: 400; }
.vModo label:has(input:checked) { border-color: var(--marca); box-shadow: inset 0 0 0 1px var(--marca); }
.vModo b { display: block; font-size: 13px; } .vModo small { color: var(--cinza); font-size: 12.5px; }
.subT { font-size: 13.5px; margin: 8px 0 -6px; color: var(--marca); }

/* ---------- dashboard ---------- */
.dbCorpo { flex: 1; min-height: 0; overflow: auto; background: var(--fundo); padding: 24px 24px 40px; }
.db { max-width: 1320px; margin: 0 auto; display: flex; flex-direction: column; gap: 16px; }
.dbTopo h1 { font-size: 25px; }
.dbTiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.dbGrade { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 14px; }
.dbCard { background: var(--sup); border: 1px solid var(--linha); border-radius: 16px; padding: 18px 20px; min-width: 0; }
.dbCard.s5 { grid-column: span 5; } .dbCard.s7 { grid-column: span 7; } .dbCard.s12 { grid-column: span 12; }
.dbCab { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }
.dbCab h2 { font-size: 15.5px; } .dbCab p { margin: 2px 0 0; color: var(--cinza); font-size: 13px; }
.dbTile { display: flex; gap: 14px; align-items: flex-start; }
.dbIc { width: 40px; height: 40px; border-radius: 12px; background: var(--marca-suave); color: var(--marca); display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.dbIc .ic { width: 21px; height: 21px; }
.dbRot { font-size: 13px; color: var(--cinza); }
.dbVal { font-size: 30.5px; font-weight: 700; line-height: 1.1; color: var(--tinta); margin: 2px 0 4px; }
.dbNota { font-size: 12.5px; color: var(--cinza); }
.dbPar { display: inline-flex; align-items: flex-end; gap: 10px; }
.dbPar small { display: block; font-size: 11.5px; font-weight: 700; color: var(--cinza); text-transform: uppercase; letter-spacing: .5px; line-height: 1.2; }
.dbSeta .ic { width: 20px; height: 20px; color: var(--cinza2); margin-bottom: 8px; }
.dbOt { display: inline-block; background: var(--okF); color: var(--ok); font-weight: 700; border-radius: 999px; padding: 2px 10px; }
.seg { display: inline-flex; border: 1px solid var(--linha); border-radius: 9px; padding: 2px; background: var(--fundo); }
.seg button { border: 0; background: transparent; padding: 5px 12px; border-radius: 7px; cursor: pointer; font-size: 13px; color: var(--cinza); }
.seg button.on { background: var(--sup); color: var(--marca); font-weight: 700; box-shadow: 0 1px 2px rgba(0,0,0,.08); }
/* colunas (dias) */
.vc { position: relative; height: 250px; padding: 0 0 26px 40px; }
.vcGs { position: absolute; left: 40px; right: 0; top: 18px; bottom: 26px; }
.vcG { position: absolute; left: 0; right: 0; height: 0; border-top: 1px solid var(--linha2); }
.vcG span { position: absolute; left: -40px; width: 34px; text-align: right; top: -8px; font-size: 11.5px; color: var(--cinza2); font-variant-numeric: tabular-nums; }
.vcCs { position: absolute; left: 40px; right: 0; top: 18px; bottom: 0; display: flex; }
.vcC { flex: 1; display: flex; flex-direction: column; align-items: center; cursor: default; }
.vcA { position: relative; flex: 1; width: 100%; display: flex; justify-content: center; }
.vcC:hover .vcB { filter: brightness(1.15); }
.vcB { position: absolute; bottom: 0; width: 24px; background: var(--marca); border-radius: 4px 4px 0 0; }
.vcV { position: absolute; font-size: 12.5px; font-weight: 700; color: var(--tinta); font-variant-numeric: tabular-nums; }
.vcR { height: 26px; display: flex; align-items: flex-end; font-size: 12.5px; color: var(--cinza); }
/* barras deitadas */
.hb { display: flex; flex-direction: column; gap: 8px; }
.hbL { display: grid; grid-template-columns: minmax(110px, 38%) minmax(0, 1fr); gap: 12px; align-items: center; }
.hbR { font-size: 12.5px; color: #344054; text-align: right; line-height: 1.2; }
.hbT { display: flex; align-items: center; gap: 8px; min-width: 0; }
.hbB { height: 16px; min-width: 3px; background: var(--marca); border-radius: 0 4px 4px 0; }
.hbL:hover .hbB { filter: brightness(1.15); }
.hbV { font-size: 12.5px; font-variant-numeric: tabular-nums; }
/* ocupação */
.md { display: flex; flex-direction: column; gap: 18px; }
.mdC { display: flex; align-items: baseline; gap: 10px; margin-bottom: 6px; }
.mdC b { font-size: 13.5px; } .mdC span { color: var(--cinza); font-size: 12.5px; } .mdC strong { margin-left: auto; font-size: 16px; font-variant-numeric: tabular-nums; }
.mdT { height: 12px; border-radius: 6px; overflow: hidden; }
.mdT span { display: block; height: 100%; border-radius: 6px; }
.mdT.tM { background: var(--tMf); } .mdT.tM span { background: var(--tM); }
.mdT.tT { background: var(--tTf); } .mdT.tT span { background: var(--tT); }
.mdT.tN { background: var(--tNf); } .mdT.tN span { background: var(--tN); }
/* carga por docente */
.dbCtl { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.dbOrd { display: flex; gap: 8px; align-items: center; font-size: 13px; color: var(--cinza); }
.dbOrd select { height: 36px; border: 1px solid #C3CAD5; border-radius: 9px; padding: 0 8px; background: var(--sup); }
.rkLeg { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; font-size: 12.5px; color: #344054; margin-bottom: 10px; }
.rkLeg span { display: inline-flex; align-items: center; gap: 7px; }
.rkLeg i { display: inline-block; width: 14px; height: 10px; border-radius: 2px; }
.lgP { background: #2a78d6; } .lgN { background: #eb6834; } .lgT { width: 2px !important; height: 14px !important; background: #B42318; border-radius: 0 !important; }
.rkAlerta { color: var(--er); font-weight: 700; margin-left: auto; }
.rkAlerta .ic, .rkN .ic { color: var(--er); }
.rk { display: flex; flex-direction: column; overflow-x: auto; }
.rkL { display: grid; grid-template-columns: minmax(220px, 280px) 90px 110px 84px 76px minmax(220px, 1fr); align-items: center; min-height: 34px; border-bottom: 1px solid var(--linha2); font-size: 12.5px; font-variant-numeric: tabular-nums; }
.rkL > span:not(.rkBar):not(.rkEsc) { text-align: center; }
.rkL:not(.rkCab):not(.rkTot):hover { background: var(--marca-suave); }
.rkCab { border-bottom: 2px solid var(--linha); min-height: 40px; position: sticky; top: 0; background: var(--sup); z-index: 1; }
.rkTh { border: 0; background: none; font-weight: 700; font-size: 12px; color: #344054; cursor: pointer; padding: 6px 4px; text-align: center; }
.rkTh:first-child { text-align: left; padding-left: 8px; }
.rkTh.on { color: var(--marca); }
.rkTot { font-weight: 700; background: var(--fundo); }
.rkTot > span:first-child { text-align: left !important; padding-left: 8px; }
.rkN { border: 0; background: none; text-align: left; cursor: pointer; padding: 4px 8px; display: flex; align-items: center; gap: 6px; color: var(--tinta); font-size: 12.5px; }
.rkN:hover span { text-decoration: underline; color: var(--marca); }
.rkN .ic { width: 15px; height: 15px; flex: 0 0 auto; }
.rkL.coord .rkN { color: var(--cinza); font-style: italic; }
.rkL.alto { background: #FEF3F2; }
.rkS { font-weight: 700; }
.rkBar { position: relative; height: 16px; display: flex; gap: 2px; margin: 0 12px; }
.rkP { background: #2a78d6; border-radius: 0; height: 100%; }
.rkNp { background: #eb6834; border-radius: 0 4px 4px 0; height: 100%; }
.rkBar .rkP:last-of-type { border-radius: 0 4px 4px 0; }
.rkTeto { position: absolute; top: -9px; bottom: -9px; width: 0; border-left: 2px solid #B42318; z-index: 1; }
.rkEsc { position: relative; height: 100%; margin: 0 12px; }
.rkEsc span { position: absolute; bottom: 4px; transform: translateX(-50%); font-size: 11.5px; font-weight: 700; color: var(--er); }
.dbTip { position: fixed; z-index: 90; display: none; background: #1B2230; color: #fff; font-size: 12.5px; padding: 7px 10px; border-radius: 8px; max-width: 320px; pointer-events: none; box-shadow: 0 6px 18px rgba(0,0,0,.2); }
@media (max-width: 1100px) { .dbTiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } .dbCard.s5, .dbCard.s7 { grid-column: span 12; } }
@media (max-width: 600px) { .dbTiles { grid-template-columns: 1fr; } .dbCorpo { padding: 16px; } .pgCab .inds { margin-left: 0; justify-content: flex-start; } }

/* v0.6 */
.barra.b2.tM { background: var(--tMf); } .barra.b2.tT { background: var(--tTf); } .barra.b2.tN { background: var(--tNf); }
.gs tr.gsExtra th.cabDet { text-align: left; padding: 0 8px; border-left: 1px solid #C9CFD8; }
.btDet { border: 1px solid var(--marca-media); background: var(--marca-suave); color: var(--marca); border-radius: 7px; padding: 2px 10px; font-size: 12px; font-weight: 700; cursor: pointer; display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.btDet:hover { background: var(--marca); color: #fff; }
.btDet .ic { width: 13px; height: 13px; }

.fontes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.fonte { text-align: left; border: 2px solid var(--linha); border-radius: 12px; background: var(--sup); padding: 12px 14px; cursor: pointer; display: flex; flex-direction: column; gap: 3px; }
.fonte:hover { border-color: #AEB6C2; } .fonte.on { border-color: var(--tinta); }
.fonte b { font-size: 14.5px; font-weight: 600; } .fonte span { font-size: 12.5px; font-variant-numeric: tabular-nums; } .fonte small { color: var(--cinza); font-size: 12px; margin-top: 4px; }
@media (max-width: 700px) { .fontes { grid-template-columns: 1fr; } }

/* painel de detalhe do Dashboard */
.clicavel { cursor: pointer; }
.hbL.clicavel:hover .hbR { color: var(--marca); text-decoration: underline; }
.mdL.clicavel:hover b { color: var(--marca); text-decoration: underline; }
.vcC.clicavel:hover .vcR { color: var(--marca); font-weight: 700; }
.pFundo { position: fixed; inset: 0; background: rgba(17,24,39,.35); z-index: 85; display: flex; justify-content: flex-end; }
.pPainel { width: min(980px, 100vw); height: 100%; background: var(--sup); display: flex; flex-direction: column; box-shadow: -12px 0 40px rgba(0,0,0,.18); animation: entra .18s ease-out; }
@keyframes entra { from { transform: translateX(40px); opacity: .6; } to { transform: none; opacity: 1; } }
.pCab { display: flex; gap: 14px; align-items: flex-start; justify-content: space-between; padding: 18px 22px 14px; border-bottom: 1px solid var(--linha); flex-wrap: wrap; }
.pCab h2 { font-size: 19px; } .pCab p { margin: 3px 0 0; color: var(--cinza); font-size: 12.5px; }
.pAcoes { display: flex; gap: 8px; align-items: center; }
.pFechar { width: 36px; height: 36px; border-radius: 9px; border: 1px solid var(--linha); background: var(--sup); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.pFechar:hover { border-color: var(--marca); color: var(--marca); }
.pCorpo { flex: 1; min-height: 0; overflow: auto; padding: 16px 22px 30px; }
.pLeg { display: flex; gap: 16px; font-size: 12.5px; color: #344054; margin-bottom: 10px; }
.pLeg span { display: inline-flex; gap: 6px; align-items: center; }
.pTab { overflow: auto; border: 1px solid var(--linha); border-radius: 12px; }
table.pGrade { border-collapse: separate; border-spacing: 0; font-size: 13px; min-width: 100%; }
.pGrade th, .pGrade td { border-bottom: 1px solid var(--grade); border-right: 1px solid var(--grade); text-align: center; padding: 4px 6px; white-space: nowrap; }
.pGrade thead th { position: sticky; top: 0; background: var(--sup); z-index: 1; font-size: 12px; }
.pGrade thead tr:nth-child(2) th { top: 27px; } .pGrade thead tr:nth-child(3) th { top: 52px; }
.pGrade th.pTurno { color: #fff; height: 27px; } .pGrade th.pTurno .ic { width: 13px; height: 13px; margin-right: 5px; vertical-align: -2px; }
.pGrade th.pTurno.tM { background: var(--tM); } .pGrade th.pTurno.tT { background: var(--tT); } .pGrade th.pTurno.tN { background: var(--tN); }
.pGrade th.pFaixa { font-weight: 400; height: 25px; } .pGrade th.pFaixa.tM { background: var(--tMf); } .pGrade th.pFaixa.tT { background: var(--tTf); } .pGrade th.pFaixa.tN { background: var(--tNf); }
.pGrade th.pDia { font-size: 11px; } .pGrade th.pDia.tM { color: var(--tM); } .pGrade th.pDia.tT { color: var(--tT); } .pGrade th.pDia.tN { color: var(--tN); }
.pGrade .pNome { text-align: left; position: sticky; left: 0; background: var(--sup); z-index: 2; min-width: 200px; white-space: normal; font-weight: 600; }
.pGrade thead .pNome { z-index: 3; }
.pGrade .pNum { font-variant-numeric: tabular-nums; color: #344054; min-width: 70px; }
.pGrade td.pc { min-width: 30px; height: 30px; }
.pGrade.compacta td.pc { min-width: 22px; padding: 2px; } .pGrade.compacta .pt.oc { width: 11px; height: 11px; }
.pGrade tbody tr:hover td { background: var(--marca-suave); }
.pPer { margin-bottom: 18px; }
.pPer h3 { font-size: 13.5px; color: var(--marca); margin: 0 0 8px; padding-bottom: 6px; border-bottom: 2px solid var(--linha); }
.pCols { display: flex; gap: 0; }
.pCol { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.pSep { width: 1px; background: #C9CFD8; margin: 0 16px; }
.pColT { display: flex; align-items: center; gap: 6px; font-weight: 700; font-size: 13px; margin-bottom: 2px; }
.pColT .ic { width: 15px; height: 15px; } .pColT small { color: var(--cinza); font-weight: 400; }
.pItem { border: 1px solid var(--linha); border-radius: 10px; padding: 8px 10px; display: flex; flex-direction: column; gap: 2px; }
.pItem b { font-size: 12.5px; font-weight: 600; } .pItem span { font-size: 12px; color: var(--cinza); }
.pItem.apagado { opacity: .55; }
.pVazio { color: var(--cinza2); font-size: 12.5px; padding: 6px 2px; }
@media (max-width: 700px) { .pCols { flex-direction: column; } .pSep { width: auto; height: 1px; margin: 10px 0; } }
.btDetF { border-color: var(--marca-media); color: var(--marca); font-weight: 700; }

/* coluna vazia de "Mais detalhes": sem linhas */
.gs td.semLinhas { border-right-color: transparent; border-bottom-color: transparent; background: var(--sup) !important; background-image: none !important; cursor: default; }
.gs tr.gsTit th.semLinhas { border-bottom-color: transparent; border-right-color: transparent; }
/* fecha a "caixa" das colunas de detalhes por cima */
.gs tr.gsExtra + tr.gsExtra th.gsVazioCab:last-child { border-bottom: 1px solid #C9CFD8; border-left: 1px solid #C9CFD8; }

.salvo.some { visibility: hidden; }
.larg { display: inline-flex; border: 1px solid #C3CAD5; border-radius: 9px; overflow: hidden; height: 36px; }
.larg button { width: 34px; border: 0; background: var(--sup); cursor: pointer; display: flex; align-items: center; justify-content: center; color: var(--cinza); }
.larg button + button { border-left: 1px solid var(--linha); }
.larg button:hover { background: var(--marca-suave); color: var(--marca); }
.larg .ic { width: 18px; height: 18px; }
@media (max-width: 1500px) {
  .rpBt:not(.cx) span { display: none; }
  .rpAba { padding: 0 10px; }
  .zoomR input[type=range] { width: 80px; }
}

/* geração */
.gerCentro { flex: 1; display: flex; align-items: center; justify-content: center; padding: 24px; background: var(--fundo); }
.gerCard { background: var(--sup); border: 1px solid var(--linha); border-radius: 18px; padding: 34px 36px; max-width: 520px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.gerCard .giro { margin: 6px auto 4px; }
.gerCard p { margin: 0 0 8px; }
.gerIc { width: 56px; height: 56px; border-radius: 16px; background: var(--marca-suave); color: var(--marca); display: flex; align-items: center; justify-content: center; }
.gerIc .ic { width: 28px; height: 28px; }
.gs td.enc { font-weight: 600; color: var(--marca); }
.gs tr.g-parcial td { background-color: #FFF6E0; }
.gs tr.g-pend td { background-color: #FDECEA; }
.gs tr.g-semPres td { background-color: #F3F3F3; color: var(--cinza); }
.sw.g-ok { background: #fff; } .sw.g-parcial { background: #FFF6E0; } .sw.g-pend { background: #FDECEA; } .sw.g-semPres { background: #F3F3F3; }

/* Início: formação do horário */
.etapa.ativa { border: 1px solid var(--marca); border-style: solid; background: var(--sup); color: var(--tinta); cursor: pointer; text-align: left; position: relative; box-shadow: 0 2px 10px color-mix(in srgb, var(--marca) 12%, transparent); }
.etapa.ativa .ic { color: var(--marca); }
.etapa.ativa .em { color: var(--ok); }
.etapa.ativa:hover { transform: translateY(-2px); }
.etapa .seta { margin-left: auto; align-self: center; } .etapa .seta .ic { width: 18px; height: 18px; }
.cartaoLt, .cartaoEv { margin-top: 14px; background: var(--sup); border: 1px solid var(--linha); border-radius: 16px; padding: 22px 22px 18px; }
.lt { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); position: relative; }
.ltF { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; padding: 0 6px; background: none; border: 0; font: inherit; color: inherit; }
button.ltF { cursor: pointer; } button.ltF:hover .ltT { color: var(--marca); text-decoration: underline; }
.ltF::before { content: ''; position: absolute; top: 23px; left: -50%; right: 50%; height: 3px; background: var(--linha); z-index: 0; }
.ltF:first-child::before { display: none; }
.ltF.feita::before, .ltF.atual::before { background: var(--ok); }
.ltM { position: relative; z-index: 1; width: 48px; height: 48px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: var(--sup); border: 3px solid var(--linha); color: var(--cinza2); }
.ltF.feita .ltM { background: var(--ok); border-color: var(--ok); color: #fff; }
.ltF.feita .ltM .ic { width: 22px; height: 22px; stroke-width: 3; }
.ltF.atual .ltM { border-color: transparent; color: var(--marca); }
.ltF.breve .ltM { border-style: dashed; }
.ltN { font-size: 14.5px; }
.ltPc { position: absolute; font-size: 12px; font-variant-numeric: tabular-nums; color: var(--tinta); }
.anel { position: absolute; inset: -3px; width: 48px; height: 48px; }
.anelFundo { fill: var(--sup); stroke: var(--linha); stroke-width: 3.5; }
.anelCheio { fill: none; stroke: var(--marca); stroke-width: 3.5; stroke-linecap: round; }
.ltT { font-size: 13px; margin-top: 4px; }
.ltD { font-size: 12.5px; color: var(--cinza); }
.ltF.breve .ltT, .ltF.breve .ltD { color: var(--cinza2); }
.ltBar { display: flex; gap: 2px; width: 80%; height: 6px; margin-top: 4px; }
.ltBar i, .ltLeg i { display: block; border-radius: 3px; }
.ltLeg { display: flex; gap: 18px; justify-content: center; margin-top: 16px; font-size: 12.5px; color: #344054; font-variant-numeric: tabular-nums; }
.ltLeg span { display: inline-flex; align-items: center; gap: 6px; } .ltLeg i { width: 12px; height: 8px; }
.b-ok { background: var(--ok); } .b-parcial { background: #E3A008; } .b-pend { background: var(--er); }
.evCab { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.evCab h3 { margin: 0; font-size: 14.5px; }
.evGraf { display: flex; align-items: flex-end; gap: 14px; height: 150px; margin-top: 14px; padding-bottom: 22px; border-bottom: 1px solid var(--linha); position: relative; }
.evC { position: relative; height: 100%; width: 40px; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; }
.evB { width: 24px; background: color-mix(in srgb, var(--marca) 35%, #fff); border-radius: 4px 4px 0 0; }
.evC.ult .evB { background: var(--marca); }
.evV { font-size: 12px; font-weight: 700; margin-bottom: 3px; font-variant-numeric: tabular-nums; }
.evR { position: absolute; bottom: -20px; font-size: 12px; color: var(--cinza); }
@media (max-width: 900px) { .lt { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 22px; } .ltF:nth-child(4)::before { display: none; } }
@media (max-width: 520px) { .lt { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ltF:nth-child(3)::before, .ltF:nth-child(5)::before { display: none; } .ltF:nth-child(4)::before { display: block; } }
.ltF.atual .ltM:not(:has(.anel)) { border-color: var(--marca); color: var(--marca); }
@media (max-width: 1500px) {
  .menu { margin-left: 6px; }
  .menu button { padding: 0 8px; font-size: 12.5px; gap: 6px; }
  .marcaTopo .nm b { font-size: 13.5px; }
}
@media (max-width: 1300px) { .menu button .rt { display: none; } .menu button { padding: 0 11px; } }

/* v12: sem título nas telas de dados; indicadores compactos na faixa; busca na faixa de detalhe */
.ferr { padding: 8px 16px; row-gap: 6px; }
.ferr .inds { padding: 0; display: flex; gap: 6px; flex-wrap: wrap; overflow: visible; }
.ferr .ind { display: inline-flex; align-items: baseline; gap: 6px; padding: 4px 10px; border-radius: 9px; min-width: 0; }
.ferr .ind .v { font-size: 14px; } .ferr .ind .r { font-size: 12px; }
.chip.todos { font-weight: 700; }
.det { padding: 5px 10px 5px 16px; }
.det .busca { margin-left: 8px; } .det .busca input { height: 30px; width: 220px; background: var(--sup); }
.rpAba.ativa { background: var(--marca); color: #fff; border-top-color: var(--acento); box-shadow: none; }
.rpAba.ativa .ic { color: #fff; }
/* Início: mais espaço */
.cartaoLt { margin-top: 30px; padding: 28px 22px 22px; }
.ltLeg { margin-top: 28px; gap: 26px; }
.cartaoEv { margin-top: 20px; }
.evGraf { padding-bottom: 40px; }
.evR { bottom: -38px; display: flex; flex-direction: column; align-items: center; line-height: 1.2; }
.evR b { font-weight: 400; color: var(--cinza); font-size: 11.5px; }
.evR small { font-size: 11px; font-weight: 700; } .evR .cai { color: var(--ok); } .evR .sobe { color: var(--er); }
/* lupa sempre centralizada dentro da caixa de busca */
.busca { position: relative; }
.busca > span { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); display: flex; pointer-events: none; }
.busca > span .ic { position: static; width: 16px; height: 16px; color: var(--cinza2); }
.busca input { padding-left: 32px; }

/* ---------- v14: lupa no topo, cabeçalho em destaque, botão do Gmail ---------- */
.buscaTopo { display: flex; align-items: center; position: relative; }
.buscaTopo input { width: 0; opacity: 0; padding: 0; border: 0; height: 34px; border-radius: 9px; background: #fff; color: var(--tinta); font: inherit; font-size: 12.5px; transition: width .18s ease, opacity .18s ease, padding .18s ease; }
.buscaTopo.aberta input { width: 230px; opacity: 1; padding: 0 10px; margin-right: 4px; box-shadow: 0 0 0 2px var(--acento); }
.buscaTopo input::-webkit-search-cancel-button { cursor: pointer; }
@media (max-width: 900px) { .buscaTopo.aberta input { width: 150px; } }

/* cabeçalho das colunas: faixa na cor da marca, bem distinta das linhas */
.gs tr.gsTit th { background: var(--marca); color: #fff; border-bottom: 0; border-right-color: rgba(255,255,255,.18); }
.gs tr.gsTit th.rgT { background: var(--marca-esc); color: #fff; }
.gs tr.gsTit th.colSel { background: var(--marca-esc); color: #fff; box-shadow: inset 0 -3px 0 var(--acento); }
.gs tr.gsTit th .gsFl { color: rgba(255,255,255,.75); }
.gs tr.gsTit th .gsFl:hover { background: rgba(255,255,255,.18); color: #fff; }
.gs tr.gsTit th .gsFl.on { background: var(--acento); color: var(--sobre-acento); }
.gs tr.gsTit th.semLinhas { background: var(--sup); border-bottom-color: transparent; border-right-color: transparent; }
/* dias da semana (Mapa Docente e Mapa de Salas): fundo claro do turno para a cor da letra continuar legível */
.gs tr.gsTit th.cabDia { border-right-color: rgba(0,0,0,.08); }
.gs tr.gsTit th.cabDia.tM { background: var(--tMf); } .gs tr.gsTit th.cabDia.tT { background: var(--tTf); } .gs tr.gsTit th.cabDia.tN { background: var(--tNf); }
.gs tr.gsTit th.cabDia.colSel, .gs tr.gsTit th.cabDia.rgT { box-shadow: inset 0 -3px 0 var(--marca); }

/* Mapa Docente: botão do Gmail dentro da célula do e-mail */
.gs td.mail:not(.cc) { position: relative; }
.btGmail { position: absolute; right: 4px; top: 50%; transform: translateY(-50%); z-index: 3; height: 26px; min-width: 26px; padding: 0 6px; display: inline-flex; align-items: center; gap: 4px; border: 0; border-radius: 7px; background: #EA4335; color: #fff; cursor: pointer; box-shadow: 0 2px 6px rgba(20,26,36,.25); font: inherit; font-size: 12px; }
.btGmail:hover { background: #C5221F; }
.btGmail .ic { width: 15px; height: 15px; }
.btGmail b { font-weight: 700; }

/* ---------- v15: mais respiro entre a barra de ferramentas e a tabela ---------- */
.ferr { padding: 14px 20px 16px; gap: 10px; row-gap: 12px; border-top: 0; }
/* indicadores sem caixinha: número e rótulo soltos, separados por um fio fino */
.ferr .inds { gap: 0; }
.ferr .ind { border: 0; border-left: 1px solid var(--linha); border-radius: 0; background: transparent; padding: 2px 12px; }
.ferr .ind:first-child { border-left: 0; }
.ferr .ind .v { font-size: 14.5px; }
.ferr .ind .r { color: var(--cinza2); }
/* cabeçalho um pouco mais claro que o menu do topo, letra menos pesada e mais alto */
.gs tr.gsTit th { background: color-mix(in srgb, var(--marca) 87%, #fff); font-weight: 600; letter-spacing: .15px; height: 52px; }
.gs tr.gsTit th.rgT, .gs tr.gsTit th.colSel { background: var(--marca); }
.gs tr.gsTit th.cabDia { font-weight: 700; }
/* indicadores e botões da direita andam juntos: se faltar espaço, descem juntos para a linha de baixo */
.ferrDir { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.ferrDir .inds { flex-wrap: wrap; }

/* =============================================================================
   RESOLUÇÃO: faixa vertical (passos + fila) e palco grande
   ============================================================================= */
.menu button .bolha { position: absolute; top: 9px; right: 2px; min-width: 19px; height: 19px; padding: 0 5px; border-radius: 999px; background: #E5484D; color: #fff; font-size: 11px; font-weight: 700; line-height: 19px; text-align: center; box-shadow: 0 0 0 2px var(--marca); font-variant-numeric: tabular-nums; }
.menu button .bolha.ok { background: #2FA36B; padding: 0; width: 19px; display: inline-flex; align-items: center; justify-content: center; }
.menu button .bolha .ic { width: 12px; height: 12px; stroke-width: 3; }
.menu button[data-k="resolver"] { padding-right: 22px; }

.rsCaixa { flex: 1; min-height: 0; position: relative; display: flex; }
.rs { flex: 1; min-height: 0; display: grid; grid-template-columns: 300px minmax(0, 1fr); }
.rsRail { min-height: 0; display: flex; flex-direction: column; border-right: 1px solid var(--linha); background: var(--fundo); }
.rsProg { padding: 18px 18px 14px; }
.rsProgN { display: flex; align-items: baseline; gap: 8px; }
.rsProgN b { font-size: 29px; line-height: 1; color: var(--marca); font-variant-numeric: tabular-nums; }
.rsProgN span { font-size: 12.5px; color: var(--cinza); }
.rsBarra { height: 6px; border-radius: 6px; background: var(--linha); margin: 12px 0 6px; overflow: hidden; }
.rsBarra i { display: block; height: 100%; background: var(--ok); border-radius: 6px; }
.rsProgT { font-size: 12px; color: var(--cinza); }
.rsPassos { display: flex; flex-direction: column; gap: 2px; padding: 0 10px 12px; border-bottom: 1px solid var(--linha); }
.rsPasso { display: flex; align-items: center; gap: 11px; padding: 10px; border-radius: 10px; border: 0; background: none; cursor: pointer; text-align: left; color: var(--tinta); font: inherit; }
.rsPasso:hover { background: var(--marca-veu); }
.rsPasso.on { background: var(--sup); box-shadow: 0 1px 3px rgba(20,26,36,.1), inset 3px 0 0 var(--marca); }
.rsPN { flex: 0 0 auto; width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 12.5px; background: var(--marca-media); color: var(--marca-esc); }
.rsPasso.on .rsPN { background: var(--marca); color: #fff; }
.rsPasso.zero .rsPN { background: var(--okF); color: var(--ok); }
.rsPN .ic { width: 15px; height: 15px; }
.rsPT { flex: 1; min-width: 0; }
.rsPT b { font-size: 13.5px; }
.rsPQ { font-weight: 700; font-size: 12.5px; color: var(--cinza); font-variant-numeric: tabular-nums; min-width: 26px; height: 22px; border-radius: 999px; background: var(--linha2); display: inline-flex; align-items: center; justify-content: center; padding: 0 6px; }
.rsPasso.on .rsPQ { background: var(--marca-suave); color: var(--marca); }
.rsPasso.zero .rsPQ { background: transparent; color: var(--cinza2); }
.rsFilaCab { display: flex; gap: 6px; padding: 12px 12px 8px; }
.rsBusca { flex: 1; min-width: 0; position: relative; display: flex; align-items: center; }
.rsBusca .ic { position: absolute; left: 9px; width: 15px; height: 15px; color: var(--cinza2); pointer-events: none; }
.rsBusca input { width: 100%; height: 32px; border: 1px solid #C3CAD5; border-radius: 8px; padding: 0 8px 0 30px; background: var(--sup); font: inherit; font-size: 13px; }
.rsFilaCab select { height: 32px; border: 1px solid #C3CAD5; border-radius: 8px; background: var(--sup); font: inherit; font-size: 12.5px; padding: 0 6px; max-width: 118px; }
.rsFila { flex: 1; min-height: 0; overflow-y: auto; padding: 0 8px 16px; outline: none; scrollbar-width: thin; }
.rsGrupo { font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; color: var(--cinza2); padding: 14px 8px 5px; }
.rsItem { position: relative; display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; padding: 9px 10px; margin-bottom: 2px; border-radius: 9px; border: 1px solid transparent; background: none; cursor: pointer; font: inherit; color: var(--tinta); }
.rsItem:hover { background: var(--sup); }
.rsItem.on { background: var(--sup); border-color: var(--marca-media); box-shadow: inset 3px 0 0 var(--marca); }
.rsItem b { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; line-height: 1.25; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.rsPonto { position: absolute; top: 7px; left: 4px; width: 6px; height: 6px; border-radius: 50%; background: var(--acento); }
.rsFila:focus-visible .rsItem.on { outline: 2px solid var(--marca); outline-offset: -2px; }
.rsVazioF { display: flex; align-items: center; gap: 8px; padding: 18px 10px; color: var(--ok); font-size: 12.5px; }
.rsTag { display: inline-flex; align-items: center; flex: 0 0 auto; height: 22px; padding: 0 8px; border-radius: 999px; font-size: 11.5px; font-weight: 700; white-space: nowrap; background: var(--ndF); color: var(--nd); }
.rsTag.er { background: var(--erF); color: var(--er); } .rsTag.av { background: var(--avF); color: var(--av); }
.rsTag.ok { background: var(--okF); color: var(--ok); } .rsTag.mk { background: var(--marca-suave); color: var(--marca); }

.rsPalco { min-height: 0; overflow-y: auto; padding: 0 30px 48px; background: var(--sup); position: relative; }
.rsPalco > .rsCab { padding-top: 22px; }
.rsAviso { position: sticky; top: 0; z-index: 6; margin: 0 -30px; padding: 10px 30px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; background: #FFF6DA; border-bottom: 1px solid #F2D27A; color: #6B4600; font-size: 13px; }
.rsAviso > .ic { width: 18px; height: 18px; }
.rsAviso > span { flex: 1; min-width: 220px; }
.rsVazio { max-width: 420px; margin: 14vh auto 0; text-align: center; color: var(--cinza); }
.rsVazio .ic { width: 40px; height: 40px; color: var(--ok); }
.rsVazio h2 { color: var(--tinta); font-size: 18px; margin: 10px 0 6px; }
.rsCab { display: flex; align-items: flex-start; gap: 16px; }
.rsCabT { flex: 1; min-width: 0; }
.rsCursos { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.rsCursos span { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 11px; border-radius: 8px; background: var(--marca-suave); color: var(--marca-esc); font-size: 13px; font-weight: 700; }
.rsCursos .ic { width: 14px; height: 14px; opacity: .7; }
.rsCab h2 { margin: 0 0 8px; font-size: 20.5px; line-height: 1.2; letter-spacing: -.2px; }
.rsMeta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; font-size: 13px; color: var(--cinza); }
.rsMeta > span { display: inline-flex; align-items: center; gap: 5px; }
.rsMeta .ic { width: 15px; height: 15px; }
.rsMudei { margin-top: 10px; display: inline-flex; align-items: center; gap: 7px; padding: 6px 10px; border-radius: 8px; background: #FFF6DA; color: #6B4600; font-size: 12.5px; }
.rsMudei .ic { width: 15px; height: 15px; }
.rsNav { display: flex; gap: 6px; align-items: center; }
.rsBtI { width: 34px; height: 34px; border-radius: 9px; border: 1px solid #C3CAD5; background: var(--sup); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; color: var(--cinza); flex: 0 0 auto; }
.rsBtI:hover { color: var(--marca); border-color: var(--marca); }
.rsBtI[disabled] { opacity: .35; cursor: default; }
.rsBtI[data-a="ant"] .ic { transform: rotate(180deg); }
.rsBtI .ic { width: 17px; height: 17px; }
.rsMot { margin: 18px 0 22px; padding: 14px 18px; border-radius: 12px; background: var(--fundo); border-left: 4px solid var(--marca); font-size: 13px; line-height: 1.5; display: flex; flex-direction: column; gap: 3px; }
.rsMot > b { font-size: 14px; }
.rsMot > span { color: #344054; }
.rsDuas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.rsDuas.um { grid-template-columns: minmax(0, 720px); }
.rsSem { min-width: 0; }
.rsSemT { display: flex; align-items: baseline; gap: 7px; margin-bottom: 8px; font-size: 13px; white-space: nowrap; min-height: 22px; }
.rsSemT b { flex: 0 0 auto; }
.rsSemT .ic { width: 16px; height: 16px; align-self: center; color: var(--marca); flex: 0 0 auto; }
.rsSemT span { color: var(--cinza); font-size: 12.5px; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.rsTurmas { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 8px; min-height: 26px; align-items: center; }
.rsTc { height: 26px; padding: 0 10px; border-radius: 999px; border: 1px solid var(--linha); background: var(--sup); font: inherit; font-size: 12px; cursor: pointer; }
.rsTc.on { border-color: var(--marca); background: var(--marca); color: #fff; font-weight: 700; }
.rsDicaMais { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--cinza2); }
.rsDicaMais .ic { width: 13px; height: 13px; }
/* grade: linhas finas e nítidas, como um calendário */
.rsG { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; border: 1px solid #CDD3DC; border-radius: 10px; overflow: hidden; background: #fff; }
.rsG + .rsG { margin-top: 10px; }
.rsG th { font-size: 11.5px; font-weight: 700; color: #4A5363; padding: 7px 0; text-align: center; background: #F3F5F8; border-bottom: 1px solid #CDD3DC; border-left: 1px solid #E1E5EB; letter-spacing: .3px; }
.rsG th:first-child { border-left: 0; }
.rsG th.rsH { width: 54px; text-align: center; font-variant-numeric: tabular-nums; }
.rsG tbody th.rsH { border-bottom: 1px solid #E1E5EB; }
.rsG tbody tr:last-child th, .rsG tbody tr:last-child td { border-bottom: 0; }
.rsG.sab thead th.rsH { font-size: 11px; color: var(--cinza); }
.rc { position: relative; height: 60px; padding: 6px 7px; vertical-align: middle; text-align: center; background: #fff; border-left: 1px solid #E1E5EB; border-bottom: 1px solid #E1E5EB; cursor: default; overflow: hidden; }
.rc .rcT { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 11.5px; line-height: 1.22; font-weight: 600; }
.rc .rcS { display: block; font-size: 10.5px; line-height: 1.2; opacity: .75; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; }
.rc.hov { box-shadow: inset 0 0 0 2px var(--marca); }
.rsK.hov { box-shadow: 0 0 0 2px var(--marca); }
.rc.v-ocupada { background: #F6F7F9; color: #4A5363; }
.rc.v-ocupada .rcT { font-weight: 500; }
.rc.v-ocupadaOutra { background: #FAFBFC; color: var(--cinza2); }
.rc.v-ocupadaOutra .rcT { font-weight: 500; }
.rc.v-proprio, .rc.p-proprio { background: var(--marca); color: #fff; }
.rc.v-cabe { background: #E6F6EC; color: #11643A; box-shadow: inset 4px 0 0 #2FA36B; }
.rc.v-cabe .rcT { font-weight: 700; }
.rc.v-pedir, .rc.p-pedir { background: #FFF5D6; color: #7A4B00; box-shadow: inset 4px 0 0 #E5A800; }
.rc.v-pedir .rcT, .rc.p-pedir .rcT { font-weight: 700; }
.rc.v-profOcupado, .rc.v-descanso, .rc.v-mesmoDia, .rc.v-semSab, .rc.v-soSab { background: repeating-linear-gradient(135deg, #fff 0 7px, #F0F2F5 7px 9px); color: #8A93A2; }
.rc.v-profOcupado .rcT, .rc.v-descanso .rcT, .rc.v-mesmoDia .rcT, .rc.v-semSab .rcT, .rc.v-soSab .rcT { font-weight: 500; }
.rc.p-aula { background: var(--marca-suave); color: var(--marca-esc); }
.rc.p-aula .rcT { font-weight: 500; }
.rc.p-marcou { background: #F1FAF4; color: #11643A; box-shadow: inset 0 0 0 1px #A8DDBC; }
.rc.p-marcou .rcT { font-weight: 700; }
.rc.p-nao { background: #fff; }
.rc.hov.v-cabe, .rc.hov.v-pedir, .rc.hov.p-pedir, .rc.hov.p-marcou { box-shadow: inset 0 0 0 2px var(--marca); }
/* + para marcar e × para desmarcar a disponibilidade */
.rcMais, .rcX { position: absolute; border: 0; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; }
.rcMais { inset: 0; width: 100%; height: 100%; background: transparent; color: #C3CAD5; }
.rcMais .ic { width: 18px; height: 18px; }
.p-pedir .rcMais { align-items: flex-end; justify-content: flex-end; padding: 0 6px 5px 0; color: #C08A00; }
.p-pedir .rcMais .ic { width: 15px; height: 15px; }
.rcMais:hover { background: rgba(47,163,107,.10); color: #2FA36B; }
.p-pedir .rcMais:hover { background: rgba(47,163,107,.12); color: #2FA36B; }
.rcX { top: 3px; right: 3px; width: 20px; height: 20px; border-radius: 6px; background: transparent; color: #8FBFA0; opacity: 0; }
.rc:hover .rcX { opacity: 1; }
.rcX:hover { background: #fff; color: var(--er); box-shadow: 0 1px 3px rgba(0,0,0,.15); }
.rcX .ic { width: 13px; height: 13px; }
.rsLeg { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 12px 0 0; font-size: 12px; color: var(--cinza); }
.rsLeg span { display: inline-flex; align-items: center; gap: 6px; }
.rsLeg i { width: 14px; height: 14px; border-radius: 4px; display: inline-block; border: 1px solid #E1E5EB; }
.rsLeg i.v-cabe { background: #E6F6EC; box-shadow: inset 3px 0 0 #2FA36B; } .rsLeg i.v-pedir { background: #FFF5D6; box-shadow: inset 3px 0 0 #E5A800; }
.rsLeg i.v-profOcupado { background: repeating-linear-gradient(135deg, #fff 0 3px, #DCE0E6 3px 4px); }
.rsLeg i.v-ocupada { background: #F6F7F9; } .rsLeg i.v-proprio { background: var(--marca); border-color: var(--marca); } .rsLeg i.p-marcou { background: #F1FAF4; border-color: #A8DDBC; }
.rsNada { color: var(--cinza); font-size: 12.5px; padding: 20px 0; }
.rsH3 { font-size: 14px; margin: 30px 0 12px; }
.rsCams { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.rsCam { display: flex; gap: 12px; padding: 14px; border: 1px solid var(--linha); border-radius: 12px; background: var(--sup); }
.rsCamI { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 9px; display: flex; align-items: center; justify-content: center; background: var(--marca-suave); color: var(--marca); }
.rsCam.ok { border-color: #A8DDBC; } .rsCam.ok .rsCamI { background: var(--okF); color: var(--ok); }
.rsCam.av { border-color: #F2D27A; } .rsCam.av .rsCamI { background: var(--avF); color: var(--av); }
.rsCamI .ic { width: 18px; height: 18px; }
.rsCamC { flex: 1; min-width: 0; }
.rsCamC b { font-size: 13px; }
.rsCamC p { margin: 3px 0 0; font-size: 13px; color: var(--cinza); line-height: 1.45; }
.rsCamX { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.rsK { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 9px; border-radius: 7px; background: var(--fundo); border: 1px solid var(--linha); font-size: 12px; font-weight: 600; font-variant-numeric: tabular-nums; }
.rsK.grande { height: 32px; font-size: 13px; background: #FFF5D6; border-color: #F2D27A; color: #7A4B00; }
.rsK small { font-weight: 700; font-size: 11px; color: var(--ok); }
.rsBts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; width: 100%; }
.rsBt { height: 34px; padding: 0 12px; border-radius: 9px; border: 1px solid #C3CAD5; background: var(--sup); display: inline-flex; align-items: center; gap: 7px; cursor: pointer; font: inherit; font-size: 13px; font-weight: 600; color: var(--tinta); white-space: nowrap; }
.rsBt:hover { border-color: var(--marca); color: var(--marca); }
.rsBt.pri { background: var(--marca); border-color: var(--marca); color: #fff; }
.rsBt.pri:hover { background: var(--marca-esc); color: #fff; }
.rsBt.mini { height: 26px; padding: 0 9px; font-size: 12px; }
.rsBt[disabled] { opacity: .5; cursor: not-allowed; }
.rsBt .ic { width: 16px; height: 16px; }
.rsOutros { display: flex; flex-direction: column; gap: 6px; width: 100%; }
.rsOutro { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; padding: 8px 10px; border-radius: 9px; background: var(--fundo); font-size: 12.5px; }
.rsOutro b { font-weight: 600; }
.rsOutro > span { color: var(--cinza); font-size: 12px; }
.rsKs { display: flex; flex-wrap: wrap; gap: 4px; margin-left: auto; align-items: center; }
.rsKs .rsK { height: 22px; font-size: 11.5px; padding: 0 6px; background: var(--sup); }
/* o que a geração já testou: tabela curta */
.rsTestou { margin-top: 26px; border: 1px solid var(--linha); border-radius: 12px; padding: 14px 16px; }
.rsTestouT { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 8px; }
.rsTestouT .ic { width: 16px; height: 16px; color: var(--marca); }
.rsTestouT b { font-size: 13px; margin-right: 4px; }
.rsTt { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.rsTt td { padding: 7px 8px; border-top: 1px solid var(--linha2); vertical-align: middle; }
.rsTt td.q { width: 90px; font-weight: 700; color: var(--marca); white-space: nowrap; font-variant-numeric: tabular-nums; }
.rsTt td b { font-weight: 600; display: block; }
.rsTt td small { color: var(--cinza); font-size: 12px; }
.rsTt td:last-child { text-align: right; }
.rsMais { margin: 6px 8px 0; font-size: 12px; color: var(--cinza); }
.rsNota { margin-top: 10px; font-size: 12px; }
.rsNota summary { cursor: pointer; color: var(--cinza2); }
.rsNota pre { white-space: pre-wrap; font: inherit; font-size: 12px; background: var(--fundo); padding: 12px; border-radius: 10px; margin: 8px 0 0; color: #4A5363; }
.rsPedidos { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 2px; }
.rsLista { display: flex; flex-direction: column; gap: 6px; }
.rsLinha { display: grid; grid-template-columns: minmax(0, 1fr) auto; text-align: left; gap: 2px 12px; padding: 10px 12px; border: 1px solid var(--linha); border-radius: 10px; background: var(--sup); cursor: pointer; font: inherit; color: var(--tinta); }
.rsLinha:hover { border-color: var(--marca); }
.rsLinha b { font-size: 12.5px; } .rsLinha span { font-size: 12px; color: var(--cinza); grid-column: 1; }
.rsLinha small { grid-column: 1; font-size: 12px; color: #344054; line-height: 1.4; }
.rsLinha .ic { grid-column: 2; grid-row: 1 / span 3; align-self: center; width: 18px; height: 18px; color: var(--cinza2); }
/* quadro "Mexer na oferta" (gaveta à direita, por cima do palco) */
.rsQuadro { position: fixed; top: 60px; right: 0; bottom: 46px; width: min(420px, 100vw); z-index: 20; background: var(--sup); border-left: 1px solid var(--linha); box-shadow: -12px 0 30px rgba(20,26,36,.14); overflow-y: auto; padding: 0 22px 24px; }
.rsQCab { position: sticky; top: 0; background: var(--sup); display: flex; align-items: flex-start; gap: 10px; padding: 18px 0 12px; border-bottom: 1px solid var(--linha2); z-index: 1; }
.rsQCab > div { flex: 1; min-width: 0; }
.rsQCab small { display: block; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; color: var(--cinza2); }
.rsQCab b { font-size: 15.5px; line-height: 1.25; }
.rsQInfo { display: flex; gap: 7px; font-size: 12px; color: var(--cinza); margin: 12px 0 4px; line-height: 1.4; }
.rsQInfo .ic { width: 14px; height: 14px; flex: 0 0 auto; margin-top: 2px; }
.rsQuadro section { padding: 16px 0; border-bottom: 1px solid var(--linha2); }
.rsQuadro h4 { margin: 0 0 10px; font-size: 12.5px; }
.rsAulas { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.rsAulas > div { border: 1px solid var(--linha); border-radius: 10px; padding: 10px 12px; display: flex; flex-direction: column; gap: 6px; }
.rsAulas > div > span { font-size: 12px; color: var(--cinza); }
.rsAulas small { font-size: 12px; color: var(--cinza2); }
.rsStep { display: flex; align-items: center; gap: 10px; }
.rsStep b { font-size: 20px; min-width: 22px; text-align: center; font-variant-numeric: tabular-nums; }
.rsStep .rsBtI { width: 30px; height: 30px; }
.rsQDica { margin: 8px 0 0; font-size: 12px; color: var(--cinza); line-height: 1.45; }
.rsQDica b { color: var(--er); }
.rsSeg { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid #C3CAD5; border-radius: 10px; overflow: hidden; }
.rsSeg button { height: 38px; border: 0; border-left: 1px solid #C3CAD5; background: var(--sup); font: inherit; font-size: 12.5px; font-weight: 700; cursor: pointer; color: var(--cinza); }
.rsSeg button:first-child { border-left: 0; }
.rsSeg button.on { background: var(--marca); color: #fff; }
.rsQTurmas { display: flex; flex-wrap: wrap; gap: 6px; }
.rsQTurmas span { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border-radius: 8px; background: var(--fundo); font-size: 12.5px; font-weight: 600; }
.rsQTurmas small { font-weight: 400; color: var(--cinza); }
.rsQuadro section > .rsBt { margin-top: 10px; }
.rsQProf { display: flex; gap: 8px; }
.rsQProf select { flex: 1; min-width: 0; height: 34px; border: 1px solid #C3CAD5; border-radius: 9px; font: inherit; font-size: 12.5px; padding: 0 8px; background: var(--sup); }
.rsGerando { position: absolute; inset: 0; z-index: 30; background: rgba(255,255,255,.86); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; }
.rsGerando .giro { margin: 0 0 10px; }
@media (max-width: 1180px) { .rsDuas { grid-template-columns: 1fr; } }
@media (max-width: 860px) {
  .rs { grid-template-columns: 1fr; grid-template-rows: auto minmax(0, 1fr); }
  .rsRail { max-height: 42vh; border-right: 0; border-bottom: 1px solid var(--linha); }
  .rsPalco { padding: 0 16px 32px; }
  .rsAviso { margin: 0 -16px; padding: 10px 16px; }
  .rsCab { flex-direction: column; }
}
.rs.comQuadro .rsPalco { padding-right: 450px; }
@media (max-width: 1100px) { .rs.comQuadro .rsPalco { padding-right: 30px; } }
/* menu do topo com o item Resolução: cabe sem rolar */
@media (max-width: 1700px) { .menu { margin-left: 6px; } .menu button { padding: 0 8px; font-size: 12.5px; gap: 6px; } }
@media (max-width: 1500px) { .menu button { padding: 0 6px; font-size: 13px; gap: 5px; } .menu button[data-k="resolver"] { padding-right: 20px; } }
@media (max-width: 1400px) { .menu button .rt { display: none; } .menu button { padding: 0 11px; } .menu button[data-k="resolver"] { padding-right: 16px; } .menu button .bolha { right: -2px; } }
.rsLk { background: none; border: 0; padding: 0; color: var(--marca); font: inherit; font-weight: 700; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
/* bolinha ao lado do nome, levantada como nos aplicativos (não cobre o texto) */
.menu button .bolha { position: static; margin-left: -1px; transform: translateY(-9px); flex: 0 0 auto; }
.menu button[data-k="resolver"] { padding-right: 8px; }
@media (max-width: 1500px) { .menu button { padding: 0 5px; } .menu button[data-k="resolver"] { padding-right: 4px; } }
@media (max-width: 1400px) { .menu button { padding: 0 11px; } .menu button[data-k="resolver"] { padding-right: 6px; } .menu button .bolha { margin-left: -8px; } }

/* ---------- Resolução v18: painel de instrumentos ---------- */
/* faixa recolhível */
.rs { transition: grid-template-columns .18s ease; }
.rsRail { position: relative; }
.rsRecolhe { position: absolute; top: 14px; right: 10px; z-index: 2; width: 28px; height: 28px; border-radius: 8px; border: 1px solid var(--linha); background: var(--sup); color: var(--cinza); cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; }
.rsRecolhe:hover { color: var(--marca); border-color: var(--marca); }
.rsRecolhe .ic { width: 15px; height: 15px; }
.rs.railFechado { grid-template-columns: 64px minmax(0, 1fr); }
.rs.railFechado .rsRecolhe { position: static; margin: 14px auto 6px; }
.rs.railFechado .rsProg { padding: 4px 0 10px; text-align: center; }
.rs.railFechado .rsProgN { justify-content: center; }
.rs.railFechado .rsProgN b { font-size: 18px; }
.rs.railFechado .rsProgN span, .rs.railFechado .rsBarra, .rs.railFechado .rsProgT, .rs.railFechado .rsPT, .rs.railFechado .rsFilaCab, .rs.railFechado .rsFila { display: none; }
.rs.railFechado .rsPassos { padding: 0 8px 10px; border-bottom: 0; }
.rs.railFechado .rsPasso { flex-direction: column; gap: 3px; padding: 8px 0; }
.rs.railFechado .rsPQ { min-width: 0; height: 18px; font-size: 11px; }
/* cabeçalho em uma linha, com as turmas discretas no fim */
.rsCab h2 { margin: 0 0 6px; }
.rsCursosTx { color: var(--cinza2); font-size: 12.5px; }
.rsCursosTx .ic { opacity: .7; }
.rsCabBt .ic { transform: rotate(180deg); transition: transform .15s; }
.rsCabBt.fechado .ic { transform: none; }
/* motivo e "o que a geração já testou" lado a lado */
.rsMotLinha { display: flex; gap: 12px; align-items: stretch; margin: 14px 0 16px; }
.rsMotLinha .rsMot { flex: 1; min-width: 0; margin: 0; }
.rsTestouBt { flex: 0 0 auto; width: 270px; display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-radius: 12px; border: 1px solid var(--linha); background: var(--sup); cursor: pointer; text-align: left; font: inherit; color: var(--tinta); }
.rsTestouBt:hover, .rsTestouBt.on { border-color: var(--marca); }
.rsTestouBt > .ic { width: 18px; height: 18px; color: var(--marca); flex: 0 0 auto; }
.rsTestouBt > .ic:last-child { width: 16px; height: 16px; color: var(--cinza2); transition: transform .15s; }
.rsTestouBt.on > .ic:last-child { transform: rotate(180deg); }
.rsTestouBt span { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.rsTestouBt b { font-size: 13px; }
.rsTestouBt small { font-size: 12px; font-weight: 700; }
.rsTestouBt small.ok { color: var(--ok); } .rsTestouBt small.er { color: var(--er); }
.rsMotLinha + .rsTestou { margin: -6px 0 16px; }
.rsTestou { margin-top: 0; padding: 6px 14px 10px; }
/* corpo: quadros à esquerda (todos com as mesmas colunas) e caminhos à direita */
.rsCorpo { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 24px; align-items: start; }
.rsQuadros { min-width: 0; display: flex; flex-direction: column; gap: 18px; }
.rsSem .rsSemT { margin-bottom: 6px; }
.rsSem.prof .rsG { border-color: color-mix(in srgb, var(--marca) 35%, #CDD3DC); }
.rsSem.prof .rsG th { background: var(--marca-suave); }
.rc { height: 58px; }
.rsLado { position: sticky; top: 16px; max-height: calc(100vh - 60px - 46px - 32px); overflow-y: auto; scrollbar-width: thin; padding-bottom: 6px; }
.rsPalco.comAviso .rsLado { top: 68px; max-height: calc(100vh - 60px - 46px - 84px); }
.rsLado .rsH3 { margin: 0 0 10px; }
.rsLado .rsCams { grid-template-columns: 1fr; gap: 10px; }
.rsLado .rsCam { padding: 12px; }
.rsOutro { justify-content: space-between; flex-wrap: nowrap; }
.rsOutro > div { min-width: 0; display: flex; flex-direction: column; }
.rsOutro > div span { color: var(--cinza); font-size: 12px; }
.rsLegMais { display: inline-flex; width: 14px; height: 14px; align-items: center; justify-content: center; color: var(--cinza2); font-size: 13.5px; }
/* sábado fechado: clique abre */
.rc.v-semSab.clicavel { cursor: pointer; }
.rc.v-semSab .rcAbre { opacity: 0; color: var(--marca); font-weight: 700; transition: opacity .1s; }
.rc.v-semSab.clicavel:hover { background: var(--marca-suave); color: var(--marca); }
.rc.v-semSab.clicavel:hover .rcAbre { opacity: 1; }
@media (max-width: 1250px) { .rsCorpo { grid-template-columns: 1fr; } .rsLado { position: static; max-height: none; } .rsMotLinha { flex-direction: column; } .rsTestouBt { width: auto; } }
.rsCab + .rsCorpo { margin-top: 16px; }
.rsNav .rsCabBt { margin-left: 6px; }

/* ---------- Resolução v19: topo com o professor + coluna de ações; turmas duas a duas ---------- */
.rsTopo { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 0; margin-top: 14px; }
.rsEsq { min-width: 0; padding-right: 22px; display: flex; flex-direction: column; gap: 12px; }
.rsLadoW { position: relative; border-left: 1px solid var(--linha); }
.rsLadoW .rsLado { position: absolute; inset: 0; padding: 0 0 4px 20px; max-height: none; overflow-y: auto; scrollbar-width: thin; }
.rsPalco.comAviso .rsLadoW .rsLado { top: 0; max-height: none; }
.rsLado .rsTestouBt { width: 100%; margin-bottom: 8px; }
.rsLado .rsNota { margin: 0 0 6px 2px; }
.rsLado .rsH3 { margin: 10px 0 8px; }
.rsLado .rsCam { padding: 10px 12px; gap: 10px; }
.rsLado .rsCamI { width: 30px; height: 30px; }
.rsLado .rsCamC p { font-size: 12px; }
.rsLado .rsCamC b { font-size: 12.5px; }
/* motivo com setinha própria para recolher */
.rsEsq .rsMot { margin: 0; flex-direction: row; align-items: flex-start; gap: 10px; padding: 12px 14px 12px 16px; }
.rsEsq .rsMot > div { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.rsEsq .rsMot.fechado { padding-top: 9px; padding-bottom: 9px; }
.rsMotBt { flex: 0 0 auto; width: 28px; height: 28px; border-radius: 8px; border: 0; background: transparent; color: var(--cinza); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.rsMotBt:hover { background: var(--sup); color: var(--marca); }
.rsMotBt .ic { width: 16px; height: 16px; transform: rotate(180deg); }
.rsMot.fechado .rsMotBt .ic { transform: none; }
/* "pegador" da disciplina para arrastar */
.rsArraste { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.rsPega { display: inline-flex; align-items: center; gap: 8px; height: 32px; padding: 0 12px 0 8px; border-radius: 8px; background: var(--marca); color: #fff; font-size: 12.5px; font-weight: 700; cursor: grab; user-select: none; box-shadow: 0 2px 6px rgba(20,26,36,.18); max-width: 100%; }
.rsPega .ic { width: 15px; height: 15px; opacity: .8; }
.rsPega:active { cursor: grabbing; }
.rsArraste small { flex: 1; min-width: 220px; font-size: 12px; color: var(--cinza); }
/* turmas */
.rsTurmasG { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 18px 22px; margin-top: 22px; }
.rsTurmasG > .rsSem { grid-column: 1; }
.rsTurmasG.duas { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rsTurmasG.duas > .rsSem { grid-column: auto; }
.rsTestou { margin: 12px 0 0; }
/* arrastáveis e alvos */
td.rc[draggable="true"] { cursor: grab; }
td.rc[draggable="true"]:active { cursor: grabbing; }
.rc.v-fixo, .rc.p-fixo { background: #fff; color: var(--marca); box-shadow: inset 0 0 0 2px var(--marca); background-image: repeating-linear-gradient(135deg, transparent 0 8px, var(--marca-veu) 8px 10px); }
.rc.v-fixo .rcT, .rc.p-fixo .rcT { font-weight: 700; }
.rc.v-fixo .rcX, .rc.p-fixo .rcX { color: var(--marca); }
.rsLeg i.v-fixo { background: #fff; border: 2px solid var(--marca); }
.rsPalco.arrastando td.rc { transition: none; }
.rsPalco.arrastando td.rc.dz-ok { background: #DDF4E5 !important; box-shadow: inset 0 0 0 2px #2FA36B !important; color: #11643A; }
.rsPalco.arrastando td.rc.dz-av { background: #FFF1CC !important; box-shadow: inset 0 0 0 2px #E5A800 !important; }
.rsPalco.arrastando td.rc.dz-er { opacity: .45; }
.rsPalco.arrastando td.rc.dz-sobre.dz-ok, .rsPalco.arrastando td.rc.dz-sobre.dz-av { box-shadow: inset 0 0 0 3px var(--marca) !important; }
.rsDica { position: fixed; left: 50%; bottom: 64px; transform: translateX(-50%); z-index: 40; padding: 9px 16px; border-radius: 10px; background: #1B2230; color: #fff; font-size: 13px; font-weight: 600; box-shadow: 0 8px 24px rgba(0,0,0,.25); pointer-events: none; max-width: 80vw; }
.rsDica.ok { background: #11643A; } .rsDica.av { background: #7A4B00; } .rsDica.er { background: #9B1C1C; }
@media (max-width: 1250px) {
  .rsTopo { grid-template-columns: 1fr; }
  .rsEsq { padding-right: 0; }
  .rsLadoW { border-left: 0; border-top: 1px solid var(--linha); margin-top: 16px; padding-top: 12px; }
  .rsLadoW .rsLado { position: static; padding-left: 0; }
  .rsTurmasG, .rsTurmasG.duas { grid-template-columns: 1fr; }
}

/* ---------- v20: sinais no topo e modo foco ---------- */
.btTopo[hidden] { display: none !important; }
.btRegerar { background: #F5B400; color: #3D2A00; border-radius: 50%; width: 36px; height: 36px; margin: 0 2px; animation: piscaReg 1.4s ease-in-out infinite; }
.btRegerar:hover { background: #FFCA2C; }
.btRegerar .ic { width: 19px; height: 19px; stroke-width: 2.4; }
.btRegerar.girando { animation: none; }
.btRegerar.girando .ic { animation: gira 1s linear infinite; }
@keyframes piscaReg { 0%, 100% { box-shadow: 0 0 0 0 rgba(245,180,0,.75); } 50% { box-shadow: 0 0 0 8px rgba(245,180,0,0); filter: brightness(1.12); } }
@keyframes gira { to { transform: rotate(360deg); } }
.btDesf .ic { width: 20px; height: 20px; }
.rsRecolhes { position: absolute; top: 14px; right: 10px; z-index: 2; display: flex; gap: 4px; }
.rsRecolhes .rsRecolhe { position: static; }
.rs .rsRecolhe[data-a="foco"] .ic { transform: rotate(180deg); }
.rs.foco .rsRecolhe[data-a="foco"] { background: var(--marca); color: #fff; border-color: var(--marca); }
.rs.foco .rsRecolhe[data-a="foco"] .ic { transform: none; }
.rs.railFechado .rsRecolhes { position: static; flex-direction: column; align-items: center; margin: 12px 0 6px; }
.rs.railFechado .rsRecolhe { margin: 0; }
.rsProgN { padding-right: 70px; }
.rs.railFechado .rsProgN { padding-right: 0; }
.rsTopo.foco { margin-top: 16px; }
.rsArraste .rsNav { margin-left: auto; }
.rsArraste .rsTag { flex: 0 0 auto; }
.rsTopo.foco .rsArraste small { min-width: 0; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (prefers-reduced-motion: reduce) { .btRegerar { animation: none; } }

/* ---------- v21: um movimento resolve ---------- */
.rc.sug { animation: piscaSug 1.6s ease-in-out infinite; position: relative; }
.rc.v-semSab.sug { background: #FFF7DD; color: #7A4B00; }
.rc.v-semSab.sug .rcT { font-weight: 700; }
.rc.v-semSab.sug .rcAbre { opacity: 1; color: #7A4B00; }
@keyframes piscaSug { 0%, 100% { box-shadow: inset 0 0 0 2px rgba(229,168,0,.95); } 50% { box-shadow: inset 0 0 0 2px rgba(229,168,0,.15), 0 0 14px 2px rgba(245,180,0,.55); } }
.rsCam.sug { border-color: #F2C94C; background: #FFFCF0; }
.rsCam.sug .rsCamI { background: #F5B400; color: #3D2A00; }
.sugBt { border-color: #E5A800; color: #6B4600; }
.sugBt .ic { width: 13px; height: 13px; }
.rsPalco.arrastando td.rc.dz-sab { background: #E3EEFB !important; box-shadow: inset 0 0 0 2px #2F6FD0 !important; color: #1F4E8C; }
.rsPalco.arrastando td.rc.dz-sobre.dz-sab { box-shadow: inset 0 0 0 3px var(--marca) !important; }
.rsPalco.arrastando td.rc.sug { animation: none; }
.rsDica.sab { background: #1F4E8C; }
@media (prefers-reduced-motion: reduce) { .rc.sug { animation: none; box-shadow: inset 0 0 0 2px #E5A800; } }

/* ---------- v22: Resolução limpa ---------- */
/* menu só com ícones na Resolução, para caber as ações */
body.menuIcones .menu { flex: 0 1 auto; }
body.menuIcones .menu button .rt { display: none; }
body.menuIcones .menu button { padding: 0 11px; }
body.menuIcones .menu button[data-k="resolver"] { padding-right: 6px; }
body.menuIcones .menu button .bolha { margin-left: -6px; }
.topoAcoes { flex: 1; min-width: 0; display: flex; justify-content: center; position: relative; }
.rsTopoBts { display: flex; gap: 8px; align-items: center; }
.tpBt { height: 36px; display: inline-flex; align-items: center; gap: 7px; padding: 0 14px; border-radius: 999px; border: 1px solid rgba(255,255,255,.28); background: rgba(255,255,255,.08); color: #fff; font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.tpBt:hover, .tpBt.on { background: rgba(255,255,255,.2); border-color: rgba(255,255,255,.55); }
.tpBt .ic { width: 16px; height: 16px; }
.tpBt i { font-style: normal; font-size: 11px; font-weight: 800; background: #F5B400; color: #3D2A00; border-radius: 999px; padding: 2px 7px; }
.tpBt.sug { animation: piscaReg 1.6s ease-in-out infinite; }
.rsPainel { position: fixed; top: 64px; left: 50%; transform: translateX(-50%); width: min(560px, calc(100vw - 32px)); max-height: calc(100vh - 140px); overflow-y: auto; z-index: 45; background: var(--sup); color: var(--tinta); border: 1px solid var(--linha); border-radius: 14px; box-shadow: 0 18px 50px rgba(20,26,36,.25); padding: 0 16px 16px; text-align: left; }
.rsPainelT { position: sticky; top: 0; background: var(--sup); display: flex; align-items: center; gap: 10px; padding: 14px 0 10px; border-bottom: 1px solid var(--linha2); margin-bottom: 12px; z-index: 1; }
.rsPainelT b { font-size: 14px; }
.rsPainelT small { font-size: 12px; font-weight: 700; }
.rsPainelT small.ok { color: var(--ok); } .rsPainelT small.er { color: var(--er); }
.rsPainelT .rsBtI { margin-left: auto; }
.rsPainel .rsCams { grid-template-columns: 1fr; gap: 10px; }
.rsPainel .rsTestou { border: 0; padding: 0; margin: 0; }
/* fila: setas ao lado do filtro */
.rsFilaCab { flex-direction: column; gap: 6px; }
.rsFilaL1 { display: flex; gap: 6px; align-items: center; }
.rsFilaL1 .rsBtI { width: 32px; height: 32px; }
.rsFilaL1 .rsBtI[data-a="ant"] .ic { transform: rotate(180deg); }
.rsFilaCab select { max-width: none; width: 100%; }
/* título com a setinha de subir os quadros */
.rsTit { display: flex; align-items: center; gap: 10px; }
.rsTit h2 { margin: 0; }
.rsCab { margin-bottom: 4px; }
.rsCab .rsMeta { margin-top: 6px; }
.rsFocoBt { width: 30px; height: 30px; flex: 0 0 auto; border-radius: 8px; border: 1px solid var(--linha); background: var(--sup); color: var(--cinza); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; padding: 0; }
.rsFocoBt:hover { color: var(--marca); border-color: var(--marca); }
.rsFocoBt .ic { width: 16px; height: 16px; transform: rotate(180deg); }
.rsFocoBt.on { background: var(--marca); color: #fff; border-color: var(--marca); }
.rsFocoBt.on .ic { transform: none; }
.rsPalco > .rsMot { margin: 14px 0 12px; flex-direction: row; align-items: flex-start; gap: 10px; padding: 12px 14px 12px 16px; }
.rsPalco > .rsMot > div { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.rsPalco > .rsMot.fechado { padding-top: 9px; padding-bottom: 9px; }
.rsPalco > .rsMot .rsMotBt .ic { transform: rotate(180deg); }
.rsPalco > .rsMot.fechado .rsMotBt .ic { transform: none; }
.rsPalco > .rsArraste { margin: 0 0 14px; }
.rs.foco .rsPalco > .rsArraste { margin-top: 18px; }
.rsArraste .rsFocoBt { margin-left: auto; }
/* quadros: professor e turmas do mesmo tamanho, dois por linha */
.rsQuadros2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 20px; }
.rsQuadros2 .rsSem.prof .rsSemT b { color: var(--marca); }
@media (max-width: 1100px) { .rsQuadros2 { grid-template-columns: 1fr; } .tpBt span { display: none; } }

/* ---------- v22: Horários por curso e por docente ---------- */
.hrAbas { display: inline-flex; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.25); border-radius: 999px; padding: 3px; gap: 2px; }
.hrAba { height: 32px; padding: 0 14px; border: 0; border-radius: 999px; background: transparent; color: rgba(255,255,255,.85); font: inherit; font-size: 13px; font-weight: 600; display: inline-flex; align-items: center; gap: 7px; cursor: pointer; white-space: nowrap; }
.hrAba .ic { width: 15px; height: 15px; }
.hrAba:hover { color: #fff; background: rgba(255,255,255,.1); }
.hrAba.on { background: #fff; color: var(--marca); }
.hrTit { padding: 18px 18px 6px; display: flex; flex-direction: column; gap: 2px; padding-right: 60px; }
.hrTit b { font-size: 16px; color: var(--marca); }
.hrTit span { font-size: 12px; color: var(--cinza); }
.rs.railFechado .hrTit { display: none; }
.hrFiltros { display: flex; flex-wrap: wrap; gap: 4px; }
.hrF { height: 26px; padding: 0 9px; border-radius: 999px; border: 1px solid var(--linha); background: var(--sup); font: inherit; font-size: 12px; cursor: pointer; color: var(--cinza); }
.hrF.on { background: var(--marca); color: #fff; border-color: var(--marca); }
.hrItem { position: relative; display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; padding: 8px 10px; margin-bottom: 2px; border-radius: 9px; border: 1px solid transparent; background: none; cursor: pointer; font: inherit; color: var(--tinta); font-size: 13px; }
.hrItem:hover { background: var(--sup); }
.hrItem.on { background: var(--sup); border-color: var(--marca-media); box-shadow: inset 3px 0 0 var(--marca); }
.hrItem b { flex: 1; min-width: 0; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hrItem.per { padding-left: 34px; font-size: 12.5px; color: #344054; }
.hrItem.per > span:first-child { flex: 1; }
.hrSeta { width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center; color: var(--cinza2); flex: 0 0 auto; transform: rotate(-90deg); transition: transform .12s; }
.hrSeta.aberto { transform: none; }
.hrSeta .ic { width: 14px; height: 14px; }
.hrPonto { width: 7px; height: 7px; border-radius: 50%; background: var(--er); flex: 0 0 auto; }
.hrItem.prof { flex-wrap: wrap; row-gap: 4px; }
.hrItem.prof b { flex: 1 1 calc(100% - 20px); }
.hrCarga { flex: 1; height: 5px; border-radius: 5px; background: var(--linha); overflow: hidden; }
.hrCarga i { display: block; height: 100%; background: var(--marca); }
.hrCarga.av i { background: #E5A800; } .hrCarga.er i { background: var(--er); }
.hrItem.prof small { font-size: 11.5px; color: var(--cinza); font-variant-numeric: tabular-nums; }
.hrCab { padding: 20px 0 14px; }
.hrCab h2 { margin: 0 0 6px; font-size: 20px; }
.hrCab .rsMeta .ic { width: 15px; height: 15px; }
.rsQuadros2.um { grid-template-columns: minmax(0, 1fr); max-width: 980px; }
.hrBandeja { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0 0 8px; padding: 8px 10px; border-radius: 10px; background: var(--erF); }
.hrBandT { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; color: var(--er); margin-right: 4px; }
.hrBandT .ic { width: 14px; height: 14px; }
.rsPega.mini { height: 28px; font-size: 12px; padding: 0 10px 0 6px; background: var(--sup); color: var(--tinta); border: 1px solid #E8B4AE; box-shadow: none; }
.rsPega.mini small { font-weight: 400; color: var(--cinza); margin-left: 2px; }
.rsPega.mini .ic { color: var(--cinza2); }
.rc.v-livreT { background: #fff; }
.rc.v-fora { background: #F6F7F9; }
.rc.temFixo { opacity: .55; }
.rsG.grande .rc { height: 56px; }
.rsG tr.hrTurno th { background: #fff; text-align: left; padding: 8px 10px 4px; font-size: 11.5px; color: var(--cinza); border-bottom: 1px solid #E1E5EB; }
.rsG tr.hrTurno th .ic { width: 13px; height: 13px; vertical-align: -2px; margin-right: 5px; }
.hrProfG { max-width: 1100px; }
.rs.hr .rsPalco > .rsMeta { margin-bottom: 10px; }
@media (max-width: 1100px) { .hrAba span { display: none; } }

/* ---------- v23: menu que se ajusta, chavinha na Resolução, faixas iguais nos quadros ---------- */
body.menuApertado .menu button .rt { display: none; }
body.menuApertado .menu button { padding: 0 11px; }
body.menuApertado .menu button[data-k="resolver"] { padding-right: 6px; }
body.menuApertado .menu button .bolha { margin-left: -6px; }
.topoAcoes { gap: 14px; align-items: center; }
.rsChave { display: inline-flex; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.25); border-radius: 999px; padding: 3px; gap: 2px; flex: 0 0 auto; }
.rsChave button { height: 30px; padding: 0 12px; border: 0; border-radius: 999px; background: transparent; color: rgba(255,255,255,.88); font: inherit; font-size: 12.5px; font-weight: 600; display: inline-flex; align-items: center; gap: 6px; cursor: pointer; white-space: nowrap; }
.rsChave button:hover { background: #fff; color: var(--marca); }
.rsChave .ic { width: 15px; height: 15px; }
@media (max-width: 1750px) { .rsChave span { display: none; } .rsChave button { padding: 0 10px; } }
@media (max-width: 1450px) { .tpBt span { display: none; } .tpBt { padding: 0 11px; } }
/* faixa do topo de cada turma: sempre a mesma altura (vermelha ou verde) */
.hrBandeja { flex-wrap: nowrap; height: 44px; padding: 0 10px; overflow: hidden; }
.hrBandeja.ok { background: var(--okF); }
.hrBandeja.ok .hrBandT { color: var(--ok); }
.hrBandT { flex: 0 0 auto; white-space: nowrap; }
.hrBandL { flex: 1; min-width: 0; display: flex; gap: 6px; overflow-x: auto; scrollbar-width: thin; padding: 4px 0; }
.hrBandL .rsPega { flex: 0 0 auto; white-space: nowrap; }
body.menuApertado .menu button.ativo .rt, body.menuIcones .menu button.ativo .rt { display: inline; }
body.menuApertado .menu button.ativo, body.menuIcones .menu button.ativo { padding: 0 14px; }
@media (max-width: 2150px) { .tpBt:not([data-v="caminhos"]) span { display: none; } .tpBt:not([data-v="caminhos"]) { padding: 0 11px; } }
@media (max-width: 1500px) { .tpBt span { display: none; } .tpBt { padding: 0 11px; } }
.topoAcoes { overflow: hidden; }

/* ---------- v24: ajustes gerais ---------- */
/* 1. menu: ícone em cima e o nome embaixo, todos visíveis */
.menu button { flex-direction: column; justify-content: center; gap: 3px; padding: 0 9px; font-size: 12px; line-height: 1.1; }
.menu button .ic { width: 19px; height: 19px; }
.menu button .rt { display: block !important; white-space: nowrap; }
.menu button.ativo { font-weight: 700; }
.menu button .bolha { position: absolute !important; top: 5px; left: calc(50% + 4px); margin: 0 !important; transform: none !important; box-shadow: 0 0 0 2px var(--marca); }
.menu button[data-k="resolver"] { padding-right: 9px !important; }
body.menuApertado .menu button .rt, body.menuIcones .menu button .rt { display: none !important; }
body.menuApertado .menu button.ativo .rt, body.menuIcones .menu button.ativo .rt { display: block !important; }
body.menuApertado .menu button, body.menuIcones .menu button { padding: 0 10px; }
@media (max-width: 1500px) { .menu button { padding: 0 6px; font-size: 11.5px; } }
/* 2. rodapé também no Início */
.rodape.base { position: sticky; bottom: 0; z-index: 10; }
/* 4. legenda da linha do tempo mais afastada */
.ltLeg { margin-top: 44px !important; }
/* 5 e 6. cartões do Dashboard */
.dbOt { white-space: nowrap; font-size: 11.5px; padding: 3px 8px; letter-spacing: -.1px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.dbDest { display: inline-flex; align-items: center; gap: 7px; margin-top: 2px; margin-right: 10px; padding: 4px 10px 4px 8px; border-radius: 9px; background: var(--marca-suave); color: var(--marca-esc); font-size: 12.5px; }
.dbDest b { font-size: 16px; font-variant-numeric: tabular-nums; }
.dbDest .ic { width: 17px; height: 17px; color: var(--marca); }
.dbDest.np { background: #F3F5F8; color: #4A5363; }
.dbDest.np .ic { color: var(--cinza); }
/* 7. Originais: traço sutil entre os botões e os indicadores */
.ferr.duas .ferrDir { flex: 1 1 100%; justify-content: flex-start; border-top: 1px solid var(--linha2); padding-top: 12px; margin-top: 4px; }
.ferr.duas { row-gap: 10px; }
.ferrBts { display: flex; gap: 6px; }
.btF.btIc { width: 36px; padding: 0; justify-content: center; }
.btF.btIc:hover { color: var(--er); border-color: var(--er); }
/* 19. Novo e lixeira sobre o cabeçalho dos Mapas */
.hfGrade { position: relative; }
.gsCantoBts { position: absolute; top: 10px; left: 10px; z-index: 9; display: flex; gap: 6px; }
.gsCantoBts .btF { height: 32px; background: var(--sup); }
.gsFo.gsVal { display: flex; align-items: center; gap: 7px; border-top: 1px solid var(--linha2); margin-top: 4px; padding-top: 8px; color: var(--marca); font-weight: 600; }
.gsFo.gsVal .ic { width: 15px; height: 15px; }
.gsFo.gsVal small { margin-left: auto; font-size: 11px; color: var(--ok); font-weight: 700; }
/* 11. botão Resolução com borda vermelha */
.btF.btRes { border-color: var(--er); color: var(--er); font-weight: 700; }
.btF.btRes:hover { background: var(--erF); }
/* 12 a 15. Horário Cursos */
.rs.hr .rsQuadros2 { row-gap: 34px; }
.hrCab { border-bottom: 1px solid var(--linha); margin-bottom: 18px; }
.hrSubT { display: flex; align-items: center; gap: 6px; padding: 6px 10px 2px 34px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: var(--cinza2); }
.hrSubT .ic { width: 12px; height: 12px; }
/* zoom da Resolução */
.rsCaixa .rsPalco { zoom: var(--zr, 1); }
.topoAcoes { flex: 0 1 auto; }
.topoAcoes:empty { display: none; }
.menu { flex: 1 1 auto; }
.dbTile .dbNota:has(.dbOt) { margin-left: -54px; margin-top: 8px; }
/* barra azul: ações e perfil sempre encostados à direita */
.topoAcoes { margin-left: auto; }
.topoDir { margin-left: auto; }
.topoAcoes + .topoDir { margin-left: 14px; }

/* ---------- papel Consulta: só ver ---------- */
body.soVer .btGerar, body.soVer #btRegerar, body.soVer #btDesfR, body.soVer .rcMais, body.soVer .rcX,
body.soVer [data-a="oferta"], body.soVer [data-a="sugerir"], body.soVer [data-a="trocar"], body.soVer [data-a="sabado"],
body.soVer .rsArraste small, body.soVer .gsCantoBts, body.soVer .ferrBts { display: none !important; }
body.soVer td.clicavel { pointer-events: none; }
body.soVer .rsPega { cursor: default; }
.tagConsulta { display: inline-flex; align-items: center; gap: 5px; height: 26px; padding: 0 10px; border-radius: 999px; background: #F5B400; color: #3D2A00; font-size: 12px; font-weight: 700; white-space: nowrap; }
.tagConsulta .ic { width: 13px; height: 13px; }
.pill.ok { background: var(--okF); color: var(--ok); }
/* menu em degraus quando a tela é menor */
body.menuCompacto .marcaTopo .nm { display: none; }
body.menuCompacto .menu { margin-left: 4px; }
body.menuCompacto .menu button { padding: 0 6px; font-size: 11px; }
body.menuCompacto .topo { gap: 8px; }
body.menuDuas .menu button .rt { white-space: normal; text-align: center; max-width: 66px; line-height: 1.05; font-size: 10.5px; }
body.menuDuas .menu button { padding: 0 4px; gap: 2px; }
body.menuDuas .menu button .ic { width: 17px; height: 17px; }
body.menuDuas .tagConsulta { padding: 0 8px; font-size: 11px; }

/* v27 · Início: a barra de baixo fica sempre colada no pé da tela */
#tela.comBase > .pgLivre { flex: 1 0 auto; width: 100%; box-sizing: border-box; }
#tela.comBase > .rodape.base { margin-top: auto; }

/* =============================================================================
   v29 · ESTRUTURA RESPONSIVA
   O aplicativo ocupa exatamente a janela: topo em cima, área de trabalho no meio,
   barra de baixo sempre visível. A página em si nunca rola (nem de lado), então
   nenhuma barra de rolagem do navegador cobre a barra de baixo. Quem rola é só a
   área do meio. Em janelas muito baixas, a área do meio rola e a barra continua
   alcançável.
   ============================================================================= */
:root { --hTopo: 60px; --hRod: 46px; }
html:has(body.app), body.app { height: 100%; overflow: hidden; }
body.app #raiz { height: 100vh; height: 100dvh; display: flex; flex-direction: column; overflow: hidden; }
body.app .topo { flex: 0 0 auto; position: relative; height: var(--hTopo); min-width: 0; }
body.app main#tela { flex: 1 1 auto; min-height: 0; overflow: auto; display: flex; flex-direction: column; }
body.app main#tela > .pg { flex: 1 1 auto; height: auto; min-height: 420px; }
body.app main#tela > .pgLivre { flex: 1 0 auto; width: 100%; }
body.app main#tela > .rodape.base { position: sticky; bottom: 0; margin-top: auto; }
body.app .rodape { min-height: var(--hRod); }
.euTela { font-size: 11.5px; color: var(--cinza); padding: 2px 10px 8px; border-bottom: 1px solid var(--linha2); margin-bottom: 6px; line-height: 1.35; }
.rsLado { max-height: calc(100dvh - var(--hTopo) - var(--hRod) - 32px); }
.rsPalco.comAviso .rsLado { max-height: calc(100dvh - var(--hTopo) - var(--hRod) - 84px); }

/* janelas baixas (notebook, zoom do Windows em 125% ou 150%): tudo um pouco mais enxuto */
@media (max-height: 760px) {
  :root { --hTopo: 52px; --hRod: 40px; }
  .marcaTopo .lg, .marcaTopo .lg svg { height: 32px; width: 32px; }
  .marcaTopo .lg img { max-height: 32px; }
  .menu button { font-size: 11px; gap: 1px; }
  .menu button .ic { width: 17px; height: 17px; }
  .euMenu { top: 50px; }
  .rsPainel { top: 56px; }
  .pgCab { padding: 10px 18px 8px; }
  .pgLivre { padding-top: 22px; }
}
@media (max-height: 600px) {
  :root { --hTopo: 46px; --hRod: 36px; }
  .marcaTopo .nm { display: none; }
  .menu button .rt { font-size: 10.5px; }
  .euMenu { top: 44px; }
  .rsPainel { top: 50px; }
}
.rsQuadro { top: var(--hTopo); bottom: var(--hRod); }

/* barra de baixo que se ajusta (etapas ligadas pelo app quando não cabe) */
.rodape.rpCompacto { gap: 6px; }
.rodape.rpCompacto .rpAba { padding: 0 8px; font-size: 12.5px; gap: 5px; }
.rodape.rpCompacto .rpFerr { padding: 0 6px; }
.rodape.rpMinimo .rpAba:not(.ativa) span { display: none; }
.rodape.rpMinimo .rpAba:not(.ativa) { padding: 0 10px; }
.rodape.rpMicro .zoomR input[type=range] { display: none; }
.rodape.rpMicro .rpBt span { display: none; }

/* v30 · traço discreto (com uma sombrinha) entre os quadros, na vertical e na horizontal */
.rsQuadros2 { --gx: 34px; --gy: 30px; column-gap: var(--gx); row-gap: var(--gy); }
.rs.hr .rsQuadros2 { --gx: 44px; --gy: 44px; column-gap: var(--gx); row-gap: var(--gy); }
.rsQuadros2:not(.um) > .rsSem { position: relative; }
.rsQuadros2:not(.um) > .rsSem::before, .rsQuadros2:not(.um) > .rsSem::after { content: none; position: absolute; pointer-events: none; background: #D3D9E2; }
/* vertical: à direita de cada quadro da coluna da esquerda */
.rsQuadros2:not(.um) > .rsSem:nth-child(odd):not(:last-child)::after {
  content: ''; width: 1px; right: calc(var(--gx) / -2); top: calc(var(--gy) / -2); bottom: calc(var(--gy) / -2);
  box-shadow: 1px 0 3px rgba(20, 26, 36, .13);
}
.rsQuadros2:not(.um) > .rsSem:nth-child(1)::after { top: 0; }
.rsQuadros2:not(.um) > .rsSem:nth-last-child(-n+2):nth-child(odd)::after { bottom: 0; }
/* horizontal: acima de cada quadro a partir da segunda linha */
.rsQuadros2:not(.um) > .rsSem:nth-child(n+3)::before {
  content: ''; height: 1px; top: calc(var(--gy) / -2); left: 0; right: 0;
  box-shadow: 0 1px 3px rgba(20, 26, 36, .13);
}
.rsQuadros2:not(.um) > .rsSem:nth-child(n+3):nth-child(odd)::before { right: calc(var(--gx) / -2); }
.rsQuadros2:not(.um) > .rsSem:nth-child(n+3):nth-child(even)::before { left: calc(var(--gx) / -2); }
/* quadro sozinho na última linha: o traço de cima atravessa as duas colunas */
.rsQuadros2:not(.um) > .rsSem:nth-child(n+3):nth-child(odd):last-child::before { right: calc(-100% - var(--gx)); }
/* uma coluna só (tela estreita): só o traço horizontal */
@media (max-width: 1100px) {
  .rsQuadros2:not(.um) > .rsSem::after { content: none !important; }
  .rsQuadros2:not(.um) > .rsSem:nth-child(n+2)::before {
    content: ''; height: 1px; top: calc(var(--gy) / -2); left: 0 !important; right: 0 !important;
    box-shadow: 0 1px 3px rgba(20, 26, 36, .13);
  }
}

/* aula combinada que já está valendo: normal, com um pontinho da cor da marca no canto */
.rc.fixoOk::after { content: ''; position: absolute; top: 5px; right: 5px; width: 6px; height: 6px; border-radius: 50%; background: var(--marca); opacity: .7; }
/* aula que vai sair daqui na próxima geração */
.rc.temFixo { opacity: 1; color: var(--cinza2); background-image: repeating-linear-gradient(135deg, transparent 0 7px, #F1F3F6 7px 9px); }
.rc.temFixo .rcT { text-decoration: line-through; text-decoration-color: #B8C0CC; }

/* nota da célula (Mapa Docente): como a nota do Google Planilhas, mas aparece na hora */
.gsNota { position: fixed; z-index: 60; max-width: 320px; background: #FFFDF2; color: var(--tinta); border: 1px solid #E8DFB8; border-radius: 8px; box-shadow: 0 8px 24px rgba(20,26,36,.16); padding: 7px 11px; font-size: 12px; line-height: 1.4; pointer-events: none; }
.gsNota:not(.cheia) { background: #2B3442; color: #fff; border-color: #2B3442; padding: 5px 9px; }
.gsNota .nCab { font-size: 11.5px; color: var(--cinza); margin-bottom: 3px; }
.gsNota:not(.cheia) .nCab { color: #fff; margin: 0; }
.gsNota .nTit { font-weight: 700; color: var(--marca); }
.gsNota .nLin span { color: var(--cinza); }
.gsNota hr { border: 0; border-top: 1px solid #EDE5C4; margin: 6px 0; }

/* =============================================================================
   v34 · ENSALAMENTO
   ============================================================================= */
.ensEstado { display: flex; align-items: center; gap: 16px; background: var(--sup); border: 1px solid var(--linha); border-radius: 16px; padding: 18px 20px; flex-wrap: wrap; }
.ensEstado > div:nth-child(2) { flex: 1 1 360px; min-width: 0; }
.ensEstado b { font-size: 15.5px; display: block; }
.ensEstado p { margin: 4px 0 0; color: var(--cinza); }
.ensIc { width: 46px; height: 46px; border-radius: 14px; display: flex; align-items: center; justify-content: center; background: var(--marca-suave); color: var(--marca); flex: 0 0 auto; }
.ensIc .ic { width: 24px; height: 24px; }
.ensEstado.tranca { border-color: #F1D9A6; background: linear-gradient(0deg, #FFFCF4, #FFFCF4); }
.ensEstado.tranca .ensIc { background: var(--avF); color: var(--av); }
.ensEstado.ok .ensIc { background: var(--okF); color: var(--ok); }
.ensEstado.pronto { border-color: color-mix(in srgb, var(--marca) 35%, #fff); box-shadow: 0 0 0 3px var(--marca-veu); }
.ensBts { display: flex; gap: 8px; flex-wrap: wrap; }
.ensTiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 18px 0 8px; }
.ensTile { background: var(--sup); border: 1px solid var(--linha); border-radius: 14px; padding: 14px 16px; display: grid; grid-template-columns: auto 1fr; column-gap: 12px; align-items: center; }
.ensTile .ic { grid-row: span 3; width: 22px; height: 22px; color: var(--marca); }
.ensTile b { font-size: 23.5px; line-height: 1.1; font-variant-numeric: tabular-nums; }
.ensTile .r { font-weight: 700; }
.ensTile .d { color: var(--cinza); font-size: 12.5px; }
.ensTile.er b, .ensTile.er .ic { color: var(--er); }
.ensTile.ok b { color: var(--ok); }
.ensTile.ok .ic { color: var(--ok); }
.ensTudo { margin-top: 14px; display: flex; gap: 10px; align-items: center; padding: 14px 16px; border-radius: 14px; background: var(--okF); color: var(--ok); font-weight: 700; }
.ensSem { margin-top: 22px; background: var(--sup); border: 1px solid var(--linha); border-radius: 16px; padding: 0 0 8px; }
.ensSemCab { padding: 16px 18px 6px; display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.ensSemCab h2 { margin: 0; font-size: 17px; display: flex; align-items: center; gap: 8px; color: var(--er); }
.ensSemCab h2 small { font-size: 12.5px; background: var(--erF); color: var(--er); border-radius: 999px; padding: 1px 9px; }
.ensSemCab .meta { flex: 1 1 360px; }
.ensFiltro { position: sticky; top: 0; z-index: 2; background: var(--sup); padding: 10px 18px; border-bottom: 1px solid var(--linha2); display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.ensFiltro .chips { flex: 1 1 auto; }
.ensBusca { height: 34px; border: 1px solid var(--linha); border-radius: 9px; padding: 0 12px; min-width: 260px; flex: 0 1 320px; background: #fff; }
.ensLista { padding: 4px 18px 8px; }
.ensCurso { margin: 16px 0 6px; font-size: 12.5px; letter-spacing: .4px; text-transform: uppercase; color: var(--cinza); }
.ensItens { margin: 0; padding-left: 26px; display: flex; flex-direction: column; gap: 8px; }
.ensItem { border: 1px solid var(--linha2); border-radius: 12px; padding: 10px 14px; background: #FCFCFD; }
.ensItem::marker { color: var(--cinza2); font-weight: 700; }
.ensT { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
.ensT b { font-size: 13.5px; }
.ensInfo { display: flex; gap: 14px; flex-wrap: wrap; font-size: 12.5px; color: var(--cinza); margin-top: 2px; }
.ensInfo .erT { color: var(--er); font-weight: 700; }
.ensEncs { display: flex; flex-direction: column; gap: 4px; margin-top: 8px; }
.ensEnc { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; font-size: 13px; }
.ensEnc .q { min-width: 92px; font-weight: 700; color: var(--marca); }
.ensEnc .s { color: var(--tinta); }
.ensEnc.falta .s { color: var(--er); font-weight: 700; }
.ensEnc .m { color: var(--cinza); font-size: 12px; flex: 1 1 300px; }
.etapa .em.tranca { color: var(--av); }
td.semSalaC { color: var(--er); font-weight: 700; }
@media (max-width: 900px) { .ensTiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* v35 · fundo suave por faixa de dois quadros (uma faixa sim, outra não) */
.rsQuadros2:not(.um) > .rsSem::before, .rsQuadros2:not(.um) > .rsSem::after { z-index: 1; }
.rsQuadros2:not(.um) > .rsSem:nth-child(4n+1), .rsQuadros2:not(.um) > .rsSem:nth-child(4n+2) {
  --faixa: color-mix(in srgb, var(--marca) 5%, #F7F8FA);
  background: var(--faixa); border-radius: 4px;
  box-shadow: 0 0 0 calc(var(--gx) / 2 - 1px) var(--faixa);
}
@media (max-width: 1100px) {
  .rsQuadros2:not(.um) > .rsSem:nth-child(4n+1), .rsQuadros2:not(.um) > .rsSem:nth-child(4n+2) { background: none; box-shadow: none; }
  .rsQuadros2:not(.um) > .rsSem:nth-child(odd) { --faixa: color-mix(in srgb, var(--marca) 5%, #F7F8FA); background: var(--faixa); box-shadow: 0 0 0 calc(var(--gy) / 2 - 1px) var(--faixa); }
}
.rsQuadros2:not(.um) > .rsSem:nth-child(4n+1) { border-radius: 6px 0 0 6px; }
.rsQuadros2:not(.um) > .rsSem:nth-child(4n+2) { border-radius: 0 6px 6px 0; }
.rsQuadros2:not(.um) > .rsSem:nth-child(4n+1):last-child { border-radius: 6px; }
@media (max-width: 1100px) { .rsQuadros2:not(.um) > .rsSem:nth-child(odd) { border-radius: 6px; } }

/* v36 · "pode dar certo": turmas e professor livres, falta o professor aceitar (e talvez abrir o sábado) */
.rc.quase { animation: piscaQuase 2.2s ease-in-out infinite; position: relative; }
.rc.v-pedir.quase, .rc.v-semSab.quase { background: #EEF4FF; color: #1F4E9A; }
.rc.quase .rcT { font-weight: 700; }
.rc.v-semSab.quase .rcAbre { opacity: 1; color: #1F4E9A; }
.rc.p-nao.quase, .rc.p-pedir.quase { background: #F3F7FF; }
@keyframes piscaQuase { 0%, 100% { box-shadow: inset 0 0 0 2px rgba(47,111,214,.85); } 50% { box-shadow: inset 0 0 0 2px rgba(47,111,214,.12), 0 0 12px 2px rgba(47,111,214,.40); } }
.rsPalco.arrastando td.rc.quase { animation: none; }
@media (prefers-reduced-motion: reduce) { .rc.quase { animation: none; box-shadow: inset 0 0 0 2px #2F6FD6; } }
.rsLeg i.lgQuase { background: #EEF4FF; box-shadow: inset 0 0 0 2px #2F6FD6; }
.rsCam.quase { border-color: #A9C4F2; background: #F5F8FF; }
.rsCam.quase .rsCamI { background: #2F6FD6; color: #fff; }

/* v37 · troca com o sábado (roxo): a outra aula vai para o sábado que o professor dela marcou */
.rc.troca { animation: piscaTroca 1.9s ease-in-out infinite; position: relative; }
.rc.troca.v-ocupada, .rc.troca.v-ocupadaOutra { background: #F4EEFF; color: #4B2A8C; }
.rc.troca .rcS { color: #6B3FC4; font-weight: 700; }
.rc.p-marcou.troca { background: #F4EEFF; color: #4B2A8C; }
@keyframes piscaTroca { 0%, 100% { box-shadow: inset 0 0 0 2px rgba(124,77,214,.9); } 50% { box-shadow: inset 0 0 0 2px rgba(124,77,214,.15), 0 0 12px 2px rgba(124,77,214,.45); } }
.rsPalco.arrastando td.rc.troca { animation: none; }
@media (prefers-reduced-motion: reduce) { .rc.troca { animation: none; box-shadow: inset 0 0 0 2px #7C4DD6; } }
.rsLeg i.lgTroca { background: #F4EEFF; box-shadow: inset 0 0 0 2px #7C4DD6; }
.rsCam.troca { border-color: #C9B4F2; background: #FAF7FF; }
.rsCam.troca .rsCamI { background: #7C4DD6; color: #fff; }
.rsTroca { display: flex; gap: 10px; align-items: center; justify-content: space-between; padding: 8px 0; border-top: 1px solid #E8DEFA; }
.rsTroca:first-child { border-top: 0; }
.rsTroca > div { min-width: 0; font-size: 12.5px; }
.rsTroca span { display: block; color: var(--cinza); font-size: 12px; }
.rsTroca .trocaBt { flex: 0 0 auto; background: #7C4DD6; color: #fff; border-color: #7C4DD6; }
.tpBt.trocaT { animation: piscaReg 1.6s ease-in-out infinite; }
.tpBt.trocaT i { background: #7C4DD6; color: #fff; }

/* v39 · Configurações › Regras do horário */
.regras { margin-top: 16px; display: flex; flex-direction: column; gap: 10px; }
.regraLinha { display: flex; gap: 14px; align-items: flex-start; padding: 16px; border: 1px solid var(--linha); border-radius: 14px; background: var(--sup); cursor: pointer; }
.regraLinha input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.regraLinha > div { display: flex; flex-direction: column; gap: 4px; }
.regraChave { flex: 0 0 auto; width: 44px; height: 24px; border-radius: 999px; background: #CDD3DC; position: relative; margin-top: 2px; transition: background .15s; }
.regraChave::after { content: ''; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.25); transition: left .15s; }
.regraLinha input:checked + .regraChave { background: var(--ok); }
.regraLinha input:checked + .regraChave::after { left: 23px; }
.regraLinha input:focus-visible + .regraChave { outline: 2px solid var(--acento); outline-offset: 2px; }
.hrTurno th small { font-weight: 500; color: var(--cinza); margin-left: 10px; font-size: 12px; text-transform: none; letter-spacing: 0; }
.regraLinha.semChave { cursor: default; }
.regraIc { flex: 0 0 auto; width: 44px; height: 24px; display: flex; align-items: center; justify-content: center; color: var(--marca); margin-top: 2px; }
.regraSel { margin-top: 8px; height: 38px; border: 1px solid var(--linha); border-radius: 9px; padding: 0 10px; background: #fff; max-width: 420px; font: inherit; }

/* v43 · "O que pedir" (Quem procurar): texto em cima, horários agrupados e lado a lado, botões embaixo */
.rsPalco > .rsMot.rsPedir, .rsMot.rsPedir { flex-direction: column; align-items: stretch; gap: 10px; padding: 14px 18px; }
.rsPedirT { display: flex; flex-direction: column; gap: 2px; }
.rsPedGrupo small { display: block; font-size: 11.5px; font-weight: 700; letter-spacing: .3px; text-transform: uppercase; color: var(--cinza); margin-bottom: 4px; }
.rsPedGrupo:first-of-type small { color: var(--ok); }
.rsPedGrupo .rsPedidos { margin: 0; }
.rsPedir .rsBts { margin-top: 2px; }
.rsPedir .rsBts { display: flex; flex-direction: row; flex-wrap: wrap; gap: 8px; }
.rsPedir .rsBts .rsBt { width: auto; flex: 0 0 auto; }
.rsPalco > .rsMot.rsPedir > .rsBts { flex-direction: row; flex: 0 0 auto; }
.rsPalco > .rsMot.rsPedir > .rsPedGrupo, .rsPalco > .rsMot.rsPedir > .rsPedirT { flex: 0 0 auto; }

/* v44 · Horário Cursos e Docentes só para consultar: a disciplina sem horário abre na Resolução */
.rsPega.hrIrRes { cursor: pointer; font-family: inherit; }
.rsPega.hrIrRes .ic { width: 13px; height: 13px; opacity: .7; margin-left: 2px; }
.rsPega.hrIrRes:hover { filter: brightness(.96); }
.rs.hr .rc { cursor: default; }

/* v46 · AVA (carga não presencial) nos horários */
.hrQ .rsSemT { display: flex; align-items: baseline; gap: 8px; }
.hrAvaBt { margin-left: auto; align-self: center; display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 10px; border-radius: 999px; border: 1px solid color-mix(in srgb, var(--marca) 30%, #fff); background: var(--marca-suave); color: var(--marca); font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; }
.hrAvaBt .ic { width: 16px; height: 16px; }
.hrAvaBt:hover { background: color-mix(in srgb, var(--marca) 14%, #fff); }
.hrAvaBt.zero { background: transparent; border-color: var(--linha); color: var(--cinza2); font-weight: 600; }
.hrAva { margin-top: 22px; background: var(--sup); border: 1px solid var(--linha); border-radius: 14px; padding: 14px 16px 16px; max-width: 1100px; }
.hrAva.vazio { padding: 10px 16px; }
.hrAvaT { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.hrAva.vazio .hrAvaT { margin: 0; }
.hrAvaT .ic { width: 20px; height: 20px; color: var(--marca); }
.hrAvaT b { font-size: 14px; }
.hrAvaT span { color: var(--cinza); font-size: 12.5px; }
.hrAvaTot { margin-left: auto; font-weight: 700; color: var(--marca) !important; font-size: 13px !important; }
.hrAvaL { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; }
.hrAvaL.um { grid-template-columns: 1fr; }
.hrAvaC { border: 1px solid var(--linha2); border-left: 3px solid var(--marca); border-radius: 10px; padding: 10px 12px; background: #FBFCFE; display: flex; flex-direction: column; gap: 3px; }
.hrAvaC1 { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.hrAvaC1 b { font-size: 12.5px; }
.hrAvaTu { color: var(--cinza); font-size: 12px; }
.hrAvaN { font-size: 12.5px; color: #344054; }
.hrAvaN b { color: var(--marca); font-size: 13.5px; }
.janelaC { max-height: 60vh; overflow: auto; }

/* =============================================================================
   v46 · PARECER DE VIABILIDADE (Início › Parecer do semestre)
   Paleta dos gráficos: série 1 azul #2a78d6, série 2 laranja #eb6834, aqua #1baf7a,
   amarelo #eda100 (ordem validada para daltonismo); status: crítico #d03b3b.
   ============================================================================= */
.parecer { --pv-s1: #2a78d6; --pv-s2: #eb6834; --pv-s3: #1baf7a; --pv-s4: #eda100; --pv-seq: #2a78d6; --pv-vazio: #f3f3f0; --pv-grade: #e1e0d9; --pv-crit: #d03b3b;
  position: fixed; inset: 0; z-index: 80; background: rgba(20,26,36,.45); overflow: auto; padding: 24px 16px; }
.pvFolha { max-width: 1180px; margin: 0 auto; background: var(--fundo); border-radius: 18px; box-shadow: 0 30px 80px rgba(20,26,36,.35); overflow: hidden; }
.pvTopo { position: sticky; top: 0; z-index: 2; display: flex; align-items: center; gap: 16px; padding: 16px 22px; background: var(--marca); color: #fff; flex-wrap: wrap; }
.pvTopo > div:first-child { flex: 1 1 380px; display: flex; flex-direction: column; gap: 2px; }
.pvTopo b { font-size: 17px; }
.pvTopo span { opacity: .82; font-size: 12.5px; }
.pvAcoes { display: flex; gap: 8px; }
.pvAcoes .bt { min-height: 36px; }
.pvAcoes .bt:not(.sec) { background: var(--acento); color: var(--sobre-acento); }
.pvCorpo { padding: 22px; display: flex; flex-direction: column; gap: 18px; }
.pvVer { display: flex; gap: 16px; padding: 18px 20px; border-radius: 16px; background: var(--sup); border: 1px solid var(--linha); border-left: 6px solid #0ca30c; }
.pvVer.atencao { border-left-color: #fab219; } .pvVer.critico { border-left-color: var(--pv-crit); }
.pvVerI { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 12px; display: flex; align-items: center; justify-content: center; background: #e6f6e6; color: #0b7a0b; }
.pvVer.atencao .pvVerI { background: #fff3d6; color: #8a5a00; } .pvVer.critico .pvVerI { background: #fdecea; color: var(--pv-crit); }
.pvVerI .ic { width: 24px; height: 24px; }
.pvVer b { display: block; font-size: 19px; line-height: 1.25; margin: 4px 0 8px; }
.pvVer ul { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 5px; color: #344054; }
.pvSelo { display: inline-block; font-size: 11.5px; font-weight: 800; letter-spacing: .5px; text-transform: uppercase; padding: 2px 9px; border-radius: 999px; background: #e6f6e6; color: #0b6b0b; }
.pvVer.atencao .pvSelo { background: #fff3d6; color: #7a4b00; } .pvVer.critico .pvSelo { background: #fdecea; color: var(--pv-crit); }
.pvTiles { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.pvTile { background: var(--sup); border: 1px solid var(--linha); border-radius: 14px; padding: 12px 14px; display: flex; flex-direction: column; gap: 2px; }
.pvTile span { font-size: 12px; color: var(--cinza); }
.pvTile b { font-size: 25px; line-height: 1.15; font-weight: 700; }
.pvTile small { font-size: 12px; color: var(--cinza); }
.pvSec { background: var(--sup); border: 1px solid var(--linha); border-radius: 16px; padding: 18px 20px; }
.pvSec h2 { margin: 0 0 6px; font-size: 16px; display: flex; align-items: center; gap: 10px; }
.pvSec h2 > span { width: 26px; height: 26px; border-radius: 50%; background: var(--marca); color: #fff; font-size: 12.5px; display: inline-flex; align-items: center; justify-content: center; }
.pvSec h3 { margin: 0 0 8px; font-size: 12.5px; color: #344054; }
.pvTx { margin: 0 0 12px; color: #344054; line-height: 1.55; max-width: 980px; }
.pvNota { margin: 10px 0 0; font-size: 12.5px; color: var(--cinza); line-height: 1.5; }
.pvDuas { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 22px; align-items: start; }
.pvLeg { display: flex; gap: 16px; flex-wrap: wrap; font-size: 12px; color: #52514e; margin-bottom: 8px; }
.pvLeg span { display: inline-flex; align-items: center; gap: 6px; }
.pvLeg i { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.pvLin, .pvLpi, .pvC1 { background: var(--pv-s1); } .pvLfo, .pvLco, .pvC2 { background: var(--pv-s2); } .pvC3 { background: var(--pv-s3); } .pvC4 { background: #b9b8b2; }
.pvLcap { width: 2px !important; height: 14px !important; border-radius: 0 !important; background: #0b0b0b; }
.pvBarras { display: flex; flex-direction: column; gap: 6px; }
.pvBarra { display: grid; grid-template-columns: 230px minmax(0, 1fr) 64px; gap: 10px; align-items: center; }
.pvBR { min-width: 0; display: flex; flex-direction: column; line-height: 1.2; }
.pvBR b { font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pvBR span { font-size: 11.5px; color: var(--cinza); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pvTrilho { position: relative; height: 18px; background: var(--pv-vazio); border-radius: 4px; }
.pvTrilho.limpo { background: transparent; border-left: 1px solid #c3c2b7; border-radius: 0; }
.pvTrilho i { position: absolute; top: 0; bottom: 0; }
.pvIn, .pvPi { left: 0; background: var(--pv-s1); border-radius: 0 4px 4px 0; }
.pvFora, .pvCo { background: var(--pv-s2); border-radius: 0 4px 4px 0; }
.pvTrilho .pvIn + .pvFora, .pvTrilho .pvPi + .pvCo { }
.pvCap { width: 2px; top: -3px !important; bottom: -3px !important; background: #0b0b0b; margin-left: -1px; }
.pvV { font-size: 12.5px; font-weight: 700; font-variant-numeric: tabular-nums; }
.pvV em { font-style: normal; color: #b0461a; }
.pvCalor { border-collapse: separate; border-spacing: 2px; width: 100%; font-size: 12px; }
.pvCalor th { font-weight: 700; color: #52514e; padding: 2px 4px; }
.pvCalor tbody th { text-align: right; width: 48px; font-variant-numeric: tabular-nums; }
.pvCalor td { height: 28px; text-align: center; border-radius: 4px; font-weight: 700; color: #0b0b0b; font-variant-numeric: tabular-nums; }
.pvCalor td.esc { color: #fff; }
.pvCalor td.passou { box-shadow: inset 0 0 0 2px var(--pv-crit); }
.pvCalor td.nada { background: transparent; }
.pvCalor tr.pvSep td { height: auto; text-align: left; font-weight: 600; color: var(--cinza); font-size: 11.5px; padding: 6px 2px 0; background: none; }
.pvEscala { display: flex; align-items: center; gap: 8px; font-size: 11.5px; color: #52514e; margin-top: 8px; flex-wrap: wrap; }
.pvEscala i { width: 140px; height: 10px; border-radius: 3px; background: linear-gradient(90deg, color-mix(in srgb, #2a78d6 12%, #fff), #2a78d6); }
.pvEscala em { font-style: normal; display: inline-flex; align-items: center; gap: 6px; margin-left: 10px; }
.pvPassou { display: inline-block; width: 14px; height: 12px; border-radius: 3px; box-shadow: inset 0 0 0 2px var(--pv-crit); }
.pvAlerta { margin-top: 12px; display: flex; gap: 10px; align-items: flex-start; padding: 10px 14px; border-radius: 12px; background: #fdecea; color: #7a1f1f; font-size: 13px; line-height: 1.5; }
.pvAlerta .ic { color: var(--pv-crit); margin-top: 2px; flex: 0 0 auto; }
.pvLista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.pvLista li { display: flex; justify-content: space-between; gap: 10px; padding: 6px 10px; border-radius: 8px; background: #fafaf8; font-size: 13px; }
.pvLista li span { color: var(--cinza); white-space: nowrap; }
.pvOk { display: flex; gap: 8px; align-items: center; color: #0b6b0b; margin: 0; }
.pvPilha { display: flex; gap: 2px; height: 30px; border-radius: 6px; overflow: hidden; }
.pvPilha i { display: flex; align-items: center; justify-content: center; font-style: normal; font-weight: 700; font-size: 12.5px; color: #fff; min-width: 4px; }
.pvPilha i.pvC3 { color: #0b0b0b; } .pvPilha i.pvC4 { color: #0b0b0b; }
.pvMedidor { height: 14px; border-radius: 4px; background: #cde2fb; overflow: hidden; max-width: 640px; }
.pvMedidor i { display: block; height: 100%; background: #184f95; }
.pvConc { border-left: 6px solid var(--marca); }
.pvConc ol { margin: 6px 0 0; padding-left: 22px; display: flex; flex-direction: column; gap: 8px; line-height: 1.5; }
.btParecer { display: inline-flex; align-items: center; gap: 8px; }
@media (max-width: 1000px) { .pvTiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } .pvDuas { grid-template-columns: 1fr; } .pvBarra { grid-template-columns: 150px minmax(0, 1fr) 54px; } }
@media print {
  body.comParecer > *:not(#parecer) { display: none !important; }
  body.comParecer, body.comParecer #raiz { height: auto !important; overflow: visible !important; }
  .parecer { position: static; background: none; padding: 0; overflow: visible; }
  .pvFolha { box-shadow: none; border-radius: 0; max-width: none; }
  .pvTopo { position: static; } .pvAcoes { display: none; }
  .pvSec, .pvVer { break-inside: avoid; }
  * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

/* ---------- v47 · DASHBOARD ---------- */
/* a. Parecer no topo do Dashboard, à direita (acima de "Aulas por semana") */
.dbTopo { display: flex; justify-content: space-between; align-items: flex-end; gap: 14px; flex-wrap: wrap; }
.bt.sec.dbParecer { background: var(--sup); color: var(--marca); border: 1.5px solid var(--marca); }
.bt.sec.dbParecer:hover { background: var(--marca-suave); color: var(--marca-esc); }
.bt.sec.dbParecer .ic { width: 18px; height: 18px; }
/* c. faixa verde centralizada no cartão inteiro */
.dbTile { position: relative; }
.dbTile.comPe { flex-wrap: wrap; }
.dbTile .dbMiolo { min-width: 0; }
.dbPe { flex: 1 1 100%; display: flex; justify-content: center; margin-top: -4px; }
.dbTile .dbNota:has(.dbOt) { margin-left: 0; }
/* e. botão no canto do cartão Espaços de aula */
.dbCanto { position: absolute; top: 12px; right: 12px; display: inline-flex; align-items: center; gap: 5px; height: 30px; min-width: 30px; padding: 0 9px; border-radius: 9px; cursor: pointer; font-weight: 700; font-size: 13px; border: 1px solid; background: var(--sup); }
.dbCanto .ic { width: 16px; height: 16px; }
.dbCanto.er { color: var(--er); border-color: #F0B4AE; background: var(--erF); }
.dbCanto.ok { color: var(--ok); border-color: #A9DCC0; background: var(--okF); }
.dbCanto:hover { filter: brightness(.96); box-shadow: 0 1px 4px rgba(0,0,0,.12); }
/* b. disponibilidade por turno */
.vcPilha { display: flex; flex-direction: column-reverse; gap: 2px; background: transparent !important; width: 30px !important; }
.vcS { display: flex; align-items: center; justify-content: center; min-height: 0; overflow: hidden; }
.vcS.vcTopo { border-radius: 4px 4px 0 0; }
.vcS em { font-style: normal; font-size: 11px; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1; }
.vcS.vcD { background: #D9861C; } .vcS.vcD em { color: #3B2200; }
.vcS.vcN { background: #1F5FA8; } .vcS.vcN em { color: #fff; }
.vcLeg { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; margin-top: 10px; font-size: 12.5px; color: #344054; }
.vcLeg span { display: inline-flex; align-items: center; gap: 6px; }
.vcLeg i { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.vcLeg i.vcD { background: #D9861C; } .vcLeg i.vcN { background: #1F5FA8; }
.vcLeg small { color: var(--cinza); font-size: 12px; }
.vcLeg .vcObs { color: var(--cinza); font-size: 12px; margin-left: auto; }
.vcC:hover .vcPilha { filter: brightness(1.1); }
/* d. eixo das barras deitadas do tamanho do maior nome */
@supports (grid-template-columns: subgrid) {
  .hb { display: grid; grid-template-columns: minmax(0, max-content) minmax(120px, 1fr); column-gap: 12px; row-gap: 8px; }
  .hbL { grid-column: 1 / -1; grid-template-columns: subgrid; gap: 0 12px; }
  .hbR { max-width: 300px; }
}
@supports not (grid-template-columns: subgrid) { .hbL { grid-template-columns: minmax(130px, 50%) minmax(0, 1fr); } }
/* e. relatório: turmas maiores que as salas */
.cxResumo { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 14px; }
.cxNum { border: 1px solid var(--linha); border-radius: 12px; padding: 12px 14px; display: flex; flex-direction: column; gap: 2px; }
.cxNum b { font-size: 25px; line-height: 1.1; font-variant-numeric: tabular-nums; color: var(--tinta); }
.cxNum span { font-size: 12.5px; color: var(--cinza); line-height: 1.35; }
.cxNum.ok { border-color: #A9DCC0; background: var(--okF); } .cxNum.ok b { color: var(--ok); }
.cxNum.er { border-color: #F0B4AE; background: var(--erF); } .cxNum.er b { color: var(--er); }
.cxNum.av { grid-column: span 2; border-color: #F2D49B; background: #FFF8EA; } .cxNum.av b { color: #A15C07; }
.cxLeg { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 12px; color: #344054; margin: 0 0 12px; }
.cxLeg span { display: inline-flex; align-items: center; gap: 6px; }
.cxLeg i { display: inline-block; width: 14px; height: 10px; border-radius: 3px; }
.cxLeg .lgAss { background: #8A94A6; } .cxLeg .lgReal { background: #B9DCC9; } .cxLeg .lgAl { width: 3px; height: 14px; border-radius: 2px; background: var(--er); }
.cxLista { display: flex; flex-direction: column; gap: 10px; }
.cxItem { border: 1px solid var(--linha); border-left: 5px solid var(--er); border-radius: 12px; padding: 12px 14px; display: flex; flex-direction: column; gap: 10px; }
.cxItem.ok { border-left-color: var(--ok); }
.cxTopo { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.cxTopo b { display: block; font-size: 13.5px; color: var(--tinta); }
.cxTopo > div span { display: block; font-size: 12px; color: var(--cinza); margin-top: 2px; line-height: 1.4; }
.cxSit { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; padding: 4px 10px; border-radius: 999px; white-space: nowrap; }
.cxSit .ic { width: 14px; height: 14px; }
.cxSit.ok { background: var(--okF); color: var(--ok); } .cxSit.er { background: var(--erF); color: var(--er); } .cxSit.av { background: #FFF3DC; color: #A15C07; }
.cxNums { display: grid; grid-template-columns: 140px minmax(0, 1.4fr) minmax(0, 1fr); gap: 10px; }
.cxNums > span { font-size: 12.5px; color: #344054; line-height: 1.35; }
.cxNums small { display: block; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .3px; color: var(--cinza); margin-bottom: 2px; }
.cxNums b { font-size: 18px; color: var(--tinta); font-variant-numeric: tabular-nums; margin-right: 3px; }
.cxPrecisa b { color: var(--er); }
.cxItem.ok .cxPrecisa b { color: var(--tinta); }
.cxFalta { font-style: normal; font-size: 11.5px; font-weight: 700; color: var(--er); background: var(--erF); border-radius: 6px; padding: 1px 6px; margin-left: 4px; white-space: nowrap; }
.cxBarra { position: relative; height: 12px; border-radius: 4px; background: #F2F4F7; }
.cxBarra span { position: absolute; top: 0; bottom: 0; left: 0; border-radius: 4px; }
.cxReal { background: #B9DCC9; }
.cxAss { background: #8A94A6; height: 6px; top: 3px !important; bottom: auto !important; }
.cxAl { width: 3px; left: auto; margin-left: -1.5px; top: -4px !important; bottom: -4px !important; background: var(--er); border-radius: 2px !important; }
.cxAl.ok { background: var(--ok); }
.cxNota { display: flex; gap: 8px; align-items: flex-start; font-size: 12px; color: var(--cinza); margin: 14px 0 0; line-height: 1.45; }
.cxNota .ic { width: 15px; height: 15px; flex: 0 0 auto; margin-top: 1px; }
.cxVazio { display: flex; gap: 12px; align-items: flex-start; padding: 16px; border-radius: 12px; background: var(--okF); color: var(--ok); }
.cxVazio .ic { width: 22px; height: 22px; flex: 0 0 auto; }
.cxVazio b { color: var(--tinta); } .cxVazio p { margin: 4px 0 0; color: #344054; font-size: 13px; }
@media (max-width: 760px) { .cxResumo { grid-template-columns: 1fr; } .cxNum.av { grid-column: auto; } .cxNums { grid-template-columns: 1fr; } .cxTopo { flex-direction: column; } }
.dbCab > div:first-child { flex: 1 1 320px; min-width: 0; }
.dbTile .dbDest { white-space: nowrap; }
.dbTile:has(.dbCanto) .dbRot { padding-right: 52px; }
.cxCaminho { display: flex; gap: 8px; align-items: flex-start; font-size: 12.5px; color: #344054; background: #F6F8FB; border-radius: 8px; padding: 8px 10px; line-height: 1.4; }
.cxCaminho .ic { width: 15px; height: 15px; color: var(--marca); flex: 0 0 auto; margin-top: 2px; }

/* ---------- v48 ---------- */
/* Resolução: legenda abaixo da faixa de fundo dos quadros */
.rsQuadros2 + .rsLeg { margin-top: 30px; }
.rs.hr .rsQuadros2 + .rsLeg { margin-top: 36px; }
/* Aulas por semana: não presenciais clicável */
button.dbDest { border: 0; font: inherit; cursor: pointer; }
.dbDest.dbClic .ic:last-child { width: 14px; height: 14px; margin-left: -2px; opacity: .7; }
.dbDest.dbClic:hover { background: #E7EBF1; color: var(--marca-esc); box-shadow: inset 0 0 0 1px var(--marca); }
.dbDest.dbClic:hover .ic { color: var(--marca); }
/* relatório NEAD */
.npBarra { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.npRes { display: flex; flex-wrap: wrap; gap: 8px; }
.npRes span { display: inline-flex; align-items: baseline; gap: 5px; border: 1px solid var(--linha); border-radius: 9px; padding: 5px 10px; font-size: 12px; color: var(--cinza); }
.npRes b { font-size: 15.5px; color: var(--tinta); font-variant-numeric: tabular-nums; }
.npAcoes { display: flex; gap: 8px; flex-wrap: wrap; }
.npRolo { overflow-x: auto; }
.npTab { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.npTab th { position: sticky; top: -16px; background: #F3F5F8; color: #344054; font-size: 11.5px; font-weight: 700; text-align: left; padding: 7px 8px; border-bottom: 1px solid var(--linha); z-index: 1; }
.npTab td { padding: 8px; border-bottom: 1px solid var(--linha2); vertical-align: top; line-height: 1.4; color: #344054; }
.npTab td b { color: var(--tinta); }
.npTab td small { display: block; color: var(--cinza); font-size: 11.5px; }
.npTab .nm { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.npTab tbody tr:hover td { background: #FAFBFC; }
.npSel { display: inline-block; margin: 4px 6px 0 0; font-size: 11px; font-weight: 700; border-radius: 6px; padding: 1px 6px; background: var(--marca-suave); color: var(--marca-esc); }
.npSel.j { background: #F3F5F8; color: #4A5363; }
.npTab td:nth-child(2) b { display: block; }
/* Carga semanal: filtro e excedente listrado */
.rkSeg button { display: inline-flex; align-items: center; gap: 6px; }
.rkSeg button i { display: inline-block; width: 12px; height: 9px; border-radius: 2px; }
.rkLeg i.lgX, .rkSeg i.lgX { background: repeating-linear-gradient(135deg, #2a78d6 0 3px, #A9CBF2 3px 6px); width: 18px; height: 10px; }
.rkExc { position: absolute; top: 0; bottom: 0; border-radius: 0 4px 4px 0; cursor: help;
  background: repeating-linear-gradient(135deg, rgba(255,255,255,.62) 0 3px, transparent 3px 6px); box-shadow: inset 0 0 0 1px rgba(255,255,255,.35); }
.rkExc:hover { background: repeating-linear-gradient(135deg, rgba(255,255,255,.8) 0 3px, transparent 3px 6px); outline: 2px solid #B42318; outline-offset: 1px; }
.npTab th small { font-weight: 400; color: var(--cinza); }
.npTab .npDisc { min-width: 190px; }
.npTab .npCus { min-width: 230px; }
.npCu { display: block; white-space: nowrap; }
.npCu em { font-style: normal; font-size: 11.5px; font-weight: 700; color: var(--cinza); background: #F3F5F8; border-radius: 5px; padding: 0 5px; margin-left: 4px; }
.npTab .npDoc { min-width: 170px; }
.npTab .npCus { min-width: 190px; }
.npCu { white-space: normal; padding: 1px 0; }
.npTab .npDisc { min-width: 160px; }
.npTab .npDoc { min-width: 140px; }
.npTab td, .npTab th { padding: 8px 6px; }

/* ---------- v49 · Semana × salas ---------- */
.swCard .dbCab { margin-bottom: 10px; }
.swFil label { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--cinza); }
.swFil select { height: 34px; border: 1px solid var(--linha); border-radius: 9px; padding: 0 10px; font: inherit; font-size: 13px; color: var(--tinta); background: var(--sup); max-width: 360px; }
.swResumo { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; }
.swAl { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; padding: 6px 11px; border-radius: 9px; background: #F3F5F8; color: #344054; }
.swAl .ic { width: 15px; height: 15px; }
.swAl.er { background: var(--erF); color: #7A1A12; } .swAl.er .ic { color: var(--er); }
.swAl.ok { background: var(--okF); color: #0E5132; } .swAl.ok .ic { color: var(--ok); }
.sw { position: relative; height: 330px; padding-left: 40px; overflow-x: auto; overflow-y: hidden; }
.swGs { position: absolute; left: 40px; right: 0; top: 22px; bottom: 62px; pointer-events: none; }
.swG { position: absolute; left: 0; right: 0; height: 0; border-top: 1px solid var(--linha2); }
.swG span { position: absolute; left: -40px; width: 34px; text-align: right; top: -8px; font-size: 11.5px; color: var(--cinza2); font-variant-numeric: tabular-nums; }
.swDias { position: absolute; left: 40px; right: 0; top: 22px; bottom: 0; display: flex; gap: 10px; min-width: 860px; }
.swDia { display: flex; flex-direction: column; min-width: 0; border-radius: 10px; position: relative; }
.swDia + .swDia::before { content: ''; position: absolute; left: -6px; top: -14px; bottom: 4px; width: 1px; background: #D3D9E2; box-shadow: 1px 0 3px rgba(20, 26, 36, .10); }
.swDia.temEst { background: linear-gradient(to bottom, rgba(208, 59, 59, .045), rgba(208, 59, 59, 0) 70%); }
.swCs { flex: 1; display: flex; min-height: 0; }
.swC { flex: 1; display: flex; flex-direction: column; align-items: center; min-width: 0; }
.swA { position: relative; flex: 1; width: 100%; }
.swB { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: min(18px, 64%); border-radius: 4px 4px 0 0; overflow: hidden; display: flex; flex-direction: column; }
.swB.swD { background: #D9861C; } .swB.swN { background: #1F5FA8; }
.swX { display: block; width: 100%; flex: 0 0 auto; background: repeating-linear-gradient(135deg, #d03b3b 0 3px, #F2A7A7 3px 6px); border-bottom: 2px solid var(--sup); }
.swCap { position: absolute; left: 50%; transform: translateX(-50%); width: min(28px, 92%); height: 0; border-top: 2px solid #1f2937; z-index: 2; }
.swCap::before, .swCap::after { content: ''; position: absolute; top: -5px; width: 2px; height: 8px; background: #1f2937; }
.swCap::before { left: 0; } .swCap::after { right: 0; }
.swV { position: absolute; left: 50%; transform: translateX(-50%); font-size: 11.5px; font-weight: 700; color: var(--tinta); font-variant-numeric: tabular-nums; white-space: nowrap; line-height: 1.05; text-align: center; }
.swV small { display: block; font-size: 10.5px; color: var(--er); }
.swV.er { color: var(--er); }
.swC:hover .swB { filter: brightness(1.12); }
.swC:hover .swR { color: var(--marca); font-weight: 700; }
.swR { height: 18px; display: flex; align-items: flex-end; font-size: 10.5px; color: var(--cinza); white-space: nowrap; }
.swRot { height: 44px; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; padding-top: 4px; border-top: 1px solid var(--linha); margin-top: 2px; line-height: 1.2; }
.swRot b { font-size: 12.5px; color: var(--tinta); }
.swRot span { font-size: 11px; color: var(--cinza); font-variant-numeric: tabular-nums; }
.swRot em { font-style: normal; font-size: 10.5px; font-weight: 700; color: var(--er); display: inline-flex; align-items: center; gap: 3px; }
.swRot em.ok { color: var(--ok); font-weight: 600; }
.swRot em .ic { width: 11px; height: 11px; }
.swLeg { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; margin-top: 12px; font-size: 12.5px; color: #344054; }
.swLeg span { display: inline-flex; align-items: center; gap: 6px; }
.swLeg i { display: inline-block; width: 12px; height: 12px; border-radius: 3px; }
.swLeg i.swD { background: #D9861C; } .swLeg i.swN { background: #1F5FA8; }
.swLeg i.swCapL { width: 18px; height: 0; border-top: 2px solid #1f2937; border-radius: 0; }
.swLeg i.swXL { background: repeating-linear-gradient(135deg, #d03b3b 0 3px, #F2A7A7 3px 6px); }
.swLeg .vcObs { margin-left: auto; color: var(--cinza); font-size: 12px; }
.swDet { margin-top: 14px; border-top: 1px solid var(--linha2); padding-top: 10px; }
.swDet summary { cursor: pointer; display: inline-flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 600; color: var(--marca); list-style: none; }
.swDet summary::-webkit-details-marker { display: none; }
.swDet summary .ic { width: 15px; height: 15px; }
.swMatWrap { overflow-x: auto; margin-top: 10px; }
.swMat { border-collapse: separate; border-spacing: 3px; width: 100%; font-variant-numeric: tabular-nums; }
.swMat th { font-size: 12px; color: var(--cinza); font-weight: 700; padding: 4px 8px; text-align: center; white-space: nowrap; }
.swMat tbody th { text-align: right; }
.swMat td { text-align: center; padding: 7px 6px; border-radius: 6px; font-size: 12.5px; cursor: pointer; }
.swMat td b { font-size: 12.5px; } .swMat td span { color: inherit; opacity: .75; font-size: 12px; }
.swMat td em { font-style: normal; font-weight: 700; margin-left: 5px; font-size: 12px; }
.swMat td.nada { cursor: default; color: var(--cinza2); background: #FAFBFC; }
.swMat td.n0 { background: #F7F8FA; color: var(--cinza2); }
.swMat td.n1 { background: #E6F0FB; color: #1d3f6b; } .swMat td.n2 { background: #C4DBF5; color: #173a63; }
.swMat td.n3 { background: #7FAEE6; color: #0b2442; } .swMat td.n4 { background: #2a6fc4; color: #fff; }
.swMat td.er { background: #d03b3b; color: #fff; box-shadow: inset 0 0 0 2px #8f1f1f; }
.swMat td:hover { outline: 2px solid var(--marca); outline-offset: 1px; }
.slGr { margin-bottom: 18px; }
.slCab { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 8px 12px; border-radius: 10px; background: #F3F5F8; margin-bottom: 6px; }
.slCab b { font-size: 13px; color: var(--tinta); } .slCab span { font-size: 12.5px; color: var(--cinza); }
.slCab em { margin-left: auto; font-style: normal; font-weight: 700; font-size: 12px; display: inline-flex; align-items: center; gap: 5px; color: var(--ok); }
.slCab em .ic { width: 14px; height: 14px; }
.slCab.er { background: var(--erF); } .slCab.er em { color: var(--er); }
.slCab em.av { color: #A15C07; }
.cxVazio.av { background: #FFF8EA; color: #A15C07; }
@media (max-width: 700px) { .swLeg .vcObs { margin-left: 0; } }
.swGs { bottom: 64px; z-index: 1; }
.swRef { position: absolute; left: 0; right: 0; height: 0; border-top: 2px dashed #1f2937; }
.swRef b { position: absolute; right: 0; top: -20px; font-size: 11.5px; color: #1f2937; background: rgba(255,255,255,.85); padding: 1px 6px; border-radius: 5px; }
.swLeg i.swCapL { border-top-style: dashed; }
.swR { font-size: 11px; }
.swGs { z-index: auto; }
.swRef { z-index: 2; }
.swV { z-index: 3; background: rgba(255,255,255,.88); padding: 0 2px; border-radius: 3px; }
.sw { position: static; height: auto; padding: 0; overflow-x: auto; overflow-y: hidden; }
.swIn { position: relative; height: 330px; padding-left: 40px; min-width: 900px; }
.swDias { min-width: 0; }
.swAl { display: block; line-height: 1.45; }
.swAl .ic { vertical-align: -3px; margin-right: 5px; }
.swFil label { white-space: nowrap; }
@media (max-width: 700px) { .swFil, .swFil label { width: 100%; } .swFil select { flex: 1; min-width: 0; } }
#dbSwFil { min-width: 0; max-width: 100%; }

/* ---------- v50 · ÁREA DO PROFESSOR ---------- */
.loginEmail { margin-top: 18px; text-align: left; border-top: 1px solid var(--linha2); padding-top: 14px; }
.loginEmail summary { cursor: pointer; font-size: 13px; color: var(--marca); font-weight: 600; text-align: center; list-style: none; }
.loginEmail summary::-webkit-details-marker { display: none; }
.loginEmail form { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
.loginEmail input { flex: 1 1 200px; min-width: 0; height: 42px; border: 1px solid #C3CAD5; border-radius: 10px; padding: 0 12px; font: inherit; }
.loginEmail .caixaAviso { margin-top: 10px; text-align: left; }
body.modoProf { background: var(--fundo); }
.apFundo { min-height: 100vh; min-height: 100dvh; background: var(--fundo); }
.ap { --apW: 780px; padding-bottom: 96px; }
.apTopo { position: sticky; top: 0; z-index: 20; background: var(--marca); color: #fff; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px max(16px, calc((100% - var(--apW)) / 2)); min-height: 58px; }
.apMarca { display: flex; align-items: center; gap: 10px; min-width: 0; }
.apMarca img, .apMarca svg { height: 34px; width: auto; max-width: 90px; }
.apMarca .lgTxt, .apMarca > span:first-child { color: #fff; }
.apMarca b { display: block; font-size: 16px; line-height: 1.15; }
.apMarca span { display: block; font-size: 12px; opacity: .85; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.apSair { display: inline-flex; align-items: center; gap: 6px; background: rgba(255,255,255,.14); color: #fff; border: 1px solid rgba(255,255,255,.28); border-radius: 10px; height: 36px; padding: 0 12px; font: inherit; font-size: 14px; cursor: pointer; }
.apSair .ic { width: 16px; height: 16px; }
.apCorpo { max-width: var(--apW); margin: 0 auto; padding: 18px 16px 24px; display: flex; flex-direction: column; gap: 14px; }
.apOla { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; flex-wrap: wrap; }
.apOla h1 { font-size: 26px; margin: 0; }
.apOla p { margin: 2px 0 0; color: var(--cinza); font-size: 14px; }
.apSit { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 700; border-radius: 999px; padding: 5px 12px; }
.apSit .ic { width: 15px; height: 15px; }
.apSit.ok { background: var(--okF); color: var(--ok); } .apSit.fe { background: #EEF0F3; color: #4A5363; } .apSit.av { background: #FFF3DC; color: #8a5300; }
.apRecado, .apOk { display: flex; gap: 10px; align-items: flex-start; border-radius: 14px; padding: 12px 14px; font-size: 14.5px; line-height: 1.45; }
.apRecado { background: var(--marca-suave); color: var(--marca-esc); } .apOk { background: var(--okF); color: #0E5132; }
.apRecado p, .apOk p { margin: 0; }
.apRecado .ic, .apOk .ic { width: 19px; height: 19px; flex: 0 0 auto; margin-top: 1px; }
.apCard { background: var(--sup); border: 1px solid var(--linha); border-radius: 16px; padding: 16px; display: flex; flex-direction: column; gap: 10px; }
.apCard h2 { margin: 0; font-size: 17px; display: flex; align-items: center; gap: 8px; }
.apCard h2 .ic { width: 19px; height: 19px; color: var(--marca); }
.apCard h2 small { font-size: 12px; font-weight: 700; background: #F3F5F8; color: var(--cinza); border-radius: 999px; padding: 1px 8px; }
.apMeta { margin: 0; color: var(--cinza); font-size: 14px; line-height: 1.45; }
.apNota { display: flex; gap: 6px; font-size: 12.5px; } .apNota .ic { width: 14px; height: 14px; flex: 0 0 auto; margin-top: 2px; }
.apDisc { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.apDisc li { display: flex; flex-direction: column; gap: 3px; padding: 10px 0; border-top: 1px solid var(--linha2); }
.apDisc li:first-child { border-top: 0; padding-top: 2px; }
.apDisc b { font-size: 15px; color: var(--tinta); } .apDisc li > span { font-size: 13px; color: var(--cinza); }
.apTags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 2px; }
.apTags i { font-style: normal; display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 600; border-radius: 7px; padding: 2px 8px; background: #F3F5F8; color: #4A5363; }
.apTags i .ic { width: 13px; height: 13px; }
.apTags i.n { background: #DDEBFB; color: #1F5FA8; } .apTags i.d { background: #FFEFD4; color: #8a5300; } .apTags i.av { background: var(--marca-suave); color: var(--marca-esc); }
.apMeds { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 10px; }
.apMed { border-radius: 12px; padding: 10px 12px; border: 1px solid var(--linha); }
.apMed.ok { background: #F2FAF5; border-color: #BFE3CD; } .apMed.av { background: #FFF9EC; border-color: #F2D49B; } .apMed.er { background: #FDF1F0; border-color: #F0B4AE; }
.apMedT { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 13px; color: #344054; }
.apMedT .ic { width: 15px; height: 15px; } .apMedT b { font-size: 14px; color: var(--tinta); }
.apMedB { position: relative; height: 8px; border-radius: 4px; background: rgba(0,0,0,.07); margin: 8px 0 6px; overflow: visible; }
.apMedB i { display: block; height: 100%; border-radius: 4px; background: var(--ok); }
.apMed.av .apMedB i { background: #D08A00; } .apMed.er .apMedB i { background: var(--er); }
.apMedB em { position: absolute; top: -3px; bottom: -3px; width: 2px; background: #1f2937; opacity: .45; }
.apMed p { margin: 0; font-size: 12.5px; color: #344054; line-height: 1.4; }
.apGradeRolo { overflow-x: auto; margin: 0 -4px; }
.apGrade { width: 100%; border-collapse: separate; border-spacing: 4px; table-layout: fixed; min-width: 320px; }
.apGrade thead th { font-size: 12.5px; color: var(--cinza); font-weight: 700; padding: 2px 0; }
.apGrade thead th:first-child { width: 62px; }
.apTurno th { text-align: left; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: var(--cinza2); padding: 8px 2px 0; }
.apTurno .ic { width: 13px; height: 13px; vertical-align: -2px; margin-right: 5px; }
.apHora { text-align: right; font-size: 13px; font-weight: 700; color: var(--tinta); padding-right: 4px; line-height: 1.1; white-space: nowrap; }
.apHora small { display: block; font-size: 10.5px; font-weight: 500; color: var(--cinza2); }
.apGrade td { padding: 0; }
.apCel { width: 100%; height: 46px; border-radius: 10px; border: 1.5px solid #CBD2DC; background: var(--sup); cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; color: #fff; transition: background .12s, border-color .12s, transform .08s; padding: 0; }
.apCel:active { transform: scale(.94); }
.apCel .ic { width: 20px; height: 20px; }
.apCel.on { background: var(--ok); border-color: var(--ok); }
.apCel.aula { background: #1f2937; border-color: #1f2937; cursor: default; }
.apCel.aula .ic { width: 14px; height: 14px; } .apCel.aula small { font-size: 10px; font-weight: 700; letter-spacing: .3px; }
.apCel:disabled:not(.aula) { cursor: default; opacity: .8; }
.apCel:not(:disabled):hover { border-color: var(--ok); }
.apNao { background: repeating-linear-gradient(135deg, transparent 0 4px, #EEF0F3 4px 5px); border-radius: 10px; }
.apAtalhos { display: flex; gap: 8px; flex-wrap: wrap; }
.apAt { border: 1px solid var(--linha); background: #F6F8FB; color: #344054; border-radius: 9px; padding: 7px 12px; font: inherit; font-size: 13.5px; cursor: pointer; }
.apAt:hover { border-color: var(--marca); color: var(--marca); }
.apObs { width: 100%; min-height: 84px; border: 1px solid #C3CAD5; border-radius: 12px; padding: 10px 12px; font: inherit; font-size: 15px; resize: vertical; }
.apHor { display: flex; flex-direction: column; gap: 10px; }
.apHorDia > b { display: block; font-size: 13px; text-transform: uppercase; letter-spacing: .4px; color: var(--cinza); margin-bottom: 4px; }
.apHorIt { display: flex; gap: 12px; align-items: flex-start; padding: 8px 10px; border-radius: 10px; background: #F6F8FB; margin-bottom: 6px; }
.apHorIt > span { flex: 0 0 auto; font-size: 13px; font-weight: 700; color: var(--marca); min-width: 92px; font-variant-numeric: tabular-nums; }
.apHorIt b { display: block; font-size: 14.5px; } .apHorIt small { display: block; font-size: 12.5px; color: var(--cinza); }
.apRodape { text-align: center; color: var(--cinza2); font-size: 12.5px; margin: 6px 0 0; }
.apBarra { position: fixed; left: 0; right: 0; bottom: 0; z-index: 30; background: var(--sup); border-top: 1px solid var(--linha); box-shadow: 0 -6px 20px rgba(11,20,40,.08); display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px max(16px, calc((100% - var(--apW)) / 2)); padding-bottom: max(10px, env(safe-area-inset-bottom)); }
.apBarra > div { font-size: 14px; color: #344054; line-height: 1.25; }
.apBarra b { font-size: 18px; color: var(--tinta); }
.apMudou { display: block; font-size: 12px; color: var(--cinza); }
.apSalvar { min-height: 46px; padding: 0 20px; font-size: 15.5px; }
.ap.apPrevia .apTopo { position: static; }
/* prévia aberta pela Coordenação */
.apPrevFundo { position: fixed; inset: 0; z-index: 90; background: var(--fundo); overflow: auto; }
.apPrevBarra { position: sticky; top: 0; z-index: 40; display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 10px 16px; background: #FFF3DC; color: #6B3F00; font-size: 14px; border-bottom: 1px solid #F2D49B; }
.apPrevBarra .ic { width: 16px; height: 16px; vertical-align: -3px; margin-right: 6px; }
.apPrevFundo .apFundo { min-height: 0; }
/* Configurações › Área do Professor */
.pfPassos { margin: 0; padding: 14px 14px 14px 34px; background: #F6F8FB; border-radius: 12px; display: flex; flex-direction: column; gap: 6px; font-size: 12.5px; line-height: 1.45; }
.pfRegras { display: flex; flex-direction: column; gap: 12px; }
.pfRegras input[type=date], .pfRegras textarea { height: 40px; border: 1px solid #C3CAD5; border-radius: 10px; padding: 0 10px; font: inherit; }
.pfRegras textarea { height: auto; padding: 8px 10px; resize: vertical; }
.pfBloco { border-top: 1px solid var(--linha); padding-top: 16px; display: flex; flex-direction: column; gap: 10px; }
.pfBloco h3 { margin: 0; font-size: 14.5px; display: flex; align-items: center; gap: 8px; } .pfBloco h3 .ic { width: 17px; height: 17px; color: var(--marca); }
.pfLink { flex: 1 1 320px; min-width: 0; height: 40px; border: 1px solid #C3CAD5; border-radius: 10px; padding: 0 12px; font: inherit; background: #F6F8FB; color: var(--marca-esc); font-weight: 600; }
.pfBloco select { height: 38px; border: 1px solid #C3CAD5; border-radius: 9px; padding: 0 8px; font: inherit; max-width: 100%; }
.pfCont .npRes { align-items: center; }
.pfCont .npRes .pfOk b { color: var(--ok); } .pfCont .npRes .pfFalta b { color: var(--er); } .pfCont .npRes .pfSem b { color: #A15C07; }
.pfBarra { flex: 1 1 160px; height: 10px; border-radius: 5px; background: #FDE3E0; overflow: hidden; min-width: 120px; }
.pfBarra i { display: block; height: 100%; background: var(--ok); }
.pfFerr { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.pfMsgSel { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--cinza); }
.pfRolo { overflow-x: auto; }
.pfTab { width: 100%; border-collapse: collapse; font-size: 13px; }
.pfTab th { text-align: left; font-size: 12px; color: var(--cinza); padding: 8px; border-bottom: 1px solid var(--linha); background: #F6F8FB; white-space: nowrap; }
.pfTab td { padding: 8px; border-bottom: 1px solid var(--linha2); vertical-align: top; }
.pfTab td small { display: block; color: var(--cinza); font-size: 12px; margin-top: 3px; }
.pfNome { border: 0; background: none; padding: 0; font: inherit; font-weight: 700; color: var(--tinta); cursor: pointer; text-align: left; }
.pfNome:hover { color: var(--marca); text-decoration: underline; }
.pfTel { width: 150px; height: 34px; border: 1px solid #C3CAD5; border-radius: 8px; padding: 0 8px; font: inherit; font-size: 12.5px; }
.pill.pfPend { background: var(--erF); color: var(--er); }
.pfObs { display: flex !important; gap: 4px; align-items: flex-start; color: #6B3F00 !important; background: #FFF8EA; border-radius: 6px; padding: 3px 6px; max-width: 260px; }
.pfObs .ic { width: 12px; height: 12px; flex: 0 0 auto; margin-top: 2px; }
.pfBts { display: flex; gap: 6px; flex-wrap: wrap; }
.pfBt { display: inline-flex; align-items: center; gap: 5px; height: 32px; padding: 0 10px; border-radius: 8px; border: 1px solid #C3CAD5; background: var(--sup); font: inherit; font-size: 12.5px; cursor: pointer; color: #344054; }
.pfBt .ic { width: 14px; height: 14px; }
.pfBt:hover:not(:disabled) { border-color: var(--marca); color: var(--marca); }
.pfBt.wa:hover { border-color: #1a8f4c; color: #1a8f4c; }
.pfBt:disabled { opacity: .45; cursor: default; }
.pfEnv { color: var(--ok) !important; }
/* Configurações › Mensagens */
.mgWrap { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 16px; }
.mgNav { display: flex; flex-direction: column; gap: 6px; }
.mgIt { text-align: left; border: 1px solid var(--linha); background: var(--sup); border-radius: 10px; padding: 9px 11px; cursor: pointer; font: inherit; display: flex; flex-direction: column; gap: 2px; }
.mgIt b { font-size: 12.5px; color: var(--tinta); } .mgIt span { font-size: 12px; color: var(--cinza); }
.mgIt.on { border-color: var(--marca); background: var(--marca-suave); box-shadow: inset 3px 0 0 var(--marca); }
.mgNova { display: inline-flex; align-items: center; gap: 6px; justify-content: center; border: 1px dashed #AEB7C4; background: transparent; border-radius: 10px; padding: 9px; cursor: pointer; font: inherit; font-size: 13px; color: var(--marca); }
.mgNova .ic { width: 15px; height: 15px; }
.mgCols { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 16px; }
.mgEsq { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.mgEsq input[type=text], .mgTexto { border: 1px solid #C3CAD5; border-radius: 10px; padding: 8px 10px; font: inherit; font-size: 12.5px; width: 100%; }
.mgEsq input[type=text] { height: 40px; }
.mgTexto { line-height: 1.5; resize: vertical; min-height: 260px; }
.mgCampos { display: flex; flex-wrap: wrap; gap: 6px; }
.mgCampo { border: 1px solid #C9D7EE; background: var(--marca-suave); color: var(--marca-esc); border-radius: 7px; padding: 3px 8px; font: 600 12.5px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; cursor: pointer; }
.mgCampo:hover { border-color: var(--marca); }
.mgDir { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.mgPrevCab { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.mgPrevCab select { height: 34px; border: 1px solid #C3CAD5; border-radius: 8px; font: inherit; font-size: 12.5px; max-width: 240px; }
.mgPrevCx { border: 1px solid var(--linha); border-radius: 14px; padding: 12px 14px; background: #F6F8FB; display: flex; flex-direction: column; gap: 4px; }
.mgPrevCx small { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: var(--cinza2); }
.mgPrevA { font-weight: 700; font-size: 12.5px; margin-bottom: 8px; }
.mgPrev { white-space: pre-wrap; font-size: 12.5px; line-height: 1.5; color: #1f2937; background: var(--sup); border-radius: 10px; padding: 12px; border: 1px solid var(--linha2); max-height: 520px; overflow: auto; }
@media (max-width: 980px) { .mgWrap, .mgCols { grid-template-columns: 1fr; } .mgNav { flex-direction: row; flex-wrap: wrap; } .mgIt { flex: 1 1 200px; } }
@media (max-width: 560px) { .apOla h1 { font-size: 20px; } .apCel { height: 42px; } .apGrade { border-spacing: 3px; } .apGrade thead th:first-child { width: 50px; } .apHora { font-size: 12px; } .apSalvar { padding: 0 14px; } .apSair span { display: none; } }
.apLogo { background: #fff; border-radius: 9px; padding: 4px 7px; display: inline-flex; align-items: center; } .apLogo img, .apLogo svg { height: 28px !important; }
.apSalvar { white-space: nowrap; } @media (max-width: 380px) { .apSalvar { font-size: 14px; padding: 0 12px; } .apBarra > div { font-size: 13px; } }
.mgWrap { grid-template-columns: 1fr; }
.mgNav { flex-direction: row; flex-wrap: wrap; }
.mgIt { flex: 0 1 230px; }
.mgNova { flex: 0 0 auto; padding: 9px 14px; }
.mgPrev { overflow-wrap: anywhere; }
.pfTab .pill { white-space: nowrap; }
.pfTab td:nth-child(3) { min-width: 150px; }
.mgEmo { border: 1px solid var(--linha); background: var(--sup); border-radius: 8px; padding: 3px 7px; font-size: 14.5px; cursor: pointer; line-height: 1.2; }
.mgEmo:hover { border-color: var(--marca); }
.mgFmt { font-size: 12.5px; min-width: 32px; color: var(--marca-esc); }
.mgPrevCx.whats { background: #E9E2D7; background-image: radial-gradient(rgba(0,0,0,.035) 1px, transparent 1px); background-size: 14px 14px; }
.mgPrevCx.whats .soEmail, .mgPrevCx.whats .mgPrevA { display: none; }
.mgPrevCx.whats .mgPrev { background: #DCF8C6; border: 0; border-radius: 10px 0 10px 10px; box-shadow: 0 1px 1px rgba(0,0,0,.12); margin-left: 24px; font-size: 13px; }
.mgPrevCab .seg button { padding: 4px 10px; font-size: 12.5px; }
/* v53 · Área do Professor em três botões */
.apAbas { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; position: sticky; top: 58px; z-index: 15; background: var(--fundo); padding: 4px 0 6px; }
.apPrevFundo .apAbas { top: 44px; }
.apAba { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; min-height: 74px; padding: 8px 6px; border-radius: 14px; border: 1.5px solid var(--linha); background: var(--sup); color: #344054; font: inherit; font-size: 13.5px; font-weight: 700; cursor: pointer; text-align: center; line-height: 1.2; box-shadow: 0 1px 2px rgba(0,0,0,.04); }
.apAba .ic { width: 24px; height: 24px; color: var(--marca); }
.apAba small { font-size: 11px; background: #F3F5F8; color: var(--cinza); border-radius: 999px; padding: 0 6px; font-weight: 700; }
.apAba.on { background: var(--marca); border-color: var(--marca); color: #fff; box-shadow: 0 4px 12px rgba(11,20,40,.18); }
.apAba.on .ic { color: #fff; } .apAba.on small { background: rgba(255,255,255,.2); color: #fff; }
.apAba:not(.on):hover { border-color: var(--marca); }
.apLegenda { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 12.5px; color: #344054; }
.apLegenda span { display: inline-flex; align-items: center; gap: 6px; }
.apLegenda i { width: 16px; height: 16px; border-radius: 5px; border: 1.5px solid #CBD2DC; background: var(--sup); display: inline-block; }
.apLegenda i.on { background: var(--ok); border-color: var(--ok); } .apLegenda i.aula { background: #1f2937; border-color: #1f2937; }
.apContatos { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; }
.apContato { display: flex; align-items: center; gap: 12px; padding: 14px; border-radius: 14px; border: 1.5px solid var(--linha); text-decoration: none; color: var(--tinta); background: #F6F8FB; }
.apContato .ic { width: 26px; height: 26px; color: var(--marca); flex: 0 0 auto; }
.apContato b { display: block; font-size: 15.5px; } .apContato small { display: block; color: var(--cinza); font-size: 12.5px; overflow-wrap: anywhere; }
.apContato.wa { background: #E9F8EF; border-color: #A8DDBC; } .apContato.wa .ic { color: #1a8f4c; }
.apContato:hover { border-color: var(--marca); }
@media (max-width: 400px) { .apAba { font-size: 12px; min-height: 68px; } .apAba .ic { width: 22px; height: 22px; } }
.pfContato { display: flex; flex-direction: column; gap: 8px; padding: 14px 16px; border: 1px solid var(--linha); border-radius: 14px; }
.pfContato input { height: 40px; border: 1px solid #C3CAD5; border-radius: 10px; padding: 0 10px; font: inherit; }

/* ---------- v54 · sininho, tela do professor e histórico no Mapa Docente ---------- */
.pgLivre.cfgPg { max-width: 1480px; }
.pfEnv { white-space: normal; max-width: 260px; }
.pfTel { width: 140px; }
.apPrevBarra { background: var(--marca-suave); color: var(--marca-esc); border-bottom: 1px solid #C9D7EE; }
.apPrevBarra .linha { gap: 8px; }
.btSino { position: relative; }
.btSino .sinoN { position: absolute; top: 3px; right: 1px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: #E5484D; color: #fff; font-size: 11px; font-weight: 800; display: flex; align-items: center; justify-content: center; box-shadow: 0 0 0 2px var(--marca); }
.btSino.temNovo .ic { animation: balanca 1.2s ease-in-out 2; transform-origin: 50% 10%; }
@keyframes balanca { 0%,100% { transform: rotate(0); } 20% { transform: rotate(14deg); } 40% { transform: rotate(-12deg); } 60% { transform: rotate(8deg); } 80% { transform: rotate(-4deg); } }
.sinoPainel { position: fixed; top: 64px; right: 14px; z-index: 95; width: min(420px, calc(100vw - 20px)); max-height: min(560px, calc(100vh - 90px)); display: flex; flex-direction: column; background: var(--sup); border: 1px solid var(--linha); border-radius: 16px; box-shadow: 0 18px 50px rgba(11,20,40,.22); overflow: hidden; animation: entra .15s ease-out; }
.sinoCab { padding: 14px 16px 10px; border-bottom: 1px solid var(--linha2); display: flex; flex-direction: column; gap: 2px; }
.sinoCab b { font-size: 14.5px; } .sinoCab .meta { font-size: 12px; }
.sinoLista { overflow: auto; flex: 1; padding: 6px; }
.sinoIt { width: 100%; display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; gap: 10px; align-items: start; text-align: left; border: 0; background: transparent; padding: 10px; border-radius: 12px; cursor: pointer; font: inherit; }
.sinoIt:hover { background: #F3F6FB; }
.sinoIt.novo { background: #EEF4FF; }
.sinoIt.novo:hover { background: #E3ECFC; }
.sinoAv { width: 38px; height: 38px; border-radius: 50%; background: var(--marca); color: #fff; font-size: 12.5px; font-weight: 800; display: flex; align-items: center; justify-content: center; }
.sinoIt.novo .sinoAv { box-shadow: 0 0 0 3px #BFD3F7; }
.sinoTx { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.sinoTx b { font-size: 12.5px; color: var(--tinta); } .sinoTx > span { font-size: 12px; color: #475467; line-height: 1.35; }
.sinoTx em { font-style: normal; font-size: 12px; color: #6B3F00; background: #FFF8EA; border-radius: 6px; padding: 3px 6px; display: flex; gap: 4px; margin-top: 3px; }
.sinoTx em .ic { width: 12px; height: 12px; flex: 0 0 auto; margin-top: 2px; }
.sinoQ { font-size: 11.5px; color: var(--cinza2); white-space: nowrap; padding-top: 2px; }
.sinoIt.novo .sinoQ { color: var(--marca); font-weight: 700; }
.sinoVazio { padding: 26px 18px; text-align: center; color: var(--cinza); font-size: 13px; }
.sinoVazio .ic { width: 30px; height: 30px; color: var(--cinza2); }
.sinoRod { border-top: 1px solid var(--linha2); padding: 10px 12px; display: flex; justify-content: center; }
/* nota rica: histórico do professor */
.gsNota.rica { width: 360px; max-width: calc(100vw - 16px); padding: 0; border-radius: 16px; overflow: hidden; box-shadow: 0 16px 44px rgba(11,20,40,.22); border: 1px solid var(--linha); background: var(--sup); }
.hpCarregando { display: flex; align-items: center; gap: 8px; padding: 14px 16px; font-size: 12.5px; color: var(--cinza); }
.giroP { width: 14px; height: 14px; border-radius: 50%; border: 2px solid #D0D7E2; border-top-color: var(--marca); animation: gira .8s linear infinite; }
@keyframes gira { to { transform: rotate(360deg); } }
.hpCab { display: flex; align-items: center; gap: 10px; padding: 14px 16px 12px; background: linear-gradient(135deg, var(--marca), color-mix(in srgb, var(--marca) 70%, #3b82f6)); color: #fff; }
.hpAv { width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,.18); border: 1.5px solid rgba(255,255,255,.4); display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 12.5px; flex: 0 0 auto; }
.hpCab b { display: block; font-size: 13.5px; line-height: 1.2; } .hpCab span { display: block; font-size: 12px; opacity: .85; }
.hpRes { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 16px; border-bottom: 1px solid var(--linha2); }
.hpRes span { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: #475467; background: #F3F5F8; border-radius: 999px; padding: 3px 9px; }
.hpRes span b { color: var(--tinta); }
.hpRes span.ok { background: var(--okF); color: var(--ok); font-weight: 700; } .hpRes span.pend { background: var(--erF); color: var(--er); font-weight: 700; }
.hpRes .ic { width: 13px; height: 13px; }
.hpLinha { list-style: none; margin: 0; padding: 12px 16px 4px; max-height: 300px; overflow: auto; }
.hpLinha li { position: relative; display: flex; gap: 10px; padding-bottom: 12px; }
.hpLinha li:not(:last-child)::before { content: ''; position: absolute; left: 13px; top: 28px; bottom: 0; width: 2px; background: #E4E8EE; }
.hpLinha li > i { flex: 0 0 auto; width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: #F3F5F8; color: var(--cinza); }
.hpLinha li > i .ic { width: 14px; height: 14px; }
.hpLinha li.envio > i { background: var(--okF); color: var(--ok); }
.hpLinha li.sec > i { background: #FFF3DC; color: #A15C07; }
.hpLinha li.msg > i { background: var(--marca-suave); color: var(--marca); }
.hpLinha li.imp > i { background: #EEF0F3; color: #4A5363; }
.hpLinha li b { display: block; font-size: 12.5px; color: var(--tinta); line-height: 1.25; }
.hpLinha li span { display: block; font-size: 11.5px; color: var(--cinza); line-height: 1.35; margin-top: 1px; }
.hpLinha li em { display: block; font-size: 12px; color: #6B3F00; background: #FFF8EA; border-radius: 6px; padding: 4px 7px; margin-top: 4px; font-style: italic; }
.hpMais { margin: 0; padding: 4px 16px 10px; font-size: 12px; color: var(--cinza); }
.hpVer { display: flex; align-items: center; justify-content: center; gap: 6px; width: calc(100% - 24px); margin: 4px 12px 12px; height: 36px; border-radius: 10px; border: 1px solid var(--marca); background: var(--sup); color: var(--marca); font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
.hpVer:hover { background: var(--marca-suave); }
.hpVer .ic { width: 15px; height: 15px; }
.gsNota.rica { pointer-events: auto; z-index: 200; }

/* ---------- v55 · disciplinas, contatos e chat ---------- */
.apAulas { display: flex; flex-direction: column; gap: 3px; margin-top: 4px; font-size: 13.5px; color: #344054; }
.apAulas b { color: var(--tinta); }
.apAvisa { display: flex; flex-direction: column; gap: 8px; border-top: 1px solid var(--linha2); padding-top: 12px; margin-top: 2px; }
.apAvisa > b { font-size: 14.5px; } .apAvisa > span { font-size: 13.5px; color: var(--cinza); margin-top: -6px; }
.apBtsCont { display: flex; gap: 8px; flex-wrap: wrap; }
.apCt { display: inline-flex; align-items: center; gap: 8px; min-height: 42px; padding: 0 14px; border-radius: 12px; border: 1.5px solid var(--linha); background: var(--sup); color: var(--tinta); font: inherit; font-size: 14px; text-decoration: none; cursor: pointer; }
.apCt .ic { width: 20px; height: 20px; flex: 0 0 auto; }
.apCt b { font-weight: 700; } .apCt small { display: block; font-size: 11.5px; color: var(--cinza); font-weight: 500; overflow-wrap: anywhere; }
.apCt > span { display: flex; flex-direction: column; text-align: left; line-height: 1.2; }
.apCt.chat { border-color: var(--marca); color: var(--marca); } .apCt.chat .ic { color: var(--marca); }
.apCt.wa { background: #E9F8EF; border-color: #A8DDBC; } .apCt.wa .ic { color: #1a8f4c; }
.apCt.em .ic { color: var(--marca); }
.apCt.off { opacity: .45; cursor: default; }
.apCt:disabled { opacity: .55; cursor: default; }
.apCt:not(.off):not(:disabled):hover { box-shadow: 0 2px 8px rgba(11,20,40,.10); border-color: var(--marca); }
.apBtsCont.grande { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.apBtsCont.grande .apCt { flex-direction: column; justify-content: center; padding: 12px 8px; min-height: 84px; text-align: center; gap: 6px; }
.apBtsCont.grande .apCt > span { text-align: center; } .apBtsCont.grande .apCt .ic { width: 26px; height: 26px; }
.apPessoas { display: flex; flex-direction: column; gap: 8px; }
.apPessoa { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 12px; border: 1.5px solid var(--linha); background: var(--sup); cursor: pointer; font: inherit; text-align: left; position: relative; }
.apPessoa b { display: block; font-size: 14.5px; } .apPessoa small { display: block; font-size: 12px; color: var(--cinza); }
.apPessoa.on { border-color: var(--marca); background: var(--marca-suave); box-shadow: inset 4px 0 0 var(--marca); }
.apPessoa em { margin-left: auto; font-style: normal; min-width: 22px; height: 22px; border-radius: 999px; background: #E5484D; color: #fff; font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; padding: 0 6px; }
.apPAv { width: 38px; height: 38px; border-radius: 50%; background: var(--marca); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 13px; flex: 0 0 auto; }
.apCanais { display: flex; flex-direction: column; gap: 8px; border-top: 1px solid var(--linha2); padding-top: 12px; }
.apAba { position: relative; }
.apSelo { position: absolute; top: 6px; right: 8px; min-width: 20px; height: 20px; border-radius: 999px; background: #E5484D; color: #fff; font-style: normal; font-size: 11.5px; font-weight: 800; display: flex; align-items: center; justify-content: center; padding: 0 5px; box-shadow: 0 0 0 2px var(--sup); }
.apChat { gap: 8px; }
.apFio { display: flex; flex-direction: column; gap: 8px; max-height: 420px; min-height: 140px; overflow: auto; padding: 12px; border-radius: 12px; background: #EFEAE2; background-image: radial-gradient(rgba(0,0,0,.035) 1px, transparent 1px); background-size: 14px 14px; }
.apMsg { display: flex; } .apMsg.meu { justify-content: flex-end; }
.apBalao { max-width: 82%; background: var(--sup); border-radius: 4px 12px 12px 12px; padding: 7px 10px 5px; font-size: 14.5px; line-height: 1.4; box-shadow: 0 1px 1px rgba(0,0,0,.10); overflow-wrap: anywhere; }
.apMsg.meu .apBalao { background: #DCF8C6; border-radius: 12px 4px 12px 12px; }
.apBalao b { display: block; font-size: 12px; color: var(--marca); margin-bottom: 2px; }
.apBalao small { display: block; text-align: right; font-size: 10.5px; color: #667085; margin-top: 2px; }
.apFioVazio { margin: auto; text-align: center; color: #667085; font-size: 13.5px; max-width: 320px; }
.apFioVazio .ic { width: 28px; height: 28px; color: #98A2B3; }
.apFioVazio p { margin: 6px 0 0; }
.apEscrever { display: flex; gap: 8px; align-items: flex-end; }
.apEscrever textarea { flex: 1; min-width: 0; border: 1.5px solid #C3CAD5; border-radius: 12px; padding: 10px 12px; font: inherit; font-size: 15px; resize: none; max-height: 140px; }
.apEscrever textarea:focus { outline: none; border-color: var(--marca); }
.apEscrever .bt { min-height: 46px; }
@media (max-width: 420px) { .apEscrever .bt span { display: none; } .apBtsCont.grande .apCt small { display: none; } }
/* gaveta de chat da equipe */
.chatGaveta { position: fixed; right: 16px; bottom: 16px; z-index: 96; width: min(420px, calc(100vw - 24px)); height: min(620px, calc(100vh - 90px)); display: flex; flex-direction: column; background: var(--sup); border: 1px solid var(--linha); border-radius: 18px; box-shadow: 0 22px 60px rgba(11,20,40,.28); overflow: hidden; animation: sobe .18s ease-out; }
@keyframes sobe { from { transform: translateY(20px); opacity: .5; } to { transform: none; opacity: 1; } }
.chatCab { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: var(--marca); color: #fff; }
.chatCab b { display: block; font-size: 13.5px; } .chatCab div span { display: block; font-size: 12px; opacity: .85; }
.chatCab .sinoAv { background: rgba(255,255,255,.18); border: 1.5px solid rgba(255,255,255,.4); }
.chatCab .pFechar { margin-left: auto; color: #fff; background: rgba(255,255,255,.12); border: 0; width: 34px; height: 34px; border-radius: 9px; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.chatFio { flex: 1; max-height: none; border-radius: 0; }
.chatEsc { padding: 10px; border-top: 1px solid var(--linha2); }
.sinoSec { display: flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .4px; color: var(--cinza); padding: 8px 10px 4px; }
.sinoSec .ic { width: 13px; height: 13px; }
.sinoTx em.sinoMsg { background: #EEF4FF; color: #1d3f6b; }
.sinoIt.chat .sinoAv { background: #1a8f4c; }
.pfBt.ch { border-color: var(--marca); color: var(--marca); }
/* Configurações › Secretaria e Coordenação */
.eqTit { font-size: 12.5px; margin-top: 4px; }
.eqCks { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 8px; }
.eqCk { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border: 1px solid var(--linha); border-radius: 12px; cursor: pointer; }
.eqCk input { margin-top: 3px; width: 17px; height: 17px; accent-color: var(--marca); }
.eqCk b { display: block; font-size: 13px; } .eqCk small { display: block; font-size: 12px; color: var(--cinza); }
.eqCoords { display: flex; flex-direction: column; gap: 10px; }
.eqLinha { display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; padding: 12px; border: 1px solid var(--linha); border-radius: 14px; background: #FBFCFD; }
.eqLinha input { height: 40px; border: 1px solid #C3CAD5; border-radius: 10px; padding: 0 10px; font: inherit; min-width: 0; }
.pfBloco .linha input { height: 40px; border: 1px solid #C3CAD5; border-radius: 10px; padding: 0 10px; font: inherit; min-width: 0; }
.eqAviso { flex: 1 1 100%; margin: 0; display: flex; gap: 6px; color: #8a5300 !important; font-size: 12px; }
.eqAviso .ic { width: 14px; height: 14px; flex: 0 0 auto; margin-top: 2px; }

/* ---------- v56 · histórico e acompanhamento ---------- */
.dlg { z-index: 130; }
.hpCab .hpAv { display: flex !important; align-items: center; justify-content: center; text-align: center; line-height: 1; opacity: 1; font-size: 12.5px; }
.hpCab .hpQuem b { display: block; font-size: 13.5px; line-height: 1.2; } .hpCab .hpQuem span { display: block; font-size: 12px; opacity: .85; }
.hpBts { display: flex; gap: 8px; padding: 4px 12px 12px; }
.hpBts .hpVer { margin: 0; width: auto; flex: 1; }
.hpVer.sec { border-color: var(--linha); color: #344054; }
.gsNota.rica .hpLinha { max-height: 280px; }
.histFundo { position: fixed; inset: 0; z-index: 100; background: rgba(17,24,39,.45); display: flex; align-items: center; justify-content: center; padding: 16px; }
.histJan { width: min(640px, 100%); max-height: calc(100vh - 40px); background: var(--sup); border-radius: 18px; box-shadow: 0 24px 60px rgba(11,20,40,.3); display: flex; flex-direction: column; overflow: hidden; }
.histTopo { position: relative; }
.histX { position: absolute; top: 12px; right: 12px; width: 34px; height: 34px; border-radius: 9px; border: 0; background: rgba(255,255,255,.15); color: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.histLista { flex: 1; overflow: auto; max-height: none !important; padding: 14px 18px 6px !important; }
.histLista li { align-items: flex-start; justify-content: space-between; gap: 10px; }
.histIt { display: flex; gap: 10px; flex: 1; min-width: 0; }
.histIt > i { flex: 0 0 auto; width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: #F3F5F8; color: var(--cinza); }
.histIt > i .ic { width: 14px; height: 14px; }
.hpLinha li.envio .histIt > i { background: var(--okF); color: var(--ok); } .hpLinha li.sec .histIt > i { background: #FFF3DC; color: #A15C07; }
.hpLinha li.msg .histIt > i { background: var(--marca-suave); color: var(--marca); }
.histAc { display: flex; gap: 6px; flex: 0 0 auto; }
.histBt { display: inline-flex; align-items: center; gap: 4px; height: 30px; padding: 0 9px; border-radius: 8px; border: 1px solid var(--linha); background: var(--sup); font: inherit; font-size: 12px; cursor: pointer; color: #344054; }
.histBt .ic { width: 13px; height: 13px; }
.histBt:hover { border-color: var(--marca); color: var(--marca); }
.histBt.er:hover { border-color: var(--er); color: var(--er); background: var(--erF); }
.histFixo { font-size: 11px; color: var(--cinza2); white-space: nowrap; padding-top: 6px; }
.histRod { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; padding: 12px 16px; border-top: 1px solid var(--linha2); background: #FBFCFD; }
.histJan .giro { margin: 40px auto; }
/* Acompanhamento: tabela com traços */
.pfRolo { border: 1px solid var(--linha); border-radius: 12px; overflow: auto; }
.pfTab { border-collapse: separate; border-spacing: 0; }
.pfTab th { position: sticky; top: 0; z-index: 1; border-bottom: 1px solid var(--linha); padding: 10px 12px; }
.pfTab th + th, .pfTab td + td { border-left: 1px solid var(--linha2); }
.pfTab td { padding: 10px 12px; border-bottom: 1px solid var(--linha2); vertical-align: middle; }
.pfTab tbody tr:nth-child(even) td { background: #FAFBFC; }
.pfTab tbody tr:hover td { background: #F1F5FB; }
.pfTab tbody tr:last-child td { border-bottom: 0; }
.pfBt.hi { border-color: #C9D7EE; color: var(--marca-esc); }
.hpVer { white-space: nowrap; }
.pfBts { flex-wrap: nowrap; }
.pfTab td:last-child { white-space: nowrap; }
.pfTel { width: 132px; }
.histJan { width: min(700px, 100%); }
.histRod .bt { white-space: nowrap; }
.eqCursosCampo { flex: 1 1 100%; }
.eqCursos { display: flex; flex-wrap: wrap; gap: 6px; }
.eqCurso { display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--linha); background: var(--sup); color: #344054; border-radius: 999px; padding: 5px 12px; font: inherit; font-size: 12.5px; cursor: pointer; }
.eqCurso .ic { width: 13px; height: 13px; }
.eqCurso.on { background: var(--marca); border-color: var(--marca); color: #fff; font-weight: 600; }
.eqCurso:not(.on):hover { border-color: var(--marca); color: var(--marca); }
div.eqAviso { flex: 1 1 100%; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; padding: 10px 12px; border-radius: 10px; background: #FFF8EA; border: 1px solid #F2D49B; color: #6B3F00; font-size: 12.5px; }
div.eqAviso > span { display: flex; gap: 6px; flex: 1 1 320px; } div.eqAviso .ic { width: 15px; height: 15px; flex: 0 0 auto; margin-top: 1px; }
.eqPapel { height: 34px; border: 1px solid #C3CAD5; border-radius: 8px; padding: 0 8px; font: inherit; font-size: 12.5px; background: var(--sup); }
.eqOk { flex: 1 1 100%; margin: 0; display: flex; gap: 6px; color: var(--ok) !important; font-size: 12px; }
.eqOk .ic { width: 14px; height: 14px; }

/* ---------- v58 · caixa de conversas ---------- */
.convPainel { width: min(440px, calc(100vw - 20px)); max-height: min(620px, calc(100vh - 90px)); }
.convTit { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.convTit b { font-size: 14.5px; }
.convFerr { display: flex; gap: 8px; align-items: center; margin-top: 8px; }
.convFerr input { flex: 1; min-width: 0; height: 34px; border: 1px solid #C3CAD5; border-radius: 9px; padding: 0 10px; font: inherit; font-size: 13px; }
.convFerr .seg button { padding: 4px 10px; font-size: 12.5px; }
.convIt .convUlt { color: #475467; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.convIt.novo .convUlt { color: var(--tinta); font-weight: 600; }
.convCanal { font-size: 11.5px; color: var(--marca); font-weight: 600; }
.convDir { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }
.convN { font-style: normal; min-width: 20px; height: 20px; border-radius: 999px; background: #1a8f4c; color: #fff; font-size: 11.5px; font-weight: 800; display: flex; align-items: center; justify-content: center; padding: 0 6px; }
.convIt .sinoAv { background: var(--marca); }
.convIt.novo .sinoAv { background: #1a8f4c; box-shadow: 0 0 0 3px #BFE3CD; }
.convPainel .giro { margin: 30px auto; }
.convEscolha { display: flex; flex-direction: column; gap: 4px; max-height: 320px; overflow: auto; }
.convOp { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 0; background: transparent; border-radius: 10px; cursor: pointer; font: inherit; text-align: left; }
.convOp:hover { background: #F3F6FB; }
.convOp .sinoAv { width: 32px; height: 32px; font-size: 12px; }
.convOp b { display: block; font-size: 12.5px; } .convOp small { display: block; font-size: 12px; color: var(--cinza); }
#btChat .sinoN { background: #1a8f4c; }
#toast.clicavel { cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }

/* ---------- v59 · aba Professores ---------- */
.pfCabTela { display: flex; justify-content: space-between; align-items: flex-end; gap: 14px; flex-wrap: wrap; margin-bottom: 16px; }
.pfCabTela h1 { font-size: 25px; margin: 0; }
.pfCabTela .sub { margin: 4px 0 0; }
.pfSitTela { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.pfSitTela .pill { font-size: 12.5px; padding: 4px 12px; }
.pfTela .pfBloco.pfPrim { border-top: 0; padding-top: 0; }
.pfIrProf { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 12px 14px; border-radius: 12px; background: var(--marca-suave); color: var(--marca-esc); font-size: 13px; }
.pfIrProf > span { display: flex; gap: 8px; align-items: flex-start; flex: 1 1 320px; } .pfIrProf .ic { width: 17px; height: 17px; flex: 0 0 auto; margin-top: 1px; }
.lt { grid-template-columns: repeat(7, minmax(0, 1fr)); }
@media (max-width: 900px) { .lt { grid-template-columns: repeat(4, minmax(0, 1fr)); } .ltF:nth-child(4)::before { display: block; } .ltF:nth-child(5)::before { display: none; } }
@media (max-width: 520px) { .lt { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ltF:nth-child(3)::before, .ltF:nth-child(5)::before, .ltF:nth-child(7)::before { display: none; } .ltF:nth-child(4)::before, .ltF:nth-child(6)::before { display: block; } }

/* ---------- v60 · app no celular ---------- */
.apApp { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 12px 14px; border-radius: 16px; background: linear-gradient(135deg, var(--marca), color-mix(in srgb, var(--marca) 78%, #000)); color: #fff; box-shadow: 0 6px 18px rgba(11,20,40,.18); }
.apAppIc { width: 48px; height: 48px; border-radius: 12px; background: #fff; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; overflow: hidden; padding: 5px; }
.apAppIc img, .apAppIc svg { max-width: 100%; max-height: 100%; }
.apApp > div:nth-child(2) { flex: 1 1 200px; min-width: 0; }
.apApp b { display: block; font-size: 15.5px; }
.apApp p { margin: 2px 0 0; font-size: 13.5px; line-height: 1.4; opacity: .95; }
.apApp p b { display: inline; font-size: inherit; }
.apIosIc .ic { width: 15px; height: 15px; vertical-align: -2px; }
.apAppAc { display: flex; gap: 8px; align-items: center; margin-left: auto; }
.apAppBt { background: #fff !important; color: var(--marca) !important; border-color: #fff !important; min-height: 40px; }
.apAppNao { background: transparent; border: 0; color: #fff; opacity: .85; font: inherit; font-size: 13px; text-decoration: underline; cursor: pointer; padding: 6px; }

/* =============================================================================
   v61 · LEVEZA
   Ajuste fino de densidade para telas de notebook: a letra ficou um pouco menor
   em todas as regras acima (mais ou menos 10%), e aqui o topo fica mais baixo,
   sobra menos espaço vazio e os cartões ficam mais enxutos. Nada foi retirado.
   ============================================================================= */
:root { --hTopo: 54px; --hRod: 40px; }

.ap { font-size: 15.5px; }                    /* Área do Professor (celular): mantém o tamanho */

/* topo: o logo nunca encolhe nem fica por baixo do menu */
.topo { padding: 0 14px; gap: 10px; }
.marcaTopo { flex: 0 0 auto; }
.marcaTopo .lg { height: 34px; width: auto; }
.marcaTopo .lg svg { width: 34px; height: 34px; }
.marcaTopo .lg img { max-height: 34px; max-width: 128px; padding: 2px 6px; border-radius: 7px; }
.menu { margin-left: 4px; }
.menu button { font-size: 11.5px; gap: 3px; }
.menu button .ic { width: 18px; height: 18px; }
.menu button.ativo::after { height: 3px; left: 8px; right: 8px; }
.btTopo { width: 36px; height: 36px; border-radius: 9px; }
.btTopo .ic { width: 19px; height: 19px; }
.eu { width: 32px; height: 32px; font-size: 12.5px; }
@media (max-height: 760px) {
  :root { --hTopo: 50px; --hRod: 38px; }
  .marcaTopo .lg { width: auto; height: 30px; }
  .marcaTopo .lg svg { width: 30px; height: 30px; }
  .marcaTopo .lg img { max-height: 30px; }
  .menu button { font-size: 11px; gap: 2px; }
}

/* barra de baixo (abas) mais fina */
.rpAba { font-size: 12.5px; padding: 0 11px; gap: 6px; }
.rpAba .ic { width: 15px; height: 15px; }

/* páginas: menos respiro sobrando */
.pgLivre { padding: 22px 24px 32px; }
h1 { font-size: 23px; letter-spacing: -.3px; }
h2 { font-size: 16px; }
.sub { font-size: 13.5px; margin-top: 2px; }
.bt { min-height: 38px; padding: 0 16px; border-radius: 9px; }
.bt.peq { min-height: 32px; }
.campo input[type=text], .campo input[type=email], .campo select { min-height: 38px; border-radius: 9px; }

/* Início */
.ola { margin-bottom: 16px; }
.atalhos { gap: 12px; }
.atalho { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "t i" "n i" "d d"; column-gap: 10px; row-gap: 2px; padding: 14px 16px; border-radius: 12px; }
.atalho .ico { grid-area: i; width: 34px; height: 34px; border-radius: 9px; align-self: start; }
.atalho .ico .ic { width: 18px; height: 18px; }
.atalho b { grid-area: t; font-size: 13px; font-weight: 600; color: var(--cinza); }
.atalho .n { grid-area: n; font-size: 24px; letter-spacing: -.3px; }
.atalho .d { grid-area: d; font-size: 12px; }
.atalho:hover { transform: none; box-shadow: 0 4px 14px rgba(11,20,40,.07); }
.blocoT { margin: 22px 0 10px; }
.etapas { gap: 12px; }
.etapa { padding: 12px 14px; border-radius: 12px; gap: 10px; font-size: 13px; line-height: 1.4; }
.etapa .ic { width: 19px; height: 19px; }
.etapa b { font-size: 14px; margin: 1px 0 1px; }
.etapa .em { font-size: 10.5px; }
.etapa.ativa { border-color: var(--marca-media); box-shadow: 0 1px 3px rgba(11,20,40,.05); }
.etapa.ativa:hover { border-color: var(--marca); transform: none; box-shadow: 0 4px 14px rgba(11,20,40,.08); }
.cartaoLt { margin-top: 14px; padding: 18px 18px 16px; border-radius: 12px; }
.ltLeg { margin-top: 18px !important; }
.ltM { width: 40px; height: 40px; border-width: 2.5px; }
.ltF::before { top: 19px; height: 2.5px; }
.anel { width: 40px; height: 40px; }
.ltF.feita .ltM .ic { width: 19px; height: 19px; }
.ltPc { font-size: 10.5px; }
.ltT { font-size: 13px; margin-top: 2px; }
.ltD { font-size: 12px; }
.cartaoEv { border-radius: 12px; }

/* cartões e indicadores em geral */
.cartao { border-radius: 12px; }
.ferr .ind .v { font-size: 14px; }
.ferr .ind { padding: 3px 9px; }
.chip { height: 28px; padding: 0 10px; gap: 6px; }
.btF { height: 32px; border-radius: 8px; padding: 0 11px; }
.btF.btIc { width: 32px; }
.busca input { height: 32px; }

/* planilhas: cabeçalho mais baixo */
.gs tr.gsTit th { height: 42px; padding: 3px 18px; }

/* Horário Cursos e Docentes: faixa da esquerda mais limpa */
.hrTit { padding: 14px 16px 4px; }
.hrTit b { font-size: 14px; }
.hrFiltros { flex-wrap: nowrap; gap: 4px; }
.hrF { height: 24px; padding: 0 8px; font-size: 11.5px; white-space: nowrap; }

/* quadros de horário (Resolução, Cursos, Docentes): células um pouco mais baixas */
.rc { height: 52px; padding: 5px 6px; }
.rsG.grande .rc { height: 50px; }
/* Resolução: a barra azul usa o espaço para as ferramentas (o nome do sistema sai) */
body.menuIcones .marcaTopo .nm { display: none; }

/* =============================================================================
   v62 · REFINOS
   ============================================================================= */
/* balão vermelho do menu: menor e no canto, sem cobrir o ícone */
.menu button .bolha { top: 3px !important; left: calc(50% + 7px) !important; min-width: 15px; height: 15px; line-height: 15px; padding: 0 4px; font-size: 9.5px; box-shadow: 0 0 0 1.5px var(--marca); }
.menu button .bolha.ok { width: 15px; }
.menu button .bolha .ic { width: 10px; height: 10px; }

/* rodapé: um botão "Aa" com as três opções para cima */
.rpBt.cx { min-width: 30px; font-size: 12.5px; letter-spacing: 0; }
.cxMenu { min-width: 190px; }
.cxMenu button { display: flex; align-items: baseline; gap: 10px; }
.cxMenu button b { width: 24px; font-size: 13px; }
.cxMenu button span { color: var(--cinza); font-size: 12.5px; }
.cxMenu button:hover span { color: var(--marca); }
.rpBt { height: 28px; min-width: 28px; }
.rpBt .ic { width: 16px; height: 16px; }
.rpSep { height: 18px; }

/* zoom discreto, como no Excel */
.zoomR { gap: 2px; }
.zoomR > button:not(.zRot) { width: 22px; height: 22px; border-radius: 5px; }
.zoomR > button:not(.zRot) .ic { width: 13px; height: 13px; }
.zoomR input[type=range] { -webkit-appearance: none; appearance: none; width: 88px; height: 14px; background: transparent; cursor: pointer; }
.zoomR input[type=range]::-webkit-slider-runnable-track { height: 2px; background: #B8C0CC; border-radius: 2px; }
.zoomR input[type=range]::-moz-range-track { height: 2px; background: #B8C0CC; border-radius: 2px; }
.zoomR input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; width: 9px; height: 9px; margin-top: -3.5px; border-radius: 50%; background: #475467; border: 0; }
.zoomR input[type=range]::-moz-range-thumb { width: 9px; height: 9px; border-radius: 50%; background: #475467; border: 0; }
.zoomR input[type=range]:hover::-webkit-slider-thumb { background: var(--marca); }
.zRot { min-width: 40px; height: 22px; border: 0; background: transparent; font-size: 11.5px; color: #344054; border-radius: 5px; }
.zRot:hover { background: var(--sup); }

/* estreitar / alargar colunas: botões discretos */
.larg { height: 28px; border-color: var(--linha); border-radius: 7px; }
.larg button { width: 26px; color: #667085; }
.larg .ic { width: 14px; height: 14px; }
.btDetF { height: 28px; font-size: 12px; }

/* Início: mais alto e menos retangular, ocupando a tela */
.pgLivre:has(.atalhos) { padding-top: clamp(20px, 3.4vh, 34px); }
.ola { margin-bottom: clamp(14px, 2.4vh, 24px); }
.atalho { padding: clamp(16px, 2.6vh, 24px) 20px; row-gap: 4px; border-color: #E2E6ED; box-shadow: 0 1px 2px rgba(16,24,40,.04); min-height: clamp(104px, 17vh, 150px); align-content: center; }
.atalho .ico { width: 40px; height: 40px; border-radius: 11px; }
.atalho .ico .ic { width: 20px; height: 20px; }
.atalho b { font-size: 13.5px; color: #344054; }
.atalho .n { font-size: 30px; line-height: 1.05; margin: 2px 0; }
.atalho .d { font-size: 12.5px; color: #475467; }
.blocoT { margin: clamp(20px, 3.6vh, 34px) 0 12px; }
.etapa { padding: clamp(14px, 2.2vh, 20px) 16px; min-height: clamp(96px, 15vh, 128px); }
.etapa.ativa { background: #fff; border-color: #CDD6E4; box-shadow: 0 1px 2px rgba(16,24,40,.04); }
.etapa span:not(.em):not(.seta) { color: #344054; }
.cartaoLt { margin-top: clamp(14px, 2.4vh, 22px); padding: clamp(18px, 3vh, 28px) 18px clamp(16px, 2.4vh, 22px); border-color: #E2E6ED; }
.ltLeg { margin-top: clamp(16px, 3vh, 26px) !important; }

/* Dashboard: pílulas dos cartões um pouco menores */
.dbDest { font-size: 11.5px; padding: 3px 9px 3px 7px; gap: 6px; border-radius: 8px; }
.dbDest b { font-size: 14px; }
.dbDest .ic { width: 15px; height: 15px; }
.dbDest.dbClic .ic:last-child { width: 12px; height: 12px; }

/* Componentes por curso: afastado do título e barras mais altas */
.hb { gap: 13px; margin-top: 22px; }
.hbB { height: 20px; }
.hbR, .hbV { font-size: 13px; }

/* Semana × salas: mais alto e com os dias e a legenda bem espaçados */
.swIn { height: 430px; }
.swR { height: 22px; font-size: 11px; }
.swRot { height: 70px; padding-top: 9px; gap: 3px; line-height: 1.25; margin-top: 2px; }
.swRot b { font-size: 13.5px; }
.swRot span { font-size: 12px; }
.swRot em { font-size: 11.5px; margin-top: 1px; }
.swRot em .ic { width: 12px; height: 12px; }
.swGs { bottom: 94px; }
.swDia + .swDia::before { bottom: 6px; }
.swLeg { margin-top: 26px; padding-top: 14px; border-top: 1px solid var(--linha2); gap: 8px 22px; }
.swDet { margin-top: 16px; }
.swResumo { margin-bottom: 20px; }

/* Docentes (antes Professores): página enxuta */
.pfCabTela { margin-bottom: 12px; align-items: center; }
.pfSitTela .pill { font-size: 11.5px; padding: 3px 10px; }
.pfSitTela .bt.peq { min-height: 30px; font-size: 12px; }
.pfLinkLinha { flex-direction: row !important; align-items: center; gap: 8px !important; flex-wrap: wrap; }
.pfLinkRot { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; font-weight: 600; color: #344054; white-space: nowrap; }
.pfLinkRot .ic { width: 14px; height: 14px; color: var(--marca); }
.pfLinkRot .ic:last-child { color: var(--cinza2); cursor: help; }
.pfLinkLinha .pfLink { flex: 1 1 260px; height: 32px; border-radius: 8px; font-size: 12.5px; font-weight: 500; }
.pfLinkLinha select { height: 32px !important; border-radius: 8px !important; font-size: 12.5px; max-width: 260px; }
.pfLinkSep { width: 1px; height: 22px; background: var(--linha); margin: 0 6px; }
.pfBloco { gap: 8px; padding-top: 14px; }
.pfBloco h3 { font-size: 13.5px; }
.npRes span { padding: 3px 9px; font-size: 11.5px; }
.npRes b { font-size: 14px; }
.pfFerr { gap: 8px; }
.pfFerr .seg button { font-size: 12px; padding: 4px 10px; }
.pfFerr select { height: 32px !important; font-size: 12.5px; }
.pfFerr .bt { min-height: 32px; font-size: 12.5px; padding: 0 12px; }
.pfMsgSel span { font-size: 12.5px; }
.pfBt { height: 28px; padding: 0 9px; font-size: 12px; gap: 4px; border-radius: 7px; }
.pfBt .ic { width: 13px; height: 13px; }
.pfBt.usado { position: relative; }
.pfBt.usado::after { content: ''; position: absolute; top: -3px; right: -3px; width: 8px; height: 8px; border-radius: 50%; background: var(--ok); box-shadow: 0 0 0 2px #fff; }
.pfTel { height: 30px; width: 130px; font-size: 12px; text-align: center; }
.pfTab { table-layout: fixed; min-width: 100%; font-size: 12.5px; }
.pfTab th { position: sticky; padding: 8px 12px; font-size: 11.5px; user-select: none; }
.pfTab th.cen, .pfTab td.cen { text-align: center; }
.pfTab td { padding: 7px 12px; overflow: hidden; }
.pfTab td.cen small { text-align: center; }
.pfTab th.ord { cursor: pointer; }
.pfTab th.ord:hover { color: var(--marca); }
.pfTab th.on { color: var(--marca); }
.pfSeta { font-style: normal; margin-left: 6px; font-size: 10.5px; opacity: .45; font-weight: 600; }
.pfTab th.on .pfSeta { opacity: 1; }
.pfTab th > span:first-child { overflow: hidden; text-overflow: ellipsis; }
.pfRz { position: absolute; top: 0; right: -4px; width: 8px; height: 100%; cursor: col-resize; z-index: 2; }
.pfRz::after { content: ''; position: absolute; left: 3px; top: 25%; bottom: 25%; width: 2px; border-radius: 2px; background: transparent; }
.pfTab th:hover .pfRz::after { background: #C3CAD5; }
.pfNome { font-size: 13px; }
.pfTab td small { font-size: 11.5px; }

/* Horário Docentes: todos os itens no mesmo padrão (nome; barra de carga e números) */
.hrItem.prof { display: grid; grid-template-columns: minmax(0, 1fr) 44px; grid-template-areas: "n p" "c s"; column-gap: 10px; row-gap: 6px; align-items: center; padding: 9px 10px; }
.hrItem.prof b { grid-area: n; }
.hrItem.prof .hrPonto { grid-area: p; justify-self: end; }
.hrItem.prof .hrCarga { grid-area: c; width: 100%; flex: none; }
.hrItem.prof small { grid-area: s; text-align: right; }
.pfLinkLinha select { background: #fff; }
.pfRz { right: 0; }
/* Início: as alturas acompanham a altura da janela (notebook ou tela cheia), sem rolar */
.ola { margin-bottom: clamp(14px, calc(4vh - 10px), 30px); }
.atalho { min-height: clamp(104px, calc(34vh - 118px), 190px); }
.blocoT { margin-top: clamp(20px, calc(8vh - 30px), 48px); }
.etapa { min-height: clamp(96px, calc(28vh - 90px), 170px); }
.cartaoLt { margin-top: clamp(14px, calc(5vh - 17px), 34px); }
.ltLeg { margin-top: clamp(16px, calc(5vh - 15px), 34px) !important; }

/* =============================================================================
   v63 · ÚLTIMOS AJUSTES
   ============================================================================= */
/* busca geral (Início e Dashboard) */
.buscaRes { position: fixed; z-index: 90; width: 370px; max-height: 60vh; overflow: auto; background: var(--sup); border: 1px solid var(--linha); border-radius: 12px; box-shadow: 0 12px 32px rgba(11,20,40,.18); padding: 6px; }
.brItem { display: flex; align-items: center; gap: 10px; width: 100%; padding: 7px 10px; border: 0; border-radius: 8px; background: none; cursor: pointer; text-align: left; font: inherit; color: var(--tinta); }
.brItem:hover, .brItem.on { background: var(--marca-suave); }
.brItem .ic { width: 16px; height: 16px; color: var(--marca); flex: 0 0 auto; }
.brItem span { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.brItem b { font-size: 13px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.brItem small { font-size: 11.5px; color: var(--cinza); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.brItem em { font-style: normal; font-size: 10.5px; font-weight: 700; color: var(--cinza2); text-transform: uppercase; letter-spacing: .4px; }
.brVazio { padding: 10px 12px; font-size: 12.5px; color: var(--cinza); }

/* Mapa Docentes e Mapa de Salas: respiro e um traço claro antes da tabela */
.ferr.mapas { padding-bottom: 12px; border-bottom: 1px solid var(--linha); margin-bottom: 10px; }

/* "Mais detalhes" dentro da tabela: só a setinha */
.btDet.so { padding: 3px 7px; }
.btDet.so .ic { width: 14px; height: 14px; }

/* Resolução: o botão de descer de novo fica ao lado da disciplina, na cor normal */
.rsArraste .rsFocoBt { margin-left: 0; }
.rsFocoBt.on { background: var(--sup); color: var(--cinza); border-color: var(--linha); }
.rsFocoBt.on:hover { color: var(--marca); border-color: var(--marca); }

/* =============================================================================
   v64 · FOTOS E TABELA DAS NÃO PRESENCIAIS
   ============================================================================= */
/* tela de entrada com a foto da instituição: acabamento padrão para qualquer foto
   (um pouco menos saturada, tingida com a cor da marca e sumindo num degradê) */
.entradaFundo.comFoto { position: relative; isolation: isolate; background: var(--fundo); overflow: hidden; }
.entradaFundo.comFoto::before { content: ''; position: absolute; inset: 0; z-index: -2; background: var(--fotoEntrada) center 40% / cover no-repeat; filter: saturate(.78) contrast(.96) brightness(1.03); }
.entradaFundo.comFoto::after { content: ''; position: absolute; inset: 0; z-index: -1; background:
  linear-gradient(160deg, var(--marca) 0 38%, transparent 38%),
  linear-gradient(160deg, transparent 38%, rgba(0,0,0,.16) 38%, transparent 41.5%),
  linear-gradient(160deg, color-mix(in srgb, var(--marca) 42%, transparent) 38%, color-mix(in srgb, var(--marca) 14%, transparent) 58%, color-mix(in srgb, var(--fundo) 55%, transparent) 78%, var(--fundo) 96%); }
.entradaFundo.comFoto .entrada { box-shadow: 0 24px 60px rgba(11,20,40,.28); }

/* prévia em Configurações (uma mini tela de entrada) */
.fotoPrev { position: relative; isolation: isolate; width: 220px; height: 128px; border-radius: 10px; overflow: hidden; border: 1px solid var(--linha); background: linear-gradient(160deg, var(--marca) 0 38%, var(--fundo) 38%); display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.fotoPrev.comFoto { background: var(--fundo); }
.fotoPrev.comFoto::before { content: ''; position: absolute; inset: 0; z-index: -2; background: var(--fotoEntrada) center 40% / cover no-repeat; filter: saturate(.78) contrast(.96) brightness(1.03); }
.fotoPrev.comFoto::after { content: ''; position: absolute; inset: 0; z-index: -1; background:
  linear-gradient(160deg, var(--marca) 0 38%, transparent 38%),
  linear-gradient(160deg, color-mix(in srgb, var(--marca) 42%, transparent) 38%, color-mix(in srgb, var(--marca) 14%, transparent) 58%, color-mix(in srgb, var(--fundo) 55%, transparent) 78%, var(--fundo) 96%); }
.fpCartao { width: 58px; height: 52px; border-radius: 8px; background: #fff; box-shadow: 0 6px 16px rgba(11,20,40,.22); display: flex; align-items: center; justify-content: center; padding: 6px; }
.fpCartao svg, .fpCartao img { max-width: 40px; max-height: 32px; width: auto; height: auto; }

/* foto de perfil no topo e no menu da conta */
.eu { overflow: hidden; padding: 0; display: inline-flex; align-items: center; justify-content: center; }
.eu.comFoto { background: #fff; box-shadow: 0 0 0 2px var(--acento); }
.eu img { width: 100%; height: 100%; object-fit: cover; display: block; }
.euQ { display: flex; align-items: center; gap: 10px; }
.euQ > div { min-width: 0; }
.euQ .meta { display: block; overflow: hidden; text-overflow: ellipsis; }
.euAv { width: 42px; height: 42px; border-radius: 50%; background: var(--acento); color: var(--sobre-acento); font-weight: 700; font-size: 15px; display: inline-flex; align-items: center; justify-content: center; overflow: hidden; flex: 0 0 auto; }
.euAv img { width: 100%; height: 100%; object-fit: cover; }

/* Disciplinas não presenciais: linhas alternadas e linhas verticais */
.npTab { border-collapse: separate; border-spacing: 0; border: 1px solid var(--linha); }
.npTab th { border-bottom: 1px solid var(--linha); }
.npTab th + th, .npTab td + td { border-left: 1px solid var(--linha2); }
.npTab tbody tr:nth-child(even) td { background: #F2F5F9; }
.npTab tbody tr:hover td { background: #EEF3FA; }
.npTab tbody tr:last-child td { border-bottom: 0; }
.entradaFundo { min-height: 100vh; min-height: 100dvh; }
/* degradê invertido: a foto fica forte embaixo e some perto da faixa, como se passasse por baixo dela */
.entradaFundo.comFoto::after, .fotoPrev.comFoto::after { background:
  linear-gradient(160deg, var(--marca) 0 38%, transparent 38%),
  linear-gradient(160deg, transparent 38%, rgba(0,0,0,.22) 38%, rgba(0,0,0,0) 40.5%),
  linear-gradient(160deg, transparent 0 38%, color-mix(in srgb, var(--fundo) 92%, transparent) 38%, color-mix(in srgb, var(--fundo) 62%, transparent) 52%, color-mix(in srgb, var(--fundo) 22%, transparent) 72%, transparent 90%),
  linear-gradient(color-mix(in srgb, var(--marca) 10%, transparent), color-mix(in srgb, var(--marca) 10%, transparent)); }
/* v66 · tela de entrada: degradê mais curto, traço branco com sombra e marca d'água na faixa */
.entradaFundo { position: relative; isolation: isolate; }
.entradaFundo .entrada { position: relative; z-index: 1; }
.entMarca { position: absolute; inset: -20%; z-index: 0; pointer-events: none; background-repeat: repeat; transform: rotate(-20deg);
  -webkit-mask-image: linear-gradient(160deg, #000 0 38%, transparent 38%); mask-image: linear-gradient(160deg, #000 0 38%, transparent 38%); }
.entradaFundo.comFoto::after, .fotoPrev.comFoto::after { background:
  linear-gradient(160deg, var(--marca) 0 38%, transparent 38%),
  linear-gradient(160deg, transparent 38%, rgba(255,255,255,.95) 38%, rgba(255,255,255,.95) calc(38% + 3px), rgba(0,0,0,.28) calc(38% + 3px), rgba(0,0,0,0) calc(38% + 16px)),
  linear-gradient(160deg, transparent 0 38%, color-mix(in srgb, var(--fundo) 70%, transparent) 38%, color-mix(in srgb, var(--fundo) 28%, transparent) 45%, transparent 55%),
  linear-gradient(color-mix(in srgb, var(--marca) 8%, transparent), color-mix(in srgb, var(--marca) 8%, transparent)); }
.entMarca { inset: 0; transform: none; overflow: hidden; background: none; }
.entMarca i { position: absolute; inset: -40%; background-repeat: repeat; transform: rotate(-20deg); }
/* Início: o título de cada etapa desce uma linha, separado da situação (ABERTA, PRONTO...) */
.etapa .em { display: block; margin-bottom: 12px; }
.etapa b { margin-top: 0; }
/* Área do Professor: faixa de baixo mais fina e botão Salvar discreto (sem fundo escuro) */
.apBarra { padding-top: 7px; padding-bottom: max(7px, env(safe-area-inset-bottom)); box-shadow: 0 -4px 14px rgba(11,20,40,.06); }
.apBarra > div { font-size: 13.5px; }
.apBarra b { font-size: 16px; }
.apMudou:empty { display: none; }
.apMudou { color: var(--av); font-weight: 600; }
.apSalvar { min-height: 38px; padding: 0 16px; font-size: 14px; background: var(--sup); color: var(--marca); border: 1.5px solid var(--marca-media); box-shadow: none; }
.apSalvar:hover { background: var(--marca-suave); border-color: var(--marca); color: var(--marca); }
.apSalvar .ic { width: 16px; height: 16px; }

/* v69 · sons das notificações */
.somTopo { display: flex; align-items: center; gap: 24px; flex-wrap: wrap; }
.somChave { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; user-select: none; }
.somChave input { position: absolute; opacity: 0; pointer-events: none; }
.somTrilho { width: 40px; height: 22px; border-radius: 999px; background: #C3CAD5; position: relative; transition: background .15s; flex: 0 0 auto; }
.somTrilho::after { content: ''; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: transform .15s; }
.somChave input:checked + .somTrilho { background: var(--ok); }
.somChave input:checked + .somTrilho::after { transform: translateX(18px); }
.somChave input:focus-visible + .somTrilho { outline: 2px solid var(--acento); outline-offset: 2px; }
.somChave b { font-size: 13.5px; }
.somVol { display: inline-flex; align-items: center; gap: 8px; color: var(--cinza); }
.somVol .ic { width: 16px; height: 16px; }
.somVol input { width: 140px; accent-color: var(--marca); }
.somLista { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 8px; }
.somLista.desl { opacity: .55; }
.somIt { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--linha); border-radius: 10px; background: var(--sup); cursor: pointer; }
.somIt:hover { border-color: var(--marca-media); }
.somIt.on { border-color: var(--marca); box-shadow: inset 0 0 0 1px var(--marca); background: var(--marca-suave); }
.somRad { width: 16px; height: 16px; border-radius: 50%; border: 2px solid #98A2B3; flex: 0 0 auto; position: relative; }
.somIt.on .somRad { border-color: var(--marca); }
.somIt.on .somRad::after { content: ''; position: absolute; inset: 2px; border-radius: 50%; background: var(--marca); }
.somNm { flex: 1; min-width: 0; display: flex; flex-direction: column; line-height: 1.25; }
.somNm b { font-size: 13px; } .somNm small { font-size: 11.5px; color: var(--cinza); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.apSomBt { align-self: flex-start; display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--linha); background: var(--sup); color: var(--cinza); font: inherit; font-size: 13px; cursor: pointer; margin-top: 4px; }
.apSomBt .ic { width: 15px; height: 15px; }
.apSomBt.on { color: var(--ok); border-color: #B7E1C8; background: var(--okF); }
.somRep select { height: 32px; border: 1px solid #C3CAD5; border-radius: 8px; padding: 0 8px; font: inherit; font-size: 12.5px; background: var(--sup); }

/* =============================================================================
   v71 · GERAÇÃO EM TELA INTEIRA (o palco), RELATÓRIOS e REGRAS DO MOTOR
   ============================================================================= */
.pcTela { flex: 1 1 auto; display: flex; min-height: 0; background: var(--fundo); }
.pc { display: grid; grid-template-columns: 320px minmax(0, 1fr); width: 100%; min-height: 0; }
.pcLado { background: var(--sup); border-right: 1px solid var(--linha); padding: 22px 20px 18px; display: flex; flex-direction: column; gap: 14px; overflow: auto; min-height: 0; }
.pcCab { display: flex; gap: 12px; align-items: center; }
.pcCab h2 { font-size: 17px; margin: 0; }
.pcMeta { margin: 2px 0 0; font-size: 12px; color: var(--cinza); line-height: 1.4; }
.pcGiro { width: 30px; height: 30px; flex: 0 0 auto; border-radius: 50%; border: 3px solid var(--linha); border-top-color: var(--marca); animation: g 1s linear infinite; }
.pcFeito { width: 32px; height: 32px; flex: 0 0 auto; border-radius: 50%; background: var(--ok); color: #fff; display: inline-flex; align-items: center; justify-content: center; }
.pcFeito .ic { width: 18px; height: 18px; stroke-width: 3; }
.pcProg { height: 6px; border-radius: 6px; background: var(--linha2); overflow: hidden; }
.pcProg i { display: block; height: 100%; width: 3%; background: var(--marca); border-radius: 6px; transition: width .6s ease; }
.pcAgora { margin: 0; min-height: 40px; font-size: 14.5px; font-weight: 700; color: var(--marca); line-height: 1.35; }
.pcAgora.entra { animation: pcEntra .45s ease; }
@keyframes pcEntra { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.pc.pronto .pcAgora { color: var(--ok); font-weight: 600; font-size: 13px; }
.pcPassos { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.pcPassos li { display: flex; align-items: center; gap: 9px; padding: 6px 8px; border-radius: 8px; font-size: 12.5px; color: var(--cinza); transition: background .2s, color .2s; }
.pcMarca { width: 15px; height: 15px; flex: 0 0 auto; border-radius: 50%; border: 2px solid #C3CAD5; position: relative; background: var(--sup); }
.pcPassos li.sempre .pcMarca { border-radius: 4px; }
.pcPassos li.conf { font-style: italic; }
.pcPassos li.agora { background: var(--marca-suave); color: var(--marca); font-weight: 700; }
.pcPassos li.agora .pcMarca { border-color: var(--marca); }
.pcPassos li.agora .pcMarca::after { content: ''; position: absolute; inset: 2px; border-radius: inherit; background: var(--marca); animation: pcPulsa 1s ease-in-out infinite alternate; }
@keyframes pcPulsa { from { opacity: .25; } to { opacity: 1; } }
.pcPassos li.feito { color: #344054; }
.pcPassos li.feito .pcMarca { border-color: var(--ok); background: var(--ok); }
.pcPassos li.feito .pcMarca::after { content: ''; position: absolute; left: 3px; top: 0; width: 4px; height: 8px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); background: none; animation: none; }
.pcBts { margin-top: auto; display: flex; flex-direction: column; gap: 8px; }
.pcBts .bt { width: 100%; }
.pcPalco { padding: 16px 26px 22px; overflow: auto; display: flex; flex-direction: column; gap: 12px; min-height: 0; }
.pcArte { width: 100%; max-width: 680px; margin: 0 auto; }
.pcSvg { display: block; width: 100%; height: auto; max-height: 36vh; margin: 0 auto; }
.pcRes { background: var(--sup); border: 1px solid var(--linha); border-radius: 12px; padding: 12px 18px 6px; }
.pcResCab { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; padding-bottom: 6px; border-bottom: 1px solid var(--linha); }
.pcResCab h3 { margin: 0; font-size: 14px; }
.pcResNota { font-size: 11.5px; color: var(--cinza); }
.pcLins { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 30px; }
@media (max-width: 1250px) { .pcLins { grid-template-columns: 1fr; } }
.pcLin { display: grid; grid-template-columns: 26px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--linha2); }
.pcIc { width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--linha2); color: var(--cinza2); }
.pcIc .ic { width: 14px; height: 14px; }
.pcLin.ok .pcIc { background: var(--okF); color: var(--ok); }
.pcLin.parcial .pcIc { background: var(--avF); color: var(--av); }
.pcLin.alerta .pcIc { background: var(--erF); color: var(--er); }
.pcLin.neutra .pcIc { background: var(--marca-suave); color: var(--marca); }
.pcTx { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.pcTx b { font-size: 13px; }
.pcTx > span { font-size: 11.5px; color: var(--cinza); line-height: 1.35; }
.pcLin.conf .pcTx b::after { content: ' · confere'; font-weight: 400; font-size: 11px; color: var(--cinza2); }
.pcBarra { display: block; height: 4px; border-radius: 4px; background: var(--linha2); overflow: hidden; margin-top: 3px; max-width: 280px; }
.pcBarra i { display: block; height: 100%; border-radius: 4px; background: var(--ok); transition: width .7s ease; }
.pcLin.parcial .pcBarra i { background: #E3A008; } .pcLin.alerta .pcBarra i { background: var(--er); }
.pcNum { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.pcNum b { font-size: 18px; }
.pcNum small { font-size: 11px; color: var(--cinza); }
.pcNum.esp { color: var(--cinza2); }
.pcNum .pcSt { font-size: 12px; font-weight: 700; color: var(--ok); }
.pcLin.alerta .pcNum .pcSt, .pcLin.parcial .pcNum .pcSt { color: var(--av); }
@media (max-width: 860px) { .pc { grid-template-columns: 1fr; } .pcLado { border-right: 0; border-bottom: 1px solid var(--linha); } .pcPassos { display: none; } }

/* a oficina do horário (ilustração) */
.pcChao { fill: rgba(11, 20, 40, .06); }
.pcSeta { fill: none; stroke: color-mix(in srgb, var(--marca) 30%, #fff); stroke-width: 2.5; stroke-dasharray: 10 12; animation: pcTraco 2.4s linear infinite; }
.pcPonta { fill: none; stroke: color-mix(in srgb, var(--marca) 45%, #fff); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
@keyframes pcTraco { to { stroke-dashoffset: -44; } }
.pcEng polygon { stroke-linejoin: round; }
.pcEng.grande { fill: var(--marca); transform-origin: 292px 168px; animation: pcGira 14s linear infinite; }
.pcEng.media { fill: var(--acento); transform-origin: 419px 82px; animation: pcGira 8s linear infinite reverse; }
.pcEng.peq { fill: color-mix(in srgb, var(--marca) 40%, #fff); transform-origin: 175px 70px; animation: pcGira 6s linear infinite reverse; }
@keyframes pcGira { to { transform: rotate(360deg); } }
.pcCubo { fill: #fff; }
.pcCuboIn { fill: var(--marca-suave); }
.pcNome { fill: var(--marca); font-family: var(--f-ui); font-weight: 800; text-anchor: middle; letter-spacing: .6px; }
.pcFuro { fill: #fff; }
.pcQuadro { fill: #fff; stroke: #DDE2EA; stroke-width: 1.5; }
.pcQuadroTopo { fill: var(--marca); }
.pcPino { fill: var(--acento); }
.pcCel { fill: #EEF1F6; }
.pcCart { animation: pcCai 7.2s ease-out infinite both; }
.pcCart.d { fill: #D9861C; } .pcCart.n { fill: #1F5FA8; }
.pcCart.mao { animation: pcSobe 1.8s ease-in-out infinite alternate; }
@keyframes pcCai { 0% { opacity: 0; transform: translateY(-24px); } 9% { opacity: 1; transform: none; } 86% { opacity: 1; transform: none; } 100% { opacity: 0; transform: none; } }
@keyframes pcSobe { to { transform: translateY(-5px); } }
.pcEscada line { stroke: #B8C0CC; stroke-width: 4; stroke-linecap: round; }
.pcPerna { stroke: #2B3442; stroke-width: 9; stroke-linecap: round; fill: none; }
.pcBraco { stroke: #E0AC69; stroke-width: 7; stroke-linecap: round; fill: none; }
.pcP1 .pcBraco { stroke: #8D5524; } .pcP3 .pcBraco { stroke: #C68642; }
.pcRoupa.a { fill: var(--acento); } .pcRoupa.b { fill: #2E8B57; } .pcRoupa.c { fill: #1F5FA8; }
.pcPele.p1 { fill: #8D5524; } .pcPele.p2 { fill: #F1C27D; } .pcPele.p3 { fill: #C68642; }
.pcCabelo { fill: #2B2118; } .pcCabelo.c { fill: #5A3A22; }
.pcP1 { animation: pcEmpurra 1.6s ease-in-out infinite alternate; }
.pcP2 { animation: pcSobe 1.8s ease-in-out infinite alternate; }
.pcP3 { animation: pcAnda 2.4s ease-in-out infinite alternate; }
@keyframes pcEmpurra { to { transform: translateX(4px); } }
@keyframes pcAnda { to { transform: translateX(-8px); } }

/* relatórios */
.btRel { margin-right: 2px; }
.relGav { position: fixed; z-index: 110; width: 360px; max-width: calc(100vw - 16px); background: var(--sup); border: 1px solid var(--linha); border-radius: 12px; box-shadow: 0 14px 36px rgba(11,20,40,.18); overflow: hidden; }
.relGavCab { display: flex; align-items: center; justify-content: space-between; padding: 8px 8px 8px 14px; border-bottom: 1px solid var(--linha2); }
.relGavCab b { font-size: 13.5px; }
.relGavCab .btTopo { color: var(--cinza); width: 30px; height: 30px; }
.relGavCab .btTopo:hover { background: var(--linha2); }
.relGavLista { max-height: 60vh; overflow: auto; padding: 6px; }
.relItem { display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 10px; border: 0; border-radius: 8px; background: none; cursor: pointer; text-align: left; font: inherit; color: var(--tinta); position: relative; }
.relItem:hover { background: var(--marca-suave); }
.relItIc { width: 30px; height: 30px; border-radius: 8px; background: var(--marca-suave); color: var(--marca); display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.relItIc .ic { width: 16px; height: 16px; }
.relItTx { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.relItTx b { font-size: 13px; } .relItTx small { font-size: 11.5px; color: var(--cinza); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.relItPend { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 999px; white-space: nowrap; }
.relItPend.er { background: var(--erF); color: var(--er); } .relItPend.ok { background: var(--okF); color: var(--ok); }
.relAtual { position: absolute; top: 6px; right: 10px; font-style: normal; font-size: 9.5px; font-weight: 700; color: var(--marca); }
.relVer { position: fixed; inset: 0; z-index: 120; background: rgba(17,24,39,.45); display: flex; justify-content: center; align-items: flex-start; padding: 32px 16px; overflow: auto; }
.relCaixa { background: var(--sup); border-radius: 14px; width: 100%; max-width: 880px; padding: 14px 26px 26px; box-shadow: 0 24px 60px rgba(11,20,40,.3); }
.relBarra { display: flex; justify-content: flex-end; align-items: center; gap: 8px; }
.relBarra .btTopo { color: var(--cinza); width: 34px; height: 34px; }
.relBarra .btTopo:hover { background: var(--linha2); }
.rl h2 { margin: 0; font-size: 20px; }
.rlCab p { margin: 3px 0 0; color: var(--cinza); font-size: 12.5px; }
.rlNums { display: flex; gap: 8px; flex-wrap: wrap; margin: 14px 0 6px; }
.rlNums span { border: 1px solid var(--linha); border-radius: 9px; padding: 4px 10px; font-size: 12px; color: var(--cinza); }
.rlNums b { font-size: 15px; color: var(--tinta); margin-right: 3px; font-variant-numeric: tabular-nums; }
.rlNums .er b { color: var(--er); }
.rl h3 { font-size: 14px; margin: 18px 0 2px; padding-top: 10px; border-top: 1px solid var(--linha); }
.rlLin { display: grid; grid-template-columns: 26px minmax(0, 1fr) auto; gap: 12px; align-items: start; padding: 10px 0; border-bottom: 1px solid var(--linha2); }
.rlIc { width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--okF); color: var(--ok); }
.rlIc .ic { width: 14px; height: 14px; }
.rlLin.parcial .rlIc { background: var(--avF); color: var(--av); } .rlLin.alerta .rlIc { background: var(--erF); color: var(--er); }
.rlLin.neutra .rlIc { background: var(--marca-suave); color: var(--marca); } .rlLin.desl .rlIc { background: var(--linha2); color: var(--cinza2); }
.rlLin.desl { color: var(--cinza2); }
.rlTx { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.rlTx b { font-size: 13.5px; } .rlTx b em { font-style: normal; font-weight: 400; font-size: 11px; color: var(--cinza2); margin-left: 4px; }
.rlTx > span { font-size: 12.5px; color: #344054; }
.rlBarra { display: block; height: 5px; border-radius: 5px; background: var(--linha2); overflow: hidden; max-width: 360px; }
.rlBarra i { display: block; height: 100%; background: var(--ok); }
.rlLin.parcial .rlBarra i { background: #E3A008; } .rlLin.alerta .rlBarra i { background: var(--er); }
.rlPct { font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; }
.rlMais summary { cursor: pointer; font-size: 12px; font-weight: 600; color: var(--marca); margin-top: 2px; }
.rlDet { margin: 6px 0 0; padding-left: 18px; font-size: 12px; color: #344054; columns: 2; column-gap: 28px; }
.rlDet li { break-inside: avoid; margin-bottom: 2px; }
.rl.imp .rlDet { columns: 2; }
@media (max-width: 700px) { .rlDet { columns: 1; } }

/* Configurações › Regras do motor */
.rmSecao { display: flex; align-items: center; gap: 7px; margin: 10px 0 0; font-size: 13.5px; }
.rmSecao .ic { width: 15px; height: 15px; color: var(--marca); }
.rmLeg { margin: -2px 0 0; }
.rmLista { display: flex; flex-direction: column; gap: 8px; }
.rmCard { display: grid; grid-template-columns: auto 22px 34px minmax(0, 1fr) auto auto auto; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--linha); border-radius: 10px; background: var(--sup); transition: transform .15s ease, box-shadow .15s; position: relative; }
.rmCard.fixa { grid-template-columns: 34px minmax(0, 1fr) auto; background: #F7F8FA; }
.rmCard.desl .rmTx, .rmCard.desl .rmIc, .rmCard.desl .rmSelo, .rmCard.desl .rmNum { opacity: .5; }
.rmCard.arrastando { z-index: 5; transition: none; box-shadow: 0 12px 28px rgba(11,20,40,.18); border-color: var(--marca); }
.rmPega { width: 14px; height: 22px; display: grid; grid-template-columns: repeat(2, 4px); gap: 3px 4px; align-content: center; justify-content: center; cursor: grab; touch-action: none; padding: 4px; box-sizing: content-box; border-radius: 6px; }
.rmPega:hover { background: var(--linha2); }
.rmCard.arrastando .rmPega { cursor: grabbing; }
.rmPega i { width: 4px; height: 4px; border-radius: 50%; background: #98A2B3; }
.rmNum { width: 22px; height: 22px; border-radius: 50%; background: var(--marca-suave); color: var(--marca); font-size: 11.5px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.rmIc { width: 34px; height: 34px; border-radius: 9px; background: var(--marca-suave); color: var(--marca); display: inline-flex; align-items: center; justify-content: center; }
.rmIc .ic { width: 17px; height: 17px; }
.rmTx { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.rmTx b { font-size: 13.5px; } .rmTx span { font-size: 12px; color: var(--cinza); line-height: 1.4; }
.rmSelo { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 999px; white-space: nowrap; }
.rmSelo .ic { width: 11px; height: 11px; }
.rmSelo.segue { background: var(--okF); color: var(--ok); }
.rmSelo.confere { background: #EAF1FB; color: #1F5FA8; }
.rmSelo.fixo { background: var(--ndF); color: var(--nd); }
.rmSetas { display: flex; flex-direction: column; gap: 2px; }
.rmSetas button { width: 24px; height: 18px; border: 0; border-radius: 5px; background: none; color: var(--cinza); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; padding: 0; }
.rmSetas button:hover:not(:disabled) { background: var(--linha2); color: var(--marca); }
.rmSetas button:disabled { opacity: .3; cursor: default; }
.rmSetas .ic { width: 14px; height: 14px; }
.rmSobe .ic { transform: rotate(180deg); }
@media (max-width: 760px) { .rmCard { grid-template-columns: auto 22px minmax(0, 1fr) auto; } .rmCard .rmIc, .rmCard .rmSelo, .rmCard .rmSetas { display: none; } }
.relAtual { position: static; margin-left: 6px; padding: 1px 6px; border-radius: 999px; background: var(--marca-suave); font-size: 10px; vertical-align: 1px; }
.pcPassos li { padding: 4px 8px; }
.pcLado { padding-bottom: 0; }
.pcBts { position: sticky; bottom: 0; background: var(--sup); padding: 10px 0 16px; margin-top: auto; box-shadow: 0 -10px 12px -10px rgba(11,20,40,.12); }
.pcBts:empty { display: none; }

/* v72 · detalhe de cada regra (palco e relatório) */
.pcLin { cursor: pointer; border-radius: 8px; padding-left: 6px; padding-right: 6px; margin: 0 -6px; transition: background .15s; }
.pcLin:hover { background: #F5F7FA; }
.pcLin.sel { background: var(--marca-suave); box-shadow: inset 3px 0 0 var(--marca); }
.pcLin:focus-visible { outline: 2px solid var(--acento); }
.pcPassos li { cursor: pointer; }
.pcPassos li:hover { background: #F5F7FA; }
.pcPassos li.sel { box-shadow: inset 3px 0 0 var(--marca); color: var(--marca); }
.pcDica { margin: -4px auto 0; font-size: 12px; color: var(--cinza); display: inline-flex; align-items: center; gap: 6px; align-self: center; }
.pcDica .ic { width: 14px; height: 14px; color: var(--marca); }
.pc.comDet .pcDica { display: none; }
.pcMini:empty { display: none; }
.pcMini { margin-top: 6px; padding-top: 10px; border-top: 1px solid var(--linha2); }
.pcMini .pcArte { max-width: 260px; margin: 0 auto; }
.pcMini .pcSvg { max-height: 150px; }
.pcDet { background: var(--sup); border: 1px solid var(--linha); border-radius: 12px; padding: 16px 20px 18px; animation: pcEntra .35s ease; }
.dt { display: flex; flex-direction: column; gap: 10px; }
.dtCab { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto auto; gap: 12px; align-items: center; }
.dtIc { width: 36px; height: 36px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--okF); color: var(--ok); }
.dtIc .ic { width: 18px; height: 18px; }
.dt.parcial .dtIc { background: var(--avF); color: var(--av); } .dt.alerta .dtIc { background: var(--erF); color: var(--er); }
.dt.neutra .dtIc, .dt.esp .dtIc { background: var(--marca-suave); color: var(--marca); }
.dtTit h3 { margin: 0; font-size: 17px; }
.dtTit p { margin: 2px 0 0; font-size: 13px; color: #344054; }
.dtNum { text-align: right; line-height: 1.1; }
.dtNum b { font-size: 26px; font-variant-numeric: tabular-nums; display: block; }
.dtNum span { font-size: 11.5px; color: var(--cinza); }
.dt.alerta .dtNum b { color: var(--er); } .dt.parcial .dtNum b { color: var(--av); } .dt.ok .dtNum b { color: var(--ok); }
.dtFechar { width: 32px; height: 32px; border: 0; border-radius: 8px; background: none; color: var(--cinza); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.dtFechar:hover { background: var(--linha2); color: var(--tinta); }
.dtRegra { margin: 0; font-size: 12.5px; color: var(--cinza); line-height: 1.45; }
.dtRegra b { color: #344054; }
.dtComo { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 10px 14px; border-radius: 10px; background: #FFF8E6; border: 1px solid #F3DFA8; }
.dtComo b { font-size: 12.5px; color: #6B3F00; white-space: nowrap; }
.dtComo span { flex: 1 1 320px; font-size: 12.5px; color: #4A3A12; line-height: 1.45; }
.dtSub { margin: 4px 0 0; font-size: 13px; }
.dtRolo { max-height: 46vh; overflow: auto; border: 1px solid var(--linha); border-radius: 10px; }
.dtTab { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 12.5px; }
.dtTab th { position: sticky; top: 0; background: #F3F5F8; color: #344054; font-size: 11.5px; font-weight: 700; text-align: left; padding: 7px 10px; border-bottom: 1px solid var(--linha); white-space: nowrap; z-index: 1; }
.dtTab td { padding: 7px 10px; border-bottom: 1px solid var(--linha2); vertical-align: top; color: #2B3442; line-height: 1.4; }
.dtTab th + th, .dtTab td + td { border-left: 1px solid var(--linha2); }
.dtTab tbody tr:nth-child(even) td { background: #F7F9FC; }
.dtTab tbody tr:last-child td { border-bottom: 0; }
.dtTab td:nth-child(2) { font-weight: 600; color: var(--tinta); }
.dtN { width: 34px; text-align: right; color: var(--cinza2) !important; font-weight: 400 !important; font-variant-numeric: tabular-nums; }
.dtMais { margin: 0; font-size: 11.5px; color: var(--cinza); }
.dtNada { margin: 0; display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--ok); font-weight: 600; }
.dtNada .ic { width: 16px; height: 16px; }
.rlMais .dt { margin-top: 8px; padding: 12px; border: 1px solid var(--linha); border-radius: 10px; background: #FBFCFD; }
.rlMais .dtCab { display: none; }
.rlPags { margin-top: 26px; }
.rl.imp .rlPag .dt { padding-top: 6px; }
.relCaixa .rlPags { display: none; }
/* coluna da esquerda com a miniatura: tudo cabe sem rolar */
.pc.pronto .pcBts { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.pc.pronto .pcBts .bt:first-child { grid-column: 1 / -1; }
.pc.pronto .pcBts .bt.sec { min-height: 34px; font-size: 12px; padding: 0 8px; }
.pc.comDet .pcPassos li { padding: 2px 8px; font-size: 12px; }
.pc.comDet .pcAgora { min-height: 0; }
.pcMini { margin-top: 2px; padding-top: 6px; }
.pcMini .pcSvg { max-height: 108px; }
.pcLado { gap: 10px; }
/* v73 · centro da engrenagem: nome e logomarca se revezam; miniatura centralizada e mais baixa */
.pcCentro.alterna .pcNome { animation: pcVez 9s ease-in-out infinite; }
.pcCentro.alterna .pcLogo { animation: pcVez 9s ease-in-out infinite; animation-delay: -4.5s; }
.pcNome, .pcLogo { transform-origin: 292px 168px; }
@keyframes pcVez { 0%, 42% { opacity: 1; transform: scale(1); } 50%, 92% { opacity: 0; transform: scale(.82); } 100% { opacity: 1; transform: scale(1); } }
.pcMini { margin-top: auto; border-top: 0; padding: 14px 0 4px; display: flex; justify-content: center; }
.pcMini .pcArte { width: 100%; max-width: 250px; margin: 0 auto; }
.pc.pronto .pcBts { margin-top: 6px; }
.pcBts { margin-top: 0; }
.pc:not(.comDet) .pcBts { margin-top: auto; }
/* v74 · sinal laranja de gerar no cartão do Início */
.etapa.ativa { position: relative; }
.etGerar { position: absolute; right: 12px; bottom: 12px; width: 30px; height: 30px; border-radius: 50%; background: #F5B400; color: #3D2A00; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; animation: piscaReg 1.4s ease-in-out infinite; box-shadow: 0 2px 6px rgba(245,180,0,.35); }
.etGerar:hover { background: #FFCA2C; }
.etGerar .ic { width: 16px; height: 16px; stroke-width: 2.4; }
.etGerar:focus-visible { outline: 2px solid var(--marca); outline-offset: 2px; }
/* miniatura: logo acima dos botões, centralizada */
.pc.comDet .pcMini { padding: 8px 0 0; margin-top: auto; }
.pc.comDet .pcMini .pcArte { max-width: 270px; }
.pc.comDet .pcBts { padding-top: 4px; margin-top: 0; }
/* a logomarca aparece primeiro, depois o nome */
.pcCentro.alterna .pcLogo { animation-delay: 0s; }
.pcCentro.alterna .pcNome { animation-delay: -4.5s; }
/* v75 · animações mais leves: a oficina se mexe em passos (cerca de 12 quadros por segundo), para não roubar processador do motor */
.pcEng.grande { animation-timing-function: steps(168); }
.pcEng.media { animation-timing-function: steps(96); }
.pcEng.peq { animation-timing-function: steps(72); }
.pcSeta { animation-timing-function: steps(26); }
.pcP1 { animation-timing-function: steps(10); }
.pcP2, .pcCart.mao { animation-timing-function: steps(10); }
.pcP3 { animation-timing-function: steps(14); }
.pcCart { animation-timing-function: steps(40); }
/* v76 · terminada a geração, a ilustração grande para e fica com a logomarca no centro;
   a pequenina (na coluna da esquerda, quando se abre o detalhe de uma regra) continua animada */
.pc.pronto .pcPalco .pcArte *, .pc.pronto .pcPalco .pcArte { animation: none !important; }
.pc.pronto .pcPalco .pcCentro.alterna .pcNome { opacity: 0; }
.pc.pronto .pcPalco .pcCentro.alterna .pcLogo { opacity: 1; transform: none; }
/* v77 · Área do Professor: disciplina com turmas juntas aparece uma vez só */
.apDisc .apTurma { display: block; }
.apDisc .apTurma.tot { font-weight: 600; color: var(--marca); }
.apTags i.j { background: var(--marca-suave); color: var(--marca); }

/* v78: combinados */
.sw.g-comb { background: #E8EEF8; }
/* v78: formulários de Novo / Editar / Excluir */
.dlgC.fm { max-width: 760px; max-height: calc(100vh - 32px); overflow: auto; gap: 12px; }
.fmCorpo { display: flex; flex-direction: column; gap: 12px; }
.fmGrupo { border: 1px solid #E3E7EE; border-radius: 12px; padding: 10px 14px 14px; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px 14px; }
.fmGrupo legend { font-weight: 600; font-size: 13px; padding: 0 6px; color: var(--pri, #1F4E8C); }
.fmGrupo.fmLargo { display: block; }
.fmCampo { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: #5B6577; }
.fmCampo input, .fmCampo select { font: inherit; font-size: 14px; color: #1F2633; padding: 8px 10px; border: 1px solid #C3CAD5; border-radius: 9px; background: #fff; min-width: 0; }
.fmCampo input:focus, .fmCampo select:focus { outline: 2px solid #9DB8E0; border-color: #6F93C9; }
.fmCalc { grid-column: 1 / -1; font-size: 13px; color: #3B4556; background: #F4F7FB; border-radius: 8px; padding: 8px 10px; }
.fmCalc small { color: #8A93A3; }
.fmDica { margin: 0 0 8px; font-size: 12px; color: #6B7485; }
.fmDisp { border-collapse: collapse; width: 100%; font-size: 12px; }
.fmDisp th { font-weight: 600; color: #5B6577; padding: 4px 6px; text-align: center; white-space: nowrap; }
.fmDisp tr th:first-child { text-align: left; }
.fmDisp td { text-align: center; padding: 3px; }
.fmDisp td.fora { background: repeating-linear-gradient(45deg, #F5F6F8, #F5F6F8 4px, #fff 4px, #fff 8px); }
.fmPt { width: 28px; height: 22px; border-radius: 6px; border: 1px solid #C3CAD5; background: #fff; cursor: pointer; }
.fmPt.on { background: #CFE3FF; border-color: #6F93C9; }
.fmPt.aula { background: #2E7D4F; border-color: #2E7D4F; cursor: not-allowed; position: relative; }
.fmPt.aula::after { content: '✓'; color: #fff; font-size: 12px; }
.fmAlerta { background: #FFF6E0; color: #7A5200; border-radius: 8px; padding: 8px 12px; font-size: 13px; }
.fmRod { align-items: center; gap: 8px; }
.fmRod .esp { flex: 1; }
.bt.fmExcluir { background: #fff; color: #B42318; border: 1px solid #F1B5AE; }
.bt.fmExcluir:hover { background: #FDECEA; }

/* ===================== v79 · formulários: janela que se move, campos de fórmula e resumo ===================== */
.dlg.fmAberto { background: rgba(17,24,39,.22); }
.dlgC.movel { position: relative; will-change: transform; box-shadow: 0 18px 50px rgba(11,20,40,.28); }
.dlgC.movel.arrastando { transition: none; box-shadow: 0 24px 64px rgba(11,20,40,.36); user-select: none; }
.dlgC.fm .fmTit { position: sticky; top: -24px; z-index: 3; margin: -24px -24px 0; padding: 14px 20px 12px; background: var(--sup); border-bottom: 1px solid var(--linha2); border-radius: 16px 16px 0 0; font-size: 18px; }
.dlgAlca { cursor: grab; touch-action: none; user-select: none; }
.dlgC.arrastando .dlgAlca { cursor: grabbing; }
.dlgGrip { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 7px; background: var(--marca-suave); color: var(--marca); flex: 0 0 auto; }
.dlgGrip .ic { width: 16px; height: 16px; }
.dlgAlca:hover .dlgGrip { background: var(--marca-media); }
.fmCalcCampo output { display: flex; align-items: center; min-height: 37px; padding: 8px 10px; border-radius: 9px; border: 1px dashed #B9C6DA; background: #F4F7FB; color: var(--marca-esc); font-size: 14px; font-weight: 700; font-variant-numeric: tabular-nums; }
.fmCalcCampo output { justify-content: space-between; gap: 8px; }
.fmCalcCampo output i { font-style: normal; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: var(--marca); background: #fff; border: 1px solid #C9D7EE; border-radius: 5px; padding: 1px 6px; }
.fmCalcCampo small { font-size: 11px; color: #8A93A3; }
.fmResumo { display: flex; flex-direction: column; gap: 12px; }
.fmResNums { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px; }
.fmResNum { display: flex; align-items: baseline; gap: 8px; padding: 10px 12px; border-radius: 10px; background: #F4F7FB; border: 1px solid #E3E7EE; }
.fmResNum b { font-size: 22px; line-height: 1; color: var(--marca-esc); font-variant-numeric: tabular-nums; }
.fmResNum span { font-size: 12.5px; color: #5B6577; }
.fmResNum.aula b { color: var(--ok); }
.fmResBarras { display: flex; flex-direction: column; gap: 8px; }
.fmResBarra { display: grid; grid-template-columns: 92px minmax(0, 1fr); align-items: center; gap: 2px 12px; }
.fmResRot { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: #344054; }
.fmResBarra.tM .fmResRot .ic { color: var(--tM); } .fmResBarra.tT .fmResRot .ic { color: var(--tT); } .fmResBarra.tN .fmResRot .ic { color: var(--tN); }
.fmResVal { display: flex; align-items: center; min-width: 0; }
.fmResVal .barra { flex: 1 1 auto; width: auto; height: 10px; border-radius: 5px; margin-right: 10px; }
.fmResVal .barra span { border-radius: 5px; }
.fmResVal .barraT { font-size: 13px; font-weight: 700; color: var(--tinta); font-variant-numeric: tabular-nums; min-width: 44px; text-align: right; }
.fmResBarra small { grid-column: 2; font-size: 11.5px; color: #8A93A3; }
@media (max-width: 560px) { .dlgC.fm .fmTit { font-size: 16px; } .fmResBarra { grid-template-columns: 78px minmax(0, 1fr); } }

/* ===================== v79 · Área do Professor ===================== */
/* topo: foto do professor à esquerda, logo à direita */
.apMarca .apFoto { position: relative; width: 42px; height: 42px; border-radius: 50%; flex: 0 0 auto; overflow: hidden; background: var(--acento); color: var(--sobre-acento); box-shadow: 0 0 0 2px rgba(255,255,255,.85); display: flex; align-items: center; justify-content: center; opacity: 1; font-size: 15px; white-space: nowrap; }
.apMarca .apFotoIni { display: inline; opacity: 1; font-weight: 800; font-size: 15px; letter-spacing: .3px; color: var(--sobre-acento); }
.apMarca .apFoto img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover; }
.apTopo .apLogo { margin-left: auto; flex: 0 0 auto; }
/* Sair: no fim da tela, ou na barra ao lado do Salvar e enviar */
.apFim { display: flex; justify-content: center; padding: 8px 0 4px; }
.apSairFim { display: inline-flex; align-items: center; gap: 8px; min-height: 42px; padding: 0 22px; border-radius: 12px; border: 1.5px solid var(--linha); background: var(--sup); color: #8A2A22; font: inherit; font-size: 14.5px; font-weight: 600; cursor: pointer; }
.apSairFim .ic { width: 17px; height: 17px; }
.apSairFim:hover { border-color: #D9A39D; background: #FDF4F3; }
.apBarraBts { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.apSairBarra { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 38px; padding: 0 12px; border-radius: 10px; border: 1.5px solid var(--linha); background: var(--sup); color: #8A2A22; font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; }
.apSairBarra .ic { width: 16px; height: 16px; }
.apSairBarra:hover { border-color: #D9A39D; background: #FDF4F3; }
@media (max-width: 420px) { .apSairBarra { padding: 0 10px; } .apSairBarra span { display: none; } }
/* noite / manhã e tarde logo abaixo do quadro */
.apMedCard { padding: 12px; }
/* Fale conosco */
.apPGrupo { margin: 6px 0 -2px; font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; color: var(--cinza2); }
.apPBloco { border: 1.5px solid var(--linha); border-radius: 14px; background: var(--sup); overflow: hidden; transition: border-color .15s, box-shadow .15s; }
.apPBloco .apPessoa { width: 100%; border: 0; border-radius: 0; background: transparent; box-shadow: none; padding: 11px 12px; }
.apPBloco .apPessoa:hover { background: var(--marca-suave); }
.apPTx { flex: 1 1 auto; min-width: 0; }
.apPTx small { overflow-wrap: anywhere; }
.apPessoa em { margin-left: 0; }
.apPSeta { flex: 0 0 auto; display: flex; color: var(--cinza2); transition: transform .2s; }
.apPSeta .ic { width: 18px; height: 18px; }
.apPBloco.aberto .apPSeta { transform: rotate(180deg); color: var(--marca); }
.apPBloco.on { border-color: var(--marca); box-shadow: inset 4px 0 0 var(--marca); }
.apPBloco.on .apPessoa { background: var(--marca-suave); }
.apPExp { padding: 4px 12px 12px; display: flex; flex-direction: column; gap: 8px; border-top: 1px solid var(--linha2); padding-top: 12px; }
/* a Secretaria Acadêmica: sempre no topo, num tom próprio (o dourado da marca) */
.apPBloco.sec { border-color: color-mix(in srgb, var(--acento) 55%, #fff); background: color-mix(in srgb, var(--acento) 9%, #fff); }
.apPBloco.sec .apPessoa:hover, .apPBloco.sec.on .apPessoa { background: color-mix(in srgb, var(--acento) 16%, #fff); }
.apPBloco.sec.on { border-color: color-mix(in srgb, var(--acento) 85%, #000); box-shadow: inset 4px 0 0 var(--acento); }
.apPBloco.sec .apPAv { background: var(--acento); color: var(--sobre-acento); }
.apPBloco.sec .apPExp { border-top-color: color-mix(in srgb, var(--acento) 30%, #fff); }
/* histórico de contatos */
.apHistL { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.apHistL li { display: flex; align-items: center; gap: 10px; padding: 9px 2px; border-top: 1px solid var(--linha2); }
.apHistL li:first-child { border-top: 0; padding-top: 2px; }
.apHistIc { width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; background: var(--marca-suave); color: var(--marca); }
.apHistIc .ic { width: 16px; height: 16px; }
.apHistL li.m-whatsapp .apHistIc { background: #E9F8EF; color: #1a8f4c; }
.apHistL li.m-email .apHistIc { background: #FFF3D6; color: #8a5300; }
.apHistTx { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.apHistTx b { font-size: 14px; } .apHistTx small { font-size: 12.5px; color: var(--cinza); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.apHistL1 { display: flex; align-items: baseline; justify-content: space-between; gap: 2px 10px; flex-wrap: wrap; }
.apHistL time { font-size: 12.5px; color: var(--cinza); font-variant-numeric: tabular-nums; white-space: nowrap; }

/* ---------- v80: Acessos como cadastro único e Secretaria e Coordenação ---------- */
.acForm { border-top: 0; padding: 16px; border: 1px solid var(--linha); border-radius: 14px; background: #FBFCFD; margin: 6px 0 14px; }
.acForm .linha input, .acForm .linha select, .acForm .campo select { height: 40px; border: 1px solid #C3CAD5; border-radius: 10px; padding: 0 10px; font: inherit; min-width: 0; width: 100%; background: #fff; }
.acForm .campo input:disabled, .acForm .campo select:disabled { background: #F1F3F6; color: var(--cinza); }
.acCoord { align-items: flex-end; padding: 12px; border-radius: 12px; background: var(--marca-suave); }
.acTab td { vertical-align: top; }
.acTab tr.acEditando td { background: #FFF8E1; }
.acPref { font-size: 10.5px; padding: 1px 7px; margin-left: 4px; vertical-align: 1px; white-space: nowrap; }
.acCursos { display: block; font-size: 11.5px; margin-top: 2px; max-width: 220px; }
.eqPessoa { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border: 1px solid var(--linha); border-radius: 12px; background: #fff; }
.eqPessoa b { font-size: 13px; }
.eqPessoa small { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; font-size: 12px; color: var(--cinza); }
.eqPessoa small .ic { width: 13px; height: 13px; color: var(--ok); }

/* ---------- v81: botões de turno do Mapa de Salas (mostram só os turnos marcados) ---------- */
.chip.fixo.chTurno { cursor: pointer; font: inherit; font-size: 13px; color: inherit; }
.chip.fixo.chTurno:hover { border-color: var(--marca); }
.chip.fixo.chTurno.on { font-weight: 700; border-width: 1.5px; box-shadow: none; }
.chip.fixo.chTurno.on.tM { border-color: var(--tM); background: color-mix(in srgb, var(--tM) 12%, #fff); }
.chip.fixo.chTurno.on.tT { border-color: var(--tT); background: color-mix(in srgb, var(--tT) 12%, #fff); }
.chip.fixo.chTurno.on.tN { border-color: var(--tN); background: color-mix(in srgb, var(--tN) 12%, #fff); }

/* ---------- v81: soma da seleção, como no Excel ---------- */
.gsSoma { position: absolute; z-index: 30; display: flex; align-items: center; gap: 12px; padding: 6px 12px 6px 6px; border-radius: 12px;
  background: #fff; border: 1px solid color-mix(in srgb, var(--marca) 25%, #fff); box-shadow: 0 6px 20px rgba(11, 42, 91, .18), 0 1px 3px rgba(11, 42, 91, .12);
  font-size: 12.5px; color: #1d2939; cursor: copy; user-select: none; white-space: nowrap; transition: transform .12s ease, background .2s ease; pointer-events: auto; }
.gsSoma:hover { transform: translateY(-1px); }
.gsSoma .gsSomaIc { width: 28px; height: 28px; border-radius: 8px; display: grid; place-items: center; background: var(--marca); color: var(--acento); font-weight: 800; font-size: 16px; }
.gsSoma span:not(.gsSomaIc) { display: flex; flex-direction: column; line-height: 1.15; }
.gsSoma small { font-size: 10.5px; color: #667085; text-transform: uppercase; letter-spacing: .04em; }
.gsSoma b { font-size: 14px; color: var(--marca); font-variant-numeric: tabular-nums; }
.gsSoma.copiou { background: color-mix(in srgb, var(--acento) 22%, #fff); }
