:root {
    --page: #f5f5f7;
    --surface: #ffffff;
    --surface-soft: rgba(255, 255, 255, .84);
    --text: #1d1d1f;
    --muted: #6e6e73;
    --border: #d2d2d7;
    --border-soft: #e8e8ed;
    --primary: #0071e3;
    --primary-dark: #005bb5;
    --danger: #b42318;
    --success: #027a48;
    --warning: #b54708;
    --radius-lg: 24px;
    --radius-md: 16px;
    --radius-sm: 12px;
    --shadow-soft: 0 18px 45px rgba(0, 0, 0, .08);
    --shadow-card: 0 10px 30px rgba(0, 0, 0, .06);
    --sidebar-width: 260px;
    --font-main: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
}

* { box-sizing: border-box; }

body {
    margin: 0;
    font-family: var(--font-main);
    background:
        radial-gradient(circle at 20% 0%, rgba(0, 113, 227, .10), transparent 30%),
        radial-gradient(circle at 80% 10%, rgba(132, 92, 255, .10), transparent 28%),
        var(--page);
    color: var(--text);
    min-height: 100vh;
}

a { color: inherit; }

.app-header {
    position: sticky;
    top: 0;
    z-index: 20;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 14px 32px;
    background: rgba(255, 255, 255, .78);
    backdrop-filter: blur(18px);
    border-bottom: 1px solid var(--border-soft);
}

.brand {
    display: flex;
    align-items: center;
    gap: 12px;
    text-decoration: none;
}

.brand__icon,
.hero-icon,
.cycle-icon {
    display: inline-grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: 13px;
    color: white;
    background: linear-gradient(145deg, #0a84ff, #0066d6);
    box-shadow: 0 12px 24px rgba(0, 113, 227, .22);
}

.brand small { display: block; color: var(--muted); font-size: 12px; margin-top: 2px; }

.top-nav {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
}

.top-nav a {
    position: relative;
    color: #3f4656;
    font-weight: 600;
    font-size: 14px;
    text-decoration: none;
    padding: 9px 3px;
}

.top-nav a.active { color: var(--primary); }
.top-nav a.active::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -15px;
    height: 2px;
    background: var(--primary);
    border-radius: 999px;
}

.nav-login {
    background: #eef5ff;
    color: var(--primary) !important;
    border-radius: 999px;
    padding: 9px 14px !important;
}

.admin-sidebar {
    position: fixed;
    left: 24px;
    top: 88px;
    bottom: 24px;
    width: var(--sidebar-width);
    padding: 18px;
    background: rgba(255, 255, 255, .86);
    border: 1px solid var(--border-soft);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-soft);
    overflow-y: auto;
}

.sidebar-logo {
    display: flex;
    gap: 10px;
    align-items: center;
    text-decoration: none;
    margin-bottom: 16px;
}

.admin-sidebar nav {
    display: grid;
    gap: 5px;
}

.admin-sidebar nav a {
    text-decoration: none;
    color: #3f4656;
    padding: 10px 12px;
    border-radius: 13px;
    font-weight: 600;
}

.admin-sidebar nav a:hover,
.admin-sidebar nav a:focus {
    background: #eef5ff;
    color: var(--primary);
}

.logout-form { margin-top: 18px; }

.app-main {
    width: min(1320px, calc(100% - 32px));
    margin: 28px auto;
}

.is-admin .app-main {
    margin-left: calc(var(--sidebar-width) + 56px);
    width: calc(100% - var(--sidebar-width) - 88px);
    max-width: 1480px;
}

.card,
.page-hero,
.legend-card,
.stat-card {
    background: var(--surface-soft);
    border: 1px solid var(--border-soft);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-card);
}

.card {
    padding: 22px;
    margin-bottom: 18px;
}

.no-padding { padding: 0; }

.page-hero {
    display: flex;
    gap: 18px;
    align-items: center;
    padding: 24px;
    margin-bottom: 18px;
}

.hero-icon { width: 64px; height: 64px; font-size: 28px; }
.hero-actions { margin-left: auto; }

.eyebrow {
    margin: 0 0 6px;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--primary);
    font-weight: 800;
    font-size: 12px;
}

h1, h2, h3 { margin: 0 0 8px; letter-spacing: -.03em; }
h2 { font-size: clamp(26px, 3vw, 38px); }
h3 { font-size: 20px; }

.muted { color: var(--muted); }

.grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
    gap: 14px;
}

.filters-card { padding: 18px; }
.filters-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(160px, 1fr)) auto;
    gap: 16px;
    align-items: end;
}

.filters-actions {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}

label { display: block; font-weight: 700; margin-bottom: 7px; font-size: 13px; }

input, select, textarea {
    width: 100%;
    border: 1px solid var(--border-soft);
    border-radius: 12px;
    padding: 11px 12px;
    font-size: 14px;
    background: white;
    color: var(--text);
    outline: none;
}

input:focus, select:focus, textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 4px rgba(0, 113, 227, .12); }
textarea { resize: vertical; }

.button, button {
    border: 0;
    border-radius: 13px;
    padding: 11px 15px;
    text-decoration: none;
    cursor: pointer;
    font-size: 14px;
    font-weight: 800;
    display: inline-block;
    background: var(--primary);
    color: white;
    box-shadow: 0 10px 22px rgba(0, 113, 227, .20);
}

