/* PORTAL CNI v2.6.9 — base visual compartilhada das áreas internas */
:is(.cni-student-area, .cni-internal-area) {
    box-sizing: border-box;
    color: var(--cni-dark);
    font-family: var(--cni-font-body);
}

:is(.cni-student-area, .cni-internal-area) *,
:is(.cni-student-area, .cni-internal-area) *::before,
:is(.cni-student-area, .cni-internal-area) *::after {
    box-sizing: inherit;
}

:is(.cni-student-area, .cni-internal-area) :is(h1, h2, h3, h4) {
    font-family: var(--cni-font-heading);
}

:is(.cni-student-area, .cni-internal-area) :is(a, button, select, input, textarea, summary):focus-visible {
    outline: 3px solid rgba(203, 0, 0, .28);
    outline-offset: 2px;
}

:is(.cni-student-area, .cni-internal-area) {
    background: var(--cni-bg);
    border-radius: 20px;
    margin: 0 auto;
    max-width: 1240px;
    padding: 20px;
}

:is(.cni-student-hero, .cni-area-hero) {
    align-items: flex-start;
    background: linear-gradient(135deg, var(--cni-blue-dark), var(--cni-blue));
    border-radius: 18px;
    box-shadow: 0 14px 34px var(--cni-shadow);
    color: var(--cni-white);
    display: flex;
    gap: 24px;
    justify-content: space-between;
    padding: 24px 26px;
}

:is(.cni-student-kicker, .cni-area-kicker),
:is(.cni-student-section-kicker, .cni-section-kicker) {
    display: block;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .09em;
    text-transform: uppercase;
}

:is(.cni-student-kicker, .cni-area-kicker) { color: rgba(255, 255, 255, .82); }
:is(.cni-student-section-kicker, .cni-section-kicker) { color: var(--cni-red-dark); margin-bottom: 4px; }

:is(.cni-student-hero, .cni-area-hero) h1 {
    color: var(--cni-white);
    font-size: clamp(25px, 3vw, 34px);
    margin: 4px 0 6px;
}

:is(.cni-student-hero, .cni-area-hero) p { margin: 0; }

:is(.cni-student-hero-tools, .cni-area-hero-tools) {
    align-items: flex-end;
    display: flex;
    flex-direction: column;
    gap: 12px;
    min-width: min(100%, 330px);
}

:is(.cni-student-course-selector, .cni-course-selector),
:is(.cni-student-single-course, .cni-single-course) {
    background: rgba(255, 255, 255, .12);
    border: 1px solid rgba(255, 255, 255, .25);
    border-radius: 12px;
    padding: 10px 12px;
    width: 100%;
}

:is(.cni-student-course-selector, .cni-course-selector) label,
:is(.cni-student-single-course, .cni-single-course) span {
    color: rgba(255, 255, 255, .82);
    display: block;
    font-size: 11px;
    font-weight: 700;
    margin-bottom: 5px;
    text-transform: uppercase;
}

:is(.cni-student-course-selector, .cni-course-selector) select {
    background: var(--cni-white);
    border: 0;
    border-radius: 8px;
    color: var(--cni-blue-dark);
    min-height: 40px;
    padding: 7px 10px;
    width: 100%;
}

:is(.cni-student-single-course, .cni-single-course) strong { color: var(--cni-white); }
:is(.cni-student-account-actions, .cni-account-actions) { display: flex; flex-wrap: wrap; gap: 7px; justify-content: flex-end; }

:is(.cni-student-summary, .cni-summary-grid) {
    display: grid;
    gap: 13px;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin: 16px 0 12px;
}

:is(.cni-student-summary-card, .cni-summary-card) {
    background: var(--cni-white);
    border: 1px solid var(--cni-border);
    border-left: 5px solid var(--cni-blue);
    border-radius: 13px;
    box-shadow: 0 8px 20px rgba(24, 50, 77, .09);
    min-height: 112px;
    padding: 15px 16px;
}

:is(.cni-student-summary-card, .cni-summary-card).is-success { border-left-color: var(--cni-success); }
:is(.cni-student-summary-card, .cni-summary-card).is-warning { border-left-color: #B7791F; }
:is(.cni-student-summary-card, .cni-summary-card) span,
:is(.cni-student-summary-card, .cni-summary-card) strong,
:is(.cni-student-summary-card, .cni-summary-card) small { display: block; }
:is(.cni-student-summary-card, .cni-summary-card) > span { color: var(--cni-gray); font-size: 12px; font-weight: 700; }
:is(.cni-student-summary-card, .cni-summary-card) strong { color: var(--cni-blue-dark); font-size: 23px; line-height: 1.12; margin: 7px 0; }
:is(.cni-student-summary-card, .cni-summary-card) small { color: var(--cni-gray); font-size: 12px; line-height: 1.4; }

:is(.cni-student-actions, .cni-area-actions) {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 15px;
}

:is(.cni-student-button, .cni-button) {
    align-items: center;
    border: 0;
    border-radius: 9px;
    cursor: pointer;
    display: inline-flex;
    font: inherit;
    font-size: 13px;
    font-weight: 800;
    justify-content: center;
    min-height: 40px;
    padding: 9px 14px;
    text-decoration: none !important;
}

:is(.cni-student-button-primary, .cni-button-primary) { background: var(--cni-red); color: var(--cni-white) !important; }
:is(.cni-student-button-primary, .cni-button-primary):hover { background: var(--cni-red-dark); }
:is(.cni-student-button-secondary, .cni-button-secondary) { background: var(--cni-blue-light); color: var(--cni-blue-dark) !important; }
:is(.cni-student-button-secondary, .cni-button-secondary):hover { background: #d7e5f1; }
:is(.cni-student-button-light, .cni-button-light) { background: var(--cni-white); color: var(--cni-blue-dark) !important; }
:is(.cni-student-button-ghost, .cni-button-ghost) { background: transparent; border: 1px solid rgba(255, 255, 255, .55); color: var(--cni-white) !important; }

:is(.cni-student-tabs, .cni-area-tabs) {
    display: flex;
    gap: 6px;
    margin: 0 0 16px;
    overflow-x: auto;
    padding: 2px 0;
    scrollbar-width: thin;
    white-space: nowrap;
}

:is(.cni-student-tab, .cni-area-tab) {
    background: var(--cni-white);
    border: 1px solid var(--cni-border);
    border-radius: 9px 9px 0 0;
    color: var(--cni-blue-dark) !important;
    flex: 0 0 auto;
    font-size: 13px;
    font-weight: 800;
    padding: 10px 14px;
    text-decoration: none !important;
}

:is(.cni-student-tab, .cni-area-tab).is-active {
    background: var(--cni-blue-dark);
    border-color: var(--cni-blue-dark);
    color: var(--cni-white) !important;
}

:is(.cni-student-panel, .cni-area-panel) { min-height: 260px; }
:is(.cni-student-card, .cni-area-card) {
    background: var(--cni-white);
    border: 1px solid var(--cni-border);
    border-radius: 15px;
    box-shadow: 0 8px 22px rgba(24, 50, 77, .09);
    margin: 0 0 15px;
    padding: 19px;
}

:is(.cni-student-card-heading, .cni-area-card-heading) {
    align-items: flex-start;
    display: flex;
    gap: 16px;
    justify-content: space-between;
    margin-bottom: 14px;
}
:is(.cni-student-card-heading, .cni-area-card-heading) h2,
:is(.cni-student-card-heading, .cni-area-card-heading) h3 { color: var(--cni-blue-dark); margin: 0 0 4px; }
:is(.cni-student-card-heading, .cni-area-card-heading) p { color: var(--cni-gray); margin: 0; }
:is(.cni-student-card-heading, .cni-area-card-heading) > a { color: var(--cni-red-dark); font-size: 13px; font-weight: 800; white-space: nowrap; }

:is(.cni-student-two-columns, .cni-area-two-columns) { display: grid; gap: 16px; grid-template-columns: minmax(0, 1.35fr) minmax(290px, .65fr); }
:is(.cni-student-stack, .cni-area-stack) { display: grid; gap: 15px; align-content: start; }
:is(.cni-student-stack, .cni-area-stack) :is(.cni-student-card, .cni-area-card) { margin: 0; }

:is(.cni-student-empty, .cni-empty-state),
:is(.cni-student-notice, .cni-notice-box) {
    background: var(--cni-blue-light);
    border: 1px solid #bfd0e0;
    border-radius: 11px;
    color: var(--cni-blue-dark);
    padding: 13px 14px;
}
:is(.cni-student-empty, .cni-empty-state).is-positive { background: var(--cni-success-light); border-color: #b8ddc3; color: var(--cni-success); }
:is(.cni-student-notice, .cni-notice-box).is-warning { background: var(--cni-warning-light); border-color: #ecd28d; color: var(--cni-warning); }
:is(.cni-student-notice, .cni-notice-box).is-info { margin-top: 10px; }

:is(.cni-student-notice-list, .cni-notice-list),
:is(.cni-student-news-list, .cni-news-list) { list-style: none; margin: 0; padding: 0; }
:is(.cni-student-notice-list, .cni-notice-list) { display: grid; gap: 8px; }
:is(.cni-student-notice-list, .cni-notice-list) li { border-left: 4px solid var(--cni-blue); padding: 8px 10px; }
:is(.cni-student-notice-list, .cni-notice-list) li.is-danger { border-color: var(--cni-red); }
:is(.cni-student-notice-list, .cni-notice-list) li.is-warning { border-color: #B7791F; }
:is(.cni-student-notice-list, .cni-notice-list) li.is-attention { border-color: #7A8795; }
:is(.cni-student-news-list, .cni-news-list) li { border-bottom: 1px solid var(--cni-border); padding: 9px 0; }
:is(.cni-student-news-list, .cni-news-list) li:last-child { border-bottom: 0; }
:is(.cni-student-news-list, .cni-news-list) strong,
:is(.cni-student-news-list, .cni-news-list) span { display: block; }
:is(.cni-student-news-list, .cni-news-list) strong { color: var(--cni-blue-dark); }
:is(.cni-student-news-list, .cni-news-list) span { color: var(--cni-gray); font-size: 13px; margin-top: 2px; }

:is(.cni-student-event-card, .cni-event-card) {
    align-items: start;
    background: var(--cni-white);
    border: 1px solid var(--cni-border);
    border-left: 5px solid var(--cni-blue);
    border-radius: 13px;
    display: grid;
    gap: 14px;
    grid-template-columns: 70px minmax(0, 1fr);
    padding: 14px;
}
:is(.cni-student-event-card, .cni-event-card).is-featured { background: linear-gradient(135deg, #fff, #f7fbff); }
:is(.cni-student-event-card, .cni-event-card).is-cancelled { border-left-color: #7A8795; opacity: .86; }
:is(.cni-student-event-time, .cni-event-time) { border-right: 1px solid var(--cni-border); min-height: 58px; padding-right: 12px; }
:is(.cni-student-event-time, .cni-event-time) strong,
:is(.cni-student-event-time, .cni-event-time) span { display: block; }
:is(.cni-student-event-time, .cni-event-time) strong { color: var(--cni-red-dark); font-size: 20px; }
:is(.cni-student-event-time, .cni-event-time) span { color: var(--cni-gray); font-size: 12px; }
:is(.cni-student-event-title-row, .cni-event-title-row) { align-items: flex-start; display: flex; gap: 12px; justify-content: space-between; }
:is(.cni-student-event-title-row, .cni-event-title-row) h3 { color: var(--cni-blue-dark); font-size: 18px; margin: 2px 0 7px; }
:is(.cni-student-event-course, .cni-event-course) { color: var(--cni-gray); font-size: 12px; font-weight: 700; }
:is(.cni-student-event-meta, .cni-event-meta),
:is(.cni-student-labels, .cni-labels) { display: flex; flex-wrap: wrap; gap: 6px; }
:is(.cni-student-event-meta, .cni-event-meta) span,
:is(.cni-student-label, .cni-label) { background: var(--cni-blue-light); border-radius: 999px; color: var(--cni-blue-dark); font-size: 11px; font-weight: 800; padding: 4px 8px; }
:is(.cni-student-label, .cni-label).is-required,
:is(.cni-student-label, .cni-label).is-cancelled { background: var(--cni-red-light); color: var(--cni-red-dark); }
:is(.cni-student-label, .cni-label).is-new { background: var(--cni-success-light); color: var(--cni-success); }

:is(.cni-student-details, .cni-area-details) { margin-top: 10px; }
:is(.cni-student-details, .cni-area-details) > summary { color: var(--cni-blue-dark); cursor: pointer; font-size: 13px; font-weight: 800; }
:is(.cni-student-planning-grid, .cni-planning-grid) { background: var(--cni-bg); border: 1px solid var(--cni-border); border-radius: 10px; display: grid; gap: 10px; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 9px; padding: 12px; }
:is(.cni-student-planning-grid, .cni-planning-grid) strong { color: var(--cni-blue-dark); display: block; }
:is(.cni-student-planning-grid, .cni-planning-grid) p { margin: 4px 0 0; }
:is(.cni-student-date-heading, .cni-date-heading) { color: var(--cni-blue-dark); font-size: 15px; margin: 20px 0 8px; text-transform: capitalize; }
:is(.cni-student-agenda-list, .cni-agenda-list) { display: grid; gap: 10px; }
:is(.cni-student-quick-filters, .cni-quick-filters) { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 13px; }
:is(.cni-student-quick-filters, .cni-quick-filters) a { background: var(--cni-blue-light); border-radius: 999px; color: var(--cni-blue-dark); font-size: 12px; font-weight: 800; padding: 7px 11px; text-decoration: none; }
:is(.cni-student-quick-filters, .cni-quick-filters) a.is-active { background: var(--cni-blue-dark); color: var(--cni-white); }

:is(.cni-student-filter-form, .cni-area-filter-form) {
    align-items: end;
    background: var(--cni-bg);
    border: 1px solid var(--cni-border);
    border-radius: 12px;
    display: grid;
    gap: 10px;
    grid-template-columns: repeat(4, minmax(150px, 1fr));
    margin: 0 0 14px;
    padding: 13px;
}
:is(.cni-student-filter-form, .cni-area-filter-form) label span { color: var(--cni-gray); display: block; font-size: 11px; font-weight: 800; margin-bottom: 4px; text-transform: uppercase; }
:is(.cni-student-filter-form, .cni-area-filter-form) input,
:is(.cni-student-filter-form, .cni-area-filter-form) select { background: var(--cni-white); border: 1px solid var(--cni-border); border-radius: 8px; min-height: 40px; padding: 7px 9px; width: 100%; }
:is(.cni-student-filter-form, .cni-area-filter-form) .is-wide { grid-column: span 2; }
:is(.cni-student-filter-actions, .cni-filter-actions) { display: flex; flex-wrap: wrap; gap: 7px; }
:is(.cni-student-results-heading, .cni-results-heading) { align-items: center; border-bottom: 1px solid var(--cni-border); display: flex; gap: 12px; justify-content: space-between; margin-bottom: 12px; padding-bottom: 9px; }
:is(.cni-student-results-heading, .cni-results-heading) strong { color: var(--cni-blue-dark); }
:is(.cni-student-results-heading, .cni-results-heading) span { color: var(--cni-gray); font-size: 12px; }

:is(.cni-student-pagination, .cni-pagination) { display: flex; flex-wrap: wrap; gap: 5px; justify-content: center; margin-top: 18px; }
:is(.cni-student-pagination, .cni-pagination) a { background: var(--cni-white); border: 1px solid var(--cni-border); border-radius: 7px; color: var(--cni-blue-dark); font-weight: 800; min-width: 34px; padding: 6px 9px; text-align: center; text-decoration: none; }
:is(.cni-student-pagination, .cni-pagination) a.is-current { background: var(--cni-blue-dark); color: var(--cni-white); }

:is(.cni-student-status-badge, .cni-status-badge) { background: var(--cni-success-light); border-radius: 999px; color: var(--cni-success) !important; padding: 4px 8px; }
:is(.cni-student-progress, .cni-progress) { background: #e5e7eb; border-radius: 999px; height: 8px; margin-top: 11px; overflow: hidden; }
:is(.cni-student-progress, .cni-progress) span { background: var(--cni-red); display: block; height: 100%; }
:is(.cni-student-material-grid, .cni-material-grid) { display: grid; gap: 13px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
:is(.cni-student-material-card, .cni-material-card) { border: 1px solid var(--cni-border); border-top: 4px solid var(--cni-blue); border-radius: 12px; display: flex; flex-direction: column; padding: 14px; }
:is(.cni-student-material-card, .cni-material-card) h3 { color: var(--cni-blue-dark); margin: 9px 0 5px; }
:is(.cni-student-muted, .cni-muted) { color: var(--cni-gray); font-size: 12px; }
:is(.cni-student-material-meta, .cni-material-meta) { border-top: 1px solid var(--cni-border); color: var(--cni-gray); display: grid; font-size: 11px; gap: 4px; margin-top: auto; padding-top: 10px; }
:is(.cni-student-material-actions, .cni-material-actions) { align-items: center; display: flex; flex-wrap: wrap; gap: 9px; margin-top: 11px; }
:is(.cni-student-material-actions, .cni-material-actions) :is(.cni-student-details, .cni-area-details) { margin: 0; }
:is(.cni-student-responsive-table, .cni-responsive-table) { overflow-x: auto; }
:is(.cni-student-responsive-table, .cni-responsive-table) table { border-collapse: collapse; min-width: 670px; width: 100%; }
:is(.cni-student-responsive-table, .cni-responsive-table) th,
:is(.cni-student-responsive-table, .cni-responsive-table) td { border-bottom: 1px solid var(--cni-border); padding: 8px; text-align: left; vertical-align: top; }
:is(.cni-student-responsive-table, .cni-responsive-table) th { color: var(--cni-blue-dark); font-size: 11px; text-transform: uppercase; }

:is(.cni-student-data-list, .cni-data-list) { margin: 0 0 14px; }
:is(.cni-student-data-list, .cni-data-list) > div { border-bottom: 1px solid var(--cni-border); display: grid; gap: 12px; grid-template-columns: 150px minmax(0, 1fr); padding: 9px 0; }
:is(.cni-student-data-list, .cni-data-list) dt { color: var(--cni-gray); font-size: 12px; font-weight: 700; }
:is(.cni-student-data-list, .cni-data-list) dd { color: var(--cni-blue-dark); font-weight: 700; margin: 0; }
:is(.cni-student-data-contexts, .cni-data-contexts) { display: grid; gap: 8px; }
:is(.cni-student-data-contexts, .cni-data-contexts) article { background: var(--cni-bg); border-radius: 9px; padding: 10px; }
:is(.cni-student-data-contexts, .cni-data-contexts) strong,
:is(.cni-student-data-contexts, .cni-data-contexts) span { display: block; }
:is(.cni-student-data-contexts, .cni-data-contexts) strong { color: var(--cni-blue-dark); }
:is(.cni-student-data-contexts, .cni-data-contexts) span { color: var(--cni-gray); font-size: 12px; margin-top: 3px; }

:is(.cni-student-message-wrap, .cni-message-wrap) { margin-top: 40px; max-width: 760px; }
:is(.cni-student-access-message, .cni-access-message) { border-left: 5px solid var(--cni-red); }
:is(.cni-student-access-message, .cni-access-message) h1 { color: var(--cni-blue-dark); margin-top: 0; }

/* Componentes neutros mantêm aliases históricos usados pelos perfis. */
:is(.cni-professor-status, .cni-status-badge) {
    background: var(--cni-blue-light);
    border-radius: 999px;
    color: var(--cni-blue-dark);
    display: inline-flex;
    font-size: 11px;
    font-weight: 800;
    line-height: 1.2;
    padding: 5px 9px;
    white-space: nowrap;
}
:is(.cni-professor-status, .cni-status-badge):is(.is-complete, .is-aprovada, .is-ativo, .is-configurado, .is-confirmado, .is-resolvido, .is-publicado, .is-concluida) {
    background: var(--cni-success-light);
    color: var(--cni-success);
}
:is(.cni-professor-status, .cni-status-badge):is(.is-pending, .is-reopened, .is-pendente, .is-ajustes_solicitados, .is-troca_pendente, .is-aguardando_envio, .is-em_andamento, .is-alta, .is-rascunho, .is-sem_cronograma) {
    background: var(--cni-warning-light);
    color: var(--cni-warning);
}
:is(.cni-professor-status, .cni-status-badge):is(.is-cancelled, .is-rejeitada, .is-bloqueado, .is-cancelado, .is-urgente, .is-falha_envio) {
    background: var(--cni-red-light);
    color: var(--cni-red-dark);
}
:is(.cni-professor-status, .cni-status-badge).is-authorization { background: #F3E8FF; color: #6B21A8; }
:is(.cni-professor-status, .cni-status-badge):is(.is-upcoming, .is-inativo, .is-baixa) { background: var(--cni-color-neutral-light); color: var(--cni-gray); }

:is(.cni-professor-event-actions, .cni-event-actions) {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 11px;
}

:is(.cni-professor-compact-agenda, .cni-compact-agenda) { display: grid; gap: 7px; }
:is(.cni-professor-compact-agenda, .cni-compact-agenda) article {
    align-items: center;
    border-bottom: 1px solid var(--cni-border);
    display: grid;
    gap: 10px;
    grid-template-columns: 105px minmax(0, 1fr) auto;
    padding: 8px 0;
}
:is(.cni-professor-compact-agenda, .cni-compact-agenda) article:last-child { border-bottom: 0; }
:is(.cni-professor-compact-agenda, .cni-compact-agenda) time { color: var(--cni-red-dark); font-size: 12px; font-weight: 800; }
:is(.cni-professor-compact-agenda, .cni-compact-agenda) :is(strong, span) { display: block; }
:is(.cni-professor-compact-agenda, .cni-compact-agenda) article > div > strong { color: var(--cni-blue-dark); }
:is(.cni-professor-compact-agenda, .cni-compact-agenda) article > div > span { color: var(--cni-gray); font-size: 11px; margin-top: 2px; }

:is(.cni-professor-mini-summary, .cni-mini-summary) {
    display: grid;
    gap: 10px;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-bottom: 15px;
}
:is(.cni-professor-mini-summary, .cni-mini-summary) > div {
    background: var(--cni-bg);
    border: 1px solid var(--cni-border);
    border-radius: 10px;
    padding: 11px;
}
:is(.cni-professor-mini-summary, .cni-mini-summary) :is(strong, span) { display: block; }
:is(.cni-professor-mini-summary, .cni-mini-summary) strong { color: var(--cni-blue-dark); font-size: 21px; }
:is(.cni-professor-mini-summary, .cni-mini-summary) span { color: var(--cni-gray); font-size: 11px; margin-top: 3px; }

/* Componentes usados pela Manutenção e por mensagens fora das áreas acadêmicas. */
.cni-internal-hero {
    align-items: flex-start;
    background: linear-gradient(135deg, var(--cni-blue-dark), var(--cni-blue));
    border-radius: 18px;
    box-shadow: var(--cni-shadow-hero);
    color: var(--cni-white);
    display: flex;
    gap: 16px;
    justify-content: space-between;
    margin-bottom: 18px;
    padding: 24px 26px;
}
.cni-internal-hero h1 { color: var(--cni-white); margin: 4px 0 6px; }
.cni-internal-hero p { color: var(--cni-white); margin: 0; }
.cni-kicker { color: rgba(255,255,255,.82); display: block; font-size: 11px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }

/* Modais compartilhados no front-end. */
.cni-internal-area .cni-modal[hidden] { display: none !important; }
.cni-internal-area .cni-modal.is-open { display: flex !important; }
.cni-internal-area .cni-modal { align-items: center; inset: 0; display: flex; justify-content: center; padding: 24px; position: fixed; z-index: 100000; }
.cni-internal-area .cni-modal-backdrop { background: rgba(17,24,39,.48); inset: 0; position: absolute; }
.cni-internal-area .cni-modal-panel { background: var(--cni-white); border: 1px solid var(--cni-border); border-radius: 16px; box-shadow: 0 24px 70px rgba(17,24,39,.26); max-height: calc(100vh - 80px); max-width: 620px; overflow: auto; position: relative; width: min(620px,100%); z-index: 1; }
.cni-internal-area .cni-modal-panel-wide { max-width: 860px; width: min(860px,100%); }
.cni-internal-area .cni-modal-header { align-items: center; border-bottom: 1px solid var(--cni-border); display: flex; gap: 16px; justify-content: space-between; padding: 20px 24px; }
.cni-internal-area .cni-modal-header h3 { margin: 0; }
.cni-internal-area .cni-modal-close { background: transparent; border: 0; color: var(--cni-blue-dark); cursor: pointer; font-size: 24px; line-height: 1; text-decoration: none; }
.cni-internal-area .cni-modal-body { color: var(--cni-blue-dark); line-height: 1.55; padding: 22px 24px; }
.cni-internal-area .cni-modal-footer { border-top: 1px solid var(--cni-border); padding: 16px 24px 20px; text-align: right; }
.cni-internal-area .cni-modal-grid { display: grid; gap: 10px 18px; grid-template-columns: repeat(auto-fit,minmax(220px,1fr)); }

@media (max-width: 980px) {
    :is(.cni-student-summary, .cni-summary-grid) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    :is(.cni-student-two-columns, .cni-area-two-columns) { grid-template-columns: 1fr; }
    :is(.cni-student-material-grid, .cni-material-grid) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    :is(.cni-student-filter-form, .cni-area-filter-form) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
    :is(.cni-professor-mini-summary, .cni-mini-summary) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    :is(.cni-professor-compact-agenda, .cni-compact-agenda) article { grid-template-columns: 82px minmax(0, 1fr); }
    :is(.cni-professor-compact-agenda, .cni-compact-agenda) article > :is(.cni-professor-status, .cni-status-badge) { grid-column: 2; justify-self: start; }
}

@media (max-width: 660px) {
    :is(.cni-student-area, .cni-internal-area) { border-radius: 0; padding: 10px; }
    :is(.cni-student-hero, .cni-area-hero), .cni-internal-hero { display: block; padding: 19px; }
    :is(.cni-student-hero-tools, .cni-area-hero-tools) { align-items: stretch; margin-top: 15px; min-width: 0; }
    :is(.cni-student-account-actions, .cni-account-actions) { justify-content: stretch; }
    :is(.cni-student-account-actions, .cni-account-actions) :is(.cni-student-button, .cni-button) { flex: 1; }
    :is(.cni-student-summary, .cni-summary-grid) { grid-template-columns: 1fr; }
    :is(.cni-student-actions, .cni-area-actions) :is(.cni-student-button, .cni-button) { flex: 1 1 100%; }
    :is(.cni-student-card, .cni-area-card) { padding: 14px; }
    :is(.cni-student-card-heading, .cni-area-card-heading) { display: block; }
    :is(.cni-student-card-heading, .cni-area-card-heading) > :is(a, button) { margin-top: 9px; }
    :is(.cni-student-event-card, .cni-event-card) { grid-template-columns: 1fr; }
    :is(.cni-student-event-time, .cni-event-time) { border-bottom: 1px solid var(--cni-border); border-right: 0; min-height: 0; padding: 0 0 8px; }
    :is(.cni-student-event-time, .cni-event-time) :is(strong, span) { display: inline; margin-right: 5px; }
    :is(.cni-student-event-title-row, .cni-event-title-row) { display: block; }
    :is(.cni-student-planning-grid, .cni-planning-grid) { grid-template-columns: 1fr; }
    :is(.cni-student-filter-form, .cni-area-filter-form) { grid-template-columns: 1fr; }
    :is(.cni-student-filter-form, .cni-area-filter-form) .is-wide { grid-column: span 1; }
    :is(.cni-student-filter-actions, .cni-filter-actions) :is(.cni-student-button, .cni-button) { flex: 1; }
    :is(.cni-student-results-heading, .cni-results-heading) { align-items: flex-start; flex-direction: column; }
    :is(.cni-student-material-grid, .cni-material-grid) { grid-template-columns: 1fr; }
    :is(.cni-student-responsive-table, .cni-responsive-table) table { min-width: 0; }
    :is(.cni-student-responsive-table, .cni-responsive-table) thead { display: none; }
    :is(.cni-student-responsive-table, .cni-responsive-table) tr { border: 1px solid var(--cni-border); border-radius: 9px; display: block; margin-bottom: 9px; padding: 6px; }
    :is(.cni-student-responsive-table, .cni-responsive-table) td { display: grid; gap: 8px; grid-template-columns: 110px minmax(0, 1fr); }
    :is(.cni-student-responsive-table, .cni-responsive-table) td::before { color: var(--cni-gray); content: attr(data-label); font-size: 10px; font-weight: 800; text-transform: uppercase; }
    :is(.cni-student-data-list, .cni-data-list) > div { grid-template-columns: 1fr; gap: 3px; }
}

@media (max-width: 480px) {
    :is(.cni-professor-mini-summary, .cni-mini-summary) { grid-template-columns: 1fr; }
}

/* Mensagens padronizadas de acesso, login e indisponibilidade. */
:is(.cni-student-access-message, .cni-access-message) {
    border-left: 5px solid var(--cni-red);
}
:is(.cni-student-access-message, .cni-access-message) :is(h1, h2) {
    color: var(--cni-blue-dark);
    margin-top: 0;
}
:is(.cni-student-access-message, .cni-access-message) p {
    color: var(--cni-gray);
}

/* Frequência e boletim são compartilhados com a Área do Responsável. */
.cni-student-attendance-status { border-radius: 8px; margin-top: 10px; padding: 8px 10px; }
.cni-student-attendance-status.is-presente { background: var(--cni-success-light); color: var(--cni-success); }
.cni-student-attendance-status.is-falta { background: var(--cni-red-light); color: var(--cni-red-dark); }
.cni-student-attendance-status.is-justificada,
.cni-student-attendance-status.is-pending { background: var(--cni-warning-light); color: var(--cni-warning); }
.cni-student-attendance-status span { display: block; font-size: 12px; margin-top: 2px; }

.cni-student-bulletin-summary,
.cni-student-bulletin-module-grid { display: grid; gap: 10px; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.cni-student-bulletin-summary { margin-bottom: 15px; }
.cni-student-bulletin-summary > div,
.cni-student-bulletin-module-grid > div { background: var(--cni-bg); border: 1px solid var(--cni-border); border-radius: 10px; padding: 11px; }
.cni-student-bulletin-summary strong,
.cni-student-bulletin-summary span,
.cni-student-bulletin-module-grid strong,
.cni-student-bulletin-module-grid span { display: block; }
.cni-student-bulletin-summary strong { color: var(--cni-blue-dark); font-size: 23px; }
.cni-student-bulletin-summary span,
.cni-student-bulletin-module-grid span { color: var(--cni-gray); font-size: 11px; margin-top: 3px; }
.cni-student-bulletin-course { border: 1px solid var(--cni-border); border-radius: 12px; margin-top: 12px; padding: 13px; }
.cni-student-bulletin-course > header { align-items: center; display: flex; justify-content: space-between; }
.cni-student-bulletin-course > header span { color: var(--cni-gray); display: block; font-size: 10px; text-transform: uppercase; }
.cni-student-bulletin-course > header h3 { color: var(--cni-blue-dark); margin: 2px 0 0; }
.cni-student-bulletin-course > header > strong { color: var(--cni-blue-dark); font-size: 24px; }
.cni-student-bulletin-course-stats { display: flex; flex-wrap: wrap; gap: 6px; margin: 9px 0; }
.cni-student-bulletin-course-stats span { background: var(--cni-blue-light); border-radius: 999px; color: var(--cni-blue-dark); font-size: 11px; font-weight: 700; padding: 4px 8px; }
.cni-student-bulletin-module { background: var(--cni-bg); border-radius: 10px; margin-top: 9px; padding: 10px; }
.cni-student-bulletin-module > summary { cursor: pointer; list-style: none; }
.cni-student-bulletin-module > summary::-webkit-details-marker { display: none; }
.cni-student-bulletin-module > summary,
.cni-student-bulletin-module > summary > div { align-items: center; display: flex; gap: 9px; justify-content: space-between; }
.cni-student-bulletin-module > summary span { border-radius: 999px; font-size: 10px; padding: 3px 7px; }
.cni-student-bulletin-module > summary span.is-success { background: var(--cni-success-light); color: var(--cni-success); }
.cni-student-bulletin-module > summary span.is-warning { background: var(--cni-red-light); color: var(--cni-red-dark); }
.cni-student-bulletin-module > summary span.is-neutral { background: var(--cni-color-neutral-light); color: var(--cni-gray); }
.cni-student-bulletin-module-grid { margin: 10px 0; }
.cni-student-bulletin-identity { background: var(--cni-blue-light); border: 1px solid #bfd0e0; border-radius: 10px; margin-bottom: 12px; padding: 10px 12px; }
.cni-student-bulletin-identity strong,
.cni-student-bulletin-identity span { display: block; }
.cni-student-bulletin-identity strong { color: var(--cni-blue-dark); font-size: 17px; }
.cni-student-bulletin-identity span { color: var(--cni-gray); font-size: 11px; margin-top: 2px; text-transform: uppercase; }

@media (max-width: 660px) {
    .cni-student-bulletin-summary,
    .cni-student-bulletin-module-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media print {
    body * { visibility: hidden !important; }
    .cni-student-bulletin,
    .cni-student-bulletin * { visibility: visible !important; }
    .cni-student-bulletin { border: 0; box-shadow: none; left: 0; margin: 0; padding: 0; position: absolute; top: 0; width: 100%; }
    .cni-student-bulletin [data-cni-print],
    .cni-student-tabs,
    .cni-student-actions { display: none !important; }
    .cni-student-bulletin-module { break-inside: avoid; }
    .cni-student-bulletin-identity { border: 0; margin: 0 0 8px; padding: 0 0 6px; }
}


/* Bloqueia a rolagem do conteúdo ao abrir modais nas áreas públicas. */
body.cni-modal-open { overflow: hidden; }