.button:hover, button:hover { background: var(--primary-dark); }
.button-ghost, .nav a.secondary { background: white; color: #2f3848; border: 1px solid var(--border-soft); box-shadow: none; }
.button-ghost:hover { background: #f8fafc; color: var(--primary); }
.button.secondary { background: #2f3848; }
.button.danger, button.danger { background: var(--danger); }
.full-width { width: 100%; }
.small { padding: 7px 10px; font-size: 12px; }

.page-header {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: center;
}

.stat-card {
    padding: 20px;
    text-decoration: none;
    color: var(--text);
}
.stat-card strong { font-size: 32px; display: block; letter-spacing: -.04em; }
.stat-card span { color: var(--muted); }

.form-field { margin-bottom: 12px; }
.form-field--checkbox { display: flex; align-items: center; padding-top: 28px; }
.form-field--checkbox input { width: auto; margin-right: 8px; }
.form-actions { margin-top: 16px; display: flex; gap: 8px; flex-wrap: wrap; }
.search-form { display: flex; gap: 8px; flex-wrap: wrap; }
.search-form input { flex: 1; min-width: 220px; }
.search-form button, .search-form a { width: auto; }
.inline-form { margin: 0; display: inline; }

.table-wrapper { overflow-x: auto; }
table { width: 100%; border-collapse: separate; border-spacing: 0; background: var(--surface); }
th, td { border-bottom: 1px solid var(--border-soft); padding: 11px; text-align: left; vertical-align: middle; }
th { background: #f7f9fc; font-size: 13px; color: #25314a; }
tr:last-child td { border-bottom: 0; }

.actions { display: flex; gap: 2px; flex-wrap: wrap; }
.actions form { margin: 0; }

.alert-danger, .alert-success, .alert-warning {
    padding: 14px 16px;
    border-radius: var(--radius-md);
    margin-bottom: 14px;
}
.alert-danger { background: #fff1f3; border: 1px solid #ffd7de; color: var(--danger); }
.alert-success { background: #ecfdf3; border: 1px solid #abefc6; color: var(--success); }
.alert-warning { background: #fffaeb; border: 1px solid #fedf89; color: var(--warning); }

.badge { border-radius: 999px; padding: 5px 9px; font-size: 12px; font-weight: 800; }
.badge-success { background: #dcfae6; color: var(--success); }
.badge-muted { background: #f0f2f5; color: #465163; }
.badge-danger { background: #ffe4e8; color: var(--danger); }

.grade-scroll {
    max-height: calc(100vh - 265px);
    overflow-y: auto;
    padding: 0 0 6px;
}

.cycle-card { padding: 18px; border-bottom: 1px solid var(--border-soft); }
.cycle-card:last-child { border-bottom: 0; }
.cycle-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 12px;
}
.cycle-header > div { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.cycle-header h3 { margin: 0; }
.cycle-icon { width: 34px; height: 34px; font-size: 17px; }

.grade-table-wrapper { border: 1px solid var(--border-soft); border-radius: 14px; overflow: auto; }
.grade-table { table-layout: fixed; min-width: 980px; }
.grade-table th,
.grade-table td { text-align: center; padding: 7px 8px; height: 34px; font-size: 13px; }
.grade-table thead th { position: sticky; top: 0; z-index: 1; }
.grade-table tbody th { width: 140px; font-weight: 800; color: #25314a; background: #f8fafc; }
.grade-cell strong { display: block; font-weight: 800; }
.grade-cell span { display: block; font-size: 12px; color: #334155; margin-top: 2px; }

.aula-normal { background: #ffffff; }
.aula-remota { background: #dcf7e3 !important; color: #05603a; }
.aula-pi { background: #fff1b8 !important; color: #8a4b00; }
.aula-edital { background: #ffd9e1 !important; color: #a1102a; }

.legend-card {
    display: grid;
    grid-template-columns: repeat(4, minmax(160px, 1fr));
    gap: 12px;
    padding: 14px;
    margin: 18px 0;
}
.legend-chip {
    border-radius: 13px;
    padding: 12px 14px;
    text-align: center;
    font-weight: 800;
    border: 1px solid var(--border-soft);
}
.legend-remota { background: #dcf7e3; color: #05603a; }
.legend-pi { background: #fff1b8; color: #8a4b00; }
.legend-edital { background: #ffd9e1; color: #a1102a; }
.legend-normal { background: #ffffff; color: #25314a; }

.print-footer { color: var(--muted); text-align: center; margin: 12px 0 26px; }
.empty-state { padding: 28px; text-align: center; }

.mapa-institucional { display: grid; gap: 18px; }
.mapa-dia {
    border: 1px solid var(--border-soft);
    border-radius: var(--radius-md);
    overflow: hidden;
    background: white;
}
.mapa-dia__header {
    padding: 12px 16px;
    background: linear-gradient(135deg, var(--primary), #4f8cff);
    color: white;
    font-weight: 900;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.mapa-vazio { padding: 18px; margin: 0; }
.mapa-table th, .mapa-table td { font-size: 13px; }

.about-grid { align-items: stretch; }
.sobre-hero { margin-top: 8px; }

.footer { color: var(--muted); padding: 28px; text-align: center; }
code { background: #f3f4f6; border-radius: 4px; padding: 2px 4px; }

@media (max-width: 1100px) {
    .filters-grid { grid-template-columns: repeat(2, minmax(160px, 1fr)); }
    .legend-card { grid-template-columns: repeat(2, 1fr); }
    .is-admin .app-main { margin-left: auto; width: min(1320px, calc(100% - 32px)); }
    .admin-sidebar { position: static; width: auto; margin: 16px; }
}

@media (max-width: 760px) {
    .app-header { align-items: flex-start; flex-direction: column; padding: 14px 18px; }
    .top-nav { gap: 10px; }
    .top-nav a.active::after { display: none; }
    .page-hero { align-items: flex-start; flex-direction: column; }
    .filters-grid, .legend-card { grid-template-columns: 1fr; }
    .cycle-header { align-items: flex-start; flex-direction: column; }
    .page-header { display: block; }
    .page-header .button { margin-top: 10px; }
}

@media print {
    @page { size: A4 landscape; margin: 8mm; }
    body { background: white; }
    .app-header, .admin-sidebar, .filters-card, .footer, .hero-actions, .button, .alert-danger, .alert-success, .alert-warning { display: none !important; }
    .app-main, .is-admin .app-main { margin: 0; width: 100%; max-width: none; }
    .page-hero, .card, .legend-card { box-shadow: none; border-color: #999; background: white; }
    .grade-scroll { max-height: none; overflow: visible; }
    .cycle-card { break-inside: avoid; page-break-inside: avoid; }
    .grade-table th, .grade-table td { font-size: 9px; padding: 4px; height: 24px; }
    .legend-card { grid-template-columns: repeat(4, 1fr); }
}

/* Ajustes v2026.1.1: consulta pública por curso/turno e mapa oficial no padrão enviado. */
.filters-grid--course-only {
    grid-template-columns: minmax(280px, 1fr) auto;
}

.only-course-filter {
    margin-bottom: 18px;
}

.mapa-oficial-page {
    background: #fff;
    color: #000;
    font-family: Arial, Helvetica, sans-serif;
    padding: 28px 42px;
    box-shadow: none;
    border: 0;
    max-width: 1120px;
    margin: 0 auto 24px;
}

.mapa-oficial-topo {
    display: grid;
    grid-template-columns: 120px 180px 1fr 230px;
    align-items: center;
    gap: 20px;
    margin-bottom: 10px;
}

.mapa-logo {
    min-height: 66px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    font-weight: 900;
    line-height: .95;
}

.mapa-logo small {
    display: block;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.1;
}

.mapa-logo-sp {
    color: #137a38;
    border: 0;
    font-size: 28px;
}

.mapa-logo-cps {
    color: #bd0000;
    font-size: 48px;
    letter-spacing: -3px;
}

.mapa-logo-cps small {
    color: #111;
    letter-spacing: 0;
}

.mapa-logo-fatec {
    color: #4a4f57;
    font-size: 50px;
    letter-spacing: -2px;
}

.mapa-logo-fatec small {
    color: #c81010;
    font-size: 13px;
}

.mapa-logo-dsm {
    color: #0b86ca;
    font-size: 34px;
    border: 0;
}

.mapa-logo-dsm small {
    color: #0b86ca;
    font-size: 13px;
}

.mapa-oficial-titulo {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: end;
    color: red;
    margin: 0 0 8px;
}

.mapa-oficial-titulo h2 {
    text-align: center;
    font-size: 26px;
    font-weight: 900;
    margin: 0;
    color: red;
    letter-spacing: .02em;
}

.mapa-oficial-titulo strong {
    font-size: 24px;
    color: red;
    white-space: nowrap;
}

.mapa-oficial-dia {
    display: grid;
    grid-template-columns: 48px 1fr;
    border: 3px solid #0070c0;
    border-left: 0;
    margin: 0 0 22px;
    page-break-inside: avoid;
    break-inside: avoid;
}

.mapa-oficial-dia-label {
    background: #0070c0;
    color: #fff;
    font-weight: 900;
    font-size: 28px;
    letter-spacing: .03em;
    text-transform: uppercase;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 10px 0;
}

.mapa-oficial-table {
    width: 100%;
    border-collapse: collapse;
    border-spacing: 0;
    table-layout: fixed;
    font-size: 12px;
}

.mapa-oficial-table th,
.mapa-oficial-table td {
    border: 0;
    border-bottom: 1px solid #a6a6a6;
    padding: 3px 8px;
    height: 20px;
    vertical-align: middle;
    color: #000;
}

.mapa-oficial-table tr:nth-child(odd) td:not(.mapa-ciclo-cell),
.mapa-oficial-table tr:nth-child(odd) th:not(.mapa-ciclo-cell) {
    background: #d9d9d9;
}

.mapa-oficial-table .ciclo-start th,
.mapa-oficial-table .ciclo-start td {
    border-top: 2px solid #000;
}

.mapa-oficial-table .ciclo-end th,
.mapa-oficial-table .ciclo-end td {
    border-bottom: 2px solid #000;
}

.mapa-ciclo-cell {
    width: 96px;
    text-align: center;
    font-weight: 900;
    font-size: 14px;
    background: #fff !important;
    border-right: 2px solid #000 !important;
}

.mapa-horario-cell { width: 100px; text-align: center; }
.mapa-disciplina-cell { width: 35%; font-weight: 500; }
.mapa-professor-cell { width: 20%; text-align: center; }
.mapa-modalidade-cell { width: 14%; text-align: center; }
.mapa-sala-cell { width: 20%; text-align: center; }

.mapa-oficial-table tr.aula-remota td:not(.mapa-ciclo-cell) { background: #dff2d8 !important; }
.mapa-oficial-table tr.aula-pi td:not(.mapa-ciclo-cell) { background: #fff2cc !important; }
.mapa-oficial-table tr.aula-edital td:not(.mapa-ciclo-cell) { background: #f4cccc !important; }

.mapa-datas-importantes {
    margin: 54px auto 20px;
    max-width: 900px;
    text-align: center;
    border-top: 3px solid #0070c0;
    padding-top: 10px;
}

.mapa-datas-importantes h2 {
    color: #0070c0;
    font-size: 32px;
    font-weight: 900;
    margin-bottom: 24px;
}

.mapa-datas-importantes div {
    margin-bottom: 24px;
}

.mapa-datas-importantes strong {
    display: block;
    color: red;
    font-size: 17px;
    font-weight: 900;
    margin-bottom: 6px;
}

.mapa-datas-importantes span {
    display: block;
    font-size: 26px;
    color: #000;
}

@media (max-width: 900px) {
    .filters-grid--course-only { grid-template-columns: 1fr; }
    .mapa-oficial-page { padding: 18px; }
    .mapa-oficial-topo { grid-template-columns: repeat(2, 1fr); }
    .mapa-oficial-dia { grid-template-columns: 38px 1fr; }
    .mapa-oficial-dia-label { font-size: 20px; }
    .mapa-oficial-table { font-size: 10px; }
}

@media print {
    @page { size: A4 portrait; margin: 8mm; }
    .no-print, .filters-card, .app-header, .admin-sidebar, .footer, .legend-card, .page-hero, .hero-actions { display: none !important; }
    .mapa-oficial-page { display: block !important; padding: 0; max-width: none; margin: 0; }
    .mapa-oficial-topo { margin-top: 0; }
    .mapa-oficial-dia { margin-bottom: 12px; }
    .mapa-oficial-table { font-size: 9px; }
    .mapa-oficial-table th, .mapa-oficial-table td { padding: 2px 5px; height: 15px; }
    .mapa-oficial-dia-label { font-size: 22px; }
    .mapa-datas-importantes { margin-top: 32px; }
    .mapa-datas-importantes h2 { font-size: 26px; }
    .mapa-datas-importantes span { font-size: 21px; }
}

@media print {
    @page { size: A4 landscape; margin: 8mm; }
    @page mapa-salas { size: A4 portrait; margin: 8mm; }
    body.page-mapa-salas .mapa-oficial-page { page: mapa-salas; }
    body.page-mapa-salas .app-main { width: 100%; max-width: none; margin: 0; }
    body.page-horarios .grade-table th,
    body.page-horarios .grade-table td { font-size: 9px; }
}

.mapa-oficial-topo--imagem {
    display: block;
    text-align: center;
    margin-bottom: 0;
}

.mapa-header-logos {
    display: block;
    width: 100%;
    max-width: 980px;
    height: auto;
    margin: 0 auto 0;
}

@media print {
    .mapa-header-logos { max-width: 980px; }
}


/* v2026.1.2 — layouts oficiais copiados dos modelos PDF de horário e mapa. */
.horario-oficial-sheet,
.mapa-oficial-sheet {
    background: #fff;
    color: #000;
    font-family: Arial, Helvetica, sans-serif;
    box-shadow: none;
    border: 0;
    max-width: 1320px;
    margin: 0 auto 28px;
    padding: 24px 32px 32px;
}

.horario-oficial-header {
    display: grid;
    grid-template-columns: 1fr 120px;
    align-items: end;
    margin-bottom: 8px;
}

.horario-oficial-header img,
.mapa-oficial-header img {
    display: block;
    width: 100%;
    max-width: 1060px;
    height: auto;
    margin: 0 auto;
}

.horario-oficial-header strong {
    font-size: 20px;
    font-weight: 900;
    text-align: right;
    white-space: nowrap;
}

.horario-oficial-scroll {
    max-height: calc(100vh - 190px);
    overflow-y: auto;
    padding-right: 6px;
}

.horario-ciclo-bloco {
    margin: 0 0 42px;
    page-break-inside: avoid;
    break-inside: avoid;
}

.horario-ciclo-bloco h2 {
    font-size: 24px;
    text-align: center;
    margin: 12px 0 18px;
    font-weight: 900;
    color: #000;
}

.horario-oficial-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 13px;
}

.horario-oficial-table th,
.horario-oficial-table td {
    border: 2px solid #000;
    padding: 2px 7px;
    height: 20px;
    text-align: center;
    vertical-align: middle;
    color: #000;
}

.horario-oficial-table thead th {
    background: #b4c7e7;
    color: #000;
    font-weight: 900;
}

.horario-oficial-table tbody th {
    width: 100px;
    background: #d9e2f3;
    color: #000;
    font-weight: 900;
}

.horario-oficial-table td.aula-normal { background: #fff; }
.horario-oficial-table td.aula-remota { background: #d9ead3 !important; color: #000; }
.horario-oficial-table td.aula-pi { background: #fff2cc !important; color: #9c5700; font-weight: 900; }
.horario-oficial-table td.aula-edital { background: #f4cccc !important; color: #990000; font-weight: 900; }

.horario-legenda {
    display: flex;
    justify-content: center;
    gap: 18px;
    margin-top: 22px;
    font-size: 12px;
    color: #000;
}

.horario-legenda span {
    border: 1px solid #000;
    padding: 4px 10px;
    min-width: 150px;
    text-align: center;
}

.mapa-oficial-sheet {
    max-width: 1060px;
    padding: 22px 30px 30px;
}

.mapa-oficial-header {
    margin-bottom: 4px;
}

.mapa-oficial-title-row {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: end;
    margin: 0 0 8px;
}

.mapa-oficial-title-row h2 {
    color: red;
    text-align: center;
    font-size: 25px;
    font-weight: 900;
    margin: 0;
}

.mapa-oficial-title-row strong {
    color: red;
    font-size: 23px;
    font-weight: 900;
    white-space: nowrap;
}

.mapa-dia-oficial {
    display: grid;
    grid-template-columns: 48px 1fr;
    border: 3px solid #0070c0;
    border-left: 0;
    margin: 0 0 22px;
    page-break-inside: avoid;
    break-inside: avoid;
}

.mapa-dia-oficial-label {
    background: #0070c0;
    color: #fff;
    font-weight: 900;
    font-size: 27px;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    display: flex;
    align-items: center;
    justify-content: center;
    letter-spacing: .04em;
}

.mapa-table-oficial {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 11px;
}

.mapa-table-oficial th,
.mapa-table-oficial td {
    color: #000;
    border-bottom: 1px solid #808080;
    padding: 2px 8px;
    height: 19px;
    vertical-align: middle;
}

.mapa-table-oficial tr:nth-child(odd) td:not(.mapa-ciclo-oficial),
.mapa-table-oficial tr:nth-child(odd) th:not(.mapa-ciclo-oficial) { background: #d9d9d9; }

.mapa-table-oficial .ciclo-start th,
.mapa-table-oficial .ciclo-start td { border-top: 2px solid #000; }

.mapa-table-oficial .ciclo-end th,
.mapa-table-oficial .ciclo-end td { border-bottom: 2px solid #000; }

.mapa-ciclo-oficial {
    width: 88px;
    text-align: center;
    font-size: 13px;
    font-weight: 900;
    background: #fff !important;
    border-right: 2px solid #000 !important;
}

.mapa-horario-oficial { width: 95px; text-align: center; }
.mapa-disciplina-oficial { width: 35%; }
.mapa-professor-oficial { width: 20%; text-align: center; }
.mapa-modalidade-oficial { width: 14%; text-align: center; }
.mapa-sala-oficial { width: 20%; text-align: center; }

.mapa-table-oficial tr.aula-remota td:not(.mapa-ciclo-oficial) { background: #d9ead3 !important; }
.mapa-table-oficial tr.aula-pi td:not(.mapa-ciclo-oficial) { background: #fff2cc !important; }
.mapa-table-oficial tr.aula-edital td:not(.mapa-ciclo-oficial) { background: #f4cccc !important; }

.mapa-datas-importantes-oficial {
    text-align: center;
    margin: 48px auto 12px;
}

.mapa-datas-importantes-oficial h2 {
    color: #0070c0;
    font-size: 31px;
    font-weight: 900;
    margin: 0 0 22px;
}

.mapa-datas-importantes-oficial div { margin-bottom: 20px; }
.mapa-datas-importantes-oficial strong { display: block; color: red; font-size: 16px; margin-bottom: 4px; }
.mapa-datas-importantes-oficial span { display: block; color: #000; font-size: 25px; }

@media (max-width: 900px) {
    .horario-oficial-sheet,
    .mapa-oficial-sheet { padding: 16px; overflow-x: auto; }
    .horario-oficial-table { min-width: 1050px; }
    .mapa-dia-oficial { min-width: 980px; }
}

@media print {
    body.page-horarios .horario-oficial-sheet { padding: 0; max-width: none; margin: 0; }
    body.page-horarios .horario-oficial-scroll { max-height: none; overflow: visible; }
    body.page-horarios .horario-ciclo-bloco { margin-bottom: 34px; }
    body.page-horarios .horario-ciclo-bloco h2 { font-size: 18px; margin: 8px 0 12px; }
    body.page-horarios .horario-oficial-table { font-size: 9px; }
    body.page-horarios .horario-oficial-table th,
    body.page-horarios .horario-oficial-table td { padding: 1px 4px; height: 14px; border-width: 1px; }
    body.page-horarios .horario-legenda { font-size: 8px; }

    body.page-mapa-salas .mapa-oficial-sheet { padding: 0; max-width: none; margin: 0; }
    body.page-mapa-salas .mapa-dia-oficial { margin-bottom: 10px; grid-template-columns: 38px 1fr; }
    body.page-mapa-salas .mapa-dia-oficial-label { font-size: 22px; }
    body.page-mapa-salas .mapa-table-oficial { font-size: 8px; }
    body.page-mapa-salas .mapa-table-oficial th,
    body.page-mapa-salas .mapa-table-oficial td { padding: 1px 4px; height: 13px; }
    body.page-mapa-salas .mapa-oficial-title-row h2 { font-size: 20px; }
    body.page-mapa-salas .mapa-oficial-title-row strong { font-size: 18px; }
}

/* v2026.1.3 — cópia estrutural dos modelos da planilha/PDF. */
.planilha-header-imagem { text-align: center; margin-bottom: 4px; }
.planilha-header-imagem img { max-width: 720px; width: 100%; height: auto; display: inline-block; }
.planilha-periodo-titulo { text-align: center; font-weight: 900; font-size: 18px; margin: 4px 0 10px; color: #000; }

.horario-planilha-sheet,
.mapa-planilha-sheet,
.grade-professor-oficial {
    background: #fff;
    color: #000;
    font-family: Arial, Helvetica, sans-serif;
    border: 0;
    box-shadow: none;
    margin: 0 auto 24px;
    padding: 18px 24px;
}
.horario-planilha-sheet { max-width: 1120px; }
.horario-planilha-scroll { max-height: calc(100vh - 170px); overflow-y: auto; padding-right: 6px; }
.horario-planilha-ciclo { margin: 0 0 18px; page-break-inside: avoid; break-inside: avoid; }
.horario-planilha-ciclo h2 { text-align: center; font-size: 16px; color: #000; margin: 8px 0 4px; font-weight: 900; }
.horario-planilha-table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 10px; }
.horario-planilha-table th,
.horario-planilha-table td { border: 1px solid #000; height: 18px; padding: 2px 4px; text-align: center; vertical-align: middle; color: #000; }
.horario-planilha-table thead th { background: #b4c7e7; font-weight: 900; }
.horario-planilha-table tbody th { background: #d9e2f3; width: 90px; font-weight: 900; }
.horario-planilha-table td.aula-normal { background: #fff; }
.horario-planilha-table td.aula-remota { background: #a9d18e !important; color: #000; }
.horario-planilha-table td.aula-pi { background: #ffd966 !important; color: #000; font-weight: 900; }
.horario-planilha-table td.aula-edital { background: #ffb6c1 !important; color: #000; font-weight: 900; }
.planilha-observacoes { margin: 10px 0; text-align: center; color: #000; font-size: 10px; }

.mapa-planilha-sheet { max-width: 760px; }
.mapa-title-row { display: grid; grid-template-columns: 1fr auto; align-items: end; margin-bottom: 4px; }
.mapa-title-row h2 { color: red; font-size: 16px; text-align: center; margin: 0; font-weight: 900; }
.mapa-title-row strong { color: red; font-size: 13px; white-space: nowrap; }
.mapa-planilha-dia { display: grid; grid-template-columns: 28px 1fr; border: 2px solid #0070c0; border-left: 0; margin: 0 0 7px; page-break-inside: avoid; break-inside: avoid; }
.mapa-planilha-dia-label { background: #0070c0; color: #fff; font-weight: 900; font-size: 15px; writing-mode: vertical-rl; transform: rotate(180deg); display: flex; align-items: center; justify-content: center; letter-spacing: .02em; }
.mapa-planilha-table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 7.5px; }
.mapa-planilha-table th,
.mapa-planilha-table td { border-bottom: 1px solid #a6a6a6; padding: 1px 3px; height: 11px; color: #000; vertical-align: middle; }
.mapa-planilha-table tr:nth-child(odd) td:not(.mapa-planilha-ciclo),
.mapa-planilha-table tr:nth-child(odd) th:not(.mapa-planilha-ciclo) { background: #d9d9d9; }
.mapa-planilha-table .ciclo-start th,
.mapa-planilha-table .ciclo-start td { border-top: 1px solid #000; }
.mapa-planilha-table .ciclo-end th,
.mapa-planilha-table .ciclo-end td { border-bottom: 1px solid #000; }
.mapa-planilha-ciclo { width: 58px; text-align: center; font-weight: 900; font-size: 8px; background: #fff !important; border-right: 1px solid #000 !important; }
.mapa-planilha-horario { width: 56px; text-align: center; }
.mapa-planilha-disciplina { width: 32%; }
.mapa-planilha-professor { width: 18%; text-align: center; }
.mapa-planilha-modalidade { width: 13%; text-align: center; }
.mapa-planilha-sala { width: 20%; text-align: center; }
.mapa-planilha-table tr.aula-remota td:not(.mapa-planilha-ciclo) { background: #a9d18e !important; }
.mapa-planilha-table tr.aula-pi td:not(.mapa-planilha-ciclo) { background: #ffd966 !important; }
.mapa-planilha-table tr.aula-edital td:not(.mapa-planilha-ciclo) { background: #ffb6c1 !important; }
.mapa-datas-importantes-oficial { margin: 12px 0 0; padding-top: 3px; border-top: 2px solid #0070c0; text-align: center; }
.mapa-datas-importantes-oficial h2 { color: #0070c0; font-size: 18px; margin: 0 0 8px; }
.mapa-datas-importantes-oficial div { margin-bottom: 7px; }
.mapa-datas-importantes-oficial strong { display: block; color: red; font-size: 9px; }
.mapa-datas-importantes-oficial span { display: block; color: #000; font-size: 13px; }
.mapa-datas-importantes-oficial p { font-size: 9px; color: #000; margin: 6px 0 0; }

.planilha-card { background: #fff; }
.planilha-scroll { overflow: auto; max-height: calc(100vh - 260px); }
.planilha-dia-disciplina,
.planilha-dia-salas { border-collapse: collapse; min-width: 1200px; font-family: Arial, Helvetica, sans-serif; font-size: 11px; }
.planilha-dia-disciplina th,
.planilha-dia-disciplina td,
.planilha-dia-salas th,
.planilha-dia-salas td { border: 1px solid #ddd; padding: 4px 6px; text-align: center; color: #000; }
.planilha-dia-disciplina thead th,
.planilha-dia-salas thead th { background: #404040; color: #fff; font-weight: 900; }
.dia-label { color: #fff !important; font-weight: 900; font-size: 16px; vertical-align: middle !important; width: 50px; }
.dia-seg { background: #4472c4 !important; }
.dia-ter { background: #ed7d31 !important; }
.dia-qua { background: #70ad47 !important; }
.dia-qui { background: #a5a5a5 !important; }
.dia-sex { background: #ffc000 !important; color: #000 !important; }
.planilha-dia-disciplina td.aula-remota,
.planilha-dia-salas .aula-remota { background: #a9d18e !important; }
.planilha-dia-disciplina td.aula-pi,
.planilha-dia-salas .aula-pi { background: #ffd966 !important; }
.planilha-dia-disciplina td.aula-edital,
.planilha-dia-salas .aula-edital { background: #ffb6c1 !important; }
.sala-cell { padding: 4px; border-radius: 4px; }
.sala-cell select { font-size: 10px; padding: 4px; margin-top: 3px; }
.sala-cell button { font-size: 10px; padding: 4px 6px; margin-top: 3px; }

.grade-professor-oficial { max-width: 1120px; }
.grade-professor-filtros { width: 100%; border-collapse: collapse; margin-bottom: 56px; }
.grade-professor-filtros th { background: yellow; text-align: center; font-size: 16px; color: #000; }
.grade-professor-filtros td { background: #ffc000; text-align: center; color: #000; }
.grade-professor-title { display: grid; grid-template-columns: 1fr 220px; border: 2px solid #0070c0; align-items: center; margin-bottom: 22px; }
.grade-professor-title h1 { text-align: center; font-size: 30px; margin: 0; }
.grade-professor-title strong { background: #0070c0; color: #fff; font-size: 18px; padding: 12px; text-align: center; }
.grade-professor-meta { display: grid; grid-template-columns: 1fr 1fr 1fr; margin-bottom: 16px; }
.grade-professor-meta p { margin: 2px 0; }
.grade-professor-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.grade-professor-table th { background: #0070c0; color: #fff; text-align: center; }
.grade-professor-table th,
.grade-professor-table td { border: 1px solid #ddd; padding: 4px 8px; text-align: center; }
.grade-professor-total { text-align: right; font-size: 17px; margin: 24px 0; }
.grade-professor-bottom { display: grid; grid-template-columns: 1fr 220px 220px; gap: 22px; }
.grade-professor-bottom h3 { color: #0070c0; border-bottom: 2px solid #0070c0; font-size: 16px; }
.grade-professor-bottom pre { white-space: pre-wrap; font-family: Arial, Helvetica, sans-serif; margin: 0; }

@media print {
    @page horario { size: A4 landscape; margin: 6mm; }
    @page mapa { size: A4 portrait; margin: 6mm; }
    body.page-horarios .app-main { page: horario; }
    body.page-mapa-salas .app-main { page: mapa; }
    .app-header, .admin-sidebar, .footer, .no-print, .filters-card, .button { display: none !important; }
    .app-main, .is-admin .app-main { margin: 0 !important; width: 100% !important; max-width: none !important; }
    .horario-planilha-sheet, .mapa-planilha-sheet, .grade-professor-oficial { padding: 0 !important; margin: 0 !important; max-width: none !important; }
    .horario-planilha-scroll, .planilha-scroll { max-height: none !important; overflow: visible !important; }
    .horario-planilha-ciclo { margin-bottom: 12px !important; }
    .horario-planilha-ciclo h2 { font-size: 13px !important; margin: 4px 0 2px !important; }
    .horario-planilha-table { font-size: 7.2px !important; }
    .horario-planilha-table th, .horario-planilha-table td { height: 10px !important; padding: 1px 2px !important; }
    .mapa-title-row h2 { font-size: 13px !important; }
    .mapa-title-row strong { font-size: 10px !important; }
    .mapa-planilha-dia { margin-bottom: 3px !important; grid-template-columns: 22px 1fr !important; }
    .mapa-planilha-dia-label { font-size: 10px !important; }
    .mapa-planilha-table { font-size: 5.9px !important; }
    .mapa-planilha-table th, .mapa-planilha-table td { height: 8px !important; padding: 0 2px !important; }
    .mapa-planilha-ciclo { width: 45px !important; font-size: 6px !important; }
    .mapa-datas-importantes-oficial { margin-top: 6px !important; }
    .mapa-datas-importantes-oficial h2 { font-size: 12px !important; }
    .mapa-datas-importantes-oficial strong { font-size: 6.5px !important; }
    .mapa-datas-importantes-oficial span { font-size: 9px !important; }
    .grade-professor-filtros { margin-bottom: 36px !important; }
    .grade-professor-title h1 { font-size: 24px !important; }
    .grade-professor-table { font-size: 11px !important; }
}

/* v2026.1.4 - Planejamento semestral unificado */
.planejamento-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}

.planejamento-tabs a {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 8px 12px;
    border: 1px solid var(--border, #d8dee9);
    border-radius: 999px;
    background: #fff;
    color: var(--text, #1d1d1f);
    text-decoration: none;
    font-size: 0.92rem;
}

.planejamento-tabs a.active,
.planejamento-tabs a:hover {
    border-color: var(--primary, #0071e3);
    background: rgba(0, 113, 227, 0.08);
    color: var(--primary, #0071e3);
}

/* v2026.1.5 — usabilidade baseada na planilha oficial */
.accordion-menu { display: flex; flex-direction: column; gap: 6px; }
.sidebar-logo small { display: block; font-weight: 500; opacity: .7; font-size: .74rem; }
.sidebar-dashboard,
.menu-group summary,
.menu-group-links a {
    display: block;
    color: inherit;
    text-decoration: none;
    border-radius: 10px;
    padding: 10px 12px;
    cursor: pointer;
}
.menu-group summary { font-weight: 800; background: rgba(255,255,255,.1); list-style: none; }
.menu-group summary::-webkit-details-marker { display: none; }
.menu-group summary::after { content: '▾'; float: right; opacity: .75; }
.menu-group:not([open]) summary::after { content: '▸'; }
.menu-group-links { padding: 4px 0 4px 10px; border-left: 2px solid rgba(255,255,255,.16); margin-left: 8px; }
.menu-group-links a { font-size: .9rem; padding: 8px 10px; opacity: .9; }
.menu-group-links a.active,
.sidebar-dashboard.active,
.menu-group-links a:hover,
.sidebar-dashboard:hover { background: rgba(0,113,227,.18); color: #fff; }

.cabecalho-oficial {
    display: grid;
    grid-template-columns: 1fr 2fr 2fr 2fr;
    gap: 10px;
    align-items: center;
    min-height: 72px;
    border-bottom: 1px solid #ddd;
    margin-bottom: 8px;
}
.cabecalho-oficial__item { text-align: center; }
.cabecalho-oficial__item img { max-height: 64px; max-width: 100%; object-fit: contain; }
.cabecalho-oficial__texto { grid-column: 1 / -1; text-align: center; font-size: 20px; }
.cabecalho-oficial__texto span { display: block; font-size: 12px; color: #555; }

.turma-nao-gera { background: #e7e7e7 !important; color: #888 !important; font-style: italic; }

.grade-curricular-planilha { background: #fff; padding: 24px; overflow-x: auto; }
.grade-curricular-planilha h1 { text-align: center; color: #c00000; font-size: 44px; margin: 0 0 28px; font-weight: 900; letter-spacing: .04em; }
.grade-curricular-colunas { display: grid; grid-template-columns: repeat(6, minmax(170px, 1fr)); gap: 12px; min-width: 1120px; }
.grade-curricular-coluna h2 { background: #a6a6a6; color: #fff; text-align: center; font-size: 14px; padding: 8px; margin: 0 0 6px; }
.gc-card { display: flex; flex-direction: column; justify-content: center; min-height: 72px; text-align: center; text-decoration: none; color: #004b00; border: 1px solid #fff; margin-bottom: 5px; padding: 8px; }
.gc-card strong { font-size: 12px; }
.gc-card span, .gc-card small { font-size: 11px; margin-top: 5px; }
.gc-card-normal { background: #c6e0b4; }
.gc-card-pi { background: #ffe699; color: #843c0c; }
.gc-card-remota { background: #ddebf7; color: #1f4e79; }
.gc-card-oculta { background: #e7e6e6; color: #777; }
.gc-card-add { border: 1px dashed #999; background: #fff; color: #555; min-height: 42px; }
.gc-legenda { display: flex; gap: 10px; justify-content: center; margin-top: 14px; }
.gc-legenda span { padding: 7px 10px; border: 1px solid #ddd; border-radius: 8px; background: #fff; font-size: 12px; }

.relatorio-pi-oficial { background: #fff; padding: 20px; }
.relatorio-pi-oficial h1 { text-align: center; color: #c00000; margin: 12px 0 18px; font-size: 26px; }
.table-oficial { width: 100%; border-collapse: collapse; font-family: Arial, Helvetica, sans-serif; }
.table-oficial th { background: #0070c0; color: #fff; }
.table-oficial th, .table-oficial td { border: 1px solid #555; padding: 6px 8px; text-align: center; }
.professor-mini-foto { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; }

.fluxo-etapas { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; }
.fluxo-etapas a { display: flex; gap: 10px; align-items: center; padding: 14px; border: 1px solid #e5e7eb; border-radius: 16px; text-decoration: none; color: inherit; background: #fff; }
.fluxo-etapas strong { display: inline-grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: #0071e3; color: #fff; }
.dashboard-analytics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.mini-chart-row { display: grid; grid-template-columns: 140px 1fr 90px; gap: 10px; align-items: center; margin: 8px 0; font-size: .88rem; }
.mini-chart-track { height: 8px; border-radius: 999px; background: #edf0f5; overflow: hidden; }
.mini-chart-track i { display: block; height: 100%; background: #0071e3; border-radius: 999px; }

.fixed-days th:not(:first-child), .fixed-days td:not(:first-child) { width: 18%; }
.page-break-before { page-break-before: always; break-before: page; }
.page-break-avoid { page-break-inside: avoid; break-inside: avoid; }

@media print {
    * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
    .cabecalho-oficial { grid-template-columns: 1fr 2fr 2fr 2fr !important; min-height: 58px !important; margin-bottom: 4px !important; }
    .cabecalho-oficial__item img { max-height: 50px !important; }
    .horario-planilha-table td.aula-remota, .horario-planilha-table td.aula-pi, .horario-planilha-table td.aula-edital,
    .mapa-planilha-table tr.aula-remota td:not(.mapa-planilha-ciclo), .mapa-planilha-table tr.aula-pi td:not(.mapa-planilha-ciclo), .mapa-planilha-table tr.aula-edital td:not(.mapa-planilha-ciclo) { print-color-adjust: exact !important; -webkit-print-color-adjust: exact !important; }
    .relatorio-pi-oficial, .grade-curricular-planilha { padding: 0 !important; }
}

/* v2026.1.5.1 — hotfix visual: menu accordion, grade curricular e cabeçalhos oficiais. */
:root {
    --accordion-blue: #3498db;
    --accordion-blue-dark: #2f8fcd;
    --accordion-panel: #2d2d2d;
    --accordion-panel-border: #222;
}

.is-admin .admin-sidebar {
    left: 10px;
    top: 76px;
    bottom: 10px;
    width: 282px;
    padding: 0;
    overflow: hidden auto;
    background: var(--accordion-blue);
    border: 1px solid rgba(0, 0, 0, .25);
    border-radius: 4px;
    box-shadow: 0 18px 45px rgba(0, 0, 0, .25);
    color: #fff;
}

.is-admin .sidebar-logo {
    display: grid;
    grid-template-columns: 38px 1fr;
    align-items: center;
    gap: 12px;
    min-height: 76px;
    padding: 16px 20px;
    margin: 0;
    color: #fff;
    background: var(--accordion-blue);
    border-bottom: 1px solid rgba(0, 0, 0, .12);
}

.is-admin .sidebar-logo span {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    font-size: 20px;
    opacity: .95;
}

.is-admin .sidebar-logo strong { font-size: 20px; line-height: 1.1; }
.is-admin .sidebar-logo small { color: rgba(255,255,255,.82); font-size: .72rem; }

.is-admin .accordion-menu { display: block; gap: 0; }

.is-admin .sidebar-dashboard,
.is-admin .menu-group summary,
.is-admin .menu-group-links a,
.is-admin .logout-form .button {
    border-radius: 0;
    font-size: 1rem;
    line-height: 1.25;
}

.is-admin .sidebar-dashboard,
.is-admin .menu-group summary {
    position: relative;
    display: grid;
    grid-template-columns: 42px 1fr 18px;
    align-items: center;
    min-height: 58px;
    padding: 0 18px;
    color: #fff;
    background: var(--accordion-blue);
    border-bottom: 1px solid rgba(0, 0, 0, .12);
    list-style: none;
    font-weight: 600;
}

.is-admin .sidebar-dashboard::before {
    content: '⌂';
    display: grid;
    place-items: center;
    width: 24px;
    height: 24px;
    font-size: 20px;
    opacity: .95;
}

.is-admin .menu-group-icon {
    display: grid;
    place-items: center;
    width: 24px;
    height: 24px;
    font-size: 19px;
    opacity: .95;
}

.is-admin .menu-group summary::-webkit-details-marker { display: none; }
.is-admin .menu-group summary::after {
    content: '›';
    justify-self: end;
    transform: rotate(90deg);
    font-size: 18px;
    opacity: .85;
}
.is-admin .menu-group:not([open]) summary::after { transform: rotate(0deg); }

.is-admin .sidebar-dashboard:hover,
.is-admin .menu-group summary:hover,
.is-admin .menu-group[open] summary {
    background: var(--accordion-blue-dark);
    color: #fff;
}

.is-admin .menu-group-links {
    position: relative;
    margin: 0;
    padding: 12px 0;
    border-left: 0;
    background: var(--accordion-panel);
    border-bottom: 1px solid var(--accordion-panel-border);
}

.is-admin .menu-group[open] .menu-group-links::before {
    content: '';
    position: absolute;
    left: 20px;
    top: -11px;
    width: 0;
    height: 0;
    border-left: 13px solid transparent;
    border-right: 13px solid transparent;
    border-bottom: 13px solid var(--accordion-panel);
}

.is-admin .menu-group-links a {
    display: block;
    padding: 12px 18px 12px 36px;
    margin: 0;
    color: #fff;
    opacity: 1;
    background: transparent;
    border-left: 5px solid transparent;
    font-weight: 500;
}

.is-admin .menu-group-links a:hover,
.is-admin .menu-group-links a.active {
    background: #242424;
    border-left-color: var(--accordion-blue);
    color: #fff;
}

.is-admin .logout-form { margin: 0; border-top: 1px solid rgba(0,0,0,.12); }
.is-admin .logout-form .button {
    width: 100%;
    min-height: 58px;
    justify-content: flex-start;
    padding: 0 20px;
    background: var(--accordion-blue);
    color: #fff;
    border: 0;
}
.is-admin .logout-form .button::before { content: '↪'; margin-right: 16px; font-size: 20px; }
.is-admin .logout-form .button:hover { background: var(--accordion-blue-dark); }

.is-admin .app-main {
    margin-left: 318px;
    width: calc(100% - 344px);
}

/* Cabeçalho oficial: logos sempre pequenos e previsíveis em tela e impressão. */
.cabecalho-oficial {
    grid-template-columns: 1.1fr 2fr 2fr 2.4fr;
    gap: 8px;
    align-items: center;
    min-height: 54px;
    max-height: 64px;
    overflow: hidden;
    padding: 2px 0 4px;
}
.cabecalho-oficial__item {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 54px;
    overflow: hidden;
}
.cabecalho-oficial__item img {
    display: block;
    max-height: 48px !important;
    max-width: 180px !important;
    width: auto !important;
    height: auto !important;
    object-fit: contain;
}
.cabecalho-oficial__item:first-child img { max-width: 76px !important; }
.cabecalho-oficial__item:nth-child(2) img { max-width: 210px !important; }
.cabecalho-oficial__item:nth-child(3) img { max-width: 210px !important; }
.cabecalho-oficial__item:nth-child(4) img { max-width: 240px !important; }

.planilha-header-imagem img,
.horario-oficial-header img,
.mapa-oficial-header img,
.mapa-header-logos {
    max-height: 54px !important;
    max-width: 920px !important;
    width: auto !important;
    object-fit: contain;
}

/* Grade curricular: visual de planilha como o modelo enviado. */
.grade-curricular-planilha {
    background:
        repeating-linear-gradient(0deg, #ffffff 0, #ffffff 22px, #edf0f2 23px),
        repeating-linear-gradient(90deg, transparent 0, transparent 96px, rgba(0,0,0,.06) 97px);
    border: 0;
    border-radius: 0;
    box-shadow: none;
    padding: 24px 12px 42px;
    overflow-x: auto;
}
.grade-curricular-planilha h1 {
    color: #c00000;
    font-family: Arial, Helvetica, sans-serif;
    font-size: clamp(42px, 5vw, 68px);
    line-height: 1;
    font-weight: 900;
    text-align: center;
    letter-spacing: .035em;
    margin: 10px 0 58px;
}
.grade-curricular-colunas {
    display: grid;
    grid-template-columns: repeat(6, minmax(190px, 1fr));
    gap: 12px;
    min-width: 1240px;
    align-items: start;
}
.grade-curricular-coluna {
    display: grid;
    grid-auto-rows: minmax(66px, auto);
    gap: 6px;
}
.grade-curricular-coluna h2 {
    display: grid;
    place-items: center;
    min-height: 28px;
    margin: 0 0 2px;
    padding: 6px;
    background: #a6a6a6;
    color: #fff;
    font: 900 14px/1.1 Arial, Helvetica, sans-serif;
    text-transform: uppercase;
}
.gc-card {
    display: grid;
    place-items: center;
    min-height: 66px;
    margin: 0;
    padding: 7px 10px;
    border: 0;
    outline: 4px solid #fff;
    border-radius: 0;
    text-align: center;
    text-decoration: none;
    box-shadow: none;
    font-family: Arial, Helvetica, sans-serif;
}
.gc-card strong {
    display: block;
    color: #006100;
    font-size: 12px;
    font-weight: 900;
    line-height: 1.15;
}
.gc-card span,
.gc-card small {
    display: block;
    color: #548235;
    font-size: 11px;
    line-height: 1.2;
    margin-top: 4px;
}
.gc-card-normal { background: #c6e0b4; }
.gc-card-pi { background: #ffe699; }
.gc-card-pi strong, .gc-card-pi span, .gc-card-pi small { color: #843c0c; }
.gc-card-remota { background: #ddebf7; }
.gc-card-remota strong, .gc-card-remota span, .gc-card-remota small { color: #1f4e79; }
.gc-card-edital, .gc-card-oculta { background: #f4b183; }
.gc-card-edital strong, .gc-card-edital span, .gc-card-edital small,
.gc-card-oculta strong, .gc-card-oculta span, .gc-card-oculta small { color: #843c0c; }
.gc-card-add {
    min-height: 50px;
    background: #f2f2f2;
    color: #444;
    border: 1px dashed #999;
    outline: 4px solid #fff;
}
.gc-legenda {
    display: grid;
    grid-template-columns: repeat(4, minmax(160px, 1fr));
    gap: 12px;
    min-width: 900px;
    margin-top: 58px;
}
.gc-legenda span {
    display: grid;
    place-items: center;
    min-height: 44px;
    padding: 8px;
    text-align: center;
    background: #c6e0b4;
    color: #111;
    font: 500 13px/1.2 Arial, Helvetica, sans-serif;
}
.gc-legenda span:nth-child(2) { background: #d9e2f3; }
.gc-legenda span:nth-child(3) { background: #ffe699; }
.gc-legenda span:nth-child(4) { background: #f4b183; }

@media print {
    .cabecalho-oficial {
        min-height: 42px !important;
        max-height: 48px !important;
        gap: 6px !important;
        margin-bottom: 2px !important;
        padding: 0 0 2px !important;
    }
    .cabecalho-oficial__item { height: 42px !important; }
    .cabecalho-oficial__item img {
        max-height: 38px !important;
        max-width: 155px !important;
        width: auto !important;
    }
    .cabecalho-oficial__item:first-child img { max-width: 58px !important; }
    .cabecalho-oficial__item:nth-child(4) img { max-width: 190px !important; }
    .planilha-header-imagem img,
    .horario-oficial-header img,
    .mapa-oficial-header img,
    .mapa-header-logos {
        max-height: 40px !important;
        max-width: 820px !important;
        width: auto !important;
    }
    .grade-curricular-planilha h1 { font-size: 50px !important; margin-bottom: 42px !important; }
    .grade-curricular-colunas { min-width: 0 !important; grid-template-columns: repeat(6, 1fr) !important; gap: 8px !important; }
    .gc-card { min-height: 54px !important; outline-width: 3px !important; padding: 5px !important; }
    .gc-card strong { font-size: 9px !important; }
    .gc-card span, .gc-card small { font-size: 8px !important; }
}

/* AulaMap v2026.1.6 - Dia x Sala e sala opcional */
.actions-row {
    display: flex;
    gap: 10px;
    align-items: center;
    flex-wrap: wrap;
}
.small-line {
    display: block;
    font-size: 11px;
    margin: 3px 0 6px;
}
.relatorio-oficial-title {
    text-align: center;
    margin: 4px 0 8px;
}
.relatorio-oficial-title h1 {
    margin: 0;
    color: #c00000;
    font-size: 26px;
    letter-spacing: .04em;
}
.relatorio-oficial-title strong {
    font-size: 13px;
}
.dia-salas-print-sheet {
    background: #fff;
    padding: 10px;
}
.dia-salas-print-table {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: 11px;
}
.dia-salas-print-table th,
.dia-salas-print-table td {
    border: 1px solid #cfd8e3;
    padding: 4px;
    vertical-align: top;
}
.dia-salas-print-table .sala-cell {
    margin: 0 0 3px;
    padding: 3px;
    border-radius: 0;
    border: 0;
}
.dia-salas-print-table .sala-cell span {
    display: block;
    font-size: 10px;
}
@media print {
    .dia-salas-print-sheet {
        padding: 0 !important;
    }
    .relatorio-oficial-title h1 {
        font-size: 20px !important;
    }
    .dia-salas-print-table {
        font-size: 8.5px !important;
    }
    .dia-salas-print-table th,
    .dia-salas-print-table td {
        padding: 2px !important;
    }
    .dia-salas-print-table .sala-cell span {
        font-size: 8px !important;
    }
}

/* AulaMap v2026.1.7 — Blocos, salas separadas e Grade x Professor */
.grade-professor-bottom pre {
    font-size: 12px !important;
    line-height: 1.18 !important;
    white-space: pre-wrap;
}

.grade-professor-table td {
    font-size: 12px;
    line-height: 1.15;
}

.cabecalho-oficial {
    display: grid;
    grid-template-columns: 1.1fr 2fr 2fr 2.4fr;
    align-items: center;
    gap: 8px;
    min-height: 52px;
    max-height: 62px;
    overflow: hidden;
    border-bottom: 1px solid #d7d7d7;
}

.cabecalho-oficial__item {
    height: 52px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.cabecalho-oficial__item img {
    max-height: 46px !important;
    width: auto !important;
    object-fit: contain !important;
}

.cabecalho-oficial__item:first-child img { max-width: 70px !important; }
.cabecalho-oficial__item:nth-child(2) img { max-width: 180px !important; }
.cabecalho-oficial__item:nth-child(3) img { max-width: 180px !important; }
.cabecalho-oficial__item:nth-child(4) img { max-width: 230px !important; }

@media print {
    .cabecalho-oficial {
        min-height: 40px !important;
        max-height: 46px !important;
        gap: 6px !important;
        margin-bottom: 3px !important;
    }
    .cabecalho-oficial__item { height: 40px !important; }
    .cabecalho-oficial__item img { max-height: 36px !important; }
    .cabecalho-oficial__item:first-child img { max-width: 54px !important; }
    .cabecalho-oficial__item:nth-child(2) img { max-width: 150px !important; }
    .cabecalho-oficial__item:nth-child(3) img { max-width: 150px !important; }
    .cabecalho-oficial__item:nth-child(4) img { max-width: 190px !important; }
    .grade-professor-bottom pre { font-size: 12px !important; line-height: 1.15 !important; }
}

/* AulaMap v2026.1.7.1 — ajustes Grade x Professor */
.cabecalho-oficial {
    border-bottom: 0 !important;
}

.relatorio-emitido-em {
    margin-top: 18px;
    font-size: 9px;
    line-height: 1.1;
    color: #000;
    text-align: left;
}

@media print {
    .relatorio-emitido-em {
        font-size: 9px !important;
        margin-top: 10px !important;
        text-align: left !important;
    }
}


/* AulaMap v2026.1.7.3 — blindagem contra CSS em cache e logos gigantes */
.grade-professor-oficial .cabecalho-oficial,
.horario-oficial .cabecalho-oficial,
.mapa-oficial .cabecalho-oficial,
.cabecalho-oficial {
    border-bottom: 0 !important;
    min-height: 52px !important;
    max-height: 62px !important;
    overflow: hidden !important;
}

.grade-professor-oficial .cabecalho-oficial__item,
.horario-oficial .cabecalho-oficial__item,
.mapa-oficial .cabecalho-oficial__item,
.cabecalho-oficial__item {
    height: 52px !important;
    overflow: hidden !important;
}

.grade-professor-oficial .cabecalho-oficial__item img,
.horario-oficial .cabecalho-oficial__item img,
.mapa-oficial .cabecalho-oficial__item img,
.cabecalho-oficial__item img {
    display: block !important;
    max-height: 46px !important;
    width: auto !important;
    height: auto !important;
    object-fit: contain !important;
}

.grade-professor-oficial .cabecalho-oficial__item:first-child img,
.cabecalho-oficial__item:first-child img { max-width: 70px !important; }
.grade-professor-oficial .cabecalho-oficial__item:nth-child(2) img,
.grade-professor-oficial .cabecalho-oficial__item:nth-child(3) img,
.cabecalho-oficial__item:nth-child(2) img,
.cabecalho-oficial__item:nth-child(3) img { max-width: 180px !important; }
.grade-professor-oficial .cabecalho-oficial__item:nth-child(4) img,
.cabecalho-oficial__item:nth-child(4) img { max-width: 230px !important; }

@media print {
    .cabecalho-oficial { min-height: 40px !important; max-height: 46px !important; margin-bottom: 4px !important; }
    .cabecalho-oficial__item { height: 40px !important; }
    .cabecalho-oficial__item img { max-height: 36px !important; }
    .cabecalho-oficial__item:first-child img { max-width: 54px !important; }
    .cabecalho-oficial__item:nth-child(2) img,
    .cabecalho-oficial__item:nth-child(3) img { max-width: 150px !important; }
    .cabecalho-oficial__item:nth-child(4) img { max-width: 190px !important; }
}

/* v2026.1.8 — visual inspirado em SkillPath: sidebar colapsável e dashboard educacional. */
:root {
    --skill-bg: #f3f6fb;
    --skill-sidebar: #121b2f;
    --skill-sidebar-2: #17233d;
    --skill-sidebar-hover: rgba(255, 255, 255, .08);
    --skill-accent: #6c5ce7;
    --skill-accent-2: #00b8d9;
    --skill-orange: #ff9f43;
    --skill-green: #20c997;
    --skill-red: #ff6b6b;
    --skill-card: #ffffff;
    --skill-text: #101828;
    --skill-muted: #667085;
    --skill-line: #e7edf5;
    --sidebar-width: 294px;
    --sidebar-collapsed-width: 88px;
}

body.is-admin {
    background:
        radial-gradient(circle at 24% 10%, rgba(108, 92, 231, .16), transparent 28%),
        radial-gradient(circle at 83% 2%, rgba(0, 184, 217, .12), transparent 24%),
        linear-gradient(180deg, #f9fbff 0%, #eef3fb 100%);
    color: var(--skill-text);
}

body.is-admin .app-header {
    left: 0;
    right: 0;
    background: rgba(255,255,255,.88);
    box-shadow: 0 10px 30px rgba(16, 24, 40, .05);
    border-bottom: 1px solid rgba(231, 237, 245, .9);
}

body.is-admin .brand__icon {
    background: linear-gradient(135deg, var(--skill-accent), var(--skill-accent-2));
    box-shadow: 0 16px 28px rgba(108, 92, 231, .24);
}

body.is-admin .top-nav a.active { color: var(--skill-accent); }
body.is-admin .top-nav a.active::after { background: var(--skill-accent); }

body.is-admin .admin-sidebar {
    width: var(--sidebar-width);
    left: 22px;
    top: 92px;
    bottom: 22px;
    padding: 0;
    overflow: visible;
    border: 0;
    border-radius: 22px;
    color: #d9e4ff;
    background: linear-gradient(180deg, #16213a 0%, #0f1729 100%);
    box-shadow: 0 22px 55px rgba(16, 24, 40, .22);
    transition: width .22s ease, transform .22s ease;
}

.sidebar-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 18px 16px 14px;
    border-bottom: 1px solid rgba(255,255,255,.08);
}

body.is-admin .sidebar-logo {
    display: flex;
    flex: 1;
    align-items: center;
    gap: 12px;
    margin: 0;
    min-width: 0;
    color: #fff;
}

.sidebar-logo__mark {
    display: grid;
    place-items: center;
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    border-radius: 15px;
    background: linear-gradient(135deg, #7c3aed, #06b6d4);
    box-shadow: 0 14px 28px rgba(124, 58, 237, .28);
    font-size: 20px;
}

.sidebar-logo__text { min-width: 0; }
body.is-admin .sidebar-logo strong { color: #fff; font-size: 18px; letter-spacing: -.02em; }
body.is-admin .sidebar-logo small { display: block; color: #9fb0d5; font-size: 12px; margin-top: 1px; }

.sidebar-toggle {
    display: grid;
    place-items: center;
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    padding: 0;
    border-radius: 12px;
    color: #e7eeff;
    background: rgba(255,255,255,.09);
    box-shadow: none;
    transition: background .18s ease, transform .18s ease;
}
.sidebar-toggle:hover { background: rgba(255,255,255,.16); transform: translateY(-1px); }

body.is-admin .accordion-menu {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 14px 12px 10px;
    max-height: calc(100vh - 232px);
    overflow-y: auto;
    overflow-x: visible;
}

body.is-admin .accordion-menu::-webkit-scrollbar { width: 7px; }
body.is-admin .accordion-menu::-webkit-scrollbar-thumb { background: rgba(255,255,255,.15); border-radius: 999px; }

body.is-admin .sidebar-dashboard,
body.is-admin .menu-group summary {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 44px;
    padding: 12px 13px;
    border-radius: 14px;
    color: #dbe7ff;
    background: transparent;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: .01em;
    text-decoration: none;
    cursor: pointer;
    transition: background .18s ease, color .18s ease, transform .18s ease;
}

body.is-admin .sidebar-dashboard:hover,
body.is-admin .menu-group summary:hover,
body.is-admin .menu-group[open] summary,
body.is-admin .sidebar-dashboard.active {
    color: #fff;
    background: linear-gradient(135deg, rgba(108,92,231,.88), rgba(0,184,217,.74));
    box-shadow: 0 12px 24px rgba(0,0,0,.12);
}

body.is-admin .sidebar-dashboard.active::before { display: none; }

body.is-admin .menu-group summary::-webkit-details-marker { display: none; }
body.is-admin .menu-group summary::after {
    content: '›';
    margin-left: auto;
    opacity: .72;
    transform: rotate(90deg);
    transition: transform .18s ease;
    font-size: 20px;
    line-height: 1;
}
body.is-admin .menu-group:not([open]) summary::after { transform: rotate(0); }

body.is-admin .menu-group-icon {
    display: grid;
    place-items: center;
    flex: 0 0 28px;
    width: 28px;
    height: 28px;
    border-radius: 10px;
    background: rgba(255,255,255,.10);
    font-size: 15px;
}

body.is-admin .menu-group-links {
    position: relative;
    margin: 6px 0 8px 44px;
    padding: 6px;
    border: 0;
    border-radius: 15px;
    background: rgba(5, 12, 28, .45);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.05);
}
body.is-admin .menu-group-links::before {
    content: '';
    position: absolute;
    left: -14px;
    top: 14px;
    width: 2px;
    bottom: 14px;
    border-radius: 999px;
    background: rgba(255,255,255,.12);
}
body.is-admin .menu-group-links a {
    display: flex;
    align-items: center;
    min-height: 34px;
    padding: 8px 10px;
    color: #b7c4df;
    border-radius: 11px;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
    border-left: 0;
    transition: background .18s ease, color .18s ease, padding-left .18s ease;
}
body.is-admin .menu-group-links a:hover,
body.is-admin .menu-group-links a.active {
    color: #fff;
    background: rgba(255,255,255,.10);
    padding-left: 14px;
}

body.is-admin .logout-form {
    position: absolute;
    left: 12px;
    right: 12px;
    bottom: 14px;
    margin: 0;
}
body.is-admin .logout-form .button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    background: rgba(255,255,255,.09);
    color: #fff;
    border: 1px solid rgba(255,255,255,.10);
    box-shadow: none;
}
body.is-admin .logout-form .button:hover { background: rgba(255,255,255,.16); }

body.is-admin .app-main {
    margin-left: calc(var(--sidebar-width) + 52px);
    width: calc(100% - var(--sidebar-width) - 84px);
    max-width: 1500px;
    transition: margin-left .22s ease, width .22s ease;
}

body.is-admin.sidebar-collapsed .admin-sidebar { width: var(--sidebar-collapsed-width); }
body.is-admin.sidebar-collapsed .app-main {
    margin-left: calc(var(--sidebar-collapsed-width) + 52px);
    width: calc(100% - var(--sidebar-collapsed-width) - 84px);
}
body.is-admin.sidebar-collapsed .sidebar-logo__text,
body.is-admin.sidebar-collapsed .menu-label,
body.is-admin.sidebar-collapsed .menu-group summary::after,
body.is-admin.sidebar-collapsed .menu-group-links,
body.is-admin.sidebar-collapsed .logout-text { display: none !important; }
body.is-admin.sidebar-collapsed .sidebar-head { justify-content: center; flex-direction: column; padding: 16px 10px; }
body.is-admin.sidebar-collapsed .sidebar-toggle { width: 42px; }
body.is-admin.sidebar-collapsed .accordion-menu { align-items: center; padding-inline: 10px; overflow: visible; }
body.is-admin.sidebar-collapsed .sidebar-dashboard,
body.is-admin.sidebar-collapsed .menu-group summary {
    justify-content: center;
    width: 54px;
    height: 52px;
    padding: 12px;
}
body.is-admin.sidebar-collapsed .menu-group[open] summary { background: rgba(255,255,255,.12); }
body.is-admin.sidebar-collapsed .logout-form { left: 10px; right: 10px; }

body.is-admin .card,
body.is-admin .page-hero,
body.is-admin .stat-card {
    border: 1px solid rgba(231,237,245,.9);
    background: rgba(255,255,255,.92);
    box-shadow: 0 18px 40px rgba(16, 24, 40, .06);
}

.dashboard-hero-skill {
    position: relative;
    overflow: hidden;
    display: grid;
    grid-template-columns: 1.6fr .9fr;
    gap: 18px;
    padding: 26px;
    border-radius: 28px;
    color: #fff;
    background: linear-gradient(135deg, #6c5ce7 0%, #00b8d9 100%);
    box-shadow: 0 24px 55px rgba(108, 92, 231, .24);
}
.dashboard-hero-skill::after {
    content: '';
    position: absolute;
    right: -80px;
    top: -90px;
    width: 260px;
    height: 260px;
    border-radius: 999px;
    background: rgba(255,255,255,.14);
}
.dashboard-hero-skill h2 { color: #fff; margin-bottom: 8px; }
.dashboard-hero-skill p { color: rgba(255,255,255,.82); max-width: 720px; }
.dashboard-hero-badges { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 16px; }
.dashboard-hero-badges span {
    border-radius: 999px;
    padding: 8px 12px;
    background: rgba(255,255,255,.16);
    font-weight: 800;
    font-size: 12px;
}
.dashboard-hero-panel {
    position: relative;
    z-index: 1;
    border-radius: 22px;
    padding: 18px;
    background: rgba(255,255,255,.18);
    backdrop-filter: blur(10px);
}
.dashboard-hero-panel strong { display:block; font-size: 34px; }
.dashboard-hero-panel small { color: rgba(255,255,255,.78); }

.kpi-skill-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(170px, 1fr));
    gap: 16px;
    margin: 18px 0;
}
.kpi-skill-card {
    position: relative;
    overflow: hidden;
    min-height: 132px;
    padding: 18px;
    border-radius: 22px;
    color: var(--skill-text);
    background: #fff;
    border: 1px solid rgba(231,237,245,.9);
    box-shadow: 0 18px 40px rgba(16, 24, 40, .06);
    text-decoration: none;
}
.kpi-skill-card::after {
    content: '';
    position: absolute;
    right: -22px;
    bottom: -28px;
    width: 96px;
    height: 96px;
    border-radius: 999px;
    opacity: .15;
    background: var(--skill-accent);
}
.kpi-skill-icon {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border-radius: 16px;
    color: #fff;
    background: linear-gradient(135deg, var(--skill-accent), var(--skill-accent-2));
    margin-bottom: 12px;
}
.kpi-skill-card strong { display: block; font-size: 34px; line-height: 1; letter-spacing: -.05em; }
.kpi-skill-card span { display:block; color: var(--skill-muted); font-weight: 800; margin-top: 6px; }
.kpi-skill-card small { color: #17a672; font-weight: 800; }
.kpi-orange .kpi-skill-icon, .kpi-orange::after { background: var(--skill-orange); }
.kpi-green .kpi-skill-icon, .kpi-green::after { background: var(--skill-green); }
.kpi-red .kpi-skill-icon, .kpi-red::after { background: var(--skill-red); }

.dashboard-content-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(340px, .8fr);
    gap: 18px;
}
.skill-card-title { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom: 14px; }
.skill-card-title h3 { margin:0; }
.fluxo-etapas.skill-flow { display:grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; }
.fluxo-etapas.skill-flow a {
    display:flex;
    gap:12px;
    align-items:flex-start;
    padding:14px;
    border-radius:18px;
    background:#f7f9ff;
    border:1px solid #e7edf5;
    text-decoration:none;
}
.fluxo-etapas.skill-flow strong {
    display:grid;
    place-items:center;
    flex:0 0 34px;
    width:34px;
    height:34px;
    border-radius:12px;
    color:#fff;
    background:linear-gradient(135deg,var(--skill-accent),var(--skill-accent-2));
}
.fluxo-etapas.skill-flow span { color:#344054; font-weight:700; }

.dashboard-analytics.skill-analytics { grid-template-columns: 1fr; }
body.is-admin .mini-chart-row { grid-template-columns: 150px 1fr 96px; }
body.is-admin .mini-chart-track { background:#edf2fb; height:10px; }
body.is-admin .mini-chart-track i { background:linear-gradient(90deg,var(--skill-accent),var(--skill-accent-2)); }

@media (max-width: 1180px) {
    .kpi-skill-grid { grid-template-columns: repeat(2, minmax(170px, 1fr)); }
    .dashboard-content-grid { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
    body.is-admin .admin-sidebar { position: static; width: auto; margin: 16px; }
    body.is-admin .app-main { margin-left: auto; width: min(1320px, calc(100% - 32px)); }
    body.is-admin.sidebar-collapsed .app-main { margin-left: auto; width: min(1320px, calc(100% - 32px)); }
    .dashboard-hero-skill { grid-template-columns: 1fr; }
    .kpi-skill-grid, .fluxo-etapas.skill-flow { grid-template-columns: 1fr; }
}


/* v2026.1.9 — padrão CPS, CRUD modal e Grade Curricular por eixo formativo. */
:root {
    --cps-red: #b20000;
    --cps-blue: #005baa;
    --cps-dark: #30363d;
    --cps-light: #f3f4f6;
}

.crud-toolbar {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
}
.crud-toolbar .search-form { display: flex; gap: 8px; flex: 1; min-width: 280px; }
.crud-toolbar .search-form input { max-width: 420px; }
.crud-table th { background: #f1f5f9; color: #1f2937; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; }
.crud-table td { vertical-align: middle; }
.actions-col { width: 130px; text-align: center; }
.icon-actions { justify-content: center; align-items: center; white-space: nowrap; }
.icon-button {
    width: 34px;
    height: 34px;
    display: inline-grid;
    place-items: center;
    border-radius: 10px;
    border: 1px solid #d8dee8;
    background: #fff;
    color: #25314a;
    text-decoration: none;
    box-shadow: none;
    padding: 0;
}
.icon-button:hover { background: #eef5ff; color: var(--primary); }
.danger-icon { color: #b42318; }
.color-chip { display: inline-block; width: 22px; height: 14px; border: 1px solid #999; border-radius: 4px; vertical-align: middle; margin-right: 6px; }

.modal-backdrop {
    position: fixed;
    inset: 0;
    z-index: 1000;
    background: rgba(15, 23, 42, .52);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}
.modal-card {
    width: min(980px, 96vw);
    max-height: 92vh;
    overflow: auto;
    background: #fff;
    border-radius: 22px;
    box-shadow: 0 30px 80px rgba(0,0,0,.24);
    padding: 22px;
}
.modal-header { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; border-bottom: 1px solid #edf0f4; padding-bottom: 14px; margin-bottom: 16px; }
.modal-header h3 { margin: 0; color: #111827; }
.modal-close { font-size: 32px; line-height: 1; text-decoration: none; color: #475569; }
.modal-grid { grid-template-columns: repeat(2, minmax(220px, 1fr)); }
.form-field-full { grid-column: 1 / -1; }
.modal-actions { border-top: 1px solid #edf0f4; padding-top: 16px; }

.grade-curricular-cps {
    background: #fff;
    border: 1px solid #111;
    box-shadow: none;
    font-family: Arial, Helvetica, sans-serif;
}
.grade-curricular-cps h1 {
    color: #c00000;
    font-size: clamp(40px, 5vw, 64px);
    line-height: 1;
    text-transform: uppercase;
    margin: 18px 0 44px;
}
.grade-curricular-cps .grade-curricular-colunas {
    display: grid;
    grid-template-columns: repeat(6, minmax(155px, 1fr));
    gap: 8px;
    min-width: 1080px;
}
.grade-curricular-cps .grade-curricular-coluna h2 {
    background: #a6a6a6;
    color: #fff;
    font-size: 14px;
    font-weight: 900;
    text-transform: uppercase;
    padding: 7px 4px;
    border: 1px solid #000;
}
.grade-curricular-cps .gc-card {
    min-height: 92px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 8px;
    text-align: center;
    border: 1px solid #000;
    border-radius: 0;
    padding: 8px 6px;
    margin-bottom: 4px;
    text-decoration: none;
    font-size: 12px;
    box-shadow: none;
}
.grade-curricular-cps .gc-card strong { font-size: 12px; font-weight: 900; }
.grade-curricular-cps .gc-card span { font-size: 12px; font-weight: 700; }
.grade-curricular-cps .gc-card small { font-size: 12px; }
.grade-curricular-cps .gc-card-add {
    background: #fff !important;
    color: #005baa !important;
    border: 2px dashed #005baa;
    font-weight: 900;
}
.grade-curricular-cps .gc-card-oculta { opacity: .72; filter: grayscale(.2); }
.grade-curricular-cps .gc-legenda {
    margin-top: 12px;
    border-top: 2px solid #000;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    text-align: center;
    font-size: 12px;
    font-weight: 900;
}
.modal-card-grade { max-width: 760px; }

@media print {
    .modal-backdrop { display: none !important; }
    .grade-curricular-cps { border: 0 !important; padding: 0 !important; }
    .grade-curricular-cps .gc-card { print-color-adjust: exact !important; -webkit-print-color-adjust: exact !important; }
}


/* v2026.1.9.1 — legenda de Eixos Formativos no rodapé da Grade Curricular. */
.grade-curricular-cps .gc-legenda-eixos {
    margin-top: 14px;
    border-top: 2px solid #000;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 0;
    text-align: center;
    font-size: 11px;
    font-weight: 900;
    align-items: stretch;
}
.grade-curricular-cps .gc-legenda-titulo {
    grid-column: 1 / -1;
    background: #f2f2f2;
    color: #000;
    border: 1px solid #000;
    border-top: 0;
    padding: 5px;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.grade-curricular-cps .gc-legenda-item {
    min-height: 38px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    border: 1px solid #000;
    border-top: 0;
    padding: 5px 6px;
    line-height: 1.2;
}
.grade-curricular-cps .gc-legenda-item small {
    display: block;
    font-size: 9px;
    font-weight: 700;
}
.grade-curricular-cps .gc-legenda-oculta {
    background: #d9d9d9;
    color: #555;
}
.grade-curricular-cps .gc-legenda-nota {
    background: #fff;
    color: #000;
}
@media print {
    .grade-curricular-cps .gc-legenda-eixos,
    .grade-curricular-cps .gc-legenda-item {
        print-color-adjust: exact !important;
        -webkit-print-color-adjust: exact !important;
    }
}

/* v2026.1.10 — Tema administrativo CPS Dark inspirado no layout enviado.
   Baseado nos tokens oficiais do Guia de Estilo CPS: vermelho #B20000, azul #005C6D,
   destaque #00C1CF, neutros #F8F8F8/#DADADA e tipografia Roboto/Roboto Slab. */
:root {
    --cps-vermelho: #B20000;
    --cps-vermelho-escuro: #7E0000;
    --cps-azul: #005C6D;
    --cps-azul-hover: #004854;
    --cps-destaque: #00C1CF;
    --cps-destaque-hover: #00D8E8;
    --cps-verde: #A0C340;
    --cps-amarelo: #FFC24C;
    --cps-coral: #FF4C4D;
    --cps-cinza-texto: #666666;
    --cps-cinza-claro: #DADADA;
    --cps-prata: #F8F8F8;
    --cps-white: #FFFFFF;
    --cps-admin-bg: #080a0d;
    --cps-admin-surface: #111317;
    --cps-admin-card: #15181d;
    --cps-admin-card-2: #1d2128;
    --cps-admin-border: rgba(255,255,255,.09);
    --cps-admin-text: #F8F8F8;
    --cps-admin-muted: #A7B0BA;
    --font-main: 'Roboto', Arial, Helvetica, sans-serif;
    --font-title: 'Roboto Slab', 'Roboto', Arial, Helvetica, sans-serif;
    --sidebar-width: 292px;
    --sidebar-collapsed-width: 78px;
    --radius-lg: 30px;
    --radius-md: 18px;
    --radius-sm: 12px;
}

body { font-family: var(--font-main); }
h1, h2, h3, .page-hero h2, .dashboard-hero-skill h2 { font-family: var(--font-title); }

body.is-admin {
    background:
        radial-gradient(circle at 18% 0%, rgba(178,0,0,.20), transparent 28%),
        radial-gradient(circle at 82% 10%, rgba(0,193,207,.16), transparent 25%),
        linear-gradient(180deg, #0a0c10 0%, #050608 100%) !important;
    color: var(--cps-admin-text) !important;
}

body.is-admin .app-header {
    height: 68px;
    padding: 10px 24px;
    background: rgba(17, 19, 23, .94) !important;
    border-bottom: 1px solid var(--cps-admin-border) !important;
    box-shadow: 0 0 10px 0 rgba(0,0,0,.15) !important;
    backdrop-filter: blur(16px);
}

body.is-admin .brand {
    color: var(--cps-admin-text);
}
body.is-admin .brand__icon {
    background: linear-gradient(135deg, var(--cps-vermelho), var(--cps-vermelho-escuro)) !important;
    box-shadow: 0 0 0 1px rgba(255,255,255,.08), 0 12px 26px rgba(178,0,0,.26) !important;
}
body.is-admin .brand small { color: var(--cps-admin-muted); }
body.is-admin .top-nav a { color: #DADADA; }
body.is-admin .top-nav a:hover,
body.is-admin .top-nav a.active { color: var(--cps-destaque) !important; }
body.is-admin .top-nav a.active::after { background: var(--cps-destaque) !important; bottom: -14px; }
body.is-admin .nav-login { background: rgba(0,193,207,.14); color: var(--cps-destaque) !important; }

body.is-admin .admin-sidebar {
    top: 84px !important;
    left: 18px !important;
    bottom: 18px !important;
    width: var(--sidebar-width) !important;
    padding: 0 !important;
    border: 1px solid var(--cps-admin-border) !important;
    border-radius: 22px !important;
    background: linear-gradient(180deg, #14171c 0%, #0c0e12 100%) !important;
    color: var(--cps-admin-text) !important;
    box-shadow: 0 4px 20px 0 rgba(0,0,0,.25) !important;
    overflow: hidden !important;
}

body.is-admin .sidebar-head {
    min-height: 72px;
    padding: 14px 14px !important;
    border-bottom: 1px solid var(--cps-admin-border) !important;
    background: rgba(255,255,255,.02);
}
body.is-admin .sidebar-logo { color: var(--cps-admin-text) !important; }
body.is-admin .sidebar-logo__mark {
    background: linear-gradient(135deg, var(--cps-vermelho), #d32719) !important;
    border-radius: 14px !important;
    box-shadow: 0 10px 24px rgba(178,0,0,.26) !important;
}
body.is-admin .sidebar-logo strong { color: #fff !important; }
body.is-admin .sidebar-logo small { color: var(--cps-admin-muted) !important; }
body.is-admin .sidebar-toggle {
    background: rgba(255,255,255,.07) !important;
    border: 1px solid rgba(255,255,255,.08) !important;
    color: var(--cps-admin-text) !important;
}
body.is-admin .sidebar-toggle:hover { background: rgba(0,193,207,.16) !important; color: var(--cps-destaque) !important; }

body.is-admin .accordion-menu {
    padding: 14px 10px 92px !important;
    max-height: calc(100vh - 180px) !important;
    gap: 7px !important;
}
body.is-admin .sidebar-dashboard,
body.is-admin .menu-group summary {
    min-height: 46px !important;
    border-radius: 14px !important;
    color: #DADADA !important;
    background: transparent !important;
    font-weight: 700 !important;
    font-size: 14px !important;
    letter-spacing: .01em !important;
    border: 1px solid transparent !important;
}
body.is-admin .sidebar-dashboard:hover,
body.is-admin .menu-group summary:hover {
    color: #fff !important;
    background: rgba(255,255,255,.07) !important;
    border-color: rgba(255,255,255,.07) !important;
    transform: translateX(2px);
}
body.is-admin .sidebar-dashboard.active,
body.is-admin .menu-group[open] summary {
    color: #fff !important;
    background: linear-gradient(135deg, var(--cps-azul), var(--cps-vermelho)) !important;
    border-color: rgba(255,255,255,.10) !important;
    box-shadow: 0 10px 22px rgba(0,0,0,.22) !important;
}
body.is-admin .menu-group-icon {
    background: rgba(255,255,255,.08) !important;
    color: var(--cps-destaque) !important;
    border: 1px solid rgba(255,255,255,.06);
}
body.is-admin .menu-group-links {
    margin: 6px 0 8px 44px !important;
    padding: 8px !important;
    background: #262626 !important;
    border: 1px solid rgba(255,255,255,.06) !important;
    border-radius: 14px !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.05) !important;
}
body.is-admin .menu-group-links::before {
    background: var(--cps-destaque) !important;
    opacity: .55;
}
body.is-admin .menu-group-links a {
    color: #DADADA !important;
    min-height: 36px !important;
    border-radius: 10px !important;
    font-size: 13px !important;
    border-left: 3px solid transparent !important;
}
body.is-admin .menu-group-links a:hover,
body.is-admin .menu-group-links a.active {
    color: #fff !important;
    background: rgba(0,193,207,.12) !important;
    border-left-color: var(--cps-destaque) !important;
}
body.is-admin .logout-form .button {
    background: rgba(178,0,0,.18) !important;
    border-color: rgba(178,0,0,.32) !important;
    color: #fff !important;
}
body.is-admin .logout-form .button:hover { background: var(--cps-vermelho) !important; }

body.is-admin .app-main {
    margin-top: 24px !important;
    margin-left: calc(var(--sidebar-width) + 48px) !important;
    width: calc(100% - var(--sidebar-width) - 78px) !important;
}
body.is-admin.sidebar-collapsed .admin-sidebar { width: var(--sidebar-collapsed-width) !important; }
body.is-admin.sidebar-collapsed .app-main {
    margin-left: calc(var(--sidebar-collapsed-width) + 46px) !important;
    width: calc(100% - var(--sidebar-collapsed-width) - 72px) !important;
}
body.is-admin.sidebar-collapsed .sidebar-logo__text,
body.is-admin.sidebar-collapsed .menu-label,
body.is-admin.sidebar-collapsed .menu-group summary::after,
body.is-admin.sidebar-collapsed .menu-group-links,
body.is-admin.sidebar-collapsed .logout-text { display: none !important; }
body.is-admin.sidebar-collapsed .sidebar-head { justify-content: center !important; flex-direction: column !important; }
body.is-admin.sidebar-collapsed .sidebar-dashboard,
body.is-admin.sidebar-collapsed .menu-group summary {
    width: 52px !important;
    height: 50px !important;
    justify-content: center !important;
    padding: 10px !important;
}

body.is-admin .page-hero,
body.is-admin .card,
body.is-admin .stat-card {
    background: var(--cps-admin-card) !important;
    border: 1px solid var(--cps-admin-border) !important;
    color: var(--cps-admin-text) !important;
    box-shadow: 0 0 10px 0 rgba(0,0,0,.15) !important;
}
body.is-admin .page-hero {
    background: linear-gradient(135deg, rgba(178,0,0,.22), rgba(0,92,109,.16)), var(--cps-admin-card) !important;
}
body.is-admin .page-hero h1,
body.is-admin .page-hero h2,
body.is-admin .card h1,
body.is-admin .card h2,
body.is-admin .card h3 { color: #fff; }
body.is-admin .muted,
body.is-admin .card .muted { color: var(--cps-admin-muted) !important; }
body.is-admin input,
body.is-admin select,
body.is-admin textarea {
    background: #0d1014 !important;
    color: #fff !important;
    border-color: rgba(255,255,255,.12) !important;
}
body.is-admin input:focus,
body.is-admin select:focus,
body.is-admin textarea:focus {
    border-color: var(--cps-destaque) !important;
    box-shadow: 0 0 0 4px rgba(0,193,207,.14) !important;
}
body.is-admin label { color: #f8f8f8; }
body.is-admin .button,
body.is-admin button:not(.icon-button):not(.modal-close) {
    background: linear-gradient(135deg, var(--cps-vermelho), var(--cps-vermelho-escuro)) !important;
    color: #fff !important;
    box-shadow: 0 10px 22px rgba(178,0,0,.22) !important;
}
body.is-admin .button:hover,
body.is-admin button:hover:not(.icon-button):not(.modal-close) {
    background: linear-gradient(135deg, #c70b0b, var(--cps-vermelho)) !important;
}
body.is-admin .button-ghost,
body.is-admin .nav a.secondary {
    background: rgba(255,255,255,.06) !important;
    color: #fff !important;
    border: 1px solid rgba(255,255,255,.12) !important;
}
body.is-admin table { background: var(--cps-admin-card) !important; color: var(--cps-admin-text); }
body.is-admin th {
    background: #1f242b !important;
    color: var(--cps-destaque) !important;
    border-bottom-color: rgba(255,255,255,.08) !important;
}
body.is-admin td { border-bottom-color: rgba(255,255,255,.07) !important; }
body.is-admin tr:hover td { background: rgba(0,193,207,.04); }
body.is-admin .icon-button {
    background: #0f1217 !important;
    color: #e8eef5 !important;
    border-color: rgba(255,255,255,.11) !important;
}
body.is-admin .icon-button:hover { background: rgba(0,193,207,.14) !important; color: var(--cps-destaque) !important; }
body.is-admin .danger-icon { color: var(--cps-coral) !important; }

body.is-admin .dashboard-hero-skill {
    background:
        radial-gradient(circle at 72% 28%, rgba(0,193,207,.35), transparent 24%),
        linear-gradient(135deg, #15181d 0%, #0b0d11 54%, #111317 100%) !important;
    border: 1px solid rgba(255,255,255,.10);
    box-shadow: 0 4px 20px 0 rgba(0,0,0,.25) !important;
}
body.is-admin .dashboard-hero-skill::after {
    background: radial-gradient(circle, rgba(178,0,0,.28), transparent 60%) !important;
}
body.is-admin .dashboard-hero-badges span {
    background: rgba(0,193,207,.12) !important;
    border: 1px solid rgba(0,193,207,.26) !important;
    color: #eaffff !important;
}
body.is-admin .dashboard-hero-panel {
    background: rgba(255,255,255,.06) !important;
    border: 1px solid rgba(255,255,255,.11) !important;
}
body.is-admin .kpi-skill-card {
    background: linear-gradient(180deg, var(--cps-admin-card-2), var(--cps-admin-card)) !important;
    border: 1px solid var(--cps-admin-border) !important;
    color: #fff !important;
    box-shadow: 0 0 10px 0 rgba(0,0,0,.15) !important;
}
body.is-admin .kpi-skill-card::after { background: var(--cps-destaque) !important; }
body.is-admin .kpi-skill-icon { background: rgba(0,193,207,.16) !important; color: var(--cps-destaque) !important; }
body.is-admin .kpi-skill-card span { color: var(--cps-admin-muted) !important; }
body.is-admin .kpi-skill-card small { color: var(--cps-verde) !important; }
body.is-admin .kpi-orange .kpi-skill-icon, body.is-admin .kpi-orange::after { background: var(--cps-amarelo) !important; color:#141414 !important; }
body.is-admin .kpi-green .kpi-skill-icon, body.is-admin .kpi-green::after { background: var(--cps-verde) !important; color:#141414 !important; }
body.is-admin .kpi-red .kpi-skill-icon, body.is-admin .kpi-red::after { background: var(--cps-vermelho) !important; color:#fff !important; }
body.is-admin .fluxo-etapas.skill-flow a {
    background: #0f1217 !important;
    border-color: rgba(255,255,255,.08) !important;
    color: #fff !important;
}
body.is-admin .fluxo-etapas.skill-flow strong {
    background: linear-gradient(135deg, var(--cps-vermelho), var(--cps-azul)) !important;
}
body.is-admin .fluxo-etapas.skill-flow span { color: #dfe7ee !important; }
body.is-admin .mini-chart-track { background: rgba(255,255,255,.08) !important; }
body.is-admin .mini-chart-track i { background: linear-gradient(90deg, var(--cps-vermelho), var(--cps-destaque)) !important; }

body.is-admin .modal-card {
    background: var(--cps-admin-card) !important;
    color: var(--cps-admin-text) !important;
    border: 1px solid var(--cps-admin-border) !important;
}
body.is-admin .modal-header { border-bottom-color: rgba(255,255,255,.10) !important; }
body.is-admin .modal-close { color: var(--cps-admin-text) !important; }
body.is-admin .badge-muted { background: rgba(255,255,255,.08); color: #fff; }

/* Áreas oficiais de impressão continuam brancas e institucionais, sem herdar o admin dark. */
body.is-admin .grade-professor-oficial,
body.is-admin .mapa-oficial,
body.is-admin .mapa-oficial-page,
body.is-admin .grade-oficial,
body.is-admin .grade-curricular-cps {
    background: #fff !important;
    color: #000 !important;
}
body.is-admin .grade-professor-oficial *,
body.is-admin .mapa-oficial *,
body.is-admin .mapa-oficial-page *,
body.is-admin .grade-oficial *,
body.is-admin .grade-curricular-cps * {
    color: inherit;
}
body.is-admin .grade-curricular-cps h1 { color: #c00000 !important; }
body.is-admin .grade-curricular-cps .grade-curricular-coluna h2 { color: #fff !important; }

@media (max-width: 1100px) {
    body.is-admin .admin-sidebar { position: static !important; width: auto !important; margin: 16px !important; }
    body.is-admin .app-main,
    body.is-admin.sidebar-collapsed .app-main { margin-left: auto !important; width: min(1320px, calc(100% - 32px)) !important; }
}

@media print {
    body.is-admin { background: #fff !important; color: #000 !important; }
    .app-header, .admin-sidebar, .footer { display: none !important; }
}

/* v2026.1.11 — Sidebar CPS claro com dropdown responsivo inspirado na referência enviada.
   Mantém o padrão institucional CPS sem copiar código/asset externo. */
:root {
    --cps-vermelho: #B20000;
    --cps-vermelho-escuro: #7E0000;
    --cps-azul: #005C6D;
    --cps-azul-hover: #004854;
    --cps-destaque: #00C1CF;
    --cps-destaque-hover: #00D8E8;
    --cps-verde: #A0C340;
    --cps-cinza-texto: #666666;
    --cps-cinza-claro: #DADADA;
    --cps-cinza-hover: #E6E6E6;
    --cps-prata: #F8F8F8;
    --cps-branco: #FFFFFF;
    --sidebar-width: 282px;
    --sidebar-collapsed-width: 76px;
}

body.is-admin {
    background:
        radial-gradient(circle at top left, rgba(0, 193, 207, .16), transparent 34%),
        radial-gradient(circle at top right, rgba(178, 0, 0, .10), transparent 32%),
        var(--cps-prata) !important;
    color: #1f2933 !important;
    font-family: 'Roboto', Arial, sans-serif !important;
}

body.is-admin .app-header {
    background: rgba(255, 255, 255, .92) !important;
    border-bottom: 1px solid rgba(218, 218, 218, .9) !important;
    box-shadow: 0 12px 28px rgba(0, 92, 109, .08) !important;
}

body.is-admin .brand strong,
body.is-admin .top-nav a {
    color: #25313c !important;
}

body.is-admin .brand__icon {
    background: linear-gradient(135deg, var(--cps-vermelho), var(--cps-azul)) !important;
    color: #fff !important;
}

body.is-admin .top-nav a:hover,
body.is-admin .top-nav a.active {
    color: var(--cps-vermelho) !important;
}

body.is-admin .admin-sidebar {
    position: fixed !important;
    top: 92px !important;
    left: 22px !important;
    bottom: 24px !important;
    width: var(--sidebar-width) !important;
    z-index: 80 !important;
    display: flex !important;
    flex-direction: column !important;
    padding: 14px 12px !important;
    overflow: visible !important;
    border-radius: 18px !important;
    border: 1px solid rgba(218, 218, 218, .95) !important;
    background: linear-gradient(180deg, #fff 0%, #fbfbfb 100%) !important;
    box-shadow: 0 18px 42px rgba(0, 92, 109, .14) !important;
    color: #1f2933 !important;
}

body.is-admin .sidebar-head {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    padding: 8px 6px 14px !important;
    margin-bottom: 8px !important;
    border-bottom: 1px solid rgba(218, 218, 218, .85) !important;
}

body.is-admin .sidebar-logo {
    flex: 1 !important;
    min-width: 0 !important;
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    color: #1f2933 !important;
    text-decoration: none !important;
}

body.is-admin .sidebar-logo__mark {
    width: 38px !important;
    height: 38px !important;
    flex: 0 0 38px !important;
    border-radius: 12px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: linear-gradient(135deg, var(--cps-vermelho), var(--cps-azul)) !important;
    color: #fff !important;
    font-size: 18px !important;
    box-shadow: 0 12px 20px rgba(178, 0, 0, .18) !important;
}

body.is-admin .sidebar-logo strong {
    color: #1f2933 !important;
    font-family: 'Roboto Slab', 'Roboto', serif !important;
    font-size: 17px !important;
    font-weight: 700 !important;
    letter-spacing: -.02em !important;
}

body.is-admin .sidebar-logo small {
    display: block !important;
    color: var(--cps-cinza-texto) !important;
    font-size: 12px !important;
    line-height: 16px !important;
    margin-top: 1px !important;
}

body.is-admin .sidebar-toggle {
    width: 38px !important;
    height: 38px !important;
    flex: 0 0 38px !important;
    border: 1px solid rgba(218, 218, 218, .95) !important;
    border-radius: 12px !important;
    background: var(--cps-prata) !important;
    color: var(--cps-azul) !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 18px !important;
    cursor: pointer !important;
    transition: transform .18s ease, background .18s ease, color .18s ease, box-shadow .18s ease !important;
}

body.is-admin .sidebar-toggle:hover {
    background: var(--cps-azul) !important;
    color: #fff !important;
    transform: translateY(-1px) !important;
    box-shadow: 0 10px 18px rgba(0, 92, 109, .16) !important;
}

body.is-admin .accordion-menu {
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
    overflow-y: auto !important;
    overflow-x: visible !important;
    padding: 4px 3px 88px !important;
}

body.is-admin .accordion-menu::-webkit-scrollbar { width: 6px !important; }
body.is-admin .accordion-menu::-webkit-scrollbar-thumb { background: rgba(0,92,109,.22) !important; border-radius: 99px !important; }

body.is-admin .sidebar-dashboard,
body.is-admin .menu-group-summary {
    width: 100% !important;
    min-height: 44px !important;
    border: 0 !important;
    border-radius: 13px !important;
    padding: 10px 12px !important;
    display: flex !important;
    align-items: center !important;
    gap: 11px !important;
    background: transparent !important;
    color: #25313c !important;
    text-decoration: none !important;
    font: 700 14px/20px 'Roboto', Arial, sans-serif !important;
    cursor: pointer !important;
    position: relative !important;
    transition: background .18s ease, color .18s ease, transform .18s ease, box-shadow .18s ease !important;
}

body.is-admin .sidebar-dashboard:hover,
body.is-admin .menu-group-summary:hover,
body.is-admin .menu-group.open > .menu-group-summary,
body.is-admin .sidebar-dashboard.active {
    background: linear-gradient(90deg, rgba(178, 0, 0, .10), rgba(0, 92, 109, .08)) !important;
    color: var(--cps-vermelho) !important;
    box-shadow: inset 4px 0 0 var(--cps-vermelho) !important;
}

body.is-admin .menu-group-icon {
    width: 28px !important;
    height: 28px !important;
    flex: 0 0 28px !important;
    border-radius: 10px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: rgba(0, 92, 109, .09) !important;
    color: var(--cps-azul) !important;
    font-size: 14px !important;
}

body.is-admin .sidebar-dashboard:hover .menu-group-icon,
body.is-admin .menu-group-summary:hover .menu-group-icon,
body.is-admin .menu-group.open > .menu-group-summary .menu-group-icon,
body.is-admin .sidebar-dashboard.active .menu-group-icon {
    background: var(--cps-vermelho) !important;
    color: #fff !important;
}

body.is-admin .menu-group-summary::after {
    content: '›' !important;
    margin-left: auto !important;
    font-size: 21px !important;
    line-height: 1 !important;
    color: var(--cps-cinza-texto) !important;
    transform: rotate(0deg) !important;
    transition: transform .18s ease, color .18s ease !important;
}

body.is-admin .menu-group.open > .menu-group-summary::after {
    transform: rotate(90deg) !important;
    color: var(--cps-vermelho) !important;
}

body.is-admin .menu-group-links {
    display: none !important;
    margin: 6px 0 4px 40px !important;
    padding: 8px !important;
    border-radius: 14px !important;
    background: var(--cps-azul) !important;
    box-shadow: 0 16px 30px rgba(0, 92, 109, .22) !important;
    border: 1px solid rgba(0, 193, 207, .22) !important;
}

body.is-admin .menu-group.open > .menu-group-links {
    display: flex !important;
    flex-direction: column !important;
    gap: 3px !important;
}

body.is-admin .menu-flyout-title {
    display: none !important;
}

body.is-admin .menu-group-links a {
    display: flex !important;
    align-items: center !important;
    min-height: 34px !important;
    border-radius: 10px !important;
    padding: 8px 10px !important;
    color: rgba(255,255,255,.92) !important;
    font: 600 13px/18px 'Roboto', Arial, sans-serif !important;
    text-decoration: none !important;
    transition: background .16s ease, color .16s ease, transform .16s ease !important;
}

body.is-admin .menu-group-links a:hover,
body.is-admin .menu-group-links a.active {
    background: rgba(255,255,255,.15) !important;
    color: #fff !important;
    transform: translateX(2px) !important;
}

body.is-admin .logout-form {
    position: absolute !important;
    left: 14px !important;
    right: 14px !important;
    bottom: 14px !important;
}

body.is-admin .logout-form .button,
body.is-admin .logout-form .button-ghost {
    background: #fff !important;
    color: var(--cps-vermelho) !important;
    border: 1px solid rgba(178, 0, 0, .22) !important;
    border-radius: 13px !important;
    box-shadow: none !important;
}

body.is-admin .logout-form .button:hover,
body.is-admin .logout-form .button-ghost:hover {
    background: var(--cps-vermelho) !important;
    color: #fff !important;
}

body.is-admin .app-main {
    margin-left: calc(var(--sidebar-width) + 54px) !important;
    width: calc(100% - var(--sidebar-width) - 88px) !important;
    max-width: none !important;
    transition: margin-left .22s ease, width .22s ease !important;
}

/* Estado recolhido: sidebar estreito com dropdown flutuante, conforme referência. */
body.is-admin.sidebar-collapsed .admin-sidebar {
    width: var(--sidebar-collapsed-width) !important;
    padding: 14px 9px !important;
}

body.is-admin.sidebar-collapsed .sidebar-head {
    flex-direction: column !important;
    justify-content: center !important;
    gap: 10px !important;
    padding: 6px 0 12px !important;
}

body.is-admin.sidebar-collapsed .sidebar-logo {
    justify-content: center !important;
}

body.is-admin.sidebar-collapsed .sidebar-logo__text,
body.is-admin.sidebar-collapsed .menu-label,
body.is-admin.sidebar-collapsed .logout-text,
body.is-admin.sidebar-collapsed .menu-group-summary::after {
    display: none !important;
}

body.is-admin.sidebar-collapsed .sidebar-toggle {
    width: 42px !important;
    height: 42px !important;
}

body.is-admin.sidebar-collapsed .accordion-menu {
    align-items: center !important;
    overflow: visible !important;
    padding: 4px 0 88px !important;
}

body.is-admin.sidebar-collapsed .sidebar-dashboard,
body.is-admin.sidebar-collapsed .menu-group-summary {
    width: 48px !important;
    height: 48px !important;
    min-height: 48px !important;
    justify-content: center !important;
    padding: 0 !important;
    border-radius: 14px !important;
}

body.is-admin.sidebar-collapsed .menu-group-icon {
    margin: 0 !important;
    width: 32px !important;
    height: 32px !important;
    flex-basis: 32px !important;
}

body.is-admin.sidebar-collapsed .menu-group {
    position: relative !important;
}

body.is-admin.sidebar-collapsed .menu-group-links {
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important;
    position: absolute !important;
    left: calc(100% + 14px) !important;
    top: 0 !important;
    width: 224px !important;
    margin: 0 !important;
    padding: 10px !important;
    border-radius: 14px !important;
    background: var(--cps-azul) !important;
    border: 1px solid rgba(0, 193, 207, .25) !important;
    box-shadow: 0 18px 42px rgba(0, 72, 84, .24) !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transform: translateX(-6px) scale(.98) !important;
    transition: opacity .15s ease, transform .15s ease !important;
    z-index: 300 !important;
}

body.is-admin.sidebar-collapsed .menu-group:hover > .menu-group-links,
body.is-admin.sidebar-collapsed .menu-group:focus-within > .menu-group-links {
    opacity: 1 !important;
    pointer-events: auto !important;
    transform: translateX(0) scale(1) !important;
}

body.is-admin.sidebar-collapsed .menu-group-links::before {
    content: '' !important;
    position: absolute !important;
    left: -8px !important;
    top: 17px !important;
    width: 16px !important;
    height: 16px !important;
    background: var(--cps-azul) !important;
    transform: rotate(45deg) !important;
    border-left: 1px solid rgba(0, 193, 207, .25) !important;
    border-bottom: 1px solid rgba(0, 193, 207, .25) !important;
}

body.is-admin.sidebar-collapsed .menu-flyout-title {
    display: block !important;
    color: #fff !important;
    font: 800 13px/18px 'Roboto Slab', 'Roboto', serif !important;
    padding: 4px 8px 8px !important;
    margin-bottom: 4px !important;
    border-bottom: 1px solid rgba(255,255,255,.16) !important;
}

body.is-admin.sidebar-collapsed .logout-form {
    left: 9px !important;
    right: 9px !important;
}

body.is-admin.sidebar-collapsed .app-main {
    margin-left: calc(var(--sidebar-collapsed-width) + 54px) !important;
    width: calc(100% - var(--sidebar-collapsed-width) - 88px) !important;
}

/* Cards e áreas administrativas no modo claro CPS. */
body.is-admin .page-hero,
body.is-admin .card,
body.is-admin .filters-card,
body.is-admin .table-card,
body.is-admin .dashboard-card,
body.is-admin .dashboard-panel,
body.is-admin .crud-card,
body.is-admin .modal-content {
    background: rgba(255, 255, 255, .96) !important;
    border: 1px solid rgba(218, 218, 218, .85) !important;
    box-shadow: 0 18px 38px rgba(0, 92, 109, .10) !important;
    color: #1f2933 !important;
}

body.is-admin h1,
body.is-admin h2,
body.is-admin h3,
body.is-admin .page-hero h1 {
    color: #1f2933 !important;
    font-family: 'Roboto Slab', 'Roboto', serif !important;
}

body.is-admin .button,
body.is-admin button.button,
body.is-admin a.button {
    background: var(--cps-azul) !important;
    color: #fff !important;
    border: 1px solid var(--cps-azul) !important;
    box-shadow: 0 10px 20px rgba(0, 92, 109, .16) !important;
}

body.is-admin .button:hover,
body.is-admin button.button:hover,
body.is-admin a.button:hover {
    background: var(--cps-azul-hover) !important;
    border-color: var(--cps-azul-hover) !important;
}

body.is-admin .button.button-primary,
body.is-admin .button-danger {
    background: var(--cps-vermelho) !important;
    border-color: var(--cps-vermelho) !important;
}

body.is-admin .button.button-primary:hover,
body.is-admin .button-danger:hover {
    background: var(--cps-vermelho-escuro) !important;
    border-color: var(--cps-vermelho-escuro) !important;
}

body.is-admin input,
body.is-admin select,
body.is-admin textarea {
    background: #fff !important;
    border: 1px solid rgba(218, 218, 218, .95) !important;
    color: #1f2933 !important;
}

body.is-admin input:focus,
body.is-admin select:focus,
body.is-admin textarea:focus {
    outline: 3px solid rgba(0,193,207,.20) !important;
    border-color: var(--cps-destaque) !important;
}

body.is-admin table th {
    background: rgba(0, 92, 109, .09) !important;
    color: var(--cps-azul) !important;
}

body.is-admin table td {
    color: #1f2933 !important;
}

body.is-admin .actions { gap: 2px !important; }

@media (max-width: 980px) {
    body.is-admin .admin-sidebar {
        position: static !important;
        width: auto !important;
        margin: 16px !important;
        bottom: auto !important;
        left: auto !important;
        top: auto !important;
    }
    body.is-admin .app-main,
    body.is-admin.sidebar-collapsed .app-main {
        margin-left: auto !important;
        margin-right: auto !important;
        width: min(1320px, calc(100% - 32px)) !important;
    }
    body.is-admin.sidebar-collapsed .menu-group-links {
        position: static !important;
        width: auto !important;
        opacity: 1 !important;
        pointer-events: auto !important;
        transform: none !important;
        display: none !important;
    }
    body.is-admin.sidebar-collapsed .menu-group.open > .menu-group-links { display: flex !important; }
}

@media print {
    body.is-admin .admin-sidebar,
    body.is-admin .app-header,
    body.is-admin .footer { display: none !important; }
}

/* v2026.1.11.1 — hotfix visual: modo claro CPS consistente e relatórios sempre brancos.
   Corrige herança de tema escuro em relatórios oficiais, remove fundo do nome do app
   no sidebar e remove o triângulo/fundo do flyout recolhido. */
body.is-admin {
    background:
        radial-gradient(circle at top left, rgba(0, 193, 207, .10), transparent 32%),
        radial-gradient(circle at top right, rgba(178, 0, 0, .06), transparent 30%),
        #F8F8F8 !important;
    color: #1f2933 !important;
}

body.is-admin .admin-sidebar {
    background: #FFFFFF !important;
    color: #1f2933 !important;
}

body.is-admin .sidebar-head,
body.is-admin .sidebar-logo,
body.is-admin .sidebar-logo:hover,
body.is-admin .sidebar-logo:focus {
    background: transparent !important;
    box-shadow: none !important;
}

body.is-admin .sidebar-logo__text,
body.is-admin .sidebar-logo strong,
body.is-admin .sidebar-logo small {
    background: transparent !important;
}

body.is-admin.sidebar-collapsed .menu-group-links::before {
    display: none !important;
    background: transparent !important;
    border: 0 !important;
}

body.is-admin .menu-group-links {
    background: #005C6D !important;
}

/* Áreas oficiais e de impressão nunca podem herdar o tema administrativo. */
body.is-admin .grade-professor-oficial,
body.is-admin .relatorio-pi-oficial,
body.is-admin .horario-oficial,
body.is-admin .mapa-oficial,
body.is-admin .mapa-oficial-page,
body.is-admin .grade-oficial,
body.is-admin .horario-planilha-sheet,
body.is-admin .mapa-planilha-sheet {
    background: #FFFFFF !important;
    color: #000000 !important;
    box-shadow: none !important;
    border: 0 !important;
}

body.is-admin .grade-professor-oficial *,
body.is-admin .relatorio-pi-oficial *,
body.is-admin .horario-oficial *,
body.is-admin .mapa-oficial *,
body.is-admin .mapa-oficial-page *,
body.is-admin .grade-oficial *,
body.is-admin .horario-planilha-sheet *,
body.is-admin .mapa-planilha-sheet * {
    color: #000000 !important;
    background-color: transparent;
    box-shadow: none !important;
    text-shadow: none !important;
}

body.is-admin .grade-professor-oficial .cabecalho-oficial,
body.is-admin .relatorio-pi-oficial .cabecalho-oficial,
body.is-admin .horario-oficial .cabecalho-oficial,
body.is-admin .mapa-oficial .cabecalho-oficial {
    background: #FFFFFF !important;
    border-bottom: 0 !important;
}

body.is-admin .grade-professor-title {
    background: #FFFFFF !important;
    border: 2px solid #0070C0 !important;
}

body.is-admin .grade-professor-title h1 {
    background: #FFFFFF !important;
    color: #000000 !important;
}

body.is-admin .grade-professor-title strong {
    background: #0070C0 !important;
    color: #FFFFFF !important;
}

body.is-admin .grade-professor-table,
body.is-admin .relatorio-pi-oficial .table-oficial,
body.is-admin .table-oficial {
    background: #FFFFFF !important;
    color: #000000 !important;
    border-collapse: collapse !important;
}

body.is-admin .grade-professor-table th,
body.is-admin .grade-professor-table tbody th,
body.is-admin .relatorio-pi-oficial .table-oficial th,
body.is-admin .table-oficial th {
    background: #0070C0 !important;
    color: #FFFFFF !important;
    border: 1px solid #DADADA !important;
}

body.is-admin .grade-professor-table td,
body.is-admin .relatorio-pi-oficial .table-oficial td,
body.is-admin .table-oficial td {
    background: #FFFFFF !important;
    color: #000000 !important;
    border: 1px solid #DADADA !important;
}

body.is-admin .grade-professor-bottom,
body.is-admin .grade-professor-bottom section,
body.is-admin .grade-professor-bottom pre {
    background: #FFFFFF !important;
    color: #000000 !important;
}

body.is-admin .grade-professor-bottom h3 {
    background: #FFFFFF !important;
    color: #0070C0 !important;
    border-bottom: 2px solid #0070C0 !important;
}

body.is-admin .grade-professor-bottom pre {
    font-size: 12px !important;
    line-height: 1.15 !important;
}

@media print {
    body,
    body.is-admin,
    body.is-admin .app-main,
    body.is-admin .grade-professor-oficial,
    body.is-admin .relatorio-pi-oficial,
    body.is-admin .horario-oficial,
    body.is-admin .mapa-oficial,
    body.is-admin .mapa-oficial-page {
        background: #FFFFFF !important;
        color: #000000 !important;
    }
}


/* v2026.1.12 — professor titular x professor em aula, filtros automáticos e grids claros.
   O tema administrativo pode variar, mas grids e relatórios oficiais não devem herdar fundo escuro. */
.gc-card small { display: block; line-height: 1.25; }
.gc-alerta-titular {
    display: inline-block;
    margin-top: 4px;
    padding: 2px 6px;
    border-radius: 999px;
    background: rgba(178, 0, 0, .12) !important;
    color: #7f0000 !important;
    font-size: 10px;
    font-style: normal;
    font-weight: 800;
}

body.is-admin .planilha-card,
body.is-admin .planilha-card *,
body.is-admin .planilha-scroll,
body.is-admin .planilha-scroll *,
body.is-admin .crud-list-card,
body.is-admin .crud-list-card *,
body.is-admin .table-wrapper,
body.is-admin .table-wrapper * {
    text-shadow: none !important;
}

body.is-admin .planilha-card,
body.is-admin .crud-list-card,
body.is-admin .table-wrapper {
    background: #FFFFFF !important;
    color: #111111 !important;
}

body.is-admin table,
body.is-admin .planilha-dia-disciplina,
body.is-admin .planilha-dia-salas,
body.is-admin .crud-table {
    background: #FFFFFF !important;
    color: #111111 !important;
}

body.is-admin table td,
body.is-admin .planilha-dia-disciplina td,
body.is-admin .planilha-dia-salas td,
body.is-admin .crud-table td {
    background-color: #FFFFFF !important;
    color: #111111 !important;
}

body.is-admin table th,
body.is-admin .planilha-dia-disciplina th,
body.is-admin .planilha-dia-salas th,
body.is-admin .crud-table th {
    background-color: #F1F5F6 !important;
    color: #005C6D !important;
}

body.is-admin .dia-label,
body.is-admin .planilha-dia-disciplina .dia-label,
body.is-admin .planilha-dia-salas .dia-label {
    background: #0070C0 !important;
    color: #FFFFFF !important;
}

body.is-admin .turma-nao-gera {
    background: #E6E6E6 !important;
    color: #555555 !important;
}

body.is-admin td.aula-remota,
body.is-admin .sala-cell.aula-remota { background: #C6E0B4 !important; color: #000 !important; }
body.is-admin td.aula-pi,
body.is-admin .sala-cell.aula-pi { background: #FFF2CC !important; color: #000 !important; }
body.is-admin td.aula-edital,
body.is-admin .sala-cell.aula-edital { background: #F4CCCC !important; color: #000 !important; }
body.is-admin td.aula-normal,
body.is-admin .sala-cell.aula-normal { background: #FFFFFF !important; color: #000 !important; }

body.is-admin .grade-professor-table th,
body.is-admin .grade-professor-table td,
body.is-admin .relatorio-pi-oficial .table-oficial th,
body.is-admin .relatorio-pi-oficial .table-oficial td {
    opacity: 1 !important;
}


/* v2026.1.14 — padronização CPS clara, CRUDs claros, botões por semântica e relatórios sem fundo escuro. */
:root {
    --cps-azul: #005C6D;
    --cps-azul-2: #007C92;
    --cps-azul-claro: #E7F6F8;
    --cps-vermelho: #B20000;
    --cps-verde: #168746;
    --cps-cinza: #667085;
    --primary: var(--cps-azul) !important;
    --primary-dark: #004855 !important;
    --danger: var(--cps-vermelho) !important;
    --success: var(--cps-verde) !important;
    --page: #f5f8fb !important;
    --surface: #ffffff !important;
    --surface-soft: #ffffff !important;
    --text: #14213d !important;
    --muted: #667085 !important;
}
body.is-admin {
    background: linear-gradient(180deg, #f3f9fb 0%, #eef4f8 100%) !important;
    color: var(--text) !important;
}
body.is-admin .app-header,
body.is-admin .card,
body.is-admin .modal-card,
body.is-admin .crud-list-card,
body.is-admin .page-header,
body.is-admin .filters-card,
body.is-admin .planilha-card,
body.is-admin .table-wrapper {
    background: #ffffff !important;
    color: var(--text) !important;
}
body.is-admin .admin-sidebar {
    background: #ffffff !important;
    border: 1px solid #d9e8ee !important;
    box-shadow: 0 18px 35px rgba(0,92,109,.10) !important;
}
body.is-admin .sidebar-head,
body.is-admin .sidebar-logo,
body.is-admin .sidebar-logo:hover {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}
.sidebar-logo__mark { display: none !important; }
body.is-admin .sidebar-logo__text strong { color: var(--cps-azul) !important; font-size: 20px; }
body.is-admin .sidebar-logo__text small { color: #667085 !important; }
body.is-admin .sidebar-toggle {
    background: var(--cps-azul) !important;
    color: #fff !important;
    border: 0 !important;
    box-shadow: 0 10px 20px rgba(0,92,109,.18) !important;
}
body.is-admin .sidebar-dashboard,
body.is-admin .menu-group-summary,
body.is-admin .menu-group-links a {
    background: transparent !important;
    color: #254052 !important;
    border: 0 !important;
    box-shadow: none !important;
}
body.is-admin .sidebar-dashboard:hover,
body.is-admin .sidebar-dashboard.active,
body.is-admin .menu-group.open > .menu-group-summary,
body.is-admin .menu-group-summary:hover,
body.is-admin .menu-group-links a:hover,
body.is-admin .menu-group-links a.active {
    background: var(--cps-azul-claro) !important;
    color: var(--cps-azul) !important;
}
body.is-admin .menu-group-links {
    background: #ffffff !important;
    border: 1px solid #d9e8ee !important;
    color: #254052 !important;
}
body.is-admin.sidebar-collapsed .menu-group-links {
    background: #ffffff !important;
    box-shadow: 0 16px 40px rgba(0,92,109,.16) !important;
}
body.is-admin.sidebar-collapsed .menu-group::before,
body.is-admin.sidebar-collapsed .menu-group.open::before,
body.is-admin.sidebar-collapsed .menu-group:hover::before { display: none !important; }
.menu-group-icon { color: var(--cps-azul) !important; }
.sidebar-dashboard .menu-group-icon { display:none !important; }
body.is-admin .logout-form { display:none !important; }
.top-logout-form { margin:0; display:inline-flex; align-items:center; }
.top-logout-button {
    width: 36px; height: 36px; padding:0 !important; border-radius: 12px !important;
    background: var(--cps-vermelho) !important; color:#fff !important;
    box-shadow: 0 8px 16px rgba(178,0,0,.16) !important;
}
button, .button, .button-new { background: var(--cps-azul) !important; color:#fff !important; box-shadow: 0 8px 18px rgba(0,92,109,.14) !important; }
button:hover, .button:hover { background: var(--cps-azul-2) !important; }
.button.secondary, .button-gray, button.secondary { background: #697386 !important; color:#fff !important; }
.button.danger, button.danger, .danger-icon, .button-delete { background: var(--cps-vermelho) !important; color:#fff !important; }
.button-success, .badge-success, button.success { background: var(--cps-verde) !important; color:#fff !important; }
.crud-table, .crud-table th, .crud-table td,
.table-wrapper table, .table-wrapper th, .table-wrapper td,
.modal-card, .modal-card input, .modal-card select, .modal-card textarea,
form input, form select, form textarea {
    background-color: #ffffff !important;
    color: #14213d !important;
}
.crud-table th, .table-wrapper th { background:#eef6f8 !important; color: var(--cps-azul) !important; }
.modal-backdrop { background: rgba(15, 23, 42, .28) !important; }
.modal-header { background: #ffffff !important; color:#14213d !important; }
.modal-close { color: var(--cps-vermelho) !important; background: transparent !important; }
.actions { gap: 2px !important; }
.icon-button { background:#f2f7f9 !important; color: var(--cps-azul) !important; }
.icon-button.danger-icon, .danger-icon { background:#fdecec !important; color:var(--cps-vermelho) !important; }
.horarios-semana-card h3 { color: var(--cps-azul); }
.horarios-turno-bloco { margin: 14px 0 18px; }
.horarios-turno-bloco h4 { margin:0 0 8px; color: var(--cps-azul); }
.horarios-semana-grid { display:grid; grid-template-columns: repeat(7, minmax(120px,1fr)); gap: 8px; }
.horarios-semana-grid article { background:#f8fbfc; border:1px solid #d9e8ee; border-radius:12px; padding:10px; min-height:80px; }
.horarios-semana-grid article strong { display:block; color: var(--cps-azul); margin-bottom:6px; }
.horarios-semana-grid article span { display:block; font-size:12px; padding:3px 0; }
.filtros-com-legenda { display:flex; align-items:flex-end; justify-content:space-between; gap:18px; flex-wrap:wrap; }
.filtros-com-legenda form { flex: 1 1 520px; }
.legenda-operacional { display:flex; gap:8px; flex-wrap:wrap; align-items:center; justify-content:flex-end; }
.legenda-operacional span { padding:7px 10px; border-radius:999px; font-size:12px; font-weight:800; border:1px solid transparent; }
.legenda-remota { background:#d9ead3; color:#05603a; }
.legenda-pi { background:#fff2cc; color:#7a5a00; }
.legenda-edital { background:#ffd6df; color:#8a0021; }
.legenda-bloqueada { background:#e5e7eb; color:#4b5563; }
.disciplinas-sem-aula ul { columns: 2; margin: 0; }
.gc-legenda { display:flex; flex-direction:column; gap:10px; align-items:stretch; }
.gc-legenda-bloco { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.gc-legenda-titulo { min-width: 140px; font-weight:900; color:#000; }
.gc-card-oculta { background:#e5e7eb !important; color:#444 !important; }
/* Relatórios oficiais nunca herdam tema administrativo. */
.grade-professor-oficial,
.grade-professor-oficial *,
.relatorio-pi-oficial,
.relatorio-pi-oficial *,
.horario-planilha-print,
.horario-planilha-print *,
.mapa-planilha-print,
.mapa-planilha-print *,
.dia-sala-print,
.dia-sala-print * {
    color: #000 !important;
}
.grade-professor-oficial,
.relatorio-pi-oficial,
.horario-planilha-print,
.mapa-planilha-print,
.dia-sala-print {
    background:#fff !important;
}
.grade-professor-table th { background:#0070c0 !important; color:#fff !important; }
.grade-professor-table td { background:#fff !important; color:#000 !important; }
.relatorio-pi-oficial th { background:#0070c0 !important; color:#fff !important; }
.relatorio-pi-oficial td { background:#fff !important; color:#000 !important; }
.professor-pi-table .professor-mini-foto { width:54px; height:54px; object-fit:cover; border-radius:6px; }
@media print {
    @page { size: A4 landscape; margin: 8mm; }
    body, body.is-admin { background:#fff !important; }
    .grade-professor-oficial { width: 100% !important; min-height: 180mm; padding:0 !important; margin:0 !important; box-shadow:none !important; border:0 !important; }
    .grade-professor-table th, .grade-professor-table td { font-size: 9px !important; padding: 2px 3px !important; }
    .grade-professor-title h1 { font-size: 22px !important; }
    .grade-professor-bottom pre { font-size: 10px !important; }
    .relatorio-emitido-em { font-size: 9px !important; text-align:left !important; }
}
@media (max-width: 980px) { .horarios-semana-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }

/* v2026.1.14.1 — correções de CRUD, modais, dashboard e grids claros */
:root {
    --cps-azul: #005C6D;
    --cps-azul-claro: #00A3B5;
    --cps-vermelho: #B20000;
    --cps-verde: #1B8F3A;
    --cps-cinza: #6B7280;
    --cps-fundo: #F3F8FA;
    --cps-card: #FFFFFF;
    --cps-texto: #172033;
    --cps-borda: #D7E2E8;
    --primary: var(--cps-azul);
    --primary-dark: #004653;
    --danger: var(--cps-vermelho);
    --success: var(--cps-verde);
    --page: var(--cps-fundo);
    --surface: var(--cps-card);
    --surface-soft: #FFFFFF;
    --text: var(--cps-texto);
    --border-soft: var(--cps-borda);
}

body,
body.is-admin {
    background: linear-gradient(180deg, #eef7fa 0%, #f8fbfc 42%, #ffffff 100%) !important;
    color: var(--cps-texto) !important;
}

.card,
.page-hero,
.page-header,
.filters-card,
.crud-toolbar,
.crud-list-card,
.stat-card,
.dashboard-hero-skill,
.kpi-skill-card,
.fluxo-card,
.skill-analytics .card,
.dashboard-content-grid .card,
.table-wrapper,
.horarios-semana-card {
    background: #ffffff !important;
    color: var(--cps-texto) !important;
    border-color: var(--cps-borda) !important;
}

.dashboard-hero-skill {
    background: linear-gradient(135deg, #005C6D 0%, #00879A 100%) !important;
    color: #ffffff !important;
}
.dashboard-hero-skill h2,
.dashboard-hero-skill p,
.dashboard-hero-skill .eyebrow,
.dashboard-hero-skill span,
.dashboard-hero-skill small,
.dashboard-hero-skill strong { color: inherit !important; }
.dashboard-hero-panel { background: rgba(255,255,255,.14) !important; border: 1px solid rgba(255,255,255,.30) !important; }

.kpi-skill-card strong,
.kpi-skill-card span,
.kpi-skill-card small,
.skill-card-title h3,
.fluxo-etapas a,
.fluxo-etapas span,
.mini-chart-row span,
.mini-chart-row strong {
    color: var(--cps-texto) !important;
}

.mini-chart-track { background: #E5EEF2 !important; }
.mini-chart-track i { background: linear-gradient(90deg, var(--cps-azul), var(--cps-azul-claro)) !important; }
.badge,
.badge-muted { background: #EAF5F7 !important; color: var(--cps-azul) !important; border: 1px solid #CDE8ED !important; }

.table-wrapper,
table,
.crud-list-card table,
.crud-list-card thead,
.crud-list-card tbody,
.crud-list-card tr,
.crud-list-card td,
.crud-list-card th {
    background: #ffffff !important;
    color: var(--cps-texto) !important;
}
table thead th,
.crud-list-card table thead th {
    background: #EAF5F7 !important;
    color: var(--cps-azul) !important;
    border-bottom: 1px solid var(--cps-borda) !important;
}
table tbody tr:nth-child(even) td { background: #F8FBFC !important; }
table tbody tr:hover td { background: #EEF7FA !important; }

label,
.form-field label,
.modal-card label,
.modal-card .form-field label,
.modal-card .muted,
.modal-card h3,
.modal-card p,
.modal-card small {
    color: var(--cps-texto) !important;
}

input,
select,
textarea,
.modal-card input,
.modal-card select,
.modal-card textarea {
    background: #ffffff !important;
    color: var(--cps-texto) !important;
    border: 1px solid var(--cps-borda) !important;
}
input:disabled,
select:disabled,
textarea:disabled {
    background: #F3F6F8 !important;
    color: #5F6B7A !important;
    opacity: 1 !important;
}

.modal-backdrop {
    background: rgba(15, 32, 45, .42) !important;
}
.modal-card,
.modal-header,
.modal-card form,
.modal-card .modal-grid,
.modal-card .modal-actions {
    background: #ffffff !important;
    color: var(--cps-texto) !important;
    border-color: var(--cps-borda) !important;
}
.modal-close {
    background: #EAF5F7 !important;
    color: var(--cps-azul) !important;
}
.modal-close:hover { background: var(--cps-azul) !important; color: #fff !important; }

.button,
button,
.button-new,
button[type="submit"] {
    background: var(--cps-azul) !important;
    color: #ffffff !important;
    box-shadow: 0 8px 18px rgba(0, 92, 109, .18) !important;
}
.button:hover,
button:hover { background: #004653 !important; color: #ffffff !important; }
.button.secondary,
.button-gray,
.button-ghost,
.modal-actions .secondary,
.search-form .secondary {
    background: #EEF2F4 !important;
    color: #334155 !important;
    border: 1px solid #D7E2E8 !important;
    box-shadow: none !important;
}
.button.secondary:hover,
.button-gray:hover,
.button-ghost:hover { background: #DCE8ED !important; color: var(--cps-azul) !important; }
.button.danger,
button.danger,
.danger-icon,
.icon-button.danger-icon {
    background: #FCECEC !important;
    color: var(--cps-vermelho) !important;
    border: 1px solid #F3C8C8 !important;
    box-shadow: none !important;
}
.button-success,
button.button-success,
.success,
button.success {
    background: var(--cps-verde) !important;
    color: #ffffff !important;
}

.actions,
.icon-actions { gap: 2px !important; }
.icon-button,
.actions .icon-button,
.actions a,
.actions button {
    background: #EEF2F4 !important;
    color: var(--cps-azul) !important;
    border: 1px solid #D7E2E8 !important;
    box-shadow: none !important;
    width: 30px;
    height: 30px;
    min-width: 30px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 !important;
    border-radius: 8px !important;
}
.actions .icon-button:hover,
.actions a:hover,
.actions button:hover { background: #DDECEF !important; color: #003E49 !important; }
.actions .danger-icon:hover { background: #FADADA !important; color: var(--cps-vermelho) !important; }

/* Garante que nenhum grid administrativo herde tema escuro */
.dia-grid,
.dia-disciplinas-grid,
.dia-salas-grid,
.grade-curricular-board,
.grade-curricular-card,
.grade-professor-document,
.professor-pi-document,
.relatorio-oficial,
.table-oficial,
.grade-professor-table,
.professor-pi-table,
.dia-salas-print-table,
.horario-planilha-table,
.mapa-planilha-table {
    background: #ffffff !important;
    color: #000000 !important;
}
.grade-professor-table td,
.professor-pi-table td,
.table-oficial td,
.dia-salas-print-table td { color: #000000 !important; }

@media print {
    body,
    body.is-admin,
    .grade-professor-document,
    .professor-pi-document,
    .relatorio-oficial,
    .table-oficial,
    .grade-professor-table,
    .professor-pi-table {
        background: #ffffff !important;
        color: #000000 !important;
    }
}

/* v2026.1.14.2 — limpeza final CPS claro: ações, dashboard e grids sem herança escura. */
body.is-admin,
body.is-admin main,
body.is-admin .admin-shell,
body.is-admin .app-main,
body.is-admin .content,
body.is-admin .dashboard-page {
    background: linear-gradient(180deg, #eef7fa 0%, #f8fbfc 42%, #ffffff 100%) !important;
    color: #14213d !important;
}

body.is-admin .dashboard-hero-skill {
    background: linear-gradient(135deg, #ffffff 0%, #eaf7fa 100%) !important;
    color: #14213d !important;
    border: 1px solid #d7e2e8 !important;
    box-shadow: 0 10px 30px rgba(0, 92, 109, .10) !important;
}
body.is-admin .dashboard-hero-skill::after { display: none !important; }
body.is-admin .dashboard-hero-skill h2,
body.is-admin .dashboard-hero-skill p,
body.is-admin .dashboard-hero-skill .eyebrow,
body.is-admin .dashboard-hero-skill span,
body.is-admin .dashboard-hero-skill small,
body.is-admin .dashboard-hero-skill strong { color: #14213d !important; }
body.is-admin .dashboard-hero-badges span {
    background: #e7f6f8 !important;
    color: #005C6D !important;
    border: 1px solid #cde8ed !important;
}
body.is-admin .dashboard-hero-panel {
    background: #ffffff !important;
    color: #14213d !important;
    border: 1px solid #d7e2e8 !important;
    box-shadow: 0 8px 22px rgba(0, 92, 109, .08) !important;
}
body.is-admin .dashboard-hero-panel * { color: #14213d !important; }

body.is-admin .kpi-skill-card,
body.is-admin .fluxo-etapas.skill-flow a,
body.is-admin .card,
body.is-admin .skill-analytics .card,
body.is-admin .dashboard-content-grid .card,
body.is-admin .crud-list-card,
body.is-admin .table-wrapper,
body.is-admin .filters-card,
body.is-admin .crud-toolbar,
body.is-admin .page-header,
body.is-admin .page-hero {
    background: #ffffff !important;
    color: #14213d !important;
    border-color: #d7e2e8 !important;
    box-shadow: 0 10px 28px rgba(0, 92, 109, .08) !important;
}
body.is-admin .kpi-skill-card::after { background: #e7f6f8 !important; opacity: 1 !important; }
body.is-admin .kpi-skill-card *,
body.is-admin .fluxo-etapas.skill-flow a *,
body.is-admin .card * { color: inherit; }
body.is-admin .kpi-skill-card strong,
body.is-admin .kpi-skill-card span,
body.is-admin .kpi-skill-card small,
body.is-admin .skill-card-title h3,
body.is-admin .fluxo-etapas.skill-flow span,
body.is-admin .mini-chart-row span,
body.is-admin .mini-chart-row strong { color: #14213d !important; }
body.is-admin .fluxo-etapas.skill-flow strong {
    background: #005C6D !important;
    color: #ffffff !important;
}

body.is-admin table,
body.is-admin thead,
body.is-admin tbody,
body.is-admin tr,
body.is-admin th,
body.is-admin td,
body.is-admin .crud-table,
body.is-admin .crud-table th,
body.is-admin .crud-table td,
body.is-admin .table-wrapper table,
body.is-admin .table-wrapper th,
body.is-admin .table-wrapper td {
    background-color: #ffffff !important;
    color: #14213d !important;
}
body.is-admin table thead th,
body.is-admin .crud-table thead th,
body.is-admin .table-wrapper thead th {
    background: #eaf5f7 !important;
    color: #005C6D !important;
}
body.is-admin table tbody tr:nth-child(even) td { background: #f8fbfc !important; }
body.is-admin table tbody tr:hover td { background: #eef7fa !important; }

body.is-admin .actions,
body.is-admin .icon-actions { gap: 2px !important; }
body.is-admin .actions .icon-button,
body.is-admin .actions a.icon-button,
body.is-admin .actions button.icon-button,
body.is-admin .icon-actions .icon-button,
body.is-admin .icon-actions a,
body.is-admin .icon-actions button {
    background: #eaf5f7 !important;
    color: #005C6D !important;
    border: 1px solid #cde8ed !important;
    box-shadow: none !important;
    text-shadow: none !important;
}
body.is-admin .actions .icon-button:hover,
body.is-admin .actions a.icon-button:hover,
body.is-admin .actions button.icon-button:hover,
body.is-admin .icon-actions .icon-button:hover,
body.is-admin .icon-actions a:hover,
body.is-admin .icon-actions button:hover {
    background: #005C6D !important;
    color: #ffffff !important;
}
body.is-admin .actions .danger-icon,
body.is-admin .actions button.danger-icon,
body.is-admin .icon-actions .danger-icon {
    background: #fdecec !important;
    color: #B20000 !important;
    border-color: #f3c8c8 !important;
}
body.is-admin .actions .danger-icon:hover,
body.is-admin .actions button.danger-icon:hover,
body.is-admin .icon-actions .danger-icon:hover {
    background: #B20000 !important;
    color: #ffffff !important;
}

body.is-admin .modal-card,
body.is-admin .modal-header,
body.is-admin .modal-card form,
body.is-admin .modal-grid,
body.is-admin .modal-actions {
    background: #ffffff !important;
    color: #14213d !important;
    border-color: #d7e2e8 !important;
}
body.is-admin .modal-card label,
body.is-admin .modal-card .form-field label,
body.is-admin .modal-card .muted,
body.is-admin .modal-card h3,
body.is-admin .modal-card p,
body.is-admin .modal-card small,
body.is-admin .modal-card span {
    color: #14213d !important;
}
body.is-admin .modal-card input,
body.is-admin .modal-card select,
body.is-admin .modal-card textarea,
body.is-admin input,
body.is-admin select,
body.is-admin textarea {
    background: #ffffff !important;
    color: #14213d !important;
    border: 1px solid #d7e2e8 !important;
}
body.is-admin .modal-close {
    background: transparent !important;
    color: #B20000 !important;
    box-shadow: none !important;
}

/* Hotfix v2026.1.14.3: garante que as cores especiais sejam aplicadas em toda a célula
   de Dia x Disciplinas, inclusive quando o conteúdo for um link. */
.planilha-dia-disciplina td.aula-remota,
.planilha-dia-disciplina td.aula-remota a {
    background: #C6E0B4 !important;
    color: #000 !important;
}
.planilha-dia-disciplina td.aula-pi,
.planilha-dia-disciplina td.aula-pi a {
    background: #FFF2CC !important;
    color: #000 !important;
}
.planilha-dia-disciplina td.aula-edital,
.planilha-dia-disciplina td.aula-edital a {
    background: #F4CCCC !important;
    color: #000 !important;
}
.planilha-dia-disciplina td.aula-remota a,
.planilha-dia-disciplina td.aula-pi a,
.planilha-dia-disciplina td.aula-edital a {
    display: block;
    width: 100%;
    min-height: 100%;
}

/* Hotfix v2026.1.14.4 — Dia x Disciplinas: cor sempre na CÉLULA inteira.
   Corrige o efeito de "faixa" colorida causado por regras globais de zebra/hover
   e por background aplicado no link interno. */
body.is-admin table.planilha-dia-disciplina tbody tr td.aula-remota,
body.is-admin table.planilha-dia-disciplina tbody tr:nth-child(even) td.aula-remota,
body.is-admin table.planilha-dia-disciplina tbody tr:hover td.aula-remota {
    background: #C6E0B4 !important;
    background-color: #C6E0B4 !important;
    color: #000000 !important;
}

body.is-admin table.planilha-dia-disciplina tbody tr td.aula-pi,
body.is-admin table.planilha-dia-disciplina tbody tr:nth-child(even) td.aula-pi,
body.is-admin table.planilha-dia-disciplina tbody tr:hover td.aula-pi {
    background: #FFF2CC !important;
    background-color: #FFF2CC !important;
    color: #000000 !important;
}

body.is-admin table.planilha-dia-disciplina tbody tr td.aula-edital,
body.is-admin table.planilha-dia-disciplina tbody tr:nth-child(even) td.aula-edital,
body.is-admin table.planilha-dia-disciplina tbody tr:hover td.aula-edital {
    background: #F4CCCC !important;
    background-color: #F4CCCC !important;
    color: #000000 !important;
}

body.is-admin table.planilha-dia-disciplina tbody tr td.turma-nao-gera,
body.is-admin table.planilha-dia-disciplina tbody tr:nth-child(even) td.turma-nao-gera,
body.is-admin table.planilha-dia-disciplina tbody tr:hover td.turma-nao-gera {
    background: #E6E6E6 !important;
    background-color: #E6E6E6 !important;
    color: #555555 !important;
}

body.is-admin table.planilha-dia-disciplina tbody tr td.aula-remota a,
body.is-admin table.planilha-dia-disciplina tbody tr td.aula-pi a,
body.is-admin table.planilha-dia-disciplina tbody tr td.aula-edital a {
    background: transparent !important;
    background-color: transparent !important;
    color: #000000 !important;
    display: inline !important;
    width: auto !important;
    min-height: 0 !important;
}

/* v2026.1.14.6 — Grade Horária / Mapa de Salas no padrão CPS claro + iframe/embed. */
body.is-public,
body.is-embed {
    background: linear-gradient(180deg, #eef7fa 0%, #f8fbfc 45%, #ffffff 100%) !important;
    color: #172033 !important;
    font-family: Roboto, Arial, Helvetica, sans-serif !important;
}
body.is-embed { margin: 0 !important; padding: 10px !important; }

.cps-public-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    border-radius: 24px !important;
    border: 1px solid #d7e2e8 !important;
    background: #ffffff !important;
    box-shadow: 0 12px 34px rgba(0, 92, 109, .10) !important;
}
.cps-public-hero .eyebrow {
    display: inline-block;
    color: #005C6D !important;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .04em;
    font-size: 12px;
    margin-bottom: 6px;
}
.cps-public-hero h1 {
    font-family: 'Roboto Slab', Roboto, Arial, sans-serif !important;
    color: #172033 !important;
    margin: 0 0 4px !important;
}
.cps-public-hero p { margin: 0; color: #667085 !important; }

.cps-public-filters {
    background: #ffffff !important;
    border: 1px solid #d7e2e8 !important;
    border-radius: 22px !important;
    box-shadow: 0 10px 28px rgba(0, 92, 109, .08) !important;
}
.filters-grid--public-periodo {
    display: grid;
    grid-template-columns: minmax(260px, 1fr) minmax(220px, 320px) auto;
    gap: 14px;
    align-items: end;
}
.filters-grid--public-periodo label { color: #172033 !important; font-weight: 900; }
.filters-grid--public-periodo select {
    background: #ffffff !important;
    color: #172033 !important;
    border: 1px solid #cfe0e7 !important;
    border-radius: 12px !important;
}

.cps-oficial-sheet {
    border: 1px solid #d7e2e8 !important;
    border-radius: 18px !important;
    box-shadow: 0 16px 38px rgba(0, 92, 109, .10) !important;
    background: #ffffff !important;
    color: #000000 !important;
}
.cps-oficial-sheet.is-inline-embed {
    border-radius: 10px !important;
    box-shadow: none !important;
    margin: 0 !important;
    max-width: none !important;
    padding: 12px !important;
}
.cps-oficial-periodo {
    color: #005C6D !important;
    border-bottom: 3px solid #005C6D;
    padding-bottom: 4px;
    margin-bottom: 12px !important;
}
.cps-scroll-oficial { border-radius: 12px; }

.horario-planilha-table.cps-oficial-table,
.mapa-planilha-table.cps-oficial-table {
    background: #ffffff !important;
    color: #000000 !important;
}
.horario-planilha-table.cps-oficial-table th,
.horario-planilha-table.cps-oficial-table td,
.mapa-planilha-table.cps-oficial-table th,
.mapa-planilha-table.cps-oficial-table td {
    color: #000000 !important;
    box-shadow: none !important;
}
.horario-planilha-table.cps-oficial-table thead th {
    background: #005C6D !important;
    color: #ffffff !important;
    border-color: #004653 !important;
}
.horario-planilha-table.cps-oficial-table tbody th {
    background: #eaf5f7 !important;
    color: #005C6D !important;
    border-color: #b9d7df !important;
}
.horario-planilha-table.cps-oficial-table td.aula-normal { background: #ffffff !important; }
.horario-planilha-table.cps-oficial-table td.aula-remota { background: #C6E0B4 !important; }
.horario-planilha-table.cps-oficial-table td.aula-pi { background: #FFF2CC !important; }
.horario-planilha-table.cps-oficial-table td.aula-edital { background: #F4CCCC !important; }

.mapa-planilha-dia {
    border-color: #005C6D !important;
    background: #ffffff !important;
}
.mapa-planilha-dia-label {
    background: #005C6D !important;
    color: #ffffff !important;
}
.mapa-title-row h2,
.mapa-title-row strong,
.mapa-datas-importantes-oficial h2 { color: #005C6D !important; }
.mapa-datas-importantes-oficial { border-top-color: #005C6D !important; }
.mapa-datas-importantes-oficial strong { color: #B20000 !important; }
.mapa-planilha-table.cps-oficial-table tr:nth-child(odd) td:not(.mapa-planilha-ciclo),
.mapa-planilha-table.cps-oficial-table tr:nth-child(odd) th:not(.mapa-planilha-ciclo) { background: #f3f8fa !important; }
.mapa-planilha-table.cps-oficial-table .mapa-planilha-ciclo { background: #ffffff !important; color: #005C6D !important; }
.mapa-planilha-table.cps-oficial-table tr.aula-remota td:not(.mapa-planilha-ciclo) { background: #C6E0B4 !important; }
.mapa-planilha-table.cps-oficial-table tr.aula-pi td:not(.mapa-planilha-ciclo) { background: #FFF2CC !important; }
.mapa-planilha-table.cps-oficial-table tr.aula-edital td:not(.mapa-planilha-ciclo) { background: #F4CCCC !important; }

.cps-oficial-legenda {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    margin-top: 10px;
    font-size: 11px;
}
.cps-oficial-legenda span {
    border: 1px solid #d7e2e8;
    border-radius: 999px;
    padding: 6px 10px;
    font-weight: 900;
}
.cps-oficial-legenda .aula-remota { background: #C6E0B4 !important; }
.cps-oficial-legenda .aula-pi { background: #FFF2CC !important; }
.cps-oficial-legenda .aula-edital { background: #F4CCCC !important; }

.embed-toolbar {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    align-items: center;
    background: #ffffff;
    color: #172033;
    border: 1px solid #d7e2e8;
    border-radius: 12px;
    padding: 9px 12px;
    margin: 0 0 10px;
    font-size: 13px;
}
.embed-toolbar strong { color: #005C6D; font-weight: 900; }
.embed-toolbar span { color: #667085; }
.embed-help-card code {
    display: block;
    white-space: normal;
    word-break: break-all;
    background: #f3f8fa;
    border: 1px solid #d7e2e8;
    color: #172033;
    border-radius: 12px;
    padding: 12px;
}

@media (max-width: 900px) {
    .filters-grid--public-periodo { grid-template-columns: 1fr; }
    .cps-public-hero { align-items: flex-start; flex-direction: column; }
    .horario-planilha-sheet,
    .mapa-planilha-sheet { overflow-x: auto; }
}

@media print {
    body.is-public, body.is-embed { background: #ffffff !important; }
    .cps-oficial-sheet { border: 0 !important; box-shadow: none !important; border-radius: 0 !important; }
    .horario-planilha-table.cps-oficial-table td.aula-remota,
    .horario-planilha-table.cps-oficial-table td.aula-pi,
    .horario-planilha-table.cps-oficial-table td.aula-edital,
    .mapa-planilha-table.cps-oficial-table tr.aula-remota td:not(.mapa-planilha-ciclo),
    .mapa-planilha-table.cps-oficial-table tr.aula-pi td:not(.mapa-planilha-ciclo),
    .mapa-planilha-table.cps-oficial-table tr.aula-edital td:not(.mapa-planilha-ciclo) {
        print-color-adjust: exact !important;
        -webkit-print-color-adjust: exact !important;
    }
}


/* AulaMap v2026.1.14.7 — embed com fonte maior, logo do curso e localização expandida. */
body.is-embed {
    background: #ffffff !important;
    color: #111827 !important;
    font-size: 16px;
}

body.is-embed .embed-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 14px;
    margin: 0 0 10px;
    border-bottom: 3px solid var(--cps-azul, #005c6d);
    background: #ffffff;
    color: #111827;
    font-size: 18px;
}

body.is-embed .embed-toolbar strong {
    font-size: 22px;
    color: var(--cps-azul, #005c6d);
}

body.is-embed .embed-toolbar span {
    font-size: 16px;
    color: #4b5563;
}

body.is-embed .cps-oficial-sheet,
body.is-embed .horario-planilha-sheet,
body.is-embed .mapa-planilha-sheet {
    max-width: none !important;
    width: 100% !important;
    padding: 14px 16px !important;
    margin: 0 !important;
    box-shadow: none !important;
    background: #ffffff !important;
}

body.is-embed .cabecalho-oficial {
    min-height: 64px !important;
    max-height: 76px !important;
    margin-bottom: 12px !important;
}

body.is-embed .cabecalho-oficial__item {
    height: 64px !important;
}

body.is-embed .cabecalho-oficial__item img {
    max-height: 58px !important;
}

body.is-embed .cabecalho-oficial__item:first-child img { max-width: 82px !important; }
body.is-embed .cabecalho-oficial__item:nth-child(2) img { max-width: 220px !important; }
body.is-embed .cabecalho-oficial__item:nth-child(3) img { max-width: 220px !important; }
body.is-embed .cabecalho-oficial__item:nth-child(4) img { max-width: 260px !important; }

body.is-embed .planilha-periodo-titulo,
body.is-embed .cps-oficial-periodo {
    font-size: 24px !important;
    margin: 8px 0 14px !important;
}

body.is-embed .horario-planilha-scroll {
    max-height: none !important;
    overflow: visible !important;
    padding-right: 0 !important;
}

body.is-embed .horario-planilha-ciclo {
    margin-bottom: 24px !important;
}

body.is-embed .horario-planilha-ciclo h2 {
    font-size: 24px !important;
    margin: 12px 0 8px !important;
}

body.is-embed .horario-planilha-table {
    font-size: 14px !important;
}

body.is-embed .horario-planilha-table th,
body.is-embed .horario-planilha-table td {
    height: 32px !important;
    padding: 5px 7px !important;
    line-height: 1.18 !important;
}

body.is-embed .mapa-title-row h2 {
    font-size: 26px !important;
}

body.is-embed .mapa-title-row strong {
    font-size: 20px !important;
}

body.is-embed .mapa-planilha-dia {
    grid-template-columns: 44px 1fr !important;
    margin-bottom: 14px !important;
}

body.is-embed .mapa-planilha-dia-label {
    font-size: 22px !important;
    letter-spacing: .03em !important;
}

body.is-embed .mapa-planilha-table {
    font-size: 14px !important;
}

body.is-embed .mapa-planilha-table th,
body.is-embed .mapa-planilha-table td {
    height: 28px !important;
    padding: 4px 7px !important;
    line-height: 1.18 !important;
}

body.is-embed .mapa-planilha-ciclo {
    width: 90px !important;
    font-size: 13px !important;
}

body.is-embed .mapa-planilha-horario { width: 100px !important; }
body.is-embed .mapa-planilha-disciplina { width: 30% !important; }
body.is-embed .mapa-planilha-professor { width: 17% !important; }
body.is-embed .mapa-planilha-modalidade { width: 12% !important; }
body.is-embed .mapa-planilha-sala { width: 24% !important; }

body.is-embed .mapa-datas-importantes-oficial h2 {
    font-size: 24px !important;
}

body.is-embed .mapa-datas-importantes-oficial strong {
    font-size: 13px !important;
}

body.is-embed .mapa-datas-importantes-oficial span,
body.is-embed .mapa-datas-importantes-oficial p {
    font-size: 15px !important;
}


/* AulaMap v2026.1.14.8 — ajustes de embed para impressão, espaço de professor e título do mapa. */
body.is-embed .embed-toolbar {
    min-height: 52px !important;
}

body.is-embed .embed-print-button {
    font-size: 15px !important;
    padding: 8px 14px !important;
    border-radius: 8px !important;
    background: var(--cps-azul, #005c6d) !important;
    border-color: var(--cps-azul, #005c6d) !important;
    color: #ffffff !important;
}

.mapa-title-row {
    display: block !important;
    text-align: center !important;
    margin: 2px 0 8px !important;
}

.mapa-title-row h2 {
    text-align: center !important;
    color: red !important;
    font-weight: 900 !important;
    margin: 0 auto !important;
}

.mapa-title-row strong {
    display: none !important;
}

body.is-embed .mapa-title-row h2 {
    font-size: 24px !important;
    line-height: 1.1 !important;
}

body.is-embed .mapa-planilha-dia {
    grid-template-columns: 32px 1fr !important;
}

body.is-embed .mapa-planilha-dia-label {
    font-size: 20px !important;
    letter-spacing: .015em !important;
}

body.is-embed .mapa-planilha-ciclo {
    width: 64px !important;
    min-width: 64px !important;
    max-width: 64px !important;
    font-size: 11px !important;
    line-height: 1.05 !important;
    padding-left: 2px !important;
    padding-right: 2px !important;
}

body.is-embed .mapa-planilha-horario { width: 90px !important; }
body.is-embed .mapa-planilha-disciplina { width: 28% !important; }
body.is-embed .mapa-planilha-professor { width: 25% !important; }
body.is-embed .mapa-planilha-modalidade { width: 9% !important; }
body.is-embed .mapa-planilha-sala { width: 24% !important; }

body.is-embed .mapa-planilha-professor {
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
}

@media print {
    body.is-embed .embed-toolbar { display: none !important; }
    body.is-embed .mapa-title-row h2 { font-size: 18px !important; }
    body.is-embed .mapa-planilha-dia { grid-template-columns: 24px 1fr !important; }
    body.is-embed .mapa-planilha-dia-label { font-size: 14px !important; }
    body.is-embed .mapa-planilha-ciclo { width: 44px !important; min-width: 44px !important; max-width: 44px !important; font-size: 8px !important; }
}

/* AulaMap v2026.1.14.9 — correção do embed Mapa/Grade e impressão compacta. */
body.is-embed {
    background: #ffffff !important;
    padding: 0 !important;
    overflow-x: hidden !important;
}

body.is-embed .embed-toolbar {
    position: sticky;
    top: 0;
    z-index: 10;
    border-radius: 0 !important;
    border-width: 0 0 2px 0 !important;
    margin: 0 !important;
    padding: 10px 14px !important;
    min-height: 44px !important;
}

body.is-embed .embed-toolbar strong { font-size: 19px !important; }
body.is-embed .embed-print-button { font-size: 14px !important; padding: 7px 12px !important; }

body.is-embed .cps-oficial-sheet.is-inline-embed,
body.is-embed .mapa-planilha-sheet.is-inline-embed,
body.is-embed .horario-planilha-sheet.is-inline-embed {
    border: 0 !important;
    border-radius: 0 !important;
    padding: 10px 12px !important;
    overflow: visible !important;
}

body.is-embed .cabecalho-oficial {
    min-height: 52px !important;
    max-height: 62px !important;
    margin-bottom: 8px !important;
}
body.is-embed .cabecalho-oficial__item { height: 52px !important; }
body.is-embed .cabecalho-oficial__item img { max-height: 46px !important; }
body.is-embed .cabecalho-oficial__item:first-child img { max-width: 70px !important; }
body.is-embed .cabecalho-oficial__item:nth-child(2) img,
body.is-embed .cabecalho-oficial__item:nth-child(3) img { max-width: 170px !important; }
body.is-embed .cabecalho-oficial__item:nth-child(4) img { max-width: 230px !important; }

body.is-embed .mapa-title-row { margin: 4px 0 10px !important; }
body.is-embed .mapa-title-row h2 {
    color: #B20000 !important;
    font-size: 22px !important;
    line-height: 1.05 !important;
    text-align: center !important;
}

.mapa-print-pages,
.mapa-print-page,
.mapa-days-grid {
    width: 100% !important;
}

body.is-embed .mapa-days-grid {
    display: block !important;
}

body.is-embed .mapa-planilha-dia {
    display: grid !important;
    grid-template-columns: 26px minmax(760px, 1fr) !important;
    border: 1px solid #005C6D !important;
    border-left: 0 !important;
    margin: 0 0 10px !important;
    background: #ffffff !important;
    width: 100% !important;
    min-width: 0 !important;
}

body.is-embed .mapa-planilha-dia-label {
    background: #005C6D !important;
    color: #ffffff !important;
    font-size: 18px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    letter-spacing: .01em !important;
    padding: 0 !important;
}

body.is-embed .mapa-planilha-table {
    width: 100% !important;
    min-width: 760px !important;
    table-layout: fixed !important;
    border-collapse: collapse !important;
    font-size: 15px !important;
    color: #000000 !important;
}

body.is-embed .mapa-planilha-table th,
body.is-embed .mapa-planilha-table td {
    border-bottom: 1px solid #9aa3a7 !important;
    padding: 4px 6px !important;
    height: 30px !important;
    line-height: 1.12 !important;
    color: #000000 !important;
    vertical-align: middle !important;
    background-clip: padding-box !important;
}

body.is-embed .mapa-planilha-table tr:nth-child(odd) td:not(.mapa-planilha-ciclo) {
    background: #eef5f7 !important;
}

body.is-embed .mapa-planilha-table tr.aula-remota td:not(.mapa-planilha-ciclo) { background: #C6E0B4 !important; }
body.is-embed .mapa-planilha-table tr.aula-pi td:not(.mapa-planilha-ciclo) { background: #FFF2CC !important; }
body.is-embed .mapa-planilha-table tr.aula-edital td:not(.mapa-planilha-ciclo) { background: #F4CCCC !important; }

body.is-embed .mapa-planilha-ciclo {
    width: 48px !important;
    min-width: 48px !important;
    max-width: 48px !important;
    font-size: 10px !important;
    line-height: 1.05 !important;
    font-weight: 900 !important;
    text-align: center !important;
    color: #005C6D !important;
    background: #ffffff !important;
    padding-left: 2px !important;
    padding-right: 2px !important;
}

body.is-embed .mapa-planilha-horario { width: 74px !important; text-align: center !important; font-size: 13px !important; }
body.is-embed .mapa-planilha-disciplina { width: 24% !important; font-weight: 600 !important; }
body.is-embed .mapa-planilha-professor { width: 26% !important; text-align: center !important; white-space: normal !important; overflow-wrap: break-word !important; }
body.is-embed .mapa-planilha-modalidade { width: 12% !important; text-align: center !important; }
body.is-embed .mapa-planilha-sala { width: 26% !important; text-align: center !important; white-space: normal !important; overflow-wrap: break-word !important; }

body.is-embed .mapa-datas-importantes-oficial {
    border-top: 3px solid #005C6D !important;
    margin-top: 10px !important;
    padding-top: 8px !important;
    font-size: 14px !important;
}
body.is-embed .mapa-datas-importantes-oficial h2 { font-size: 20px !important; margin: 0 0 6px !important; color: #005C6D !important; }
body.is-embed .mapa-datas-importantes-oficial div { display: grid; grid-template-columns: 1.2fr 1fr; gap: 10px; margin-bottom: 3px; }

/* Grade Horária no embed mantém o padrão claro e a impressão sem cards pesados. */
body.is-embed .horario-planilha-table,
body.is-embed .horario-planilha-table th,
body.is-embed .horario-planilha-table td {
    background-clip: padding-box !important;
    color: #000000 !important;
}

@media print {
    @page { size: A4 landscape; margin: 6mm; }

    body.is-embed {
        padding: 0 !important;
        margin: 0 !important;
        background: #ffffff !important;
        font-size: 10px !important;
    }
    body.is-embed .embed-toolbar,
    body.is-embed .no-print { display: none !important; }
    body.is-embed .cps-oficial-sheet.is-inline-embed,
    body.is-embed .mapa-planilha-sheet.is-inline-embed,
    body.is-embed .horario-planilha-sheet.is-inline-embed {
        padding: 0 !important;
        margin: 0 !important;
        border: 0 !important;
        box-shadow: none !important;
        width: 100% !important;
    }
    body.is-embed .cabecalho-oficial {
        min-height: 34px !important;
        max-height: 40px !important;
        margin: 0 0 3mm !important;
    }
    body.is-embed .cabecalho-oficial__item { height: 34px !important; }
    body.is-embed .cabecalho-oficial__item img { max-height: 30px !important; }
    body.is-embed .cabecalho-oficial__item:first-child img { max-width: 45px !important; }
    body.is-embed .cabecalho-oficial__item:nth-child(2) img,
    body.is-embed .cabecalho-oficial__item:nth-child(3) img { max-width: 120px !important; }
    body.is-embed .cabecalho-oficial__item:nth-child(4) img { max-width: 155px !important; }

    body.is-embed .mapa-title-row { margin: 0 0 2mm !important; }
    body.is-embed .mapa-title-row h2 { font-size: 14px !important; color: #B20000 !important; }

    body.is-embed .mapa-print-page {
        page-break-after: always !important;
        break-after: page !important;
    }
    body.is-embed .mapa-print-page:last-child {
        page-break-after: auto !important;
        break-after: auto !important;
    }
    body.is-embed .mapa-days-grid {
        display: grid !important;
        gap: 3mm !important;
        align-items: start !important;
        width: 100% !important;
    }
    body.is-embed .mapa-days-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
    body.is-embed .mapa-days-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
    body.is-embed .mapa-planilha-dia {
        display: grid !important;
        grid-template-columns: 9mm 1fr !important;
        min-width: 0 !important;
        width: 100% !important;
        margin: 0 !important;
        border: 1px solid #005C6D !important;
        border-left: 0 !important;
        page-break-inside: avoid !important;
        break-inside: avoid !important;
    }
    body.is-embed .mapa-planilha-dia-label {
        font-size: 9px !important;
        line-height: 1 !important;
        letter-spacing: 0 !important;
    }
    body.is-embed .mapa-planilha-table {
        min-width: 0 !important;
        width: 100% !important;
        font-size: 6.4px !important;
        table-layout: fixed !important;
    }
    body.is-embed .mapa-planilha-table th,
    body.is-embed .mapa-planilha-table td {
        height: 5.9mm !important;
        padding: 0.5mm 0.8mm !important;
        line-height: 1.05 !important;
        border-bottom: 0.4pt solid #8a8a8a !important;
    }
    body.is-embed .mapa-planilha-ciclo {
        width: 8mm !important;
        min-width: 8mm !important;
        max-width: 8mm !important;
        font-size: 5.2px !important;
        padding: 0 !important;
    }
    body.is-embed .mapa-planilha-horario { width: 16mm !important; font-size: 5.8px !important; }
    body.is-embed .mapa-planilha-disciplina { width: 28% !important; }
    body.is-embed .mapa-planilha-professor { width: 24% !important; }
    body.is-embed .mapa-planilha-modalidade { width: 13% !important; }
    body.is-embed .mapa-planilha-sala { width: 24% !important; }
    body.is-embed .mapa-datas-importantes-oficial {
        margin-top: 4mm !important;
        padding-top: 2mm !important;
        font-size: 8px !important;
    }
    body.is-embed .mapa-datas-importantes-oficial h2 { font-size: 11px !important; }
    body.is-embed .mapa-datas-importantes-oficial div { grid-template-columns: 1.4fr 1fr; margin-bottom: 1mm; }

    body.is-embed .horario-planilha-table { font-size: 7px !important; }
    body.is-embed .horario-planilha-table th,
    body.is-embed .horario-planilha-table td { height: 6mm !important; padding: 0.8mm !important; }
}

/* AulaMap v2026.1.14.10 — correção definitiva do embed do Mapa de Salas.
   Referência: PDF correto enviado pelo usuário: 3 dias na primeira página e 2 dias na segunda.
   Objetivo: caber dentro do iframe sem estourar largura, com fonte menor e layout compacto. */
body.is-embed .mapa-planilha-sheet.is-inline-embed {
    width: 100% !important;
    max-width: 100% !important;
    overflow: hidden !important;
    padding: 8px 10px !important;
    box-sizing: border-box !important;
}

body.is-embed .mapa-print-pages,
body.is-embed .mapa-print-page,
body.is-embed .mapa-days-grid {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
}

body.is-embed .mapa-print-page {
    margin: 0 0 8px !important;
    padding: 0 !important;
}

body.is-embed .mapa-days-grid {
    display: grid !important;
    gap: 8px !important;
    align-items: start !important;
}

body.is-embed .mapa-days-grid--3 {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}

body.is-embed .mapa-days-grid--2 {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
}

body.is-embed .mapa-planilha-dia {
    display: grid !important;
    grid-template-columns: 20px minmax(0, 1fr) !important;
    min-width: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    border: 1px solid #005C6D !important;
    border-left: 0 !important;
    background: #ffffff !important;
    overflow: hidden !important;
    box-sizing: border-box !important;
}

body.is-embed .mapa-planilha-dia-label {
    width: 20px !important;
    min-width: 20px !important;
    max-width: 20px !important;
    font-size: 10px !important;
    line-height: 1 !important;
    letter-spacing: 0 !important;
    padding: 0 !important;
    background: #005C6D !important;
    color: #ffffff !important;
}

body.is-embed .mapa-planilha-table {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    table-layout: fixed !important;
    border-collapse: collapse !important;
    font-size: 6.4px !important;
    line-height: 1.03 !important;
    color: #000000 !important;
}

body.is-embed .mapa-planilha-table th,
body.is-embed .mapa-planilha-table td {
    height: 17px !important;
    min-height: 17px !important;
    padding: 1px 2px !important;
    line-height: 1.03 !important;
    border-bottom: 0.5px solid #8c969a !important;
    color: #000000 !important;
    vertical-align: middle !important;
    overflow: hidden !important;
    text-overflow: clip !important;
    box-sizing: border-box !important;
}

body.is-embed .mapa-planilha-ciclo {
    width: 24px !important;
    min-width: 24px !important;
    max-width: 24px !important;
    font-size: 5.6px !important;
    line-height: 1.02 !important;
    font-weight: 900 !important;
    text-align: center !important;
    color: #005C6D !important;
    background: #ffffff !important;
    padding: 0 !important;
    border-right: 0.5px solid #000000 !important;
}

body.is-embed .mapa-planilha-horario {
    width: 38px !important;
    min-width: 38px !important;
    max-width: 38px !important;
    font-size: 5.7px !important;
    text-align: center !important;
    white-space: nowrap !important;
}

body.is-embed .mapa-planilha-disciplina {
    width: 28% !important;
    font-size: 6.5px !important;
    font-weight: 700 !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
}

body.is-embed .mapa-planilha-professor {
    width: 21% !important;
    font-size: 6.4px !important;
    text-align: center !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
}

body.is-embed .mapa-planilha-modalidade {
    width: 13% !important;
    font-size: 6.3px !important;
    text-align: center !important;
    white-space: nowrap !important;
}

body.is-embed .mapa-planilha-sala {
    width: 24% !important;
    font-size: 6.3px !important;
    text-align: center !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
}

body.is-embed .mapa-title-row {
    margin: 2px 0 6px !important;
    padding: 0 !important;
}

body.is-embed .mapa-title-row h2 {
    font-size: 16px !important;
    line-height: 1 !important;
    color: #B20000 !important;
    text-align: center !important;
}

body.is-embed .cabecalho-oficial {
    min-height: 42px !important;
    max-height: 48px !important;
    margin-bottom: 5px !important;
}

body.is-embed .cabecalho-oficial__item { height: 42px !important; }
body.is-embed .cabecalho-oficial__item img { max-height: 38px !important; object-fit: contain !important; }
body.is-embed .cabecalho-oficial__item:first-child img { max-width: 54px !important; }
body.is-embed .cabecalho-oficial__item:nth-child(2) img,
body.is-embed .cabecalho-oficial__item:nth-child(3) img { max-width: 130px !important; }
body.is-embed .cabecalho-oficial__item:nth-child(4) img { max-width: 170px !important; }

body.is-embed .mapa-datas-importantes-oficial {
    margin-top: 8px !important;
    padding-top: 6px !important;
    border-top: 2px solid #005C6D !important;
}

body.is-embed .mapa-datas-importantes-oficial h2 {
    font-size: 13px !important;
    margin: 0 0 4px !important;
}

body.is-embed .mapa-datas-importantes-oficial div {
    display: grid !important;
    grid-template-columns: 1.35fr 1fr !important;
    gap: 8px !important;
    margin-bottom: 2px !important;
}

body.is-embed .mapa-datas-importantes-oficial strong,
body.is-embed .mapa-datas-importantes-oficial span,
body.is-embed .mapa-datas-importantes-oficial p {
    font-size: 9px !important;
    line-height: 1.12 !important;
}

@media (max-width: 720px) {
    body.is-embed .mapa-planilha-sheet.is-inline-embed { padding-left: 6px !important; padding-right: 6px !important; }
    body.is-embed .mapa-days-grid { gap: 5px !important; }
    body.is-embed .mapa-planilha-dia { grid-template-columns: 18px minmax(0, 1fr) !important; }
    body.is-embed .mapa-planilha-dia-label { width: 18px !important; min-width: 18px !important; max-width: 18px !important; font-size: 9px !important; }
    body.is-embed .mapa-planilha-table { font-size: 5.7px !important; }
    body.is-embed .mapa-planilha-table th,
    body.is-embed .mapa-planilha-table td { height: 15px !important; padding: 0.5px 1px !important; }
    body.is-embed .mapa-planilha-ciclo { width: 20px !important; min-width: 20px !important; max-width: 20px !important; font-size: 5px !important; }
    body.is-embed .mapa-planilha-horario { width: 32px !important; min-width: 32px !important; max-width: 32px !important; font-size: 5px !important; }
    body.is-embed .mapa-planilha-disciplina { font-size: 5.7px !important; }
    body.is-embed .mapa-planilha-professor,
    body.is-embed .mapa-planilha-modalidade,
    body.is-embed .mapa-planilha-sala { font-size: 5.5px !important; }
}

@media print {
    body.is-embed .mapa-days-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
    body.is-embed .mapa-days-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
    body.is-embed .mapa-days-grid { gap: 3mm !important; }
    body.is-embed .mapa-planilha-dia { grid-template-columns: 8mm minmax(0, 1fr) !important; }
    body.is-embed .mapa-planilha-dia-label { width: 8mm !important; min-width: 8mm !important; max-width: 8mm !important; font-size: 8px !important; }
    body.is-embed .mapa-planilha-table { font-size: 5.8px !important; }
    body.is-embed .mapa-planilha-table th,
    body.is-embed .mapa-planilha-table td { height: 5.6mm !important; padding: 0.4mm 0.6mm !important; }
    body.is-embed .mapa-planilha-ciclo { width: 7mm !important; min-width: 7mm !important; max-width: 7mm !important; font-size: 5px !important; }
    body.is-embed .mapa-planilha-horario { width: 14mm !important; font-size: 5.1px !important; }
    body.is-embed .mapa-planilha-disciplina { width: 28% !important; }
    body.is-embed .mapa-planilha-professor { width: 21% !important; }
    body.is-embed .mapa-planilha-modalidade { width: 13% !important; }
    body.is-embed .mapa-planilha-sala { width: 24% !important; }
}

/* AulaMap v2026.1.14.11 — embed do Mapa de Salas como template oficial fixo.
   Não reaproveita o mapa responsivo comum: replica a estrutura do PDF correto.
   Página 1: Segunda, Terça e Quarta. Página 2: Quinta, Sexta e Datas Importantes. */
body.is-embed .mapa-embed-toolbar {
    background: #ffffff !important;
    border-bottom: 2px solid #005C6D !important;
    border-radius: 0 !important;
    padding: 8px 12px !important;
    min-height: 40px !important;
}

body.is-embed .mapa-embed-toolbar strong {
    color: #005C6D !important;
    font-size: 18px !important;
    font-weight: 900 !important;
}

body.is-embed .mapa-embed-toolbar .embed-print-button {
    background: #005C6D !important;
    border-color: #005C6D !important;
    color: #ffffff !important;
    font-size: 13px !important;
    padding: 6px 12px !important;
    box-shadow: none !important;
}

body.is-embed .mapa-embed-oficial {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    padding: 10px 12px !important;
    margin: 0 !important;
    background: #ffffff !important;
    color: #000000 !important;
    overflow-x: hidden !important;
    font-family: Arial, Helvetica, sans-serif !important;
}

body.is-embed .mapa-embed-page {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    margin: 0 0 14px !important;
    padding: 0 !important;
    background: #ffffff !important;
}

body.is-embed .mapa-embed-oficial .cabecalho-oficial {
    min-height: 46px !important;
    max-height: 50px !important;
    margin: 0 0 4px !important;
    padding: 0 !important;
    border: 0 !important;
    display: grid !important;
    grid-template-columns: .8fr 1.3fr 1.3fr 1.5fr !important;
    align-items: center !important;
    gap: 8px !important;
}

body.is-embed .mapa-embed-oficial .cabecalho-oficial__item {
    height: 46px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    overflow: hidden !important;
}

body.is-embed .mapa-embed-oficial .cabecalho-oficial__item img {
    display: block !important;
    width: auto !important;
    height: auto !important;
    max-height: 42px !important;
    max-width: 100% !important;
    object-fit: contain !important;
}

body.is-embed .mapa-embed-oficial .cabecalho-oficial__item:first-child img { max-height: 38px !important; max-width: 58px !important; }
body.is-embed .mapa-embed-oficial .cabecalho-oficial__item:nth-child(2) img,
body.is-embed .mapa-embed-oficial .cabecalho-oficial__item:nth-child(3) img { max-width: 150px !important; }
body.is-embed .mapa-embed-oficial .cabecalho-oficial__item:nth-child(4) img { max-width: 185px !important; }

body.is-embed .mapa-embed-periodo {
    margin: 0 0 6px !important;
    padding: 0 !important;
    text-align: center !important;
    color: #B20000 !important;
    font-family: Georgia, 'Times New Roman', serif !important;
    font-size: clamp(14px, 2.2vw, 20px) !important;
    font-weight: 900 !important;
    line-height: 1.05 !important;
}

body.is-embed .mapa-embed-grid {
    display: grid !important;
    align-items: start !important;
    width: 100% !important;
    max-width: 100% !important;
    gap: 8px !important;
    box-sizing: border-box !important;
}

body.is-embed .mapa-embed-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
body.is-embed .mapa-embed-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }

body.is-embed .mapa-embed-dia {
    display: grid !important;
    grid-template-columns: clamp(18px, 2.5vw, 26px) minmax(0, 1fr) !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
    background: #ffffff !important;
    border-top: 2px solid #005C6D !important;
    border-right: 1px solid #005C6D !important;
}

body.is-embed .mapa-embed-dia-label {
    background: #005C6D !important;
    color: #ffffff !important;
    writing-mode: vertical-rl !important;
    transform: rotate(180deg) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    font-size: clamp(9px, 1.25vw, 13px) !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    letter-spacing: 0 !important;
    padding: 0 !important;
    min-width: 0 !important;
}

body.is-embed .mapa-embed-table {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    table-layout: fixed !important;
    border-collapse: collapse !important;
    background: #ffffff !important;
    color: #000000 !important;
    font-size: clamp(5.2px, 0.72vw, 7.2px) !important;
    line-height: 1.05 !important;
}

body.is-embed .mapa-embed-table th,
body.is-embed .mapa-embed-table td {
    color: #000000 !important;
    border-bottom: 1px solid #8f9da3 !important;
    padding: 1px 2px !important;
    height: clamp(15px, 2.05vw, 22px) !important;
    min-height: clamp(15px, 2.05vw, 22px) !important;
    vertical-align: middle !important;
    background-clip: padding-box !important;
    box-sizing: border-box !important;
    overflow-wrap: anywhere !important;
}

body.is-embed .mapa-embed-table tr:nth-child(odd) td:not(.mapa-embed-ciclo),
body.is-embed .mapa-embed-table tr:nth-child(odd) th:not(.mapa-embed-ciclo) {
    background: #eef5f7 !important;
}

body.is-embed .mapa-embed-table .ciclo-start th,
body.is-embed .mapa-embed-table .ciclo-start td { border-top: 1px solid #000000 !important; }
body.is-embed .mapa-embed-table .ciclo-end th,
body.is-embed .mapa-embed-table .ciclo-end td { border-bottom: 1px solid #000000 !important; }

body.is-embed .mapa-embed-ciclo {
    width: 9% !important;
    max-width: 9% !important;
    background: #ffffff !important;
    color: #005C6D !important;
    text-align: center !important;
    font-size: clamp(4.6px, 0.58vw, 6.2px) !important;
    line-height: 1.02 !important;
    font-weight: 900 !important;
    border-right: 1px solid #000000 !important;
    padding: 0 1px !important;
}

body.is-embed .mapa-embed-horario {
    width: 17% !important;
    text-align: center !important;
    font-size: clamp(4.8px, 0.64vw, 6.6px) !important;
    line-height: 1.04 !important;
    white-space: normal !important;
    font-weight: 600 !important;
}

body.is-embed .mapa-embed-disciplina {
    width: 26% !important;
    font-weight: 800 !important;
    text-align: left !important;
}

body.is-embed .mapa-embed-professor {
    width: 22% !important;
    text-align: center !important;
    font-size: clamp(4.9px, 0.68vw, 6.8px) !important;
}

body.is-embed .mapa-embed-modalidade {
    width: 13% !important;
    text-align: center !important;
    font-size: clamp(4.8px, 0.62vw, 6.4px) !important;
}

body.is-embed .mapa-embed-sala {
    width: 22% !important;
    text-align: center !important;
    font-size: clamp(4.8px, 0.62vw, 6.4px) !important;
}

body.is-embed .mapa-embed-table tr.aula-remota td:not(.mapa-embed-ciclo) { background: #C6E0B4 !important; }
body.is-embed .mapa-embed-table tr.aula-pi td:not(.mapa-embed-ciclo) { background: #FFF2CC !important; }
body.is-embed .mapa-embed-table tr.aula-edital td:not(.mapa-embed-ciclo) { background: #F4CCCC !important; }

body.is-embed .mapa-embed-datas-importantes {
    width: 100% !important;
    margin: 12px 0 0 !important;
    padding: 8px 0 0 !important;
    border-top: 3px solid #005C6D !important;
    text-align: center !important;
    color: #000000 !important;
}

body.is-embed .mapa-embed-datas-importantes h2 {
    margin: 0 0 6px !important;
    color: #005C6D !important;
    font-size: clamp(11px, 1.8vw, 16px) !important;
    line-height: 1 !important;
    font-weight: 900 !important;
}

body.is-embed .mapa-embed-data-row {
    display: grid !important;
    grid-template-columns: 1.25fr .85fr !important;
    gap: 10px !important;
    align-items: center !important;
    max-width: 760px !important;
    margin: 0 auto 3px !important;
    text-align: left !important;
}

body.is-embed .mapa-embed-data-row strong {
    color: #B20000 !important;
    font-size: clamp(8px, 1.2vw, 12px) !important;
    font-weight: 900 !important;
    text-align: right !important;
}

body.is-embed .mapa-embed-data-row span,
body.is-embed .mapa-embed-datas-importantes p {
    font-size: clamp(8px, 1.15vw, 12px) !important;
    line-height: 1.15 !important;
    color: #000000 !important;
}

body.is-embed .mapa-embed-datas-importantes p {
    margin: 6px 0 0 !important;
    text-align: center !important;
}

@media print {
    @page { size: A4 landscape; margin: 7mm; }
    body.is-embed .mapa-embed-toolbar,
    body.is-embed .no-print { display: none !important; }
    body.is-embed .mapa-embed-oficial { padding: 0 !important; margin: 0 !important; overflow: visible !important; }
    body.is-embed .mapa-embed-page { page-break-after: always !important; break-after: page !important; margin: 0 !important; }
    body.is-embed .mapa-embed-page:last-child { page-break-after: auto !important; break-after: auto !important; }
    body.is-embed .mapa-embed-grid { gap: 3mm !important; }
    body.is-embed .mapa-embed-dia { grid-template-columns: 7mm minmax(0, 1fr) !important; }
    body.is-embed .mapa-embed-dia-label { font-size: 8px !important; }
    body.is-embed .mapa-embed-table { font-size: 5.5px !important; }
    body.is-embed .mapa-embed-table th,
    body.is-embed .mapa-embed-table td { height: 5.7mm !important; padding: .35mm .55mm !important; }
    body.is-embed .mapa-embed-ciclo { font-size: 4.9px !important; }
    body.is-embed .mapa-embed-horario { font-size: 5px !important; }
    body.is-embed .mapa-embed-professor,
    body.is-embed .mapa-embed-modalidade,
    body.is-embed .mapa-embed-sala { font-size: 5.2px !important; }
    body.is-embed .mapa-embed-oficial .cabecalho-oficial { min-height: 34px !important; max-height: 38px !important; margin-bottom: 2mm !important; }
    body.is-embed .mapa-embed-oficial .cabecalho-oficial__item { height: 34px !important; }
    body.is-embed .mapa-embed-oficial .cabecalho-oficial__item img { max-height: 31px !important; }
    body.is-embed .mapa-embed-periodo { font-size: 13px !important; margin-bottom: 3mm !important; }
    body.is-embed .mapa-embed-datas-importantes { margin-top: 4mm !important; padding-top: 2mm !important; }
    body.is-embed .mapa-embed-datas-importantes h2 { font-size: 10px !important; }
    body.is-embed .mapa-embed-data-row strong,
    body.is-embed .mapa-embed-data-row span,
    body.is-embed .mapa-embed-datas-importantes p { font-size: 7.5px !important; }
}

/* AulaMap v2026.1.14.12 — MAPA EMBED: réplica estrutural do PDF correto.
   Regra: não responsivizar/empilhar. Página 1 = SEG/TER/QUA; Página 2 = QUI/SEX + Datas.
   Referência visual fixa do PDF correto enviado pelo usuário. */
body.is-embed {
    background: #ffffff !important;
    color: #000000 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow-x: auto !important;
    font-family: Arial, Helvetica, sans-serif !important;
}

body.is-embed .sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

body.is-embed .mapa-embed-toolbar {
    position: fixed !important;
    top: 8px !important;
    right: 8px !important;
    z-index: 50 !important;
    display: flex !important;
    justify-content: flex-end !important;
    align-items: center !important;
    width: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}

body.is-embed .mapa-embed-toolbar .embed-print-button {
    background: #005C6D !important;
    border: 0 !important;
    color: #ffffff !important;
    border-radius: 6px !important;
    padding: 6px 10px !important;
    font: 700 12px/1 Arial, Helvetica, sans-serif !important;
    box-shadow: 0 2px 8px rgba(0,0,0,.18) !important;
}

body.is-embed .mapa-embed-oficial {
    width: 1024px !important;
    max-width: none !important;
    min-width: 1024px !important;
    margin: 0 auto !important;
    padding: 0 !important;
    background: #ffffff !important;
    color: #000000 !important;
    overflow: visible !important;
    box-sizing: border-box !important;
    font-family: Arial, Helvetica, sans-serif !important;
}

body.is-embed .mapa-embed-page {
    position: relative !important;
    width: 1024px !important;
    height: 768px !important;
    max-width: none !important;
    margin: 0 auto !important;
    padding: 24px 22px 0 !important;
    box-sizing: border-box !important;
    background: #ffffff !important;
    overflow: hidden !important;
    page-break-after: always !important;
    break-after: page !important;
}

body.is-embed .mapa-embed-page:last-child {
    page-break-after: auto !important;
    break-after: auto !important;
}

body.is-embed .mapa-embed-page--second {
    padding-top: 24px !important;
}

/* O cabeçalho só existe na primeira página do PDF correto. */
body.is-embed .mapa-embed-page--first .cabecalho-oficial {
    display: grid !important;
    grid-template-columns: 1fr 2fr 2fr 2fr !important;
    align-items: center !important;
    gap: 18px !important;
    height: 52px !important;
    min-height: 52px !important;
    max-height: 52px !important;
    margin: 0 0 8px !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
}

body.is-embed .mapa-embed-page--first .cabecalho-oficial__item {
    height: 52px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    overflow: hidden !important;
}

body.is-embed .mapa-embed-page--first .cabecalho-oficial__item img {
    width: auto !important;
    height: auto !important;
    object-fit: contain !important;
    display: block !important;
}

body.is-embed .mapa-embed-page--first .cabecalho-oficial__item:first-child img { max-height: 44px !important; max-width: 62px !important; }
body.is-embed .mapa-embed-page--first .cabecalho-oficial__item:nth-child(2) img { max-height: 46px !important; max-width: 150px !important; }
body.is-embed .mapa-embed-page--first .cabecalho-oficial__item:nth-child(3) img { max-height: 46px !important; max-width: 150px !important; }
body.is-embed .mapa-embed-page--first .cabecalho-oficial__item:nth-child(4) img { max-height: 46px !important; max-width: 178px !important; }

body.is-embed .mapa-embed-page--second .cabecalho-oficial { display: none !important; }

body.is-embed .mapa-embed-periodo {
    margin: 0 0 10px !important;
    padding: 0 !important;
    text-align: center !important;
    color: #cc0000 !important;
    font: 700 18px/1.05 Georgia, 'Times New Roman', serif !important;
}

body.is-embed .mapa-embed-page--second .mapa-embed-periodo { display: none !important; }

body.is-embed .mapa-embed-grid {
    display: grid !important;
    align-items: start !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
}

body.is-embed .mapa-embed-grid--3 {
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 10px !important;
}

body.is-embed .mapa-embed-grid--2 {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 18px !important;
}

body.is-embed .mapa-embed-dia {
    display: grid !important;
    grid-template-columns: 24px minmax(0, 1fr) !important;
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    box-sizing: border-box !important;
    background: #ffffff !important;
    border-top: 2px solid #005C6D !important;
    border-right: 1px solid #005C6D !important;
    border-bottom: 0 !important;
    border-left: 0 !important;
}

body.is-embed .mapa-embed-dia-label {
    width: 24px !important;
    min-width: 24px !important;
    max-width: 24px !important;
    background: #005C6D !important;
    color: #ffffff !important;
    writing-mode: vertical-rl !important;
    transform: rotate(180deg) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    font: 900 14px/1 Arial, Helvetica, sans-serif !important;
    letter-spacing: 0 !important;
    padding: 0 !important;
}

body.is-embed .mapa-embed-table {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    table-layout: fixed !important;
    border-collapse: collapse !important;
    border-spacing: 0 !important;
    background: #ffffff !important;
    color: #000000 !important;
    font: 400 7px/1.05 Arial, Helvetica, sans-serif !important;
}

body.is-embed .mapa-embed-col-ciclo { width: 10% !important; }
body.is-embed .mapa-embed-col-horario { width: 17% !important; }
body.is-embed .mapa-embed-col-disciplina { width: 25% !important; }
body.is-embed .mapa-embed-col-professor { width: 21% !important; }
body.is-embed .mapa-embed-col-modalidade { width: 13% !important; }
body.is-embed .mapa-embed-col-sala { width: 14% !important; }

body.is-embed .mapa-embed-table th,
body.is-embed .mapa-embed-table td {
    height: 23px !important;
    min-height: 23px !important;
    max-height: 23px !important;
    padding: 1px 2px !important;
    border-bottom: 1px solid #9aa3a7 !important;
    color: #000000 !important;
    vertical-align: middle !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
    background: #eef5f7 !important;
    text-overflow: clip !important;
}

body.is-embed .mapa-embed-table .ciclo-start th,
body.is-embed .mapa-embed-table .ciclo-start td { border-top: 1px solid #000000 !important; }
body.is-embed .mapa-embed-table .ciclo-end th,
body.is-embed .mapa-embed-table .ciclo-end td { border-bottom: 1px solid #000000 !important; }

body.is-embed .mapa-embed-ciclo {
    background: #ffffff !important;
    color: #005C6D !important;
    text-align: center !important;
    font: 900 6px/1 Arial, Helvetica, sans-serif !important;
    border-right: 1px solid #000000 !important;
    padding: 0 1px !important;
    white-space: normal !important;
}

body.is-embed .mapa-embed-horario {
    text-align: center !important;
    font: 600 6.2px/1.05 Arial, Helvetica, sans-serif !important;
    white-space: normal !important;
}

body.is-embed .mapa-embed-disciplina {
    font: 800 7px/1.05 Arial, Helvetica, sans-serif !important;
    text-align: left !important;
    white-space: nowrap !important;
}

body.is-embed .mapa-embed-professor {
    font: 400 7px/1.05 Arial, Helvetica, sans-serif !important;
    text-align: center !important;
    white-space: nowrap !important;
}

body.is-embed .mapa-embed-modalidade,
body.is-embed .mapa-embed-sala {
    font: 400 6.6px/1.05 Arial, Helvetica, sans-serif !important;
    text-align: center !important;
    white-space: nowrap !important;
}

body.is-embed .mapa-embed-table tr.aula-remota td:not(.mapa-embed-ciclo) { background: #C6E0B4 !important; }
body.is-embed .mapa-embed-table tr.aula-pi td:not(.mapa-embed-ciclo) { background: #FFF2CC !important; }
body.is-embed .mapa-embed-table tr.aula-edital td:not(.mapa-embed-ciclo) { background: #F4CCCC !important; }

body.is-embed .mapa-embed-page--second .mapa-embed-grid--2 {
    margin-top: 0 !important;
}

body.is-embed .mapa-embed-datas-importantes {
    width: 100% !important;
    margin: 18px 0 0 !important;
    padding: 10px 0 0 !important;
    border-top: 3px solid #005C6D !important;
    text-align: center !important;
    color: #000000 !important;
    background: #ffffff !important;
}

body.is-embed .mapa-embed-datas-importantes h2 {
    margin: 0 0 10px !important;
    color: #005C6D !important;
    font: 900 12px/1 Arial, Helvetica, sans-serif !important;
    text-align: center !important;
}

body.is-embed .mapa-embed-data-row {
    display: grid !important;
    grid-template-columns: 1.1fr .8fr !important;
    gap: 22px !important;
    align-items: center !important;
    max-width: 760px !important;
    margin: 0 auto 5px !important;
    text-align: left !important;
}

body.is-embed .mapa-embed-data-row strong {
    color: #B20000 !important;
    font: 900 11px/1.1 Arial, Helvetica, sans-serif !important;
    text-align: right !important;
}

body.is-embed .mapa-embed-data-row span {
    color: #000000 !important;
    font: 400 12px/1.1 Arial, Helvetica, sans-serif !important;
    text-align: left !important;
}

body.is-embed .mapa-embed-datas-importantes p {
    margin: 10px 0 0 !important;
    color: #000000 !important;
    font: 400 12px/1.1 Arial, Helvetica, sans-serif !important;
    text-align: center !important;
}

@media print {
    @page { size: A4 landscape; margin: 0; }
    body.is-embed {
        width: 1024px !important;
        min-width: 1024px !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow: visible !important;
        background: #ffffff !important;
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }
    body.is-embed .mapa-embed-toolbar,
    body.is-embed .no-print { display: none !important; }
    body.is-embed .mapa-embed-oficial,
    body.is-embed .mapa-embed-page {
        width: 1024px !important;
        min-width: 1024px !important;
        max-width: none !important;
    }
    body.is-embed .mapa-embed-page {
        height: 768px !important;
        padding: 24px 22px 0 !important;
        margin: 0 !important;
        page-break-after: always !important;
        break-after: page !important;
        overflow: hidden !important;
    }
    body.is-embed .mapa-embed-page:last-child {
        page-break-after: auto !important;
        break-after: auto !important;
    }
}


/* AulaMap v2026.1.14.13 — MAPA EMBED EM A4 RETRATO.
   Contrato visual: replicar o PDF correto enviado pelo usuário.
   A4 retrato: página 1 = cabeçalho + MAPA DE SALAS + Segunda/Terça/Quarta empilhadas.
   Página 2 = cabeçalho + MAPA DE SALAS + Quinta/Sexta empilhadas + Datas Importantes.
   Não usar layout responsivo em colunas para este template. */
body.is-embed {
    background: #ffffff !important;
    color: #000000 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow-x: auto !important;
    font-family: Arial, Helvetica, sans-serif !important;
}

body.is-embed .mapa-embed-toolbar {
    position: fixed !important;
    top: 8px !important;
    right: 8px !important;
    z-index: 100 !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
}

body.is-embed .mapa-embed-toolbar .embed-print-button {
    background: #005C6D !important;
    color: #ffffff !important;
    border: 0 !important;
    border-radius: 6px !important;
    padding: 7px 12px !important;
    font: 700 12px/1 Arial, Helvetica, sans-serif !important;
}

body.is-embed .mapa-embed-oficial {
    width: 794px !important;
    min-width: 794px !important;
    max-width: 794px !important;
    margin: 0 auto !important;
    padding: 0 !important;
    background: #ffffff !important;
    overflow: visible !important;
    box-sizing: border-box !important;
}

body.is-embed .mapa-embed-page {
    width: 794px !important;
    min-width: 794px !important;
    max-width: 794px !important;
    height: 1123px !important;
    min-height: 1123px !important;
    max-height: 1123px !important;
    margin: 0 auto !important;
    padding: 22px 45px 0 !important;
    box-sizing: border-box !important;
    background: #ffffff !important;
    overflow: hidden !important;
    page-break-after: always !important;
    break-after: page !important;
}

body.is-embed .mapa-embed-page:last-child {
    page-break-after: auto !important;
    break-after: auto !important;
}

body.is-embed .mapa-embed-page--first .cabecalho-oficial,
body.is-embed .mapa-embed-page--second .cabecalho-oficial,
body.is-embed .mapa-embed-oficial .cabecalho-oficial {
    display: grid !important;
    grid-template-columns: 1fr 2fr 2fr 2.1fr !important;
    align-items: center !important;
    gap: 18px !important;
    height: 58px !important;
    min-height: 58px !important;
    max-height: 58px !important;
    margin: 0 0 4px !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
}

body.is-embed .mapa-embed-oficial .cabecalho-oficial__item {
    height: 58px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    overflow: hidden !important;
}

body.is-embed .mapa-embed-oficial .cabecalho-oficial__item img {
    width: auto !important;
    height: auto !important;
    object-fit: contain !important;
    display: block !important;
}

body.is-embed .mapa-embed-oficial .cabecalho-oficial__item:first-child img { max-height: 46px !important; max-width: 62px !important; }
body.is-embed .mapa-embed-oficial .cabecalho-oficial__item:nth-child(2) img { max-height: 50px !important; max-width: 140px !important; }
body.is-embed .mapa-embed-oficial .cabecalho-oficial__item:nth-child(3) img { max-height: 50px !important; max-width: 140px !important; }
body.is-embed .mapa-embed-oficial .cabecalho-oficial__item:nth-child(4) img { max-height: 50px !important; max-width: 170px !important; }

body.is-embed .mapa-embed-periodo {
    margin: 0 0 4px !important;
    padding: 0 !important;
    color: #d60000 !important;
    text-align: center !important;
    font: 700 18px/1 Georgia, 'Times New Roman', serif !important;
    letter-spacing: 0 !important;
}

body.is-embed .mapa-embed-grid,
body.is-embed .mapa-embed-grid--2,
body.is-embed .mapa-embed-grid--3 {
    display: block !important;
    width: 704px !important;
    max-width: 704px !important;
    min-width: 704px !important;
    margin: 0 !important;
    padding: 0 !important;
}

body.is-embed .mapa-embed-dia {
    display: grid !important;
    grid-template-columns: 35px 669px !important;
    width: 704px !important;
    min-width: 704px !important;
    max-width: 704px !important;
    height: 304px !important;
    min-height: 304px !important;
    max-height: 304px !important;
    margin: 0 0 18px !important;
    padding: 0 !important;
    overflow: hidden !important;
    background: #ffffff !important;
    border: 2px solid #0070C0 !important;
    box-sizing: border-box !important;
}

body.is-embed .mapa-embed-page--second .mapa-embed-dia {
    margin-bottom: 18px !important;
}

body.is-embed .mapa-embed-dia-label {
    width: 35px !important;
    min-width: 35px !important;
    max-width: 35px !important;
    height: 304px !important;
    min-height: 304px !important;
    max-height: 304px !important;
    background: #0070C0 !important;
    color: #ffffff !important;
    writing-mode: vertical-rl !important;
    transform: rotate(180deg) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    font: 900 22px/1 Arial, Helvetica, sans-serif !important;
    letter-spacing: 0 !important;
    padding: 0 !important;
}

body.is-embed .mapa-embed-table {
    width: 669px !important;
    min-width: 669px !important;
    max-width: 669px !important;
    height: 304px !important;
    table-layout: fixed !important;
    border-collapse: collapse !important;
    border-spacing: 0 !important;
    background: #ffffff !important;
    color: #000000 !important;
    font: 400 7px/1.05 Arial, Helvetica, sans-serif !important;
}

body.is-embed .mapa-embed-col-ciclo { width: 74px !important; }
body.is-embed .mapa-embed-col-horario { width: 74px !important; }
body.is-embed .mapa-embed-col-disciplina { width: 245px !important; }
body.is-embed .mapa-embed-col-professor { width: 138px !important; }
body.is-embed .mapa-embed-col-modalidade { width: 83px !important; }
body.is-embed .mapa-embed-col-sala { width: 55px !important; }

body.is-embed .mapa-embed-table th,
body.is-embed .mapa-embed-table td {
    height: 16.88px !important;
    min-height: 16.88px !important;
    max-height: 16.88px !important;
    padding: 1px 2px !important;
    color: #000000 !important;
    vertical-align: middle !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
    border-bottom: 1px solid #9a9a9a !important;
    background: #eaf2f6 !important;
    text-overflow: clip !important;
}

body.is-embed .mapa-embed-table tr:nth-child(even) td:not(.mapa-embed-ciclo) {
    background: #d9d9d9 !important;
}

body.is-embed .mapa-embed-table .ciclo-start th,
body.is-embed .mapa-embed-table .ciclo-start td { border-top: 1px solid #000000 !important; }
body.is-embed .mapa-embed-table .ciclo-end th,
body.is-embed .mapa-embed-table .ciclo-end td { border-bottom: 1px solid #000000 !important; }

body.is-embed .mapa-embed-ciclo {
    background: #ffffff !important;
    color: #000000 !important;
    text-align: center !important;
    font: 900 11px/1.05 Arial, Helvetica, sans-serif !important;
    border-right: 1px solid #000000 !important;
    padding: 0 2px !important;
    white-space: normal !important;
}

body.is-embed .mapa-embed-horario {
    text-align: center !important;
    font: 400 7px/1.05 Arial, Helvetica, sans-serif !important;
    white-space: nowrap !important;
}

body.is-embed .mapa-embed-disciplina {
    font: 800 7px/1.05 Arial, Helvetica, sans-serif !important;
    text-align: left !important;
    white-space: nowrap !important;
}

body.is-embed .mapa-embed-professor,
body.is-embed .mapa-embed-modalidade,
body.is-embed .mapa-embed-sala {
    font: 400 7px/1.05 Arial, Helvetica, sans-serif !important;
    text-align: center !important;
    white-space: nowrap !important;
}

body.is-embed .mapa-embed-table tr.aula-remota td:not(.mapa-embed-ciclo) { background: #C6E0B4 !important; }
body.is-embed .mapa-embed-table tr.aula-pi td:not(.mapa-embed-ciclo) { background: #FFF2CC !important; }
body.is-embed .mapa-embed-table tr.aula-edital td:not(.mapa-embed-ciclo) { background: #F4CCCC !important; }

body.is-embed .mapa-embed-datas-importantes {
    width: 704px !important;
    margin: 28px 0 0 !important;
    padding: 8px 0 0 !important;
    border-top: 2px solid #0070C0 !important;
    text-align: center !important;
    color: #000000 !important;
    background: #ffffff !important;
}

body.is-embed .mapa-embed-datas-importantes h2 {
    margin: 0 0 14px !important;
    color: #0070C0 !important;
    font: 900 24px/1 Arial, Helvetica, sans-serif !important;
    text-align: center !important;
}

body.is-embed .mapa-embed-data-row {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 0 20px !important;
    text-align: center !important;
}

body.is-embed .mapa-embed-data-row strong {
    display: block !important;
    color: #d60000 !important;
    font: 900 14px/1.1 Arial, Helvetica, sans-serif !important;
    text-align: center !important;
    margin-bottom: 8px !important;
}

body.is-embed .mapa-embed-data-row span {
    display: block !important;
    color: #000000 !important;
    font: 400 20px/1.1 Arial, Helvetica, sans-serif !important;
    text-align: center !important;
}

body.is-embed .mapa-embed-datas-importantes p {
    margin: 18px 0 0 !important;
    color: #000000 !important;
    font: 400 14px/1.2 Arial, Helvetica, sans-serif !important;
    text-align: center !important;
}

@media print {
    @page { size: A4 portrait; margin: 0; }
    body.is-embed {
        width: 794px !important;
        min-width: 794px !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow: visible !important;
        background: #ffffff !important;
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }
    body.is-embed .mapa-embed-toolbar,
    body.is-embed .no-print { display: none !important; }
    body.is-embed .mapa-embed-oficial,
    body.is-embed .mapa-embed-page {
        width: 794px !important;
        min-width: 794px !important;
        max-width: 794px !important;
    }
    body.is-embed .mapa-embed-page {
        height: 1123px !important;
        min-height: 1123px !important;
        max-height: 1123px !important;
        padding: 22px 45px 0 !important;
        margin: 0 !important;
        page-break-after: always !important;
        break-after: page !important;
        overflow: hidden !important;
    }
    body.is-embed .mapa-embed-page:last-child {
        page-break-after: auto !important;
        break-after: auto !important;
    }
}

/* AulaMap v2026.1.14.14 — embed Grade Horária em template oficial A4 paisagem. */
body.is-embed.is-embed-horarios {
    background: #ffffff !important;
    color: #000000 !important;
    margin: 0 !important;
    padding: 0 !important;
    font-family: Arial, Helvetica, sans-serif !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
}

body.is-embed.is-embed-horarios .horario-embed-toolbar {
    width: min(1123px, calc(100vw - 24px)) !important;
    margin: 12px auto 8px !important;
    padding: 8px 12px !important;
    border: 1px solid #b8d7de !important;
    border-radius: 10px !important;
    background: #ffffff !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    box-sizing: border-box !important;
}

body.is-embed.is-embed-horarios .horario-embed-toolbar strong {
    color: #005C6D !important;
    font: 900 18px/1 Arial, Helvetica, sans-serif !important;
}

body.is-embed.is-embed-horarios .horario-embed-oficial {
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 0 20px !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
    background: #ffffff !important;
}

body.is-embed.is-embed-horarios .horario-embed-page {
    width: 1123px !important;
    height: 794px !important;
    min-width: 1123px !important;
    max-width: 1123px !important;
    min-height: 794px !important;
    max-height: 794px !important;
    margin: 0 auto 18px !important;
    padding: 70px 70px 24px !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
    background: #ffffff !important;
    color: #000000 !important;
    position: relative !important;
    page-break-after: always !important;
    break-after: page !important;
}

body.is-embed.is-embed-horarios .horario-embed-page:last-child {
    page-break-after: auto !important;
    break-after: auto !important;
}

body.is-embed.is-embed-horarios .horario-embed-page .cabecalho-oficial {
    min-height: 86px !important;
    max-height: 92px !important;
    height: 90px !important;
    margin: 0 0 4px !important;
    padding: 0 !important;
    border: 0 !important;
    overflow: hidden !important;
    display: grid !important;
    grid-template-columns: 1fr 1.8fr 2.1fr 2fr !important;
    align-items: center !important;
    gap: 18px !important;
}

body.is-embed.is-embed-horarios .horario-embed-page .cabecalho-oficial__item {
    height: 86px !important;
    max-height: 86px !important;
    overflow: hidden !important;
}

body.is-embed.is-embed-horarios .horario-embed-page .cabecalho-oficial img {
    max-height: 76px !important;
    width: auto !important;
    height: auto !important;
    object-fit: contain !important;
}

body.is-embed.is-embed-horarios .horario-embed-periodo {
    position: absolute !important;
    top: 176px !important;
    right: 76px !important;
    color: #000000 !important;
    font: 900 17px/1 Arial, Helvetica, sans-serif !important;
    text-align: right !important;
}

body.is-embed.is-embed-horarios .horario-embed-ciclos {
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
}

body.is-embed.is-embed-horarios .horario-embed-ciclo {
    width: 100% !important;
    margin: 0 0 30px !important;
    padding: 0 !important;
    break-inside: avoid !important;
    page-break-inside: avoid !important;
}

body.is-embed.is-embed-horarios .horario-embed-ciclo h2 {
    margin: 0 0 16px !important;
    color: #000000 !important;
    font: 900 19px/1 Arial, Helvetica, sans-serif !important;
    text-align: center !important;
    letter-spacing: 0 !important;
}

body.is-embed.is-embed-horarios .horario-embed-table {
    width: 100% !important;
    border-collapse: collapse !important;
    table-layout: fixed !important;
    margin: 0 !important;
    padding: 0 !important;
    background: #ffffff !important;
    color: #000000 !important;
    font-family: Arial, Helvetica, sans-serif !important;
}

body.is-embed.is-embed-horarios .horario-embed-col-horarios { width: 74px !important; }
body.is-embed.is-embed-horarios .horario-embed-col-dia { width: calc((100% - 74px) / 5) !important; }

body.is-embed.is-embed-horarios .horario-embed-table th,
body.is-embed.is-embed-horarios .horario-embed-table td {
    border: 1px solid #000000 !important;
    height: 15px !important;
    max-height: 15px !important;
    min-height: 15px !important;
    padding: 1px 3px !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
    color: #000000 !important;
    text-align: center !important;
    vertical-align: middle !important;
    white-space: nowrap !important;
    font: 400 7.8px/1 Arial, Helvetica, sans-serif !important;
    background: #ffffff !important;
}

body.is-embed.is-embed-horarios .horario-embed-table thead th {
    height: 14px !important;
    background: #B8C9E7 !important;
    color: #000000 !important;
    font-weight: 900 !important;
    font-size: 7.5px !important;
}

body.is-embed.is-embed-horarios .horario-embed-table tbody th {
    background: #D9E2F3 !important;
    color: #000000 !important;
    font-weight: 900 !important;
    font-size: 7.6px !important;
}

body.is-embed.is-embed-horarios .horario-embed-table td.aula-normal { background: #ffffff !important; }
body.is-embed.is-embed-horarios .horario-embed-table td.aula-remota { background: #C6E0B4 !important; color: #000000 !important; }
body.is-embed.is-embed-horarios .horario-embed-table td.aula-pi { background: #FFD966 !important; color: #9C5700 !important; font-weight: 900 !important; }
body.is-embed.is-embed-horarios .horario-embed-table td.aula-edital { background: #F4CCCC !important; color: #C00000 !important; font-weight: 900 !important; }

body.is-embed.is-embed-horarios .horario-embed-legenda {
    width: 100% !important;
    display: grid !important;
    grid-template-columns: 1fr 1fr 1fr !important;
    gap: 190px !important;
    align-items: center !important;
    justify-items: stretch !important;
    margin: 16px 74px 0 !important;
    max-width: calc(100% - 148px) !important;
    color: #000000 !important;
}

body.is-embed.is-embed-horarios .horario-embed-legenda span {
    display: block !important;
    height: 15px !important;
    padding: 2px 6px !important;
    box-sizing: border-box !important;
    color: #000000 !important;
    text-align: center !important;
    font: 900 7.4px/1 Arial, Helvetica, sans-serif !important;
}

body.is-embed.is-embed-horarios .horario-embed-legenda .aula-pi { background: #FFD966 !important; color: #000000 !important; }
body.is-embed.is-embed-horarios .horario-embed-legenda .aula-edital { background: #F4CCCC !important; color: #C00000 !important; }
body.is-embed.is-embed-horarios .horario-embed-legenda .aula-remota { background: #C6E0B4 !important; color: #000000 !important; }

@media print {
    @page horario-a4-landscape { size: A4 landscape; margin: 0; }
    body.is-embed.is-embed-horarios {
        width: 1123px !important;
        min-width: 1123px !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow: visible !important;
        background: #ffffff !important;
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }
    body.is-embed.is-embed-horarios .horario-embed-toolbar,
    body.is-embed.is-embed-horarios .no-print { display: none !important; }
    body.is-embed.is-embed-horarios .horario-embed-oficial,
    body.is-embed.is-embed-horarios .horario-embed-page {
        width: 1123px !important;
        min-width: 1123px !important;
        max-width: 1123px !important;
    }
    body.is-embed.is-embed-horarios .horario-embed-page {
        page: horario-a4-landscape;
        height: 794px !important;
        min-height: 794px !important;
        max-height: 794px !important;
        margin: 0 !important;
        padding: 70px 70px 24px !important;
        page-break-after: always !important;
        break-after: page !important;
        overflow: hidden !important;
        box-shadow: none !important;
        border: 0 !important;
    }
    body.is-embed.is-embed-horarios .horario-embed-page:last-child {
        page-break-after: auto !important;
        break-after: auto !important;
    }
}

/* v2026.1.15.2 — Perfil, auditoria e recuperação de acesso */
.audit-dialog {
    width: min(920px, calc(100vw - 32px));
    max-height: 82vh;
    border: 0;
    border-radius: 14px;
    padding: 0;
    background: #fff;
    color: #1f2937;
    box-shadow: 0 24px 70px rgba(0, 0, 0, .22);
}
.audit-dialog::backdrop { background: rgba(0, 0, 0, .38); }
.audit-dialog-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 18px;
    border-bottom: 1px solid #e5e7eb;
    background: #f8fafc;
}
.audit-json { padding: 16px 18px; }
.audit-json h4 { margin: 0 0 6px; color: #005C6D; }
.audit-json pre {
    max-height: 240px;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
    background: #f8fafc !important;
    color: #111827 !important;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    padding: 12px;
    font-size: 12px;
}
.icon-button-danger {
    border-color: #b91c1c !important;
    color: #b91c1c !important;
    background: #fff !important;
}
.icon-button-danger:hover {
    background: #fee2e2 !important;
}
.profile-card .soft-separator {
    border: 0;
    border-top: 1px solid #e5e7eb;
    margin: 18px 0;
}
.login-card a { color: var(--cps-azul, #005C6D); font-weight: 700; }

/* v2026.1.15.5 — Painel administrativo estilo educacional CPS claro + página de versões.
   Referência visual: painel educacional com sidebar azul, cards ciano e áreas brancas. */
:root {
    --edu-azul: #12A8CF;
    --edu-azul-2: #32BBD8;
    --edu-azul-escuro: #005C6D;
    --edu-ciano-claro: #D9F5FB;
    --edu-page: #F4FBFD;
    --edu-card: #FFFFFF;
    --edu-text: #0F2433;
    --edu-muted: #6B7A88;
    --edu-border: #CDEAF0;
    --edu-shadow: 0 10px 28px rgba(0, 92, 109, .10);
    --edu-sidebar: 268px;
    --edu-sidebar-mini: 84px;
}

body.is-admin {
    background: linear-gradient(180deg, #E8F9FD 0%, #F5FBFD 48%, #FFFFFF 100%) !important;
    color: var(--edu-text) !important;
    font-family: 'Roboto', Arial, sans-serif !important;
}

body.is-admin .footer { display: none !important; }

body.is-admin .app-header {
    position: fixed !important;
    top: 0 !important;
    left: var(--edu-sidebar) !important;
    right: 0 !important;
    height: 70px !important;
    padding: 12px 28px !important;
    background: #CFF3FB !important;
    border-bottom: 1px solid #AEE4EF !important;
    box-shadow: 0 8px 24px rgba(0, 92, 109, .08) !important;
    z-index: 80 !important;
}
body.is-admin.sidebar-collapsed .app-header { left: var(--edu-sidebar-mini) !important; }

.admin-top-search {
    width: min(620px, 46vw);
    height: 44px;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 0 16px;
    border-radius: 8px;
    background: #FFFFFF;
    border: 1px solid #A8DCE8;
    color: var(--edu-muted);
}
.admin-top-search input {
    width: 100%;
    border: 0 !important;
    box-shadow: none !important;
    outline: 0 !important;
    background: transparent !important;
    padding: 0 !important;
    color: var(--edu-text) !important;
}
.admin-top-actions { margin-left: auto; gap: 12px !important; }
.admin-user-chip {
    display: inline-flex !important;
    align-items: center;
    gap: 8px;
    padding: 6px 10px !important;
    border-radius: 999px;
    background: rgba(255,255,255,.62);
    text-decoration: none;
    color: var(--edu-text) !important;
}
.admin-avatar {
    width: 32px;
    height: 32px;
    border-radius: 999px;
    display: inline-grid;
    place-items: center;
    background: #FFFFFF;
    border: 2px solid #A8DCE8;
    color: var(--edu-azul-escuro);
    font-weight: 900;
}
body.is-admin .top-logout-button {
    width: 42px !important;
    height: 42px !important;
    border-radius: 10px !important;
    background: #FFF !important;
    color: var(--cps-vermelho) !important;
    border: 1px solid #F0C9C9 !important;
    box-shadow: 0 8px 18px rgba(178,0,0,.08) !important;
}

body.is-admin .admin-sidebar {
    position: fixed !important;
    inset: 0 auto 0 0 !important;
    width: var(--edu-sidebar) !important;
    border-radius: 0 !important;
    padding: 18px 14px !important;
    background: linear-gradient(180deg, #13A8CF 0%, #0B9EC5 100%) !important;
    color: #FFFFFF !important;
    border: 0 !important;
    box-shadow: 10px 0 28px rgba(0, 92, 109, .14) !important;
    z-index: 100 !important;
    overflow-y: auto !important;
}
body.is-admin.sidebar-collapsed .admin-sidebar { width: var(--edu-sidebar-mini) !important; }

body.is-admin .sidebar-head {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    padding: 4px 8px 28px !important;
    background: transparent !important;
}
body.is-admin .sidebar-logo {
    margin: 0 !important;
    color: #FFFFFF !important;
    background: transparent !important;
}
body.is-admin .sidebar-logo strong {
    display: block;
    color: #FFFFFF !important;
    font-size: 26px !important;
    line-height: 1;
    letter-spacing: -.04em;
}
body.is-admin .sidebar-logo small { display: none !important; }
body.is-admin .sidebar-toggle {
    display: inline-grid !important;
    place-items: center;
    width: 38px !important;
    height: 38px !important;
    min-width: 38px !important;
    border-radius: 10px !important;
    background: rgba(255,255,255,.18) !important;
    color: #FFFFFF !important;
    border: 1px solid rgba(255,255,255,.26) !important;
    box-shadow: none !important;
}
body.is-admin.sidebar-collapsed .sidebar-logo__text { display: none !important; }

body.is-admin .accordion-menu {
    display: block !important;
}
body.is-admin .sidebar-dashboard,
body.is-admin .menu-group-summary {
    width: 100% !important;
    min-height: 42px !important;
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    padding: 10px 14px !important;
    border-radius: 12px !important;
    border: 0 !important;
    background: transparent !important;
    color: #FFFFFF !important;
    box-shadow: none !important;
    text-decoration: none !important;
    font-weight: 700 !important;
    font-size: 14px !important;
    text-align: left !important;
}
body.is-admin .sidebar-dashboard:hover,
body.is-admin .sidebar-dashboard.active,
body.is-admin .menu-group.open > .menu-group-summary,
body.is-admin .menu-group-summary:hover {
    background: rgba(255,255,255,.16) !important;
    color: #FFFFFF !important;
}
body.is-admin .menu-group-icon {
    width: 20px;
    min-width: 20px;
    text-align: center;
    filter: saturate(1.1);
}
body.is-admin .menu-group { margin: 8px 0 12px !important; position: relative !important; }
body.is-admin .menu-group::before {
    content: attr(data-title);
}
body.is-admin .menu-group-links {
    display: none !important;
    flex-direction: column !important;
    gap: 2px !important;
    margin: 2px 0 0 34px !important;
    padding: 4px 0 6px !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}
body.is-admin .menu-group.open > .menu-group-links { display: flex !important; }
body.is-admin .menu-group-links a {
    color: rgba(255,255,255,.94) !important;
    background: transparent !important;
    border-radius: 10px !important;
    padding: 7px 10px !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    text-decoration: none !important;
}
body.is-admin .menu-group-links a:hover,
body.is-admin .menu-group-links a.active {
    background: rgba(255,255,255,.20) !important;
    color: #FFFFFF !important;
}
body.is-admin .menu-flyout-title { display: none !important; }
body.is-admin .logout-form { display: none !important; }

body.is-admin.sidebar-collapsed .menu-label,
body.is-admin.sidebar-collapsed .sidebar-logo__text { display: none !important; }
body.is-admin.sidebar-collapsed .sidebar-dashboard,
body.is-admin.sidebar-collapsed .menu-group-summary { justify-content: center !important; padding: 11px !important; }
body.is-admin.sidebar-collapsed .menu-group-links {
    position: absolute !important;
    left: calc(100% + 12px) !important;
    top: 0 !important;
    width: 230px !important;
    margin: 0 !important;
    padding: 10px !important;
    background: #FFFFFF !important;
    border: 1px solid #CDEAF0 !important;
    box-shadow: 0 18px 38px rgba(0, 92, 109, .18) !important;
    border-radius: 12px !important;
    opacity: 0 !important;
    transform: translateX(-6px) !important;
    pointer-events: none !important;
    z-index: 999 !important;
}
body.is-admin.sidebar-collapsed .menu-group:hover > .menu-group-links,
body.is-admin.sidebar-collapsed .menu-group:focus-within > .menu-group-links {
    display: flex !important;
    opacity: 1 !important;
    transform: translateX(0) !important;
    pointer-events: auto !important;
}
body.is-admin.sidebar-collapsed .menu-group-links a {
    color: var(--edu-text) !important;
}
body.is-admin.sidebar-collapsed .menu-group-links a:hover,
body.is-admin.sidebar-collapsed .menu-group-links a.active {
    background: #E8F7FB !important;
    color: var(--edu-azul-escuro) !important;
}
body.is-admin.sidebar-collapsed .menu-flyout-title {
    display: block !important;
    padding: 4px 8px 8px !important;
    color: var(--edu-azul-escuro) !important;
    font-weight: 900 !important;
    border-bottom: 1px solid #CDEAF0 !important;
    margin-bottom: 4px !important;
}

body.is-admin .app-main {
    width: auto !important;
    max-width: none !important;
    margin: 94px 24px 28px calc(var(--edu-sidebar) + 24px) !important;
}
body.is-admin.sidebar-collapsed .app-main { margin-left: calc(var(--edu-sidebar-mini) + 24px) !important; }

/* Dashboard estilo educacional */
.edu-dashboard-tabs {
    display: flex;
    gap: 8px;
    margin: 0 0 14px;
    border-bottom: 1px solid #CDEAF0;
}
.edu-dashboard-tabs a {
    display: inline-flex;
    gap: 8px;
    align-items: center;
    text-decoration: none;
    padding: 12px 18px;
    border: 1px solid transparent;
    border-bottom: 0;
    border-radius: 12px 12px 0 0;
    color: #194458;
    font-weight: 900;
}
.edu-dashboard-tabs a.active {
    background: #FFFFFF;
    color: var(--edu-azul);
    border-color: #CDEAF0;
}
.edu-dashboard-hero {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 18px;
    align-items: stretch;
    margin: 0 0 16px;
}
.edu-dashboard-hero > div {
    background: #FFFFFF;
    border: 1px solid #CDEAF0;
    border-radius: 14px;
    padding: 22px 24px;
    box-shadow: var(--edu-shadow);
}
.edu-dashboard-hero h1 {
    color: var(--edu-azul-escuro) !important;
    font-size: 28px !important;
    margin: 0 0 6px !important;
}
.edu-kicker {
    margin: 0 0 4px;
    text-transform: uppercase;
    letter-spacing: .04em;
    font-weight: 900;
    font-size: 12px;
    color: var(--edu-azul);
}
.edu-hero-source {
    background: linear-gradient(135deg, var(--edu-azul) 0%, var(--edu-azul-2) 100%) !important;
    color: #FFFFFF !important;
}
.edu-hero-source span,
.edu-hero-source small { display: block; color: rgba(255,255,255,.92) !important; font-weight: 800; }
.edu-hero-source strong { display: block; color: #FFFFFF !important; font-size: 44px; line-height: 1; margin: 8px 0; }

.edu-kpi-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(150px, 1fr));
    gap: 14px;
    margin-bottom: 16px;
}
.edu-kpi-card {
    position: relative;
    overflow: hidden;
    min-height: 106px;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: 18px;
    text-decoration: none;
    border-radius: 12px;
    background: linear-gradient(135deg, var(--edu-azul) 0%, #48C2DD 100%) !important;
    color: #FFFFFF !important;
    box-shadow: 0 12px 26px rgba(18,168,207,.22);
}
.edu-kpi-card::after {
    content: '';
    position: absolute;
    right: -26px;
    bottom: -42px;
    width: 118px;
    height: 82px;
    border-radius: 999px 999px 0 0;
    background: rgba(255,255,255,.24);
}
.edu-kpi-card span,
.edu-kpi-card strong,
.edu-kpi-card small { display: block; color: #FFFFFF !important; position: relative; z-index: 1; }
.edu-kpi-card span { font-size: 12px; font-weight: 900; text-transform: uppercase; }
.edu-kpi-card strong { font-size: 28px; line-height: 1.1; margin: 6px 0 4px; }
.edu-kpi-card small { font-size: 12px; opacity: .92; }
.edu-kpi-card i { position: relative; z-index: 1; font-style: normal; font-size: 30px; opacity: .55; }

.edu-dashboard-grid { display: grid; gap: 16px; margin-bottom: 16px; }
.edu-dashboard-grid.two { grid-template-columns: minmax(0, 1.35fr) minmax(320px, .65fr); }
.edu-dashboard-grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.edu-panel {
    background: #FFFFFF !important;
    border: 1px solid #CDEAF0 !important;
    border-radius: 14px !important;
    padding: 18px !important;
    box-shadow: var(--edu-shadow) !important;
    color: var(--edu-text) !important;
}
.edu-panel-title {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
}
.edu-panel-title h2 { font-size: 17px !important; color: var(--edu-text) !important; margin: 0 !important; }
.edu-panel-title span {
    padding: 6px 10px;
    border-radius: 999px;
    background: #E8F7FB;
    color: var(--edu-azul-escuro);
    font-weight: 900;
    font-size: 11px;
}
.edu-flow-list { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; }
.edu-flow-list a {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px;
    text-decoration: none;
    border: 1px solid #CDEAF0;
    border-radius: 12px;
    background: #F7FCFE;
    color: var(--edu-text);
}
.edu-flow-list b {
    width: 34px;
    height: 34px;
    min-width: 34px;
    display: inline-grid;
    place-items: center;
    border-radius: 999px;
    background: var(--edu-azul);
    color: #FFF;
}
.edu-flow-list span { font-weight: 800; font-size: 13px; line-height: 1.25; }
.edu-chart-row {
    display: grid;
    grid-template-columns: 132px 1fr 80px;
    gap: 10px;
    align-items: center;
    padding: 7px 0;
    color: var(--edu-text);
}
.edu-chart-row span { font-size: 13px; }
.edu-chart-row strong { font-size: 12px; text-align: right; color: var(--edu-text) !important; }
.edu-chart-track {
    height: 10px;
    border-radius: 999px;
    background: #EAF5F7;
    overflow: hidden;
}
.edu-chart-track i {
    display: block;
    height: 100%;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--edu-azul), #72D6E8);
}
.compact-table table { font-size: 13px; }

.version-timeline,
.version-hotfixes { background: #FFFFFF !important; }
.version-header-row { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }
.version-item { border-left: 4px solid var(--edu-azul); padding: 4px 0 16px 16px; margin-bottom: 14px; }
.version-item h3 { color: var(--edu-azul-escuro) !important; margin-bottom: 8px !important; }
.version-item ul { margin: 0; padding-left: 18px; }
.version-item li { margin: 5px 0; }
.version-subtitle { list-style: none; margin-left: -18px !important; color: var(--edu-azul-escuro); }
.version-hotfix-grid { display: grid; gap: 10px; }
.version-hotfix-card { border: 1px solid #CDEAF0; border-radius: 12px; padding: 12px; background: #F7FCFE; }
.version-hotfix-card summary { cursor: pointer; font-weight: 900; color: var(--edu-azul-escuro); }
.version-hotfix-card pre { white-space: pre-wrap; font-size: 12px; background: #FFFFFF; padding: 12px; border-radius: 10px; border: 1px solid #E2F1F5; }

@media (max-width: 1180px) {
    .edu-kpi-grid { grid-template-columns: repeat(3, minmax(150px, 1fr)); }
    .edu-dashboard-grid.two,
    .edu-dashboard-grid.three { grid-template-columns: 1fr; }
}
@media (max-width: 860px) {
    body.is-admin .app-header { left: 0 !important; }
    body.is-admin .admin-sidebar { transform: translateX(-100%); transition: transform .18s ease; }
    body.is-admin.sidebar-collapsed .admin-sidebar { transform: translateX(0); width: var(--edu-sidebar) !important; }
    body.is-admin .app-main,
    body.is-admin.sidebar-collapsed .app-main { margin: 94px 14px 28px !important; width: auto !important; }
    .admin-top-search { width: 42vw; }
    .edu-kpi-grid { grid-template-columns: repeat(2, minmax(130px, 1fr)); }
    .edu-flow-list { grid-template-columns: 1fr; }
}

/* v2026.1.15.6 — ajustes de dashboard sem tabs, dropdown de usuário e links públicos corretos. */
body.is-admin .edu-dashboard-tabs { display: none !important; }

body.is-admin .admin-user-menu {
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
}
body.is-admin .admin-user-chip {
    border: 0 !important;
    cursor: pointer !important;
    min-height: 44px !important;
    background: #FFFFFF !important;
    border: 1px solid #A8DCE8 !important;
    box-shadow: 0 8px 18px rgba(0, 92, 109, .08) !important;
    color: var(--edu-text, #0F2433) !important;
}
body.is-admin .admin-user-chip:hover,
body.is-admin .admin-user-menu.open .admin-user-chip {
    background: #E8F7FB !important;
    color: var(--edu-azul-escuro, #005C6D) !important;
}
body.is-admin .admin-user-caret {
    color: var(--edu-azul-escuro, #005C6D) !important;
    font-size: 12px !important;
    margin-left: 2px !important;
}
body.is-admin .admin-avatar {
    overflow: hidden !important;
    background: #D9F5FB !important;
    color: var(--edu-azul-escuro, #005C6D) !important;
}
body.is-admin .admin-avatar img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    display: block !important;
}
body.is-admin .admin-user-dropdown {
    position: absolute !important;
    right: 0 !important;
    top: calc(100% + 10px) !important;
    width: 190px !important;
    display: none !important;
    flex-direction: column !important;
    padding: 8px !important;
    border-radius: 12px !important;
    background: #FFFFFF !important;
    border: 1px solid #CDEAF0 !important;
    box-shadow: 0 18px 38px rgba(0, 92, 109, .18) !important;
    z-index: 300 !important;
}
body.is-admin .admin-user-menu.open .admin-user-dropdown { display: flex !important; }
body.is-admin .admin-user-dropdown a,
body.is-admin .admin-user-dropdown button {
    display: flex !important;
    width: 100% !important;
    align-items: center !important;
    justify-content: flex-start !important;
    padding: 10px 12px !important;
    border: 0 !important;
    border-radius: 9px !important;
    background: transparent !important;
    color: var(--edu-text, #0F2433) !important;
    text-decoration: none !important;
    font-weight: 800 !important;
    font-size: 13px !important;
    cursor: pointer !important;
    font-family: inherit !important;
}
body.is-admin .admin-user-dropdown a:hover,
body.is-admin .admin-user-dropdown button:hover {
    background: #E8F7FB !important;
    color: var(--edu-azul-escuro, #005C6D) !important;
}
body.is-admin .top-logout-form,
body.is-admin .top-logout-button { display: none !important; }

/* O sidebar não deve aparecer em páginas públicas mesmo quando o usuário estiver autenticado. */
body.is-public .admin-sidebar { display: none !important; }
body.is-public .app-main { margin-left: auto !important; margin-right: auto !important; width: min(1180px, calc(100% - 32px)) !important; }

/* Perfil: upload de imagem e formulários em modo claro. */
.profile-form-layout {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 24px;
    align-items: start;
}
.profile-photo-box {
    display: grid;
    gap: 10px;
    justify-items: center;
    padding: 16px;
    border: 1px solid #CDEAF0;
    border-radius: 14px;
    background: #F7FCFE;
}
.profile-photo-box img,
.profile-photo-box > span {
    width: 108px;
    height: 108px;
    border-radius: 999px;
    display: grid;
    place-items: center;
    object-fit: cover;
    background: #D9F5FB;
    color: var(--edu-azul-escuro, #005C6D);
    font-size: 42px;
    font-weight: 900;
    border: 3px solid #FFFFFF;
    box-shadow: 0 8px 22px rgba(0,92,109,.14);
}
.profile-photo-box label { color: var(--edu-text, #0F2433) !important; font-weight: 900 !important; }
.profile-photo-box input { width: 100%; font-size: 12px; }
@media (max-width: 720px) { .profile-form-layout { grid-template-columns: 1fr; } }

/* v2026.1.15.7 — correção definitiva dos botões e componentes que ainda herdavam tema escuro. */
body.is-admin,
body.is-admin .app-main {
    background: #F2FBFD !important;
    color: #0F2433 !important;
}

body.is-admin .page-hero,
body.is-admin .card,
body.is-admin .filters-card,
body.is-admin .table-card,
body.is-admin .crud-card,
body.is-admin .modal-content,
body.is-admin .dashboard-card,
body.is-admin .dashboard-panel,
body.is-admin .dashboard-hero-skill,
body.is-admin .dashboard-flow-step,
body.is-admin .dashboard-kpi-card,
body.is-admin .chart-card,
body.is-admin .report-card,
body.is-admin .form-card {
    background: #FFFFFF !important;
    color: #0F2433 !important;
    border-color: #CDEAF0 !important;
    box-shadow: 0 14px 34px rgba(0, 92, 109, .10) !important;
}

body.is-admin .dashboard-hero-skill {
    background: linear-gradient(135deg, #E8F8FC 0%, #FFFFFF 56%, #DDF5FA 100%) !important;
}
body.is-admin .dashboard-hero-skill::after { display: none !important; }

body.is-admin .page-hero h1,
body.is-admin .page-hero h2,
body.is-admin .card h1,
body.is-admin .card h2,
body.is-admin .card h3,
body.is-admin .dashboard-hero-skill h1,
body.is-admin .dashboard-card h1,
body.is-admin .dashboard-card h2,
body.is-admin .dashboard-card h3 {
    color: #0F2433 !important;
}
body.is-admin .muted,
body.is-admin .card .muted,
body.is-admin .dashboard-hero-skill .muted {
    color: #607886 !important;
}

body.is-admin label,
body.is-admin .modal label,
body.is-admin .form-group label,
body.is-admin .field label {
    color: #0F2433 !important;
    font-weight: 800 !important;
}
body.is-admin input,
body.is-admin select,
body.is-admin textarea,
body.is-admin .modal input,
body.is-admin .modal select,
body.is-admin .modal textarea {
    background: #FFFFFF !important;
    color: #0F2433 !important;
    border: 1px solid #CDEAF0 !important;
}
body.is-admin input::placeholder,
body.is-admin textarea::placeholder { color: #8AA0AD !important; }

/* A regra antiga usava button:not(...) e deixava botões genéricos escuros/vermelhos.
   A partir daqui, botão primário é azul. Vermelho fica reservado para excluir/cancelar. */
body.is-admin .button,
body.is-admin button:not(.icon-button):not(.modal-close):not(.admin-user-trigger),
body.is-admin a.button,
body.is-admin input[type="submit"],
body.is-admin input[type="button"] {
    background: var(--cps-azul, #005C6D) !important;
    color: #FFFFFF !important;
    border: 1px solid var(--cps-azul, #005C6D) !important;
    box-shadow: 0 10px 20px rgba(0, 92, 109, .16) !important;
}
body.is-admin .button:hover,
body.is-admin button:hover:not(.icon-button):not(.modal-close):not(.admin-user-trigger),
body.is-admin a.button:hover,
body.is-admin input[type="submit"]:hover,
body.is-admin input[type="button"]:hover {
    background: var(--cps-azul-hover, #007F94) !important;
    border-color: var(--cps-azul-hover, #007F94) !important;
}
body.is-admin .button-ghost,
body.is-admin .button.secondary,
body.is-admin a.button.secondary,
body.is-admin button.secondary {
    background: #EEF6F8 !important;
    color: #005C6D !important;
    border: 1px solid #CDEAF0 !important;
    box-shadow: none !important;
}
body.is-admin .button-ghost:hover,
body.is-admin .button.secondary:hover,
body.is-admin a.button.secondary:hover,
body.is-admin button.secondary:hover {
    background: #DDF5FA !important;
    color: #004653 !important;
}
body.is-admin .button-danger,
body.is-admin .button.danger,
body.is-admin button.danger,
body.is-admin button[data-action="delete"],
body.is-admin button[data-action="destroy"],
body.is-admin .delete-button,
body.is-admin .cancel-button {
    background: #B20000 !important;
    color: #FFFFFF !important;
    border-color: #B20000 !important;
    box-shadow: 0 10px 20px rgba(178, 0, 0, .14) !important;
}
body.is-admin .button-success,
body.is-admin button.success {
    background: #16883A !important;
    color: #FFFFFF !important;
    border-color: #16883A !important;
}

/* Ações dos CRUDs sempre claras. */
body.is-admin .actions {
    gap: 2px !important;
}
body.is-admin .actions .icon-button,
body.is-admin .table-actions .icon-button,
body.is-admin td .icon-button,
body.is-admin .crud-actions .icon-button {
    background: #FFFFFF !important;
    color: #005C6D !important;
    border: 1px solid #CDEAF0 !important;
    box-shadow: 0 4px 10px rgba(0, 92, 109, .08) !important;
}
body.is-admin .actions .icon-button:hover,
body.is-admin .table-actions .icon-button:hover,
body.is-admin td .icon-button:hover,
body.is-admin .crud-actions .icon-button:hover {
    background: #E8F7FB !important;
    color: #004653 !important;
}
body.is-admin .actions .icon-button.danger,
body.is-admin .actions .danger-icon,
body.is-admin td .icon-button.danger,
body.is-admin td .danger-icon {
    background: #FFF2F2 !important;
    color: #B20000 !important;
    border-color: #F0B8B8 !important;
}
body.is-admin .actions .icon-button.danger:hover,
body.is-admin td .icon-button.danger:hover {
    background: #FFE5E5 !important;
    color: #8C0000 !important;
}

body.is-admin table,
body.is-admin .data-table,
body.is-admin .crud-table {
    background: #FFFFFF !important;
    color: #0F2433 !important;
}
body.is-admin th,
body.is-admin .data-table th,
body.is-admin .crud-table th {
    background: #EEF6F8 !important;
    color: #005C6D !important;
    border-bottom-color: #CDEAF0 !important;
}
body.is-admin td,
body.is-admin .data-table td,
body.is-admin .crud-table td {
    background: #FFFFFF !important;
    color: #0F2433 !important;
    border-bottom-color: #E3EEF2 !important;
}
body.is-admin tr:hover td { background: #F7FCFE !important; }

/* O dropdown do usuário precisa permanecer claro. */
body.is-admin .admin-user-dropdown,
body.is-admin .admin-user-dropdown form,
body.is-admin .admin-user-dropdown button,
body.is-admin .admin-user-dropdown a {
    background: #FFFFFF !important;
    color: #0F2433 !important;
}
body.is-admin .admin-user-dropdown button:hover,
body.is-admin .admin-user-dropdown a:hover {
    background: #E8F7FB !important;
    color: #005C6D !important;
}

.admin-user-chip__text { display:flex; flex-direction:column; align-items:flex-start; line-height:1.15; min-width:0; }
.admin-user-chip__text small { font-size:.68rem; font-weight:500; opacity:.78; max-width:230px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.context-switcher { padding:10px 12px; display:grid; gap:7px; min-width:270px; }
.context-switcher label { font-size:.72rem; font-weight:700; color:#5b6675; }
.context-switcher select { width:100%; min-height:36px; }
.context-switcher button { width:100%; min-height:36px; }
.admin-user-dropdown hr { border:0; border-top:1px solid #e7ebf0; margin:4px 0; }

.multi-check-grid { border:1px solid #dbe1e8; border-radius:10px; padding:12px; display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:8px 14px; }
.multi-check-grid legend { font-weight:700; padding:0 6px; }
.multi-check-grid label { display:flex; align-items:flex-start; gap:7px; font-weight:500; }
.honeypot-field { position:absolute !important; left:-9999px !important; width:1px; height:1px; overflow:hidden; }

.aula-cell-link { display: flex; flex-direction: column; gap: .18rem; min-width: 7.5rem; text-decoration: none; color: inherit; }
.aula-cell-link small { font-size: .72rem; line-height: 1.15; }
.aula-cell-link em { font-size: .68rem; font-style: normal; font-weight: 700; }
.aula-cell-add { display: inline-flex; padding: .25rem .45rem; border: 1px dashed currentColor; border-radius: .4rem; font-size: .75rem; text-decoration: none; }
.disciplinas-sem-aula li { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .5rem; }
.button-small { padding: .35rem .65rem; font-size: .8rem; }

/* v2026.2.3 — contexto, dashboard por curso, gráficos de pizza e corpo docente. */
body.is-admin .admin-user-dropdown {
    width: min(330px, calc(100vw - 24px)) !important;
    max-width: calc(100vw - 24px) !important;
    max-height: min(620px, calc(100vh - 88px)) !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
}
body.is-admin .context-switcher {
    width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
}
body.is-admin .context-switcher > *,
body.is-admin .context-switcher select,
body.is-admin .context-switcher button {
    min-width: 0 !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
}
@media (max-width: 520px) {
    body.is-admin .admin-user-menu { position: static !important; }
    body.is-admin .admin-user-dropdown {
        position: fixed !important;
        right: 12px !important;
        left: 12px !important;
        top: 70px !important;
        width: auto !important;
        max-width: none !important;
    }
}

.edu-dashboard-filter {
    margin-bottom: 16px;
    padding: 16px 18px;
}
.edu-dashboard-filter form {
    display: flex;
    align-items: end;
    gap: 14px;
}
.edu-dashboard-filter .form-field {
    width: min(640px, 100%);
    margin: 0;
}
.edu-dashboard-filter select { width: 100%; }

.edu-pie-layout {
    display: grid;
    grid-template-columns: minmax(128px, 168px) minmax(0, 1fr);
    align-items: center;
    gap: 18px;
    min-height: 190px;
}
.edu-pie-chart {
    width: 100%;
    aspect-ratio: 1;
    border-radius: 50%;
    position: relative;
    box-shadow: inset 0 0 0 1px rgba(15, 36, 51, .08), 0 12px 24px rgba(0, 92, 109, .12);
}
.edu-pie-chart::after {
    content: '';
    position: absolute;
    inset: 25%;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 0 0 1px rgba(15, 36, 51, .06);
}
.edu-pie-chart > div {
    position: absolute;
    inset: 25%;
    z-index: 1;
    display: grid;
    place-content: center;
    text-align: center;
}
.edu-pie-chart strong {
    display: block;
    font-size: 1.55rem;
    line-height: 1;
    color: #0F2433 !important;
}
.edu-pie-chart span {
    margin-top: 4px;
    font-size: .7rem;
    color: #607886;
}
.edu-pie-legend {
    list-style: none;
    display: grid;
    gap: 9px;
    padding: 0;
    margin: 0;
}
.edu-pie-legend li {
    display: grid;
    grid-template-columns: 12px minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
    font-size: .78rem;
}
.edu-pie-legend i {
    width: 10px;
    height: 10px;
    border-radius: 999px;
}
.edu-pie-legend strong {
    font-size: .72rem;
    color: #0F2433 !important;
    white-space: nowrap;
}

.public-filter-card { margin-bottom: 18px; }
.public-filter-form {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 18px;
    flex-wrap: wrap;
}
.public-filter-form .form-field {
    width: min(650px, 100%);
    margin: 0;
}
.public-filter-form select { width: 100%; }
.public-period-badge {
    margin: 0;
    padding: 10px 14px;
    border-radius: 999px;
    background: #E8F7FB;
    color: #005C6D;
    font-size: .86rem;
}
.docente-course-card { margin-bottom: 18px; }
.docente-course-title {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    margin-bottom: 14px;
}
.docente-course-title span {
    display: inline-block;
    color: #007F94;
    font-weight: 900;
    font-size: .76rem;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.docente-course-title h3 { margin: 2px 0 0; }
.docente-course-title small {
    padding: 7px 10px;
    border-radius: 999px;
    background: #EEF6F8;
    color: #005C6D;
    font-weight: 800;
}
.docente-table a {
    color: #009FC0;
    font-weight: 700;
    overflow-wrap: anywhere;
}

@media (max-width: 850px) {
    .edu-pie-layout { grid-template-columns: 1fr; justify-items: center; }
    .edu-pie-chart { width: min(180px, 70%); }
    .edu-pie-legend { width: 100%; }
}

.turma-alunos-summary {
    display: grid;
    grid-template-columns: repeat(2, minmax(180px, 260px)) minmax(260px, 1fr);
    gap: 14px;
    align-items: stretch;
    margin-bottom: 16px;
}
.turma-alunos-summary article,
.turma-alunos-summary p {
    margin: 0;
    padding: 16px 18px;
    border: 1px solid #CDEAF0;
    border-radius: 14px;
    background: #FFFFFF;
    box-shadow: 0 10px 24px rgba(0, 92, 109, .08);
}
.turma-alunos-summary article { display: grid; gap: 5px; }
.turma-alunos-summary article span { color: #607886; font-size: .8rem; font-weight: 700; }
.turma-alunos-summary article strong { color: #005C6D; font-size: 1.65rem; }
.turma-alunos-summary p { display: flex; align-items: center; color: #425C69; font-size: .88rem; }
@media (max-width: 850px) { .turma-alunos-summary { grid-template-columns: 1fr; } }

/* AulaMap v2026.2.4 — distribuição por eixo e Corpo Docente embutível. */
.gc-distribuicao-eixos {
    margin-top: 14px;
    font-family: Arial, Helvetica, sans-serif;
}
.gc-distribuicao-eixos h3 {
    margin: 0;
    padding: 7px 10px;
    border: 2px solid #000;
    border-bottom: 0;
    background: #f2f2f2;
    color: #000;
    text-align: center;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: .04em;
}
.gc-distribuicao-scroll { overflow-x: auto; }
.gc-distribuicao-eixos table {
    width: 100%;
    min-width: 680px;
    border-collapse: collapse;
    table-layout: fixed;
    color: #000;
}
.gc-distribuicao-eixos th,
.gc-distribuicao-eixos td {
    border: 1px solid #000;
    padding: 6px 8px;
    text-align: center;
    font-size: 11px;
}
.gc-distribuicao-eixos thead tr:first-child th {
    font-weight: 900;
    min-width: 170px;
}
.gc-distribuicao-eixos thead tr:nth-child(2) th {
    background: #f8f8f8;
    font-size: 10px;
}
.gc-distribuicao-eixos tbody td { font-weight: 800; }
.gc-distribuicao-eixos tfoot th {
    background: #fff;
    font-size: 11px;
    text-align: left;
}

.docente-embed-reference {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid #d9edf1;
    color: #425c69;
    font-size: .82rem;
}
.docente-embed-reference code {
    padding: 5px 8px;
    border: 1px solid #cce8ee;
    border-radius: 7px;
    background: #f5fbfc;
    color: #005c6d;
    overflow-wrap: anywhere;
}
.docente-table td:nth-child(2) { max-width: 520px; }
.docente-table td:nth-child(2) a {
    display: inline-block;
    max-width: 100%;
    overflow-wrap: anywhere;
    word-break: break-word;
}
.docente-formation-summary {
    margin-top: 18px;
    border: 1px solid #b9dfe7;
    border-radius: 14px;
    overflow: hidden;
    background: #f8fcfd;
}
.docente-formation-summary__title {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    padding: 13px 15px;
    background: #e9f7fa;
    border-bottom: 1px solid #b9dfe7;
}
.docente-formation-summary__title div { display: grid; gap: 3px; }
.docente-formation-summary__title span {
    color: #005c6d;
    font-size: .75rem;
    font-weight: 900;
    letter-spacing: .05em;
    text-transform: uppercase;
}
.docente-formation-summary__title strong { color: #0f2433; }
.docente-formation-summary__title small {
    color: #607886;
    text-align: right;
}
.docente-formation-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(145px, 1fr));
    gap: 10px;
    padding: 13px;
}
.docente-formation-grid article {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 3px 10px;
    padding: 12px;
    border: 1px solid #d4e9ed;
    border-radius: 10px;
    background: #fff;
}
.docente-formation-grid article span {
    grid-column: 1 / -1;
    color: #425c69;
    font-size: .76rem;
    font-weight: 800;
}
.docente-formation-grid article strong {
    color: #005c6d;
    font-size: 1.35rem;
}
.docente-formation-grid article small {
    color: #007f94;
    font-weight: 900;
}
.docente-embed-heading {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    margin-bottom: 12px;
    padding: 14px 16px;
    border: 1px solid #b9dfe7;
    border-radius: 12px;
    background: #fff;
}
.docente-embed-heading p {
    margin: 0 0 3px;
    color: #007f94;
    font-size: .73rem;
    font-weight: 900;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.docente-embed-heading h1 {
    margin: 0;
    color: #0f2433;
    font-family: "Roboto Slab", serif;
    font-size: clamp(1.1rem, 2.5vw, 1.55rem);
}
.docente-embed-heading > span {
    padding: 7px 10px;
    border-radius: 999px;
    background: #e8f7fb;
    color: #005c6d;
    font-size: .78rem;
    font-weight: 900;
    white-space: nowrap;
}
body.is-embed-corpo-docente {
    background: transparent !important;
    padding: 12px !important;
}
body.is-embed-corpo-docente .docente-course-card {
    margin-bottom: 12px;
    padding: 16px;
}

@media (max-width: 700px) {
    .docente-formation-summary__title,
    .docente-embed-heading {
        align-items: flex-start;
        flex-direction: column;
    }
    .docente-formation-summary__title small { text-align: left; }
}

@media print {
    .gc-distribuicao-eixos th,
    .gc-distribuicao-eixos td {
        print-color-adjust: exact !important;
        -webkit-print-color-adjust: exact !important;
    }
}

/* AulaMap v2026.2.6 — extensão universitária e informações compactas da Grade Curricular. */
.grade-curricular-cps .gc-card.gc-card-extensao-tracejada {
    border: 3px dashed #c00000 !important;
    padding: 6px 4px;
}

.gc-toolbar-card {
    position: relative;
    z-index: 30;
    overflow: visible;
}
.gc-toolbar-grid {
    display: grid;
    grid-template-columns: minmax(260px, 1.35fr) minmax(210px, .8fr) minmax(145px, .42fr) minmax(145px, .42fr);
    gap: 12px;
    align-items: end;
}
.gc-toolbar-grid .form-field { margin: 0; }

.gc-info-combo {
    position: relative;
    min-width: 0;
}
.gc-info-combo summary {
    min-height: 44px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 1px;
    padding: 7px 34px 7px 11px;
    border: 1px solid #b8e1e9;
    border-radius: 12px;
    background: #f7fcfd;
    color: #153746;
    cursor: pointer;
    list-style: none;
    line-height: 1.08;
    user-select: none;
}
.gc-info-combo summary::-webkit-details-marker { display: none; }
.gc-info-combo summary::after {
    content: "⌄";
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    color: #00687a;
    font-size: 17px;
    font-weight: 900;
}
.gc-info-combo[open] summary::after { content: "⌃"; }
.gc-info-combo summary span {
    color: #00687a;
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .025em;
    text-transform: uppercase;
}
.gc-info-combo summary small {
    color: #526b77;
    font-size: .68rem;
    font-weight: 750;
}
.gc-info-combo-panel {
    position: absolute;
    z-index: 100;
    top: calc(100% + 7px);
    right: 0;
    width: min(360px, 82vw);
    max-height: 360px;
    overflow: auto;
    padding: 13px;
    border: 1px solid #b8dfe7;
    border-radius: 13px;
    background: #fff;
    box-shadow: 0 16px 40px rgba(10, 69, 82, .2);
}
.gc-info-combo-panel > strong {
    display: block;
    color: #12313e;
    font-size: .85rem;
    margin-bottom: 3px;
}
.gc-info-combo-panel > p {
    margin: 0 0 10px;
    color: #607884;
    font-size: .73rem;
}
.gc-info-eixos-lista { display: grid; gap: 6px; }
.gc-info-eixo-item {
    display: grid;
    grid-template-columns: 28px 1fr;
    align-items: center;
    gap: 8px;
    min-height: 30px;
    padding: 4px 6px;
    border: 1px solid #e2edf0;
    border-radius: 8px;
    color: #294652;
    font-size: .75rem;
    font-weight: 700;
}
.gc-info-eixo-item i {
    width: 28px;
    height: 20px;
    display: block;
    border: 1px solid rgba(0, 0, 0, .45);
    border-radius: 4px;
}
.gc-info-tipos { width: min(310px, 82vw); }
.gc-info-tipos dl { margin: 8px 0 0; display: grid; gap: 7px; }
.gc-info-tipos dl div {
    display: grid;
    grid-template-columns: 38px 1fr;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    border: 1px solid #e2edf0;
    border-radius: 8px;
}
.gc-info-tipos dt {
    margin: 0;
    color: #005c6d;
    font-size: .78rem;
    font-weight: 900;
}
.gc-info-tipos dd {
    margin: 0;
    color: #294652;
    font-size: .75rem;
}

.gc-distribuicao-eixos--superior {
    margin: 0 0 14px;
    background: #fff;
}

@media (max-width: 1120px) {
    .gc-toolbar-grid { grid-template-columns: repeat(2, minmax(220px, 1fr)); }
    .gc-info-combo-panel { left: 0; right: auto; }
}

@media (max-width: 680px) {
    .gc-toolbar-grid { grid-template-columns: 1fr; }
    .gc-info-combo-panel { position: static; width: 100%; margin-top: 7px; box-shadow: none; }
}

@media print {
    .grade-curricular-cps .gc-card.gc-card-extensao-tracejada {
        border: 3px dashed #c00000 !important;
    }
}

/* AulaMap v2026.2.7 — ajustes finais da Grade Curricular e Dia x Disciplinas. */
.gc-toolbar-grid {
    grid-template-columns: minmax(260px, 1.35fr) minmax(210px, .8fr) minmax(330px, 1fr);
}
.gc-informacoes {
    min-width: 0;
    display: grid;
    gap: 5px;
}
.gc-informacoes-title {
    color: #153746;
    font-size: .78rem;
    font-weight: 800;
}
.gc-informacoes-combos {
    display: grid;
    grid-template-columns: repeat(2, minmax(145px, 1fr));
    gap: 8px;
}
.gc-info-combo summary {
    min-height: 44px;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    padding: 7px 34px 7px 11px;
    color: #526b77;
    font-size: .72rem;
    font-weight: 800;
}
.gc-distribuicao-eixos {
    margin-top: 14px;
    border-bottom: 2px solid #000;
    background: #fff;
}
.gc-distribuicao-eixos--superior {
    margin: 14px 0 0;
}
.aula-cell-link strong {
    line-height: 1.15;
}
.aula-cell-link small {
    display: block;
    margin-top: 2px;
}

@media (max-width: 1120px) {
    .gc-toolbar-grid { grid-template-columns: repeat(2, minmax(220px, 1fr)); }
    .gc-informacoes { grid-column: 1 / -1; }
}

@media (max-width: 680px) {
    .gc-toolbar-grid { grid-template-columns: 1fr; }
    .gc-informacoes { grid-column: auto; }
    .gc-informacoes-combos { grid-template-columns: 1fr; }
}


/* AulaMap v2026.2.10 — Dia x Sala uniforme e impressão em uma página */
body.is-admin .planilha-dia-salas--operacional,
body.is-admin .dia-salas-print-table {
    table-layout: fixed !important;
}
body.is-admin .planilha-dia-salas--operacional .col-dia { width: 58px; }
body.is-admin .planilha-dia-salas--operacional .col-horario { width: 112px; }
body.is-admin .planilha-dia-salas--operacional .col-sala { width: 132px; }
body.is-admin .planilha-dia-salas--operacional thead th,
body.is-admin .dia-salas-print-table thead th {
    text-align: center !important;
    vertical-align: middle !important;
}
body.is-admin .planilha-dia-salas--operacional .cabecalho-dia,
body.is-admin .planilha-dia-salas--operacional .cabecalho-horario,
body.is-admin .dia-salas-print-table .cabecalho-dia,
body.is-admin .dia-salas-print-table .cabecalho-horario {
    white-space: nowrap;
}
body.is-admin .planilha-dia-salas--operacional .sala-header-th,
body.is-admin .dia-salas-print-table .sala-header-th {
    background: #F1F5F6 !important;
    color: #005C6D !important;
    padding: 5px 3px !important;
    line-height: 1.12;
}
body.is-admin .planilha-dia-salas--operacional .sala-header-bloco,
body.is-admin .planilha-dia-salas--operacional .sala-header-local,
body.is-admin .dia-salas-print-table .sala-header-bloco,
body.is-admin .dia-salas-print-table .sala-header-local {
    display: block;
    width: 100%;
    text-align: center;
    font-weight: 700;
}
body.is-admin .planilha-dia-salas--operacional .sala-header-local,
body.is-admin .dia-salas-print-table .sala-header-local {
    margin-top: 2px;
}
body.is-admin .planilha-dia-salas--operacional .dia-label,
body.is-admin .dia-salas-print-table .dia-label,
body.is-admin .planilha-dia-salas--operacional .horario-label,
body.is-admin .dia-salas-print-table .horario-label {
    text-align: center !important;
    vertical-align: middle !important;
}
body.is-admin .planilha-dia-salas--operacional .dia-label {
    width: 58px !important;
    min-width: 58px !important;
    max-width: 58px !important;
}
body.is-admin .planilha-dia-salas--operacional td {
    padding: 3px !important;
    vertical-align: top;
}
body.is-admin .planilha-dia-salas--operacional .sala-cell,
body.is-admin .dia-salas-print-table .sala-cell {
    display: block;
    width: 100%;
    box-sizing: border-box;
    margin: 0 0 2px !important;
    border-radius: 0 !important;
    text-align: center;
}
body.is-admin .planilha-dia-salas--operacional .sala-cell:last-child,
body.is-admin .dia-salas-print-table .sala-cell:last-child {
    margin-bottom: 0 !important;
}

@media print {
    @page { size: A4 landscape; margin: 3.5mm; }

    html,
    body,
    body.is-admin {
        margin: 0 !important;
        padding: 0 !important;
        background: #ffffff !important;
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }

    body.is-admin .app-main {
        margin: 0 !important;
        padding: 0 !important;
        width: 100% !important;
        max-width: none !important;
    }

    body.is-admin .dia-salas-print-sheet {
        display: block !important;
        margin: 0 auto !important;
        padding: 0 !important;
        max-width: none !important;
        width: 100% !important;
        page-break-inside: avoid !important;
        break-inside: avoid-page !important;
    }

    body.is-admin .dia-salas-print-sheet .cabecalho-oficial {
        width: 100% !important;
        margin: 0 auto 1px !important;
        grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
        min-height: 29px !important;
        max-height: 32px !important;
        gap: 3px !important;
        justify-content: center !important;
        align-items: center !important;
    }
    body.is-admin .dia-salas-print-sheet .cabecalho-oficial__item {
        height: 29px !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
    }
    body.is-admin .dia-salas-print-sheet .cabecalho-oficial__item img {
        max-height: 27px !important;
    }
    body.is-admin .dia-salas-print-sheet .cabecalho-oficial__item:first-child img { max-width: 42px !important; }
    body.is-admin .dia-salas-print-sheet .cabecalho-oficial__item:nth-child(2) img,
    body.is-admin .dia-salas-print-sheet .cabecalho-oficial__item:nth-child(3) img { max-width: 112px !important; }
    body.is-admin .dia-salas-print-sheet .cabecalho-oficial__item:nth-child(4) img { max-width: 145px !important; }

    body.is-admin .dia-salas-print-title {
        margin: 0 0 2px !important;
        text-align: center !important;
        line-height: 1 !important;
    }
    body.is-admin .dia-salas-print-title h1 {
        margin: 0 !important;
        font-size: 13px !important;
        line-height: 1 !important;
        letter-spacing: 0 !important;
        text-align: center !important;
    }
    body.is-admin .dia-salas-print-title strong {
        display: block;
        margin-top: 1px !important;
        font-size: 8px !important;
        line-height: 1 !important;
        text-align: center !important;
    }

    body.is-admin .dia-salas-print-table {
        width: 100% !important;
        min-width: 0 !important;
        table-layout: fixed !important;
        border-collapse: collapse !important;
        font-size: 6.4px !important;
        line-height: 1.02 !important;
        page-break-inside: avoid !important;
        break-inside: avoid-page !important;
    }
    body.is-admin .dia-salas-print-table .col-dia { width: 5.8% !important; }
    body.is-admin .dia-salas-print-table .col-horario { width: 9.8% !important; }
    body.is-admin .dia-salas-print-table .col-sala { width: auto !important; }
    body.is-admin .dia-salas-print-table thead {
        display: table-header-group;
    }
    body.is-admin .dia-salas-print-table tr,
    body.is-admin .dia-salas-print-table th,
    body.is-admin .dia-salas-print-table td {
        page-break-inside: avoid !important;
        break-inside: avoid !important;
    }
    body.is-admin .dia-salas-print-table th,
    body.is-admin .dia-salas-print-table td {
        border: .65px solid #b8c6cf !important;
        padding: 1px !important;
        height: auto !important;
        min-height: 0 !important;
        text-align: center !important;
        vertical-align: middle !important;
    }
    body.is-admin .dia-salas-print-table thead th {
        height: 24px !important;
        min-height: 24px !important;
        font-size: 6.5px !important;
        line-height: 1.05 !important;
        padding: 1px !important;
    }
    body.is-admin .dia-salas-print-table .sala-header-local {
        margin-top: 1px !important;
    }
    body.is-admin .dia-salas-print-table .dia-label {
        width: auto !important;
        min-width: 0 !important;
        max-width: none !important;
        font-size: 8.5px !important;
        line-height: 1 !important;
        padding: 1px !important;
    }
    body.is-admin .dia-salas-print-table .horario-label,
    body.is-admin .dia-salas-print-table .cabecalho-dia,
    body.is-admin .dia-salas-print-table .cabecalho-horario {
        font-size: 6.8px !important;
        white-space: nowrap !important;
        text-align: center !important;
        vertical-align: middle !important;
    }
    body.is-admin .dia-salas-print-table td {
        padding: 0 !important;
        vertical-align: top !important;
    }
    body.is-admin .dia-salas-print-table .sala-cell {
        padding: 1px !important;
        margin: 0 !important;
        border: 0 !important;
        min-height: 0 !important;
        line-height: 1 !important;
    }
    body.is-admin .dia-salas-print-table .sala-cell + .sala-cell {
        border-top: .5px solid rgba(0, 0, 0, .18) !important;
    }
    body.is-admin .dia-salas-print-table .sala-cell strong {
        display: block;
        font-size: 6.3px !important;
        line-height: 1 !important;
        margin: 0 !important;
    }
    body.is-admin .dia-salas-print-table .sala-cell span {
        display: block;
        font-size: 5.7px !important;
        line-height: 1 !important;
        margin: 0 !important;
    }
}


/* AulaMap v2026.2.13 - impressão acadêmica, margens mínimas e preenchimento vertical. */
@media print {
    @page { size: A4 landscape; margin: 1.5mm; }

    body.is-admin .dia-salas-print-sheet,
    body.is-admin .dia-disciplinas-print-sheet {
        box-sizing: border-box !important;
        width: 100% !important;
        height: 207mm !important;
        min-height: 207mm !important;
        max-height: 207mm !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow: hidden !important;
        display: flex !important;
        flex-direction: column !important;
        page-break-inside: avoid !important;
        break-inside: avoid-page !important;
    }

    body.is-admin .dia-salas-print-sheet .cabecalho-oficial,
    body.is-admin .dia-disciplinas-print-sheet .cabecalho-oficial {
        flex: 0 0 11mm !important;
        min-height: 11mm !important;
        max-height: 11mm !important;
        width: 100% !important;
        margin: 0 !important;
        gap: 2mm !important;
        align-items: center !important;
        justify-content: center !important;
    }
    body.is-admin .dia-salas-print-sheet .cabecalho-oficial__item,
    body.is-admin .dia-disciplinas-print-sheet .cabecalho-oficial__item {
        height: 10mm !important;
        align-items: center !important;
        justify-content: center !important;
    }
    body.is-admin .dia-salas-print-sheet .cabecalho-oficial__item img,
    body.is-admin .dia-disciplinas-print-sheet .cabecalho-oficial__item img {
        max-height: 9mm !important;
    }

    body.is-admin .dia-salas-print-title,
    body.is-admin .dia-disciplinas-print-title {
        flex: 0 0 8mm !important;
        min-height: 8mm !important;
        margin: 0 !important;
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important;
        justify-content: center !important;
        text-align: center !important;
    }
    body.is-admin .dia-salas-print-title h1,
    body.is-admin .dia-disciplinas-print-title h1 {
        margin: 0 !important;
        font-size: 12px !important;
        line-height: 1 !important;
    }
    body.is-admin .dia-salas-print-title strong,
    body.is-admin .dia-disciplinas-print-title strong {
        margin-top: .5mm !important;
        font-size: 7.5px !important;
        line-height: 1 !important;
    }

    body.is-admin .dia-salas-print-table,
    body.is-admin .dia-disciplinas-print-table {
        flex: 1 1 auto !important;
        width: 100% !important;
        height: 188mm !important;
        min-height: 188mm !important;
        max-height: 188mm !important;
        table-layout: fixed !important;
        border-collapse: collapse !important;
        margin: 0 !important;
        font-size: 7px !important;
        line-height: 1.05 !important;
    }
    body.is-admin .dia-salas-print-table thead tr,
    body.is-admin .dia-disciplinas-print-table thead tr {
        height: 9mm !important;
    }
    body.is-admin .dia-salas-print-table tbody tr,
    body.is-admin .dia-disciplinas-print-table tbody tr {
        height: calc(179mm / var(--linhas-grade)) !important;
    }
    body.is-admin .dia-salas-print-table th,
    body.is-admin .dia-salas-print-table td,
    body.is-admin .dia-disciplinas-print-table th,
    body.is-admin .dia-disciplinas-print-table td {
        box-sizing: border-box !important;
        border: .45px solid #9fb2bd !important;
        padding: .5mm !important;
        text-align: center !important;
        vertical-align: middle !important;
        overflow: hidden !important;
    }
    body.is-admin .dia-salas-print-table td,
    body.is-admin .dia-disciplinas-print-table td {
        padding: 0 !important;
    }
    body.is-admin .dia-salas-print-table .sala-cell,
    body.is-admin .dia-disciplinas-print-table .disciplina-print-cell {
        box-sizing: border-box !important;
        width: 100% !important;
        min-height: 100% !important;
        margin: 0 !important;
        padding: .6mm .4mm !important;
        border: 0 !important;
        border-radius: 0 !important;
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important;
        justify-content: center !important;
        text-align: center !important;
    }
    body.is-admin .dia-salas-print-table .sala-cell strong,
    body.is-admin .dia-disciplinas-print-table .disciplina-print-cell strong {
        display: block !important;
        font-size: 6.8px !important;
        line-height: 1.05 !important;
    }
    body.is-admin .dia-disciplinas-print-table .disciplina-print-cell.aula-remota { background: #C6E0B4 !important; color: #000 !important; }
    body.is-admin .dia-disciplinas-print-table .disciplina-print-cell.aula-pi { background: #FFF2CC !important; color: #000 !important; }
    body.is-admin .dia-disciplinas-print-table .disciplina-print-cell.aula-edital { background: #F4CCCC !important; color: #000 !important; }
    body.is-admin .dia-disciplinas-print-table .disciplina-print-cell.aula-normal { background: #FFFFFF !important; color: #000 !important; }
    body.is-admin .dia-disciplinas-print-table td.turma-nao-gera { background: #E2E5EA !important; }

    body.is-admin .dia-salas-print-table .sala-cell span,
    body.is-admin .dia-disciplinas-print-table .disciplina-print-cell span {
        display: block !important;
        margin-top: .25mm !important;
        font-size: 6.1px !important;
        line-height: 1.05 !important;
    }
    body.is-admin .dia-salas-print-table .col-dia,
    body.is-admin .dia-disciplinas-print-table .col-dia { width: 5% !important; }
    body.is-admin .dia-salas-print-table .col-horario,
    body.is-admin .dia-disciplinas-print-table .col-horario { width: 10% !important; }
    body.is-admin .dia-disciplinas-print-table .col-ciclo { width: 28.333% !important; }
    body.is-admin .dia-salas-print-table .dia-label,
    body.is-admin .dia-disciplinas-print-table .dia-label {
        font-size: 9px !important;
        vertical-align: middle !important;
    }
    body.is-admin .dia-salas-print-table .horario-label,
    body.is-admin .dia-disciplinas-print-table .horario-label {
        font-size: 7px !important;
        white-space: nowrap !important;
        vertical-align: middle !important;
    }
    body.is-admin .dia-disciplinas-print-table thead th {
        font-size: 8px !important;
        color: #005c6d !important;
        background: #f1f5f6 !important;
    }
    body.is-admin .print-page-break {
        page-break-before: always !important;
        break-before: page !important;
    }
}

/* AulaMap v2026.2.14 — Laboratório Móvel e barra compacta do Dia x Sala. */
body.is-admin .dia-salas-page-header {
    align-items: end;
    gap: 20px;
}
body.is-admin .dia-salas-page-title {
    min-width: 210px;
}
body.is-admin .dia-salas-toolbar {
    margin-left: auto;
    display: grid;
    grid-template-columns: minmax(410px, 1fr) minmax(150px, 175px) 44px;
    gap: 10px;
    align-items: end;
    width: min(900px, 100%);
}
body.is-admin .dia-salas-filter-form {
    display: grid;
    grid-template-columns: repeat(2, minmax(190px, 1fr));
    gap: 10px;
    align-items: end;
}
body.is-admin .dia-salas-filter-form .form-field,
body.is-admin .dia-salas-informacoes {
    min-width: 0;
}
body.is-admin .dia-salas-filter-form label,
body.is-admin .dia-salas-informacoes-title {
    display: block;
    margin-bottom: 5px;
    color: #153746;
    font-size: .78rem;
    font-weight: 800;
}
body.is-admin .dia-salas-info-combo summary {
    min-height: 44px;
}
body.is-admin .dia-salas-info-panel {
    right: 0;
    left: auto;
    width: 280px;
}
body.is-admin .dia-salas-info-lista {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 7px;
    margin-top: 9px;
}
body.is-admin .dia-salas-info-lista span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 28px;
    padding: 5px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 800;
}
body.is-admin .dia-salas-lab-movel-info {
    margin: 10px 0 0;
    font-size: 12px;
}
body.is-admin .dia-salas-print-icon {
    width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 11px;
    background: #006879;
    color: #fff;
    text-decoration: none;
    font-size: 20px;
    box-shadow: 0 8px 18px rgba(0, 74, 88, .18);
}
body.is-admin .dia-salas-print-icon:hover {
    background: #004f5c;
    transform: translateY(-1px);
}
body.is-admin .dia-salas-print-lab-note {
    position: absolute;
    right: 1.5mm;
    bottom: 0;
    font-size: 6.5px;
    line-height: 1;
    font-weight: 700;
    color: #000;
}
body.is-admin .dia-salas-print-title {
    position: relative;
}

@media (max-width: 1180px) {
    body.is-admin .dia-salas-page-header {
        align-items: stretch;
        flex-direction: column;
    }
    body.is-admin .dia-salas-toolbar {
        margin-left: 0;
        width: 100%;
    }
}
@media (max-width: 760px) {
    body.is-admin .dia-salas-toolbar {
        grid-template-columns: 1fr 44px;
    }
    body.is-admin .dia-salas-filter-form {
        grid-column: 1 / -1;
        grid-template-columns: 1fr;
    }
    body.is-admin .dia-salas-informacoes {
        grid-column: 1;
    }
}

/* AulaMap v2026.2.15 - alinhamento do Dia x Sala e modelos oficiais enviados em PDF. */
body.is-admin .dia-salas-page-header {
    display: grid !important;
    grid-template-columns: minmax(330px, 1fr) minmax(720px, 1.65fr) !important;
    align-items: center !important;
    gap: 24px !important;
}
body.is-admin .dia-salas-page-title {
    align-self: center !important;
}
body.is-admin .dia-salas-toolbar {
    width: 100% !important;
    margin: 0 !important;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) 174px 44px !important;
    align-items: end !important;
    gap: 10px !important;
}
body.is-admin .dia-salas-filter-form {
    width: 100% !important;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    align-items: end !important;
    gap: 10px !important;
}
body.is-admin .dia-salas-filter-form .form-field,
body.is-admin .dia-salas-informacoes {
    display: flex !important;
    min-width: 0 !important;
    flex-direction: column !important;
    justify-content: flex-end !important;
}
body.is-admin .dia-salas-filter-form select,
body.is-admin .dia-salas-info-combo summary,
body.is-admin .dia-salas-print-icon {
    box-sizing: border-box !important;
    height: 44px !important;
    min-height: 44px !important;
}
body.is-admin .dia-salas-filter-form select {
    width: 100% !important;
}
body.is-admin .dia-salas-info-combo {
    width: 100% !important;
}
body.is-admin .dia-salas-info-combo summary {
    display: flex !important;
    align-items: center !important;
}

/* Impressão administrativa Dia x Sala: A4 paisagem, margens reais e grade uniforme. */
@media print {
    @page dia-salas-a4 { size: A4 landscape; margin: 5mm; }

    body.is-admin .dia-salas-print-sheet {
        page: dia-salas-a4 !important;
        box-sizing: border-box !important;
        width: 287mm !important;
        height: 200mm !important;
        min-height: 200mm !important;
        max-height: 200mm !important;
        margin: 0 auto !important;
        padding: 0 !important;
        overflow: hidden !important;
        display: flex !important;
        flex-direction: column !important;
    }
    body.is-admin .dia-salas-print-sheet .cabecalho-oficial {
        flex: 0 0 15mm !important;
        height: 15mm !important;
        min-height: 15mm !important;
        max-height: 15mm !important;
        width: 100% !important;
        margin: 0 0 1mm !important;
        padding: 0 !important;
        align-items: center !important;
        justify-content: center !important;
    }
    body.is-admin .dia-salas-print-sheet .cabecalho-oficial__item {
        height: 14mm !important;
    }
    body.is-admin .dia-salas-print-sheet .cabecalho-oficial__item img {
        max-height: 13mm !important;
    }
    body.is-admin .dia-salas-print-title {
        flex: 0 0 7mm !important;
        min-height: 7mm !important;
        max-height: 7mm !important;
        margin: 0 0 1mm !important;
        justify-content: center !important;
    }
    body.is-admin .dia-salas-print-title h1 {
        font-size: 12px !important;
    }
    body.is-admin .dia-salas-print-title strong {
        font-size: 7px !important;
    }
    body.is-admin .dia-salas-print-table {
        flex: 0 0 176mm !important;
        width: 100% !important;
        height: 176mm !important;
        min-height: 176mm !important;
        max-height: 176mm !important;
        min-width: 0 !important;
        table-layout: fixed !important;
        border-collapse: collapse !important;
        margin: 0 !important;
        font-size: 6.8px !important;
        line-height: 1 !important;
    }
    body.is-admin .dia-salas-print-table .col-dia { width: 4.4% !important; }
    body.is-admin .dia-salas-print-table .col-horario { width: 7.6% !important; }
    body.is-admin .dia-salas-print-table .col-sala { width: auto !important; }
    body.is-admin .dia-salas-print-table thead tr,
    body.is-admin .dia-salas-print-table thead th {
        height: 7mm !important;
        min-height: 7mm !important;
        max-height: 7mm !important;
    }
    body.is-admin .dia-salas-print-table tbody tr,
    body.is-admin .dia-salas-print-table tbody th,
    body.is-admin .dia-salas-print-table tbody td {
        height: var(--altura-linha) !important;
        min-height: var(--altura-linha) !important;
        max-height: var(--altura-linha) !important;
    }
    body.is-admin .dia-salas-print-table th,
    body.is-admin .dia-salas-print-table td {
        box-sizing: border-box !important;
        border: .45px solid #9fb2bd !important;
        padding: .25mm !important;
        text-align: center !important;
        vertical-align: middle !important;
        overflow: hidden !important;
    }
    body.is-admin .dia-salas-print-table .cabecalho-dia,
    body.is-admin .dia-salas-print-table .cabecalho-horario,
    body.is-admin .dia-salas-print-table .sala-header-th {
        font-size: 6.2px !important;
        line-height: 1 !important;
    }
    body.is-admin .dia-salas-print-table .dia-label {
        font-size: 8px !important;
        line-height: 1 !important;
    }
    body.is-admin .dia-salas-print-table .horario-label {
        font-size: 6.3px !important;
        line-height: 1 !important;
        white-space: nowrap !important;
    }
    body.is-admin .dia-salas-print-table td {
        padding: 0 !important;
    }
    body.is-admin .dia-salas-print-table .sala-cell {
        box-sizing: border-box !important;
        width: 100% !important;
        height: 100% !important;
        min-height: 100% !important;
        margin: 0 !important;
        padding: .3mm .2mm !important;
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important;
        justify-content: center !important;
        overflow: hidden !important;
    }
    body.is-admin .dia-salas-print-table .sala-cell strong {
        font-size: 6.1px !important;
        line-height: 1 !important;
    }
    body.is-admin .dia-salas-print-table .sala-cell span {
        margin-top: .15mm !important;
        font-size: 5.5px !important;
        line-height: 1 !important;
    }
}

/* Grade Horária oficial: modelo do PDF de referência, 3 ciclos por página. */
body.page-horarios .horario-modelo-oficial,
body.is-embed.is-embed-horarios .horario-modelo-oficial {
    width: 100% !important;
    margin: 0 !important;
    padding: 0 0 24px !important;
    overflow-x: auto !important;
    background: #ffffff !important;
}
body.page-horarios .horario-modelo-page,
body.is-embed.is-embed-horarios .horario-modelo-page {
    box-sizing: border-box !important;
    position: relative !important;
    width: min(1120px, calc(100vw - 32px)) !important;
    min-height: 792px !important;
    margin: 0 auto 20px !important;
    padding: 34px 34px 22px !important;
    overflow: hidden !important;
    background: #ffffff !important;
    box-shadow: 0 10px 26px rgba(15, 36, 51, .10) !important;
}
body.page-horarios .horario-modelo-page .cabecalho-oficial,
body.is-embed.is-embed-horarios .horario-modelo-page .cabecalho-oficial {
    box-sizing: border-box !important;
    width: 100% !important;
    height: 78px !important;
    min-height: 78px !important;
    max-height: 78px !important;
    margin: 0 0 3px !important;
    grid-template-columns: 1fr 1.75fr 2.05fr 2fr !important;
    gap: 18px !important;
}
body.page-horarios .horario-modelo-page .cabecalho-oficial__item,
body.is-embed.is-embed-horarios .horario-modelo-page .cabecalho-oficial__item {
    height: 74px !important;
}
body.page-horarios .horario-modelo-page .cabecalho-oficial img,
body.is-embed.is-embed-horarios .horario-modelo-page .cabecalho-oficial img {
    max-height: 68px !important;
}
body.page-horarios .horario-modelo-periodo,
body.is-embed.is-embed-horarios .horario-modelo-periodo {
    position: absolute !important;
    top: 112px !important;
    right: 38px !important;
    color: #000000 !important;
    font: 900 17px/1 Arial, Helvetica, sans-serif !important;
}
body.page-horarios .horario-modelo-ciclo,
body.is-embed.is-embed-horarios .horario-modelo-ciclo {
    width: 100% !important;
    margin: 0 0 30px !important;
    break-inside: avoid !important;
}
body.page-horarios .horario-modelo-ciclo h2,
body.is-embed.is-embed-horarios .horario-modelo-ciclo h2 {
    margin: 0 0 15px !important;
    color: #000000 !important;
    text-align: center !important;
    font: 900 19px/1 Arial, Helvetica, sans-serif !important;
}
body.page-horarios .horario-modelo-table,
body.is-embed.is-embed-horarios .horario-modelo-table {
    width: 100% !important;
    table-layout: fixed !important;
    border-collapse: collapse !important;
    color: #000000 !important;
}
body.page-horarios .horario-modelo-table th,
body.page-horarios .horario-modelo-table td,
body.is-embed.is-embed-horarios .horario-modelo-table th,
body.is-embed.is-embed-horarios .horario-modelo-table td {
    box-sizing: border-box !important;
    height: 17px !important;
    min-height: 17px !important;
    max-height: 17px !important;
    border: 1px solid #000000 !important;
    padding: 1px 3px !important;
    overflow: hidden !important;
    text-align: center !important;
    vertical-align: middle !important;
    white-space: nowrap !important;
    font: 400 8px/1 Arial, Helvetica, sans-serif !important;
    background: #ffffff !important;
}
body.page-horarios .horario-modelo-table thead th,
body.is-embed.is-embed-horarios .horario-modelo-table thead th {
    background: #B8C9E7 !important;
    font-weight: 900 !important;
}
body.page-horarios .horario-modelo-table tbody th,
body.is-embed.is-embed-horarios .horario-modelo-table tbody th {
    width: 76px !important;
    background: #D9E2F3 !important;
    font-weight: 900 !important;
}
body.page-horarios .horario-modelo-table td.aula-pi,
body.is-embed.is-embed-horarios .horario-modelo-table td.aula-pi { background: #FFE699 !important; color: #9C6500 !important; font-weight: 900 !important; }
body.page-horarios .horario-modelo-table td.aula-edital,
body.is-embed.is-embed-horarios .horario-modelo-table td.aula-edital { background: #F4CCCC !important; color: #C00000 !important; font-weight: 900 !important; }
body.page-horarios .horario-modelo-table td.aula-remota,
body.is-embed.is-embed-horarios .horario-modelo-table td.aula-remota { background: #C6E0B4 !important; color: #000000 !important; }
body.page-horarios .horario-modelo-legenda,
body.is-embed.is-embed-horarios .horario-modelo-legenda {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 150px !important;
    width: calc(100% - 150px) !important;
    margin: 10px 75px 0 !important;
}
body.page-horarios .horario-modelo-legenda span,
body.is-embed.is-embed-horarios .horario-modelo-legenda span {
    display: block !important;
    padding: 3px 8px !important;
    text-align: center !important;
    font: 900 8px/1 Arial, Helvetica, sans-serif !important;
}

/* Mapa de Salas oficial: modelo do PDF de referência em A4 retrato. */
body.page-mapa-salas .mapa-modelo-oficial,
body.is-embed .mapa-modelo-oficial {
    width: 100% !important;
    margin: 0 !important;
    padding: 0 0 24px !important;
    overflow-x: auto !important;
    background: #ffffff !important;
}
body.page-mapa-salas .mapa-modelo-page,
body.is-embed .mapa-modelo-page {
    box-sizing: border-box !important;
    width: min(794px, calc(100vw - 32px)) !important;
    min-height: 1120px !important;
    margin: 0 auto 20px !important;
    padding: 28px 44px 22px !important;
    overflow: hidden !important;
    background: #ffffff !important;
    box-shadow: 0 10px 26px rgba(15, 36, 51, .10) !important;
}
body.page-mapa-salas .mapa-modelo-page .cabecalho-oficial,
body.is-embed .mapa-modelo-page .cabecalho-oficial {
    width: 100% !important;
    height: 70px !important;
    min-height: 70px !important;
    max-height: 70px !important;
    margin: 0 0 4px !important;
    grid-template-columns: 1fr 1.75fr 2.05fr 2fr !important;
    gap: 14px !important;
}
body.page-mapa-salas .mapa-modelo-page .cabecalho-oficial__item,
body.is-embed .mapa-modelo-page .cabecalho-oficial__item {
    height: 66px !important;
}
body.page-mapa-salas .mapa-modelo-page .cabecalho-oficial img,
body.is-embed .mapa-modelo-page .cabecalho-oficial img {
    max-height: 60px !important;
}
body.page-mapa-salas .mapa-modelo-title-row,
body.is-embed .mapa-modelo-title-row {
    display: grid !important;
    grid-template-columns: 1fr auto 1fr !important;
    align-items: end !important;
    margin: 0 0 8px !important;
}
body.page-mapa-salas .mapa-modelo-title-row::before,
body.is-embed .mapa-modelo-title-row::before {
    content: '';
}
body.page-mapa-salas .mapa-modelo-title-row h2,
body.is-embed .mapa-modelo-title-row h2 {
    margin: 0 !important;
    color: #E10000 !important;
    text-align: center !important;
    font: 900 21px/1 Arial, Helvetica, sans-serif !important;
}
body.page-mapa-salas .mapa-modelo-title-row strong,
body.is-embed .mapa-modelo-title-row strong {
    justify-self: end !important;
    color: #E10000 !important;
    font: 900 18px/1 Arial, Helvetica, sans-serif !important;
}
body.page-mapa-salas .mapa-modelo-grid,
body.is-embed .mapa-modelo-grid {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 16px !important;
}
body.page-mapa-salas .mapa-modelo-dia,
body.is-embed .mapa-modelo-dia {
    display: grid !important;
    grid-template-columns: 39px minmax(0, 1fr) !important;
    width: 100% !important;
    border: 2px solid #0070C0 !important;
    background: #ffffff !important;
    overflow: hidden !important;
}
body.page-mapa-salas .mapa-modelo-dia-label,
body.is-embed .mapa-modelo-dia-label {
    background: #0070C0 !important;
    color: #ffffff !important;
    writing-mode: vertical-rl !important;
    transform: rotate(180deg) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    font: 900 19px/1 Arial, Helvetica, sans-serif !important;
}
body.page-mapa-salas .mapa-modelo-table,
body.is-embed .mapa-modelo-table {
    width: 100% !important;
    table-layout: fixed !important;
    border-collapse: collapse !important;
    color: #000000 !important;
    font-family: Arial, Helvetica, sans-serif !important;
}
body.page-mapa-salas .mapa-modelo-table th,
body.page-mapa-salas .mapa-modelo-table td,
body.is-embed .mapa-modelo-table th,
body.is-embed .mapa-modelo-table td {
    box-sizing: border-box !important;
    height: 16px !important;
    border-bottom: 1px solid #8f8f8f !important;
    padding: 1px 4px !important;
    color: #000000 !important;
    vertical-align: middle !important;
    font: 400 7.2px/1 Arial, Helvetica, sans-serif !important;
}
body.page-mapa-salas .mapa-modelo-table tr:nth-child(odd) td,
body.is-embed .mapa-modelo-table tr:nth-child(odd) td {
    background: #D9D9D9 !important;
}
body.page-mapa-salas .mapa-modelo-table tr:nth-child(even) td,
body.is-embed .mapa-modelo-table tr:nth-child(even) td {
    background: #FFFFFF !important;
}
body.page-mapa-salas .mapa-modelo-table .ciclo-start th,
body.page-mapa-salas .mapa-modelo-table .ciclo-start td,
body.is-embed .mapa-modelo-table .ciclo-start th,
body.is-embed .mapa-modelo-table .ciclo-start td {
    border-top: 1px solid #000000 !important;
}
body.page-mapa-salas .mapa-modelo-table .ciclo-end th,
body.page-mapa-salas .mapa-modelo-table .ciclo-end td,
body.is-embed .mapa-modelo-table .ciclo-end th,
body.is-embed .mapa-modelo-table .ciclo-end td {
    border-bottom: 1px solid #000000 !important;
}
body.page-mapa-salas .mapa-modelo-table .mapa-embed-ciclo,
body.is-embed .mapa-modelo-table .mapa-embed-ciclo {
    width: 86px !important;
    background: #FFFFFF !important;
    border-right: 1px solid #000000 !important;
    text-align: center !important;
    font: 900 10px/1 Arial, Helvetica, sans-serif !important;
}
body.page-mapa-salas .mapa-modelo-table .mapa-embed-horario,
body.is-embed .mapa-modelo-table .mapa-embed-horario { width: 88px !important; text-align: center !important; }
body.page-mapa-salas .mapa-modelo-table .mapa-embed-disciplina,
body.is-embed .mapa-modelo-table .mapa-embed-disciplina { width: 34% !important; }
body.page-mapa-salas .mapa-modelo-table .mapa-embed-professor,
body.is-embed .mapa-modelo-table .mapa-embed-professor { width: 20% !important; text-align: center !important; }
body.page-mapa-salas .mapa-modelo-table .mapa-embed-modalidade,
body.is-embed .mapa-modelo-table .mapa-embed-modalidade { width: 15% !important; text-align: center !important; }
body.page-mapa-salas .mapa-modelo-table .mapa-embed-sala,
body.is-embed .mapa-modelo-table .mapa-embed-sala { width: 22% !important; text-align: center !important; }
body.page-mapa-salas .mapa-modelo-datas-importantes,
body.is-embed .mapa-modelo-datas-importantes {
    width: 100% !important;
    margin: 46px 0 0 !important;
    padding: 10px 0 0 !important;
    border-top: 3px solid #0070C0 !important;
    text-align: center !important;
}
body.page-mapa-salas .mapa-modelo-datas-importantes h2,
body.is-embed .mapa-modelo-datas-importantes h2 {
    margin: 0 0 20px !important;
    color: #0070C0 !important;
    font: 900 24px/1 Arial, Helvetica, sans-serif !important;
}
body.page-mapa-salas .mapa-modelo-datas-importantes .mapa-embed-data-row,
body.is-embed .mapa-modelo-datas-importantes .mapa-embed-data-row {
    display: block !important;
    margin: 0 0 20px !important;
    text-align: center !important;
}
body.page-mapa-salas .mapa-modelo-datas-importantes strong,
body.is-embed .mapa-modelo-datas-importantes strong {
    display: block !important;
    margin-bottom: 7px !important;
    color: #E10000 !important;
    text-align: center !important;
    font: 900 13px/1.1 Arial, Helvetica, sans-serif !important;
}
body.page-mapa-salas .mapa-modelo-datas-importantes span,
body.is-embed .mapa-modelo-datas-importantes span {
    display: block !important;
    color: #000000 !important;
    text-align: center !important;
    font: 400 19px/1.1 Arial, Helvetica, sans-serif !important;
}

@media print {
    @page horario-modelo-a4 { size: A4 landscape; margin: 8mm; }
    @page mapa-modelo-a4 { size: A4 portrait; margin: 8mm; }

    body.page-horarios,
    body.is-embed.is-embed-horarios {
        background: #ffffff !important;
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }
    body.page-horarios .horario-modelo-page,
    body.is-embed.is-embed-horarios .horario-modelo-page {
        page: horario-modelo-a4 !important;
        box-sizing: border-box !important;
        width: 281mm !important;
        height: 194mm !important;
        min-height: 194mm !important;
        max-height: 194mm !important;
        margin: 0 !important;
        padding: 8mm 9mm 5mm !important;
        box-shadow: none !important;
        page-break-after: always !important;
        break-after: page !important;
    }
    body.page-horarios .horario-modelo-page:last-child,
    body.is-embed.is-embed-horarios .horario-modelo-page:last-child {
        page-break-after: auto !important;
        break-after: auto !important;
    }
    body.page-horarios .horario-modelo-page .cabecalho-oficial,
    body.is-embed.is-embed-horarios .horario-modelo-page .cabecalho-oficial {
        height: 25mm !important;
        min-height: 25mm !important;
        max-height: 25mm !important;
        margin-bottom: 1mm !important;
    }
    body.page-horarios .horario-modelo-page .cabecalho-oficial__item,
    body.is-embed.is-embed-horarios .horario-modelo-page .cabecalho-oficial__item { height: 24mm !important; }
    body.page-horarios .horario-modelo-page .cabecalho-oficial img,
    body.is-embed.is-embed-horarios .horario-modelo-page .cabecalho-oficial img { max-height: 22mm !important; }
    body.page-horarios .horario-modelo-periodo,
    body.is-embed.is-embed-horarios .horario-modelo-periodo {
        top: 35mm !important;
        right: 10mm !important;
        font-size: 12px !important;
    }
    body.page-horarios .horario-modelo-ciclo,
    body.is-embed.is-embed-horarios .horario-modelo-ciclo { margin-bottom: 8mm !important; }
    body.page-horarios .horario-modelo-ciclo h2,
    body.is-embed.is-embed-horarios .horario-modelo-ciclo h2 { margin-bottom: 4mm !important; font-size: 14px !important; }
    body.page-horarios .horario-modelo-table th,
    body.page-horarios .horario-modelo-table td,
    body.is-embed.is-embed-horarios .horario-modelo-table th,
    body.is-embed.is-embed-horarios .horario-modelo-table td {
        height: 4.3mm !important;
        min-height: 4.3mm !important;
        max-height: 4.3mm !important;
        font-size: 7.2px !important;
    }
    body.page-horarios .horario-modelo-legenda,
    body.is-embed.is-embed-horarios .horario-modelo-legenda {
        gap: 42mm !important;
        width: calc(100% - 36mm) !important;
        margin: 3mm 18mm 0 !important;
    }

    body.page-mapa-salas,
    body.is-embed:not(.is-embed-horarios) {
        background: #ffffff !important;
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }
    body.page-mapa-salas .mapa-modelo-page,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-page {
        page: mapa-modelo-a4 !important;
        box-sizing: border-box !important;
        width: 194mm !important;
        height: 281mm !important;
        min-height: 281mm !important;
        max-height: 281mm !important;
        margin: 0 !important;
        padding: 7mm 8mm 5mm !important;
        box-shadow: none !important;
        page-break-after: always !important;
        break-after: page !important;
    }
    body.page-mapa-salas .mapa-modelo-page:last-child,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-page:last-child {
        page-break-after: auto !important;
        break-after: auto !important;
    }
    body.page-mapa-salas .mapa-modelo-page .cabecalho-oficial,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-page .cabecalho-oficial {
        height: 24mm !important;
        min-height: 24mm !important;
        max-height: 24mm !important;
        margin-bottom: 1mm !important;
    }
    body.page-mapa-salas .mapa-modelo-page .cabecalho-oficial__item,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-page .cabecalho-oficial__item { height: 23mm !important; }
    body.page-mapa-salas .mapa-modelo-page .cabecalho-oficial img,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-page .cabecalho-oficial img { max-height: 21mm !important; }
    body.page-mapa-salas .mapa-modelo-title-row,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-title-row { margin-bottom: 2mm !important; }
    body.page-mapa-salas .mapa-modelo-title-row h2,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-title-row h2 { font-size: 15px !important; }
    body.page-mapa-salas .mapa-modelo-title-row strong,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-title-row strong { font-size: 13px !important; }
    body.page-mapa-salas .mapa-modelo-grid,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-grid { gap: 4mm !important; }
    body.page-mapa-salas .mapa-modelo-dia,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-dia { grid-template-columns: 10mm minmax(0, 1fr) !important; }
    body.page-mapa-salas .mapa-modelo-dia-label,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-dia-label { font-size: 13px !important; }
    body.page-mapa-salas .mapa-modelo-table th,
    body.page-mapa-salas .mapa-modelo-table td,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-table th,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-table td {
        height: 3.55mm !important;
        min-height: 3.55mm !important;
        max-height: 3.55mm !important;
        padding: .2mm .8mm !important;
        font-size: 6.5px !important;
    }
    body.page-mapa-salas .mapa-modelo-table .mapa-embed-ciclo,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-table .mapa-embed-ciclo { width: 22mm !important; font-size: 8px !important; }
    body.page-mapa-salas .mapa-modelo-table .mapa-embed-horario,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-table .mapa-embed-horario { width: 22mm !important; }
    body.page-mapa-salas .mapa-modelo-datas-importantes,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-datas-importantes { margin-top: 12mm !important; padding-top: 3mm !important; }
    body.page-mapa-salas .mapa-modelo-datas-importantes h2,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-datas-importantes h2 { font-size: 18px !important; margin-bottom: 6mm !important; }
    body.page-mapa-salas .mapa-modelo-datas-importantes .mapa-embed-data-row,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-datas-importantes .mapa-embed-data-row { margin-bottom: 5mm !important; }
    body.page-mapa-salas .mapa-modelo-datas-importantes strong,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-datas-importantes strong { font-size: 10px !important; }
    body.page-mapa-salas .mapa-modelo-datas-importantes span,
    body.is-embed:not(.is-embed-horarios) .mapa-modelo-datas-importantes span { font-size: 14px !important; }
}

@media (max-width: 1120px) {
    body.is-admin .dia-salas-page-header {
        grid-template-columns: 1fr !important;
        align-items: stretch !important;
    }
    body.is-admin .dia-salas-toolbar {
        grid-template-columns: minmax(0, 1fr) 174px 44px !important;
    }
}
@media (max-width: 760px) {
    body.is-admin .dia-salas-toolbar {
        grid-template-columns: 1fr 44px !important;
    }
    body.is-admin .dia-salas-filter-form {
        grid-column: 1 / -1 !important;
        grid-template-columns: 1fr !important;
    }
}

/* Refinos de paginação da v2026.2.15. */
@media print {
    body.is-admin .dia-salas-print-sheet {
        display: block !important;
        height: auto !important;
        min-height: 0 !important;
        max-height: none !important;
    }
    body.is-admin .dia-salas-print-sheet .cabecalho-oficial {
        display: grid !important;
        height: 15mm !important;
        min-height: 15mm !important;
        max-height: 15mm !important;
    }
    body.is-admin .dia-salas-print-title {
        display: flex !important;
        height: 7mm !important;
        min-height: 7mm !important;
        max-height: 7mm !important;
    }
    body.is-admin .dia-salas-print-table {
        display: table !important;
        height: 168mm !important;
        min-height: 168mm !important;
        max-height: 168mm !important;
    }
}

body.page-mapa-salas .mapa-modelo-title-row,
body.is-embed .mapa-modelo-title-row {
    position: relative !important;
    display: block !important;
    min-height: 24px !important;
    text-align: center !important;
}
body.page-mapa-salas .mapa-modelo-title-row h2,
body.is-embed .mapa-modelo-title-row h2 {
    display: block !important;
    width: 100% !important;
    white-space: nowrap !important;
}
body.page-mapa-salas .mapa-modelo-title-row strong,
body.is-embed .mapa-modelo-title-row strong {
    position: absolute !important;
    right: 0 !important;
    bottom: 0 !important;
    white-space: nowrap !important;
}
body.page-mapa-salas .mapa-modelo-dia-label,
body.is-embed .mapa-modelo-dia-label {
    writing-mode: horizontal-tb !important;
    transform: none !important;
    position: relative !important;
    overflow: hidden !important;
}
body.page-mapa-salas .mapa-modelo-dia-label span,
body.is-embed .mapa-modelo-dia-label span {
    display: block !important;
    white-space: nowrap !important;
    transform: rotate(-90deg) !important;
    transform-origin: center center !important;
}

/* AulaMap v2026.2.16 - Planejamento por período */
.planejamento-periodo-table table { width: 100%; }
.planejamento-periodo-table th,
.planejamento-periodo-table td { text-align: center; vertical-align: middle; }
.planejamento-periodo-table th:first-child,
.planejamento-periodo-table td:first-child { text-align: left; }
.dashboard-kpi-note { margin: 10px 0 0; font-size: 12px; }


/* AulaMap v2026.2.18 — modal compacto de Período Letivo */
.periodo-letivo-form {
    display: grid;
    gap: 18px;
}
.periodo-letivo-identificacao {
    display: grid;
    grid-template-columns: minmax(130px, .7fr) minmax(180px, 1fr) minmax(190px, .9fr);
    gap: 14px;
    align-items: end;
    padding: 14px;
    border: 1px solid var(--cps-borda, #cbdde4);
    border-radius: 14px;
    background: #f8fbfc;
}
.periodo-letivo-periodos {
    display: grid;
    grid-template-columns: repeat(2, minmax(280px, 1fr));
    gap: 12px 16px;
}
.periodo-date-range {
    padding: 13px 14px;
    border: 1px solid var(--cps-borda, #cbdde4);
    border-radius: 14px;
    background: #fff;
}
.periodo-date-range > label {
    display: block;
    margin-bottom: 8px;
    font-weight: 700;
}
.periodo-date-range__inputs {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 18px minmax(0, 1fr);
    align-items: center;
    gap: 8px;
}
.periodo-date-range__inputs > span {
    text-align: center;
    font-weight: 800;
    color: #667085;
}
.periodo-date-range__inputs input {
    width: 100%;
    min-width: 0;
}
.periodo-letivo-tolerancia .input-with-suffix {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
}
.periodo-letivo-tolerancia .input-with-suffix span {
    color: #667085;
    font-size: 13px;
}
.periodo-letivo-observacoes {
    grid-column: 1 / -1;
}
.periodo-letivo-observacoes textarea {
    min-height: 92px;
    resize: vertical;
}
.modal-card:has(.periodo-letivo-form) {
    width: min(900px, 96vw);
}
@media (max-width: 760px) {
    .periodo-letivo-identificacao,
    .periodo-letivo-periodos {
        grid-template-columns: 1fr;
    }
}

.horario-modelo-observacoes {
    margin-top: 7px;
    padding: 6px 8px;
    border-top: 1px solid #111;
    color: #111;
    font-size: 10px;
    line-height: 1.25;
    text-align: left;
}
@media print {
    .horario-modelo-observacoes {
        margin-top: 4px;
        padding: 4px 6px;
        font-size: 8px;
    }
}


/* AulaMap v2026.2.19 — relatórios acadêmicos e ordenação de períodos */
.grade-professor-meta--identificacao {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 24px;
    align-items: start;
    margin: 10px 0 16px;
}
.grade-professor-meta-professor {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    min-width: 0;
}
.grade-professor-meta-professor span {
    font-weight: 700;
    line-height: 1.2;
}
.grade-professor-meta-professor strong {
    display: block;
    margin-top: 3px;
    font-size: 15px;
    line-height: 1.25;
    overflow-wrap: anywhere;
}
.grade-professor-meta-dados {
    min-width: 230px;
    text-align: right;
}
.grade-professor-meta-dados p {
    margin: 0 0 5px;
    white-space: nowrap;
}
.professor-pi-disciplina-completa {
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    overflow-wrap: anywhere;
}

@media print {
    @page professor-pi-retrato {
        size: A4 portrait;
        margin: 10mm;
    }
    @page grade-professor-paisagem {
        size: A4 landscape;
        margin: 10mm;
    }
    .relatorio-pi-oficial {
        page: professor-pi-retrato;
        width: 100% !important;
        max-width: none !important;
        margin: 0 !important;
        padding: 0 !important;
        box-shadow: none !important;
        border: 0 !important;
    }
    .relatorio-pi-oficial h1 {
        font-size: 18px !important;
        margin: 7px 0 10px !important;
    }
    .professor-pi-table {
        width: 100% !important;
        table-layout: fixed;
        font-size: 9px !important;
    }
    .professor-pi-table th,
    .professor-pi-table td {
        padding: 3px 4px !important;
        vertical-align: middle !important;
    }
    .professor-pi-table th:nth-child(1) { width: 15%; }
    .professor-pi-table th:nth-child(2) { width: 45%; }
    .professor-pi-table th:nth-child(3) { width: 30%; }
    .professor-pi-table th:nth-child(4) { width: 10%; }
    .professor-pi-table .professor-mini-foto {
        width: 36px !important;
        height: 36px !important;
    }
    .grade-professor-oficial {
        page: grade-professor-paisagem;
        width: 100% !important;
        max-width: none !important;
        margin: 0 !important;
        padding: 0 !important;
        box-shadow: none !important;
        border: 0 !important;
    }
    .grade-professor-meta--identificacao {
        grid-template-columns: minmax(0, 1fr) 245px !important;
        gap: 18px !important;
        margin: 6px 0 10px !important;
    }
    .grade-professor-meta-professor strong {
        font-size: 12px !important;
    }
    .grade-professor-meta-dados {
        min-width: 0 !important;
        font-size: 10px !important;
    }
    .grade-professor-meta-dados p {
        margin-bottom: 3px !important;
    }
    .horario-modelo-observacoes {
        display: none !important;
    }
}

/* AulaMap v2026.2.20 — projetos, parcerias e integração DOCIE */
.crud-toolbar-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.project-exchange-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin-bottom: 18px; }
.project-exchange-card { display: flex; flex-direction: column; gap: 12px; }
.project-exchange-card h3, .project-exchange-card p { margin: 0; }
.project-exchange-card form { display: grid; gap: 12px; }
.project-exchange-warning { border-left: 5px solid #d97706; background: #fff8e8; }
.project-exchange-features { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.project-exchange-features > div { border: 1px solid #cddce5; border-radius: 12px; padding: 14px; background: #f8fbfc; }
.project-exchange-features strong, .project-exchange-features span { display: block; }
.project-exchange-features span { margin-top: 5px; color: #526b7a; }
.button.disabled { pointer-events: none; opacity: .55; }
@media (max-width: 800px) {
    .project-exchange-grid, .project-exchange-features { grid-template-columns: 1fr; }
}


/* AulaMap v2026.2.20 — alinhamento do cabeçalho Grade x Professor */
.grade-professor-meta-professor .grade-professor-meta-titulo {
    font-weight: 400;
}
.grade-professor-meta-dados {
    display: grid;
    justify-content: end;
    align-content: start;
    row-gap: 5px;
    text-align: initial;
}
.grade-professor-meta-linha {
    display: grid;
    grid-template-columns: 82px minmax(130px, auto);
    column-gap: 6px;
    align-items: baseline;
}
.grade-professor-meta-rotulo {
    text-align: right;
    font-weight: 400;
    white-space: nowrap;
}
.grade-professor-meta-valor {
    text-align: left;
    font-weight: 700;
    white-space: nowrap;
}
@media print {
    .grade-professor-meta-dados {
        row-gap: 3px !important;
    }
    .grade-professor-meta-linha {
        grid-template-columns: 70px 135px !important;
        column-gap: 5px !important;
    }
}

/* AulaMap v2026.2.21 — Projetos no fluxo funcional do DOCIE */
.project-docie-hero { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 20px; align-items: start; }
.project-docie-hero h2 { margin: 4px 0 8px; }
.project-docie-eyebrow { font-size: 12px; font-weight: 800; letter-spacing: .12em; color: #00758a; }
.project-docie-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.project-docie-meta { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 16px; }
.project-docie-meta > div { border: 1px solid #d6e4ea; border-radius: 12px; padding: 11px 12px; background: #f7fbfc; }
.project-docie-meta span, .project-docie-meta strong { display: block; }
.project-docie-meta span { color: #66808e; font-size: 12px; margin-bottom: 3px; }
.project-docie-text { border-top: 1px solid #dce8ed; padding-top: 14px; margin-top: 14px; }
.project-docie-text p { margin: 6px 0 0; line-height: 1.55; }
.project-docie-tags { display: flex; gap: 7px; flex-wrap: wrap; margin-top: 14px; }
.project-docie-tags span { border-radius: 999px; background: #e8f5f7; color: #075c6b; padding: 5px 10px; font-size: 12px; font-weight: 700; }
.project-docie-section-title { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 15px; }
.project-docie-section-title h3, .project-docie-section-title p { margin: 0; }
.project-docie-section-title span { color: #00859a; font-size: 11px; letter-spacing: .14em; font-weight: 900; }
.project-member-create { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; padding: 14px; border-radius: 14px; background: #f2f8fa; margin-bottom: 16px; }
.project-member-create__action { align-self: end; }
.project-member-list { display: grid; gap: 12px; }
.project-member-card { border: 1px solid #d0e1e8; border-radius: 14px; padding: 12px; background: #fff; }
.project-member-card.is-inactive { opacity: .7; background: #f5f5f5; }
.project-member-edit { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 9px; align-items: end; }
.project-member-name { grid-column: span 2; align-self: center; }
.project-member-name strong, .project-member-name span { display: block; }
.project-member-name span { color: #617887; font-size: 12px; margin-top: 3px; }
.project-member-actions { align-self: end; }
.project-member-secondary-actions { display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; border-top: 1px solid #e4ecef; padding-top: 9px; margin-top: 9px; }
.project-member-secondary-actions form { display: flex; gap: 6px; align-items: center; }
.project-docie-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.project-mini-list { display: grid; gap: 8px; }
.project-mini-list article { display: grid; gap: 3px; border: 1px solid #dbe7ec; border-radius: 10px; padding: 10px 12px; }
.project-mini-list span { color: #5e7582; font-size: 12px; }
.project-report-project { margin-bottom: 15px; border: 1px solid #cfdde4; border-radius: 12px; overflow: hidden; break-inside: avoid; }
.project-report-project header { display: flex; justify-content: space-between; gap: 15px; padding: 11px 13px; background: #eaf4f7; }
.project-report-project header h3, .project-report-project header p { margin: 0; }
.project-report-members { width: 100%; border-collapse: collapse; }
.project-report-members th, .project-report-members td { padding: 7px 9px; border: 1px solid #d8e2e7; }
.project-report-members th { background: #f1f5f7; }
.project-report-periods { font-size: 12px; color: #526b78; }
@media (max-width: 1050px) {
    .project-docie-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .project-member-create { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .project-member-edit { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
    .project-docie-hero, .project-docie-columns { grid-template-columns: 1fr; }
    .project-docie-actions { justify-content: flex-start; }
    .project-docie-meta, .project-member-create, .project-member-edit { grid-template-columns: 1fr; }
    .project-member-name { grid-column: auto; }
}
@media print {
    .project-report-project { border-color: #000; border-radius: 0; }
    .project-report-project header { background: #ddd !important; color: #000 !important; }
    .project-report-members th, .project-report-members td { border-color: #000; font-size: 9px; }
}
.project-docie-header { display: flex; justify-content: space-between; gap: 20px; align-items: flex-start; }
.project-docie-header h2 { margin: 4px 0 5px; }
.project-docie-kicker { color: #00788c; font-size: 11px; font-weight: 900; letter-spacing: .13em; }
.project-docie-metrics { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; margin-bottom: 16px; }
.project-docie-metrics article { background: #fff; border: 1px solid #d5e4ea; border-radius: 14px; padding: 13px; }
.project-docie-metrics span, .project-docie-metrics strong { display: block; }
.project-docie-metrics span { color: #667d89; font-size: 12px; }
.project-docie-metrics strong { font-size: 22px; margin-top: 4px; color: #0a5968; }
.project-docie-details { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 0; }
.project-docie-details > div { border: 1px solid #dce7ec; border-radius: 10px; padding: 10px; }
.project-docie-details dt { color: #647986; font-size: 11px; font-weight: 800; text-transform: uppercase; }
.project-docie-details dd { margin: 4px 0 0; font-weight: 700; }
.project-report-sheet { background: #fff; padding: 18px; }
.project-report-title { text-align: center; margin-bottom: 18px; }
.project-report-title span { font-size: 11px; color: #00788c; font-weight: 900; letter-spacing: .13em; }
.project-report-title h1 { margin: 4px 0 2px; }
.project-report-title p { margin: 0; color: #607785; }
.project-report-period { margin-bottom: 22px; break-inside: avoid; }
.project-report-period > h2 { border-bottom: 2px solid #007c94; padding-bottom: 5px; }
.project-report-company { margin: 12px 0 18px; }
.project-report-company > h3 { display: flex; justify-content: space-between; gap: 12px; background: #e8f3f6; padding: 8px 10px; margin: 0 0 8px; }
.project-report-company > h3 small { color: #526f7c; }
.project-report-card { border: 1px solid #cfdee5; padding: 10px 12px; margin-bottom: 9px; break-inside: avoid; }
.project-report-card h4, .project-report-card p { margin: 0; }
.project-report-card p { color: #5c7480; font-size: 12px; margin-top: 3px; }
.project-report-card ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px 12px; margin: 10px 0 0; padding-left: 18px; }
.project-report-card li strong, .project-report-card li span { display: block; }
.project-report-card li span { color: #607782; font-size: 11px; }
@media (max-width: 900px) {
    .project-docie-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .project-docie-details { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 650px) {
    .project-docie-header { display: block; }
    .project-docie-details, .project-report-card ul { grid-template-columns: 1fr; }
}
@media print {
    @page { size: A4 portrait; margin: 10mm; }
    .project-report-sheet { padding: 0 !important; }
    .project-report-period { break-inside: auto; }
    .project-report-card { border-color: #000; }
}
