/* =====================================================================
   Portal Acadêmico — UFMT/SETEC
   Camada visual sobre o Ultima 2.1.1 (tema ultima-dark-blue).
   Carregar SEMPRE por último, depois de layout-dark-blue.css.
   Paleta: a mesma da impressão do plano de ensino.
   ===================================================================== */

/* ===== Parte 1: recoloração das regras do Ultima (gerada a partir do theme.css e layout-dark-blue.css) ===== */
body .ui-widget-header {
  background-color: #1f3a5f;
  border: 1px solid #1f3a5f; }
body .ui-state-active,
body .ui-state-highlight {
  background-color: #2a5c9a; }
body a {
  color: #1f3a5f; }
body .ui-paginator {
  background-color: #172c48; }
body .ui-paginator > a.ui-state-hover {
  background-color: #2f5280; }
body .ui-paginator .ui-paginator-pages a.ui-state-hover {
  background-color: #2f5280; }
body .ui-datatable thead th.ui-state-active,
body .ui-datatable thead th.ui-state-highlight {
  background-color: #2a5c9a;
  border-top-color: #2a5c9a; }
body .ui-datatable tbody tr.ui-datatable-even.ui-state-highlight {
  background-color: #2a5c9a; }
body .ui-datatable tbody tr td.ui-state-error {
  background-color: #a8322d;
  border-color: #a8322d; }
body .ui-datatable tbody tr.ui-state-highlight {
  background-color: #2a5c9a; }
body .ui-datatable tbody tr.ui-state-error {
  background-color: #a8322d;
  border-color: #a8322d; }
body .ui-datatable tbody tr.ui-state-highlight td {
  border-right-color: #1f3a5f; }
body .ui-datatable > .ui-icon-arrowthick-1-s {
  color: #2a5c9a; }
body .ui-draggable-dragging.ui-state-default {
  background-color: #1f3a5f; }
body .ui-tree .ui-tree-droppoint.ui-state-hover {
  background-color: #2a5c9a; }
body .ui-tree.ui-tree-horizontal .ui-treenode-content.ui-state-highlight {
  background-color: #2a5c9a; }
body .ui-tree-draghelper {
  border: 1px solid #1f3a5f; }
body .vis-timeline .vis-item.vis-selected {
  background-color: #2a5c9a;
  border-color: #2a5c9a; }
body .fc .fc-widget-header {
  background-color: #1f3a5f; }
body .fc .fc-button-group .ui-state-active {
  background-color: #2a5c9a; }
body .fc .fc-event {
  background-color: #2f5280;
  border-color: #2f5280; }
body .fc td.fc-today {
  background-color: #2a5c9a; }
body .fc .fc-button-primary {
  background-color: #1f3a5f; }
body .fc .fc-button-primary:not(:disabled):active,
body .fc .fc-button-primary:not(:disabled):active:focus,
body .fc .fc-button-primary:not(:disabled).fc-button-active:focus,
body .fc .fc-button-primary.fc-button-active {
  background-color: #2a5c9a;
  border-color: #2a5c9a; }
body .fc .fc-button-primary:not(:disabled):focus,
body .fc .fc-button-primary:not(:disabled):hover {
  background-color: #172c48; }
body .ui-treetable thead th.ui-state-active,
body .ui-treetable thead th.ui-state-highlight {
  background-color: #2a5c9a;
  border-top-color: #2a5c9a; }
body .ui-treetable.ui-treetable-scrollable thead th.ui-state-active {
  background-color: #2a5c9a; }
body .ui-inputfield {
  background-image: linear-gradient(to bottom, #1f3a5f, #1f3a5f), linear-gradient(to bottom, #bdbdbd, #bdbdbd); }
body .ui-inputfield.ui-state-error {
  border-color: #a8322d;
  background-image: linear-gradient(to bottom, #a8322d, #a8322d), linear-gradient(to bottom, #a8322d, #a8322d); }
body .md-inputfield input:focus ~ label,
body .md-inputfield input.ui-state-filled ~ label,
body .md-inputfield textarea:focus ~ label,
body .md-inputfield textarea.ui-state-filled ~ label,
body .md-inputfield .ui-selectonemenu.ui-state-focus ~ label,
body .md-inputfield .ui-selectonemenu.ui-state-filled ~ label,
body .md-inputfield .md-inputwrapper-focus ~ label,
body .md-inputfield .md-inputwrapper-filled ~ label {
  color: #1f3a5f; }
body .md-inputfield input:-webkit-autofill ~ label {
  color: #1f3a5f; }
body .md-inputfield input:-moz-autofill ~ label {
  color: #1f3a5f; }
body .md-inputfield input.ui-state-error ~ label,
body .md-inputfield .ui-selectonemenu.ui-state-focus.ui-state-error ~ label,
body .md-inputfield .ui-selectonemenu.ui-state-filled.ui-state-error ~ label {
  color: #a8322d; }
body .md-inputfield .ui-message.ui-message-error {
  color: #a8322d; }
body .md-inputfield .ui-message.ui-message-error .ui-message-error-icon {
  color: #a8322d; }
body .md-inputfield.md-inputfield-fill input:focus ~ label,
body .md-inputfield.md-inputfield-fill input.ui-state-filled ~ label,
body .md-inputfield.md-inputfield-fill textarea:focus ~ label,
body .md-inputfield.md-inputfield-fill textarea.ui-state-filled ~ label,
body .md-inputfield.md-inputfield-fill .ui-selectonemenu.ui-state-focus ~ label,
body .md-inputfield.md-inputfield-fill .ui-selectonemenu.ui-state-filled ~ label,
body .md-inputfield.md-inputfield-fill .md-inputwrapper-focus ~ label,
body .md-inputfield.md-inputfield-fill .md-inputwrapper-filled ~ label {
  color: #1f3a5f; }
body .ui-selectonelistbox .ui-selectlistbox-filter-container {
  background-color: #1f3a5f; }
body .ui-button {
  background-color: #1f3a5f; }
body .ui-button.ui-state-hover {
  background-color: #172c48; }
body .ui-button.secondary {
  background-color: #2a5c9a; }
body .ui-button.secondary.ui-state-hover {
  background-color: #1f3a5f; }
body .ui-button.accent-btn {
  background-color: #2a5c9a; }
body .ui-button.accent-btn.ui-state-hover {
  background-color: #1f3a5f; }
body .ui-buttonset .ui-state-active {
  background-color: #2a5c9a; }
body .ui-selectbooleanbutton.ui-state-active {
  background-color: #2a5c9a; }
body .ui-chkbox .ui-chkbox-box:before {
  background-color: #2f5280; }
body .ui-chkbox .ui-chkbox-box.ui-state-active {
  border-color: #1f3a5f;
  background-color: #1f3a5f; }
body .ui-chkbox .ui-chkbox-box.ui-state-focus {
  border-color: #1f3a5f; }
body .ui-chkbox .ui-chkbox-box.ui-state-focus .ui-chkbox-icon {
  color: #1f3a5f; }
body .ui-radiobutton .ui-radiobutton-box:before {
  background-color: #2f5280; }
body .ui-radiobutton .ui-radiobutton-box.ui-state-active {
  border-color: #1f3a5f; }
body .ui-radiobutton .ui-radiobutton-box .ui-icon-bullet {
  background-color: #1f3a5f; }
body .ui-selectonemenu {
  background-image: linear-gradient(to bottom, #1f3a5f, #1f3a5f), linear-gradient(to bottom, #bdbdbd, #bdbdbd); }
body .ui-selectonemenu.ui-state-focus.ui-state-error .ui-selectonemenu-trigger .ui-icon {
  color: #a8322d; }
body .ui-selectonemenu.ui-state-error {
  background-image: linear-gradient(to bottom, #a8322d, #a8322d), linear-gradient(to bottom, #a8322d, #a8322d); }
body .ui-selectcheckboxmenu {
  background-image: linear-gradient(to bottom, #1f3a5f, #1f3a5f), linear-gradient(to bottom, #bdbdbd, #bdbdbd); }
body .ui-selectcheckboxmenu.ui-state-error {
  background-image: linear-gradient(to bottom, #a8322d, #a8322d), linear-gradient(to bottom, #a8322d, #a8322d); }
body .ui-selectcheckboxmenu.ui-state-error .ui-selectcheckboxmenu-trigger .ui-icon {
  color: #a8322d; }
body .ui-selectcheckboxmenu-panel .ui-selectcheckboxmenu-header .ui-chkbox .ui-chkbox-box.ui-state-focus {
  background-color: #2f5280; }
body .ui-selectcheckboxmenu-panel .ui-selectcheckboxmenu-header .ui-selectcheckboxmenu-close.ui-state-hover {
  background-color: #2f5280; }
body #keypad-div .keypad-shift,
body #keypad-div .keypad-enter,
body #keypad-div .keypad-spacebar,
body #keypad-div .keypad-back,
body #keypad-div .keypad-close,
body #keypad-div .keypad-clear,
body .keypad-popup .keypad-shift,
body .keypad-popup .keypad-enter,
body .keypad-popup .keypad-spacebar,
body .keypad-popup .keypad-back,
body .keypad-popup .keypad-close,
body .keypad-popup .keypad-clear {
  background-color: #1f3a5f; }
body #keypad-div .keypad-shift.ui-state-hover,
body #keypad-div .keypad-enter.ui-state-hover,
body #keypad-div .keypad-spacebar.ui-state-hover,
body #keypad-div .keypad-back.ui-state-hover,
body #keypad-div .keypad-close.ui-state-hover,
body #keypad-div .keypad-clear.ui-state-hover,
body .keypad-popup .keypad-shift.ui-state-hover,
body .keypad-popup .keypad-enter.ui-state-hover,
body .keypad-popup .keypad-spacebar.ui-state-hover,
body .keypad-popup .keypad-back.ui-state-hover,
body .keypad-popup .keypad-close.ui-state-hover,
body .keypad-popup .keypad-clear.ui-state-hover {
  background-color: #172c48; }
body .ui-selectmanymenu .ui-selectlistbox-item .ui-chkbox .ui-chkbox-box.ui-state-active {
  background-color: #2a5c9a; }
body .ui-selectmanymenu .ui-selectlistbox-filter-container {
  background-color: #1f3a5f; }
body .ui-inputswitch.ui-inputswitch-checked {
  background-color: #9bb8dc;
  border-color: #9bb8dc; }
body .ui-inputswitch.ui-inputswitch-checked .ui-inputswitch-handle {
  background-color: #2a5c9a; }
body .ui-toggleswitch.ui-toggleswitch-checked .ui-toggleswitch-slider {
  background-color: #9bb8dc;
  border-color: #9bb8dc; }
body .ui-toggleswitch.ui-toggleswitch-checked .ui-toggleswitch-slider:before {
  background-color: #2a5c9a; }
body .ui-slider .ui-slider-handle {
  background-color: #2a5c9a; }
body .ui-slider .ui-slider-range {
  background-color: #2a5c9a; }
body .ui-datepicker .ui-datepicker-header {
  background: #172c48;
  border-color: #172c48; }
body .ui-datepicker .ui-datepicker-header .ui-datepicker-next.ui-datepicker-next-hover {
  background-color: #1f3a5f; }
body .ui-datepicker .ui-datepicker-header .ui-datepicker-prev.ui-datepicker-prev-hover {
  background-color: #1f3a5f; }
body .ui-datepicker .ui-datepicker-header .ui-datepicker-prev:hover {
  background-color: #1f3a5f; }
body .ui-datepicker thead tr {
  background: #1f3a5f; }
body .ui-datepicker tbody td a.ui-state-active,
body .ui-datepicker tbody td span.ui-state-active {
  background-color: #2a5c9a; }
body .ui-datepicker tbody td.ui-datepicker-today a,
body .ui-datepicker tbody td.ui-datepicker-today span {
  border: 1px solid #2a5c9a; }
body .ui-datepicker tbody td.ui-datepicker-today a.ui-state-active,
body .ui-datepicker tbody td.ui-datepicker-today span.ui-state-active {
  background-color: #2a5c9a; }
body .ui-datepicker .ui-timepicker-div .ui_tpicker_time input.ui-state-focus {
  border-color: #1f3a5f; }
body .p-datepicker-panel table td a.ui-state-active {
  background-color: #2a5c9a; }
body .p-datepicker-panel.ui-datepicker-monthpicker .ui-monthpicker .ui-monthpicker-month.ui-state-active {
  background-color: #2a5c9a; }
body .p-datepicker-panel .ui-timepicker .ui-picker-up:hover {
  background-color: #2f5280; }
body .p-datepicker-panel .ui-timepicker .ui-picker-down:hover {
  background-color: #2f5280; }
body .p-datepicker-panel .ui-datepicker-buttonbar .ui-button:hover {
  background-color: #172c48; }
body .ui-rating .ui-rating-star.ui-rating-star-on a {
  color: #2a5c9a; }
body .ui-fileupload .ui-fileupload-buttonbar .ui-button {
  background-color: #2a5c9a; }
body .ui-fileupload .ui-fileupload-buttonbar .ui-button.ui-state-hover {
  background-color: #1f3a5f; }
body .ui-steps .ui-steps-item.ui-state-highlight .ui-steps-number {
  background-color: #1f3a5f; }
body .ui-tabmenu .ui-tabmenu-nav > .ui-tabmenuitem.ui-state-active {
  border-color: #2a5c9a; }
body .ui-tabmenu .ui-tabmenu-nav > .ui-tabmenuitem.ui-state-active a {
  color: #1f3a5f; }
body .ui-tabmenu .ui-tabmenu-nav > .ui-tabmenuitem.ui-state-active a .ui-icon {
  color: #1f3a5f; }
body .ui-panelmenu .ui-panelmenu-header {
  background-color: #1f3a5f; }
body .ui-panelmenu .ui-panelmenu-header.ui-state-hover {
  background-color: #172c48; }
body .ui-panelmenu .ui-panelmenu-header.ui-menuitem-outline {
  background-color: #172c48; }
body .ui-panelmenu .ui-panelmenu-header.ui-state-active {
  background-color: #2a5c9a; }
body .ui-messages .ui-messages-error {
  background-color: #a8322d;
  border-color: #a8322d; }
body .ui-message.ui-message-error {
  background-color: #a8322d;
  border-color: #a8322d; }
body .md-inputfield .ui-message.ui-message-error {
  color: #a8322d; }
body .md-inputfield .ui-message.ui-message-error .ui-message-error-icon {
  color: #a8322d; }
body .ui-growl > .ui-growl-item-container.ui-growl-error {
  background-color: #a8322d; }
body .ui-log .ui-log-header > .ui-log-button.ui-state-hover {
  background-color: #2f5280; }
body .timeline-frame .timeline-event.ui-state-active {
  background-color: #2a5c9a;
  border-color: #2a5c9a; }
body .ui-lightbox .ui-lightbox-caption .ui-lightbox-close.ui-state-hover {
  background-color: #2f5280; }
body .ui-lightbox .ui-lightbox-content-wrapper .ui-lightbox-nav-right .ui-icon,
body .ui-lightbox .ui-lightbox-content-wrapper .ui-lightbox-nav-left .ui-icon {
  color: #2f5280; }
body .ui-overlaypanel .ui-overlaypanel-close {
  background-color: #2a5c9a; }
body .ui-overlaypanel .ui-overlaypanel-close.ui-state-hover {
  background-color: #1f3a5f; }
body .ui-state-error,
body .ui-widget.ui-state-error,
body .ui-widget-content .ui-state-error,
body .ui-widget-header .ui-state-error {
  border-color: #a8322d; }
body .ui-panel .ui-panel-titlebar .ui-panel-titlebar-icon:hover {
  background-color: #2f5280; }
body .ui-fieldset .ui-fieldset-legend {
  color: #1f3a5f; }
body .ui-fieldset .ui-fieldset-legend .ui-fieldset-toggler {
  background-color: #1f3a5f; }
body .ui-fieldset .ui-fieldset-legend .ui-fieldset-toggler:hover {
  background-color: #172c48; }
body .ui-notificationbar {
  background-color: #2a5c9a; }
body .ui-panelgrid .ui-panelgrid-header > .ui-widget-header,
body .ui-panelgrid .ui-panelgrid-footer > .ui-widget-header {
  border-color: #2f5280; }
body .ui-panelgrid tbody .ui-panelgrid-cell.ui-widget-header,
body .ui-panelgrid tfoot .ui-panelgrid-cell.ui-widget-header {
  background-color: #2f5280; }
body .ui-accordion .ui-accordion-header {
  background-color: #1f3a5f; }
body .ui-accordion .ui-accordion-header.ui-state-hover {
  background-color: #172c48; }
body .ui-accordion .ui-accordion-header.ui-tabs-outline {
  background-color: #172c48; }
body .ui-accordion .ui-accordion-header.ui-state-active {
  background-color: #2a5c9a; }
body .ui-toolbar {
  background-color: #172c48; }
body .ui-tabs .ui-tabs-nav > li.ui-state-active {
  border-color: #2a5c9a; }
body .ui-tabs .ui-tabs-nav > li.ui-state-active a {
  color: #1f3a5f; }
body .ui-tabs .ui-tabs-nav > li.ui-state-active > .ui-icon-close {
  color: #2a5c9a; }
body .ui-tabs .ui-tabs-nav > li.ui-tabs-outline {
  border-color: #9bb8dc; }
body .ui-wizard .ui-wizard-step-titles {
  background-color: #172c48; }
body .ui-wizard .ui-wizard-step-titles > li.ui-state-highlight {
  border-bottom: 2px solid #2a5c9a; }
.layout-wrapper .topbar {
  background-color: #1f3a5f; }
.layout-wrapper .topbar .topbar-left {
  background-color: #172c48; }
.layout-wrapper .topbar .topbar-right #menu-button {
  background-color: #2a5c9a; }
.layout-wrapper .layout-menu.layout-menu-dark {
  background-color: #172c48; }
.layout-wrapper .layout-menu.layout-menu-dark #profile-menu {
  border-bottom: 1px solid #2f5280; }
.layout-wrapper .layout-menu.layout-menu-dark ul.ultima-menu li a:hover {
  background-color: #2f5280; }
.layout-wrapper .layout-menu.layout-menu-dark ul.ultima-menu li.active-menuitem > a {
  background-color: #2a5c9a; }
.layout-wrapper .layout-menu.layout-menu-dark ul.ultima-menu li.active-menuitem > a .menuitem-badge {
  color: #2a5c9a; }
.layout-wrapper .ultima-menu li a .menuitem-badge {
  background-color: #2a5c9a; }
.layout-wrapper .ultima-menu li.active-menuitem > a {
  color: #1f3a5f; }
.ajax-loader {
  color: #2a5c9a; }
@media (min-width: 1025px) {
.layout-wrapper .topbar-items > li > a .topbar-badge {
  background-color: #2a5c9a; }
}
.layout-wrapper.menu-layout-horizontal .topbar .topbar-left {
  background-color: #1f3a5f; }
.layout-wrapper.menu-layout-horizontal .layout-menu {
  background-color: #172c48; }
.layout-wrapper.menu-layout-horizontal .layout-menu ul.ultima-menu > li > ul li.active-menuitem > a {
  color: #1f3a5f; }
.layout-wrapper.menu-layout-horizontal .layout-menu ul.ultima-menu > li.active-menuitem > a {
  background-color: #2a5c9a; }
.layout-wrapper.menu-layout-horizontal .layout-menu ul.ultima-menu li.active-menuitem a .menuitem-badge {
  color: #2a5c9a; }
.layout-wrapper.menu-layout-horizontal .layout-menu.layout-menu-dark {
  background-color: #172c48; }
.layout-wrapper.menu-layout-horizontal .layout-menu.layout-menu-dark ul.ultima-menu li a:hover {
  background-color: #2f5280; }
.layout-wrapper.menu-layout-horizontal .layout-menu.layout-menu-dark ul.ultima-menu li.active-menuitem > a {
  background-color: #2a5c9a; }
.layout-wrapper.menu-layout-horizontal .layout-menu.layout-menu-dark ul.ultima-menu li ul {
  background-color: #172c48; }
.layout-wrapper.layout-menu-slim .topbar .topbar-left {
  background-color: #1f3a5f; }
.layout-wrapper.layout-menu-slim .layout-menu.layout-menu-dark ul.ultima-menu {
  background-color: #172c48; }
.layout-wrapper.layout-menu-slim .layout-menu.layout-menu-dark ul.ultima-menu li a:hover {
  background-color: #2f5280; }
.layout-wrapper.layout-menu-slim .layout-menu.layout-menu-dark ul.ultima-menu li.active-menuitem > a {
  background-color: #2a5c9a; }
.layout-wrapper.layout-menu-slim .layout-menu.layout-menu-dark ul.ultima-menu li ul {
  background-color: #172c48; }
.layout-wrapper.layout-menu-slim.layout-menu-dark .layout-menu > li > ul {
  background-color: #172c48; }
@media (max-width: 1024px) {
.layout-wrapper .topbar .topbar-right .topbar-items > li > a .topbar-badge {
  background-color: #2a5c9a; }
}
@media (max-width: 1024px) {
.layout-wrapper .topbar .topbar-right .topbar-items > li.active-top-menu > a {
  color: #1f3a5f; }
}
@media (max-width: 1024px) {
.layout-wrapper .topbar .topbar-right .topbar-items > li.search-item input:focus ~ label,
.layout-wrapper .topbar .topbar-right .topbar-items > li.search-item input.ui-state-filled ~ label {
  color: #1f3a5f; }
}


/* ===== Parte 2: refinamentos do Portal ===== */


:root {
    --primaria: #1f3a5f;
    --primaria-escura: #172c48;
    --primaria-media: #2f5280;
    --destaque: #2a5c9a;
    --primaria-clara: #e8eef6;
    --texto: #1d232b;
    --texto-suave: #5b6675;
    --borda: #d6dce4;
    --fundo: #f3f5f8;
    --papel: #ffffff;
    --ok: #1e7b4b;
    --ok-fundo: #e3f4ea;
    --nao: #a8322d;
    --nao-fundo: #fbe7e6;
    --alerta: #8a5a00;
    --alerta-fundo: #fff4d6;
    --raio: 6px;
    --sombra: 0 1px 2px rgba(20, 35, 60, .06), 0 2px 8px rgba(20, 35, 60, .06);
}

/* ---------- Base ---------- */
body.main-body {
    background-color: var(--fundo);
    color: var(--texto);
}
body, body .ui-widget, body .ui-widget .ui-widget {
    font-family: Roboto, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
}
body.main-body a { color: var(--destaque); }
body.main-body a:hover { color: var(--primaria); }

/* ---------- Topbar ---------- */
.layout-wrapper .topbar {
    background-color: var(--primaria);
    box-shadow: 0 2px 6px rgba(20, 35, 60, .25);
}
.layout-wrapper .topbar .topbar-left {
    background-color: var(--primaria-escura);
    box-shadow: none;
    display: flex;
    align-items: center;
    padding: 0 20px;
}
.layout-wrapper .topbar .topbar-left .logo {
    display: flex;
    align-items: center;
    gap: 10px;
    color: #fff;
    text-decoration: none;
    width: auto;
    height: auto;
    background: none;
}
.topbar .marca-sigla {
    flex: 0 0 auto;
    width: 38px;
    height: 38px;
    border-radius: 8px;
    background: rgba(255, 255, 255, .12);
    border: 1px solid rgba(255, 255, 255, .25);
    display: flex;
    align-items: center;
    justify-content: center;
}
.topbar .marca-sigla .material-icons { font-size: 22px; color: #fff; }
.topbar .marca-texto { display: flex; flex-direction: column; line-height: 1.2; }
.topbar .marca-texto strong { font-size: 15px; font-weight: 600; letter-spacing: .2px; color: #fff; }
.topbar .marca-texto small { font-size: 10.5px; letter-spacing: .8px; text-transform: uppercase; color: rgba(255, 255, 255, .7); }

.topbar .topbar-perfil {
    display: inline-block;
    vertical-align: middle;
    margin-left: 6px;
    padding: 4px 12px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .12);
    color: #fff;
    font-size: 13px;
    font-weight: 500;
    letter-spacing: .2px;
}

/* ---------- Menu lateral ---------- */
.layout-wrapper .layout-menu {
    background-color: var(--papel);
    box-shadow: 1px 0 0 var(--borda), 3px 0 10px rgba(20, 35, 60, .05);
}
.layout-wrapper .layout-menu .profile {
    background: linear-gradient(160deg, var(--primaria) 0%, var(--primaria-media) 100%);
    padding-bottom: 12px;
}
.layout-wrapper .layout-menu .profile .profile-image,
.layout-wrapper .layout-menu .profile img.profile-image {
    border-radius: 50%;
    border: 2px solid rgba(255, 255, 255, .6);
    object-fit: cover;
    background: rgba(255, 255, 255, .15);
}
.layout-wrapper .layout-menu .profile .profile-name,
.layout-wrapper .layout-menu .profile #profile-options i { color: #fff; }
.layout-wrapper .layout-menu .profile .profile-name small,
.layout-wrapper .layout-menu .profile .profile-curso {
    display: block;
    font-size: 12px;
    opacity: .8;
}
.layout-wrapper .ultima-menu li a { color: var(--texto); border-radius: 0 var(--raio) var(--raio) 0; }
.layout-wrapper .ultima-menu li a i { color: var(--texto-suave); }
.layout-wrapper .ultima-menu li a:hover { background-color: var(--primaria-clara); }
.layout-wrapper .ultima-menu li.active-menuitem > a,
.layout-wrapper .layout-menu ul.ultima-menu li a.active-menuitem-routerlink {
    color: var(--primaria);
    background-color: var(--primaria-clara);
    box-shadow: inset 3px 0 0 var(--destaque);
    font-weight: 600;
}
.layout-wrapper .ultima-menu li.active-menuitem > a i { color: var(--primaria); }
.layout-wrapper .layout-menu #profile-menu { border-bottom: 1px solid var(--borda); }

/* ---------- Área principal / cards ---------- */
.card {
    background: var(--papel);
    border: 1px solid var(--borda);
    border-radius: var(--raio);
    box-shadow: var(--sombra);
}
.card h1,
body.layout-compact .card h1 {
    color: var(--primaria);
    font-size: 20px;
    font-weight: 600;
    margin: 4px 0 16px;
    padding-bottom: 10px;
    border-bottom: 2px solid var(--primaria-clara);
}
.card h2, body.layout-compact .card h2 { color: var(--primaria); font-size: 17px; font-weight: 600; }
.card h3, body.layout-compact .card h3 { color: var(--texto); font-size: 15px; font-weight: 600; }
.card p { color: var(--texto-suave); }

/* ---------- Painéis, fieldsets, abas, acordeões ---------- */
body .ui-panel,
body .ui-fieldset {
    border: 1px solid var(--borda);
    border-radius: var(--raio);
    box-shadow: none;
}
body .ui-panel .ui-panel-titlebar,
body .ui-accordion .ui-accordion-header {
    background: var(--primaria-clara);
    color: var(--primaria);
    border: 0 none;
    border-bottom: 1px solid var(--borda);
    font-weight: 600;
}
body .ui-panel .ui-panel-titlebar { border-radius: var(--raio) var(--raio) 0 0; }
body .ui-panel .ui-panel-titlebar .ui-panel-titlebar-icon,
body .ui-accordion .ui-accordion-header .ui-icon,
body .ui-accordion .ui-accordion-header a { color: var(--primaria); }
body .ui-accordion .ui-accordion-header.ui-state-active {
    background: var(--primaria);
    color: #fff;
}
body .ui-accordion .ui-accordion-header.ui-state-active a,
body .ui-accordion .ui-accordion-header.ui-state-active .ui-icon { color: #fff; }
body .ui-fieldset .ui-fieldset-legend {
    background: var(--papel);
    color: var(--primaria);
    border: 1px solid var(--borda);
    border-radius: var(--raio);
    font-weight: 600;
}
body .ui-tabs .ui-tabs-nav {
    background: transparent;
    border-bottom: 1px solid var(--borda);
}
body .ui-tabs .ui-tabs-nav li a { color: var(--texto-suave); }
body .ui-tabs .ui-tabs-nav li.ui-state-active {
    background: transparent;
    border-bottom: 3px solid var(--destaque);
}
body .ui-tabs .ui-tabs-nav li.ui-state-active a { color: var(--primaria); font-weight: 600; }

/* ---------- Botões ---------- */
body .ui-button {
    background-color: var(--primaria);
    border-radius: var(--raio);
    box-shadow: none;
    font-weight: 500;
    letter-spacing: .2px;
}
body .ui-button.ui-state-hover,
body .ui-button:enabled:hover { background-color: var(--primaria-media); }
body .ui-button.ui-state-focus,
body .ui-button:focus { background-color: var(--primaria); box-shadow: 0 0 0 3px rgba(42, 92, 154, .25); }
body .ui-button.ui-button-text-icon-left .ui-button-text { padding-left: 6px; }
body .ui-button.ui-button-text-icon-right .ui-button-text { padding-right: 6px; }
/* variações opcionais: styleClass="botao-secundario | botao-sucesso | botao-perigo" */
body .ui-button.botao-secundario {
    background-color: var(--papel);
    color: var(--primaria);
    border: 1px solid var(--borda);
}
body .ui-button.botao-secundario.ui-state-hover,
body .ui-button.botao-secundario:enabled:hover { background-color: var(--primaria-clara); }
body .ui-button.botao-secundario .ui-icon,
body .ui-button.botao-secundario .ui-button-text { color: var(--primaria); }
body .ui-button.botao-sucesso { background-color: var(--ok); }
body .ui-button.botao-perigo { background-color: var(--nao); }

/* ---------- Campos de formulário ---------- */
body .ui-inputfield,
body .ui-selectonemenu,
body .ui-autocomplete-multiple-container,
body .ui-chips-container {
    border-color: var(--borda);
}
body .ui-inputfield.ui-state-focus,
body .ui-inputfield:focus { border-color: var(--destaque); }
body .ui-selectonemenu .ui-selectonemenu-trigger .ui-icon { color: var(--texto-suave); }
body .ui-chkbox .ui-chkbox-box.ui-state-active,
body .ui-radiobutton .ui-radiobutton-box.ui-state-active {
    background-color: var(--destaque);
    border-color: var(--destaque);
}

/* ---------- Tabelas ---------- */
body .ui-datatable .ui-datatable-header,
body .ui-datatable .ui-datatable-footer {
    background: var(--primaria);
    color: #fff;
    border-color: var(--primaria);
    font-weight: 600;
}
body .ui-datatable thead th {
    background-color: var(--primaria-clara);
    color: var(--primaria);
    border-color: var(--borda);
    font-size: 12.5px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .3px;
}
body .ui-datatable tbody td { border-color: var(--borda); }
body .ui-datatable tbody tr.ui-widget-content,
body .ui-datatable tbody.ui-datatable-data tr.ui-state-hover { border-color: var(--borda); }
body .ui-datatable thead th:first-child { border-left-color: var(--borda); }
body .ui-datatable thead th:last-child { border-right-color: var(--borda); }
body .ui-datatable tbody tr.ui-state-hover,
body .ui-datatable tbody tr.ui-datatable-even.ui-state-hover { background-color: var(--primaria-clara); color: var(--texto); }
body .ui-datatable tbody tr.ui-datatable-even { background-color: #f8fafc; }
body .ui-datatable tbody tr.ui-state-highlight,
body .ui-datatable tbody tr.ui-datatable-even.ui-state-highlight { background-color: var(--destaque); color: #fff; }
body .ui-datatable .ui-datatable-empty-message td { color: var(--texto-suave); font-style: italic; }
body .ui-paginator {
    background-color: var(--papel);
    color: var(--texto);
    border: 1px solid var(--borda);
}
body .ui-paginator a,
body .ui-paginator .ui-paginator-pages a { color: var(--texto-suave); border-radius: var(--raio); }
body .ui-paginator > a.ui-state-hover,
body .ui-paginator .ui-paginator-pages a.ui-state-hover { background-color: var(--primaria-clara); color: var(--primaria); }
body .ui-paginator .ui-paginator-pages a.ui-state-active { background-color: var(--primaria); color: #fff; }

/* ---------- Diálogos ---------- */
body .ui-dialog {
    border-radius: var(--raio);
    box-shadow: 0 10px 40px rgba(20, 35, 60, .25);
    overflow: hidden;
}
body .ui-dialog .ui-dialog-titlebar {
    background-color: var(--primaria);
    color: #fff;
    border: 0 none;
}
body .ui-dialog .ui-dialog-titlebar .ui-dialog-title { font-weight: 600; }
body .ui-dialog .ui-dialog-buttonpane,
body .ui-dialog .ui-dialog-footer { border-top: 1px solid var(--borda); background: var(--fundo); }
body .ui-widget-overlay { background-color: rgba(23, 44, 72, .55); }

/* ---------- Mensagens (p:messages / p:growl / p:message) ---------- */
body .ui-messages > div,
body .ui-growl-item-container,
body .ui-message { border-radius: var(--raio); box-shadow: none; }
body .ui-messages .ui-messages-info,   body .ui-growl .ui-growl-item-container.ui-growl-info,   body .ui-message.ui-message-info  { background: var(--primaria-clara); color: var(--primaria); border: 1px solid #c8d6ea; border-left: 4px solid var(--destaque); }
body .ui-messages .ui-messages-warn,   body .ui-growl .ui-growl-item-container.ui-growl-warn,   body .ui-message.ui-message-warn  { background: var(--alerta-fundo); color: var(--alerta); border: 1px solid #f0dca3; border-left: 4px solid var(--alerta); }
body .ui-messages .ui-messages-error,  body .ui-growl .ui-growl-item-container.ui-growl-error,  body .ui-message.ui-message-error { background: var(--nao-fundo); color: var(--nao); border: 1px solid #f1c4c1; border-left: 4px solid var(--nao); }
body .ui-messages .ui-messages-fatal,  body .ui-growl .ui-growl-item-container.ui-growl-fatal,  body .ui-message.ui-message-fatal { background: var(--nao); color: #fff; }
body .ui-messages .ui-messages-info *, body .ui-messages .ui-messages-warn *, body .ui-messages .ui-messages-error *,
body .ui-growl .ui-growl-info *, body .ui-growl .ui-growl-warn *, body .ui-growl .ui-growl-error *,
body .ui-message.ui-message-info *, body .ui-message.ui-message-warn *, body .ui-message.ui-message-error * { color: inherit; }
/* sucesso: use severity INFO com styleClass="msg-ok" se quiser verde */
body .msg-ok .ui-messages-info,
body .ui-messages.msg-ok .ui-messages-info { background: var(--ok-fundo); color: var(--ok); border-color: #b9e0c9; border-left-color: var(--ok); }

/* ---------- Rodapé ---------- */
.layout-wrapper .footer .card {
    background: transparent;
    border: 0 none;
    box-shadow: none;
    border-top: 1px solid var(--borda);
    border-radius: 0;
    color: var(--texto-suave);
    font-size: 12.5px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 8px;
}
.layout-wrapper .footer .footer-marca { display: flex; align-items: center; gap: 10px; }
.layout-wrapper .footer .footer-marca strong { color: var(--primaria); font-weight: 600; }

/* ---------- Indicador de carregamento (p:ajaxStatus) ---------- */
.ajax-loader { color: var(--destaque); }

/* ---------- Utilitários para uso nas páginas ---------- */
.texto-suave  { color: var(--texto-suave); }
.etiqueta { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; line-height: 1.6; }
.etiqueta-ok     { background: var(--ok-fundo);     color: var(--ok); }
.etiqueta-nao    { background: var(--nao-fundo);    color: var(--nao); }
.etiqueta-alerta { background: var(--alerta-fundo); color: var(--alerta); }
.etiqueta-info   { background: var(--primaria-clara); color: var(--primaria); }


/* ===== Parte 3: diálogos comuns (dialog.xhtml) ===== */
body .ui-dialog.dialogo-carregando,
body .ui-dialog.dialogo-sessao { border: 0 none; }
.carregando {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 18px 28px 12px;
    min-width: 220px;
    text-align: center;
    color: var(--texto);
}
.carregando strong { font-size: 15px; color: var(--primaria); }
.carregando span { font-size: 12.5px; color: var(--texto-suave); }
.carregando .carregando-spinner {
    width: 42px;
    height: 42px;
    margin-bottom: 8px;
    border-radius: 50%;
    border: 4px solid var(--primaria-clara);
    border-top-color: var(--destaque);
    animation: portal-girar .8s linear infinite;
}
@keyframes portal-girar { to { transform: rotate(360deg); } }
.sessao-expirada { text-align: center; padding: 16px 24px 8px; max-width: 340px; }
.sessao-expirada h3 { margin: 10px 0 6px; color: var(--primaria); }
.sessao-expirada p { margin: 0; color: var(--texto-suave); }
.sessao-expirada-icone,
.acesso-mensagem-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--alerta-fundo);
    color: var(--alerta);
}
.sessao-expirada-icone .material-icons,
.acesso-mensagem-icone .material-icons { font-size: 30px; }

/* ---------- Avisos em bloco (uso livre nas páginas) ---------- */
.aviso {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 14px;
    margin: 6px 0 14px;
    border-radius: var(--raio);
    border: 1px solid transparent;
    border-left-width: 4px;
    font-size: 13.5px;
    line-height: 1.5;
    text-align: left;
}
.aviso > .material-icons { font-size: 20px; flex: 0 0 auto; margin-top: 1px; }
.aviso-info   { background: var(--primaria-clara); color: var(--primaria); border-color: #c8d6ea; border-left-color: var(--destaque); }
.aviso-ok     { background: var(--ok-fundo);     color: var(--ok);     border-color: #b9e0c9; border-left-color: var(--ok); }
.aviso-alerta { background: var(--alerta-fundo); color: var(--alerta); border-color: #f0dca3; border-left-color: var(--alerta); }
.aviso-erro   { background: var(--nao-fundo);    color: var(--nao);    border-color: #f1c4c1; border-left-color: var(--nao); }
.aviso a { color: inherit; text-decoration: underline; }

/* ---------- Botão "link" (ação discreta) ---------- */
body .ui-button.botao-link {
    background: transparent;
    color: var(--texto-suave);
    border: 0 none;
    box-shadow: none;
}
body .ui-button.botao-link .ui-icon,
body .ui-button.botao-link .ui-button-text { color: var(--texto-suave); }
body .ui-button.botao-link.ui-state-hover,
body .ui-button.botao-link:hover { background: var(--fundo); color: var(--primaria); }


/* ===== Parte 4: páginas de acesso (template-acesso.xhtml) ===== */
body.acesso-body {
    margin: 0;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background:
        linear-gradient(180deg, var(--primaria) 0, var(--primaria-media) 300px, var(--fundo) 300px) no-repeat,
        var(--fundo);
    color: var(--texto);
}
.acesso-topo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 32px;
}
.acesso-marca { display: flex; align-items: center; gap: 10px; text-decoration: none; color: #fff; }
.acesso-marca .marca-sigla {
    width: 40px; height: 40px; border-radius: 8px;
    background: rgba(255, 255, 255, .12); border: 1px solid rgba(255, 255, 255, .25);
    display: flex; align-items: center; justify-content: center;
}
.acesso-marca .marca-sigla .material-icons { color: #fff; font-size: 22px; }
.acesso-marca .marca-texto { display: flex; flex-direction: column; line-height: 1.2; }
.acesso-marca .marca-texto strong { font-size: 16px; font-weight: 600; color: #fff; }
.acesso-marca .marca-texto small { font-size: 10.5px; letter-spacing: .8px; text-transform: uppercase; color: rgba(255, 255, 255, .7); }

.acesso-conteudo {
    flex: 1 0 auto;
    width: 100%;
    max-width: 440px;
    margin: 0 auto;
    padding: 24px 16px 40px;
    box-sizing: border-box;
}
body.acesso-largo .acesso-conteudo { max-width: 1100px; }

.card.acesso-painel {
    padding: 28px 32px 24px;
    border-radius: 10px;
    box-shadow: 0 10px 30px rgba(20, 35, 60, .14);
    border: 1px solid var(--borda);
}
.acesso-cabecalho { margin-bottom: 18px; }
.acesso-cabecalho h1 {
    margin: 0 0 4px;
    font-size: 21px;
    font-weight: 600;
    color: var(--primaria);
    border: 0 none;
    padding: 0;
}
.acesso-cabecalho p { margin: 0; font-size: 13.5px; color: var(--texto-suave); }
.acesso-cabecalho .acesso-curso { display: inline-block; margin-top: 10px; font-size: 13px; font-weight: 600; color: var(--texto); }
.acesso-cabecalho-linha { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.acesso-cabecalho-acoes { display: flex; gap: 8px; flex-wrap: wrap; }

.acesso-campo { margin: 22px 0 6px; }
.acesso-campo .md-inputfield { display: block; }
.acesso-dica { display: flex; align-items: center; justify-content: space-between; margin-top: 6px; font-size: 12px; color: var(--texto-suave); }
.acesso-dica .acesso-ajuda { color: var(--destaque); display: inline-flex; }
.acesso-dica .acesso-ajuda .material-icons { font-size: 20px; }
.acesso-texto { font-size: 13.5px; color: var(--texto); margin: 8px 0; }

.acesso-acoes { display: flex; flex-direction: column; gap: 10px; margin-top: 24px; }
.acesso-acoes .ui-button { width: 100%; margin: 0; }
.acesso-acoes .ui-button.botao-link { margin-top: -2px; }

.acesso-etapas { list-style: none; margin: 0 0 6px; padding: 0; }
.acesso-etapas li {
    display: flex; flex-direction: column;
    padding: 8px 12px; margin-bottom: 6px;
    border-radius: var(--raio);
    background: var(--primaria-clara);
    font-size: 13px;
}
.acesso-etapas li strong { color: var(--primaria); }
.acesso-etapas li span { color: var(--texto-suave); }

.acesso-rodape {
    display: flex; align-items: center; justify-content: center; gap: 10px;
    padding: 18px 16px 22px;
    font-size: 12px;
    color: var(--texto-suave);
    text-align: center;
}

/* Mensagens (erro, sessão expirada, base indisponível) */
.card.acesso-mensagem { text-align: center; padding: 36px 32px 28px; margin-top: 30px; }
.acesso-mensagem h1 { font-size: 20px; color: var(--primaria); margin: 14px 0 8px; border: 0 none; padding: 0; }
.acesso-mensagem p { color: var(--texto-suave); margin: 0 0 22px; font-size: 14px; }
.acesso-mensagem-erro .acesso-mensagem-icone { background: var(--nao-fundo); color: var(--nao); }

/* Seleção de perfil */
.perfil-grade {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
    gap: 14px;
}
.perfil-cartao {
    display: flex; flex-direction: column; align-items: flex-start; gap: 6px;
    padding: 16px;
    border: 1px solid var(--borda);
    border-radius: 8px;
    background: var(--papel);
    transition: border-color .15s, box-shadow .15s;
}
.perfil-cartao:hover { border-color: #b7c6da; box-shadow: 0 4px 14px rgba(20, 35, 60, .08); }
.perfil-icone {
    width: 36px; height: 36px; border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    background: var(--primaria-clara); color: var(--primaria);
}
.perfil-icone .material-icons { font-size: 20px; }
.perfil-nome { font-weight: 600; color: var(--texto); font-size: 14px; line-height: 1.35; flex: 1 0 auto; }
.perfil-turma { font-size: 12px; color: var(--texto-suave); }
.perfil-cartao .ui-button { margin-top: 8px; align-self: stretch; }

/* Landing */
body.acesso-landing {
    background:
        linear-gradient(160deg, var(--primaria-escura) 0, var(--primaria) 55%, var(--primaria-media) 100%) top / 100% 470px no-repeat,
        var(--fundo);
}
body.acesso-landing .acesso-conteudo { max-width: 1120px; padding-top: 10px; }
body .ui-button.botao-topo { background: rgba(255, 255, 255, .14); border: 1px solid rgba(255, 255, 255, .35); }
body .ui-button.botao-topo.ui-state-hover,
body .ui-button.botao-topo:hover { background: rgba(255, 255, 255, .24); }
body .ui-button.botao-grande { background: #fff; color: var(--primaria); font-size: 15px; }
body .ui-button.botao-grande .ui-icon,
body .ui-button.botao-grande .ui-button-text { color: var(--primaria); }
body .ui-button.botao-grande.ui-state-hover,
body .ui-button.botao-grande:hover { background: var(--primaria-clara); }
.landing-destaque {
    display: flex; align-items: center; justify-content: space-between; gap: 40px;
    padding: 36px 8px 70px;
    color: #fff;
}
.landing-destaque-texto { max-width: 600px; }
.landing-rotulo {
    display: inline-block; padding: 3px 12px; margin-bottom: 14px;
    border-radius: 999px; background: rgba(255, 255, 255, .14);
    font-size: 12px; letter-spacing: .6px; text-transform: uppercase;
}
.landing-destaque h1 { margin: 0 0 14px; font-size: 34px; line-height: 1.2; font-weight: 600; color: #fff; }
.landing-destaque p { margin: 0 0 26px; font-size: 16px; line-height: 1.6; color: rgba(255, 255, 255, .85); }
.landing-destaque-logo {
    flex: 0 0 auto;
    background: #fff;
    border-radius: 14px;
    padding: 26px 30px;
    box-shadow: 0 14px 40px rgba(0, 0, 0, .25);
}
.landing-destaque-logo img { display: block; max-width: 260px; height: auto; }
.landing-recursos {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
    gap: 16px;
}
.landing-recurso {
    background: var(--papel);
    border: 1px solid var(--borda);
    border-radius: 10px;
    padding: 22px 20px;
    box-shadow: var(--sombra);
}
.landing-recurso h3 { margin: 12px 0 6px; font-size: 16px; color: var(--primaria); }
.landing-recurso p { margin: 0; font-size: 13.5px; line-height: 1.55; color: var(--texto-suave); }
.landing-recurso-icone {
    width: 42px; height: 42px; border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    background: var(--primaria-clara); color: var(--primaria);
}
@media (max-width: 760px) {
    .landing-destaque { flex-direction: column-reverse; align-items: flex-start; padding-bottom: 40px; }
    .landing-destaque h1 { font-size: 26px; }
    .acesso-topo { padding: 14px 16px; }
}


/* ===== Parte 5: documentos para impressão (atestados) ===== */
body.documento-body { background: var(--fundo); color: var(--texto); margin: 0; }
.documento-acoes { max-width: 210mm; margin: 20px auto 10px; display: flex; justify-content: flex-end; gap: 8px; }
.folha {
    max-width: 210mm;
    margin: 0 auto 30px;
    padding: 16mm 16mm 14mm;
    background: var(--papel);
    border-radius: 4px;
    box-shadow: 0 2px 14px rgba(20, 35, 60, .10);
    box-sizing: border-box;
    font-size: 13.5px;
    line-height: 1.55;
}
.folha.folha-aviso { margin-top: 30px; padding: 20px; }
.folha-cabecalho {
    display: flex; align-items: center; gap: 16px;
    padding-bottom: 14px;
    border-bottom: 3px solid var(--primaria);
}
.folha-instituicao { flex: 1 1 auto; display: flex; flex-direction: column; font-size: 11.5px; font-weight: 600; letter-spacing: .3px; text-transform: uppercase; color: var(--texto-suave); line-height: 1.5; }
.folha-instituicao strong { font-size: 14px; color: var(--primaria); }
.folha-data { text-align: right; font-size: 12px; color: var(--texto-suave); display: flex; flex-direction: column; }
.folha-data span { text-transform: uppercase; font-size: 10.5px; letter-spacing: .5px; }
.folha-titulo { margin: 26px 0 18px; text-align: center; font-size: 20px; letter-spacing: 1px; text-transform: uppercase; color: var(--primaria); }
.folha-texto { text-align: justify; }
.folha-autenticacao {
    display: flex; align-items: center; gap: 16px;
    margin-top: 30px; padding: 12px 14px;
    border: 1px solid var(--borda); border-radius: var(--raio);
    font-size: 11.5px; color: var(--texto-suave);
}
.folha-autenticacao small { display: block; margin-top: 4px; font-weight: 600; }
.folha-autenticacao a { word-break: break-all; }
@media print {
    body.documento-body { background: #fff; }
    .documento-acoes { display: none; }
    .folha { box-shadow: none; margin: 0; padding: 0; max-width: none; }
}


/* ===== Parte 6: componentes das páginas internas ===== */
.pagina-descricao { margin: -8px 0 16px; font-size: 13.5px; color: var(--texto-suave); }

/* Botões adicionais */
body .ui-button.botao-alerta { background-color: #b7791f; }
body .ui-button.botao-alerta.ui-state-hover,
body .ui-button.botao-alerta:enabled:hover { background-color: var(--alerta); }
body .ui-button.botao-sucesso.ui-state-hover,
body .ui-button.botao-sucesso:enabled:hover { background-color: #17643c; }
body .ui-button.botao-perigo.ui-state-hover,
body .ui-button.botao-perigo:enabled:hover { background-color: #8a2925; }
body .ui-button.botao-pequeno .ui-button-text { font-size: 13px; line-height: 30px; }
body .ui-button.botao-icone { width: 34px; height: 34px; border-radius: 50%; }
.acoes-pagina {
    display: flex; flex-wrap: wrap; justify-content: center; gap: 10px;
    margin: 20px 0 6px; padding-top: 16px;
    border-top: 1px solid var(--borda);
}
.acoes-formulario { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
.acoes-formulario .ui-button,
.ui-fluid .acoes-formulario .ui-button { width: auto; }
.campo { margin-bottom: 12px; }
.campo > label, .campo > .ui-outputlabel { display: block; margin-bottom: 4px; font-size: 12.5px; font-weight: 600; color: var(--texto-suave); }

/* Filtros de pesquisa */
.filtros {
    border: 1px solid var(--borda);
    border-radius: var(--raio);
    background: #fafbfd;
    padding: 14px 16px;
    margin-bottom: 18px;
}
.filtros-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px 16px; }
.filtro { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.filtro.filtro-largo { grid-column: span 2; }
.filtro > .ui-outputlabel, .filtro > label { font-size: 12px; font-weight: 600; color: var(--texto-suave); text-transform: uppercase; letter-spacing: .3px; }
.filtros-acoes { display: flex; justify-content: flex-end; margin-top: 12px; }
.ui-fluid .filtros-acoes .ui-button { width: auto; }
@media (max-width: 640px) { .filtro.filtro-largo { grid-column: auto; } }

/* Grade de cartões (p:dataGrid) */
body .ui-datagrid.grade-cartoes .ui-datagrid-content { border: 0 none; background: transparent; padding: 4px 0; }
body .ui-datagrid.grade-cartoes .ui-paginator { border: 0 none; background: transparent; margin: 4px 0; }
body .ui-datagrid.grade-cartoes .ui-paginator-current { color: var(--texto-suave); font-size: 13px; }
body .ui-datagrid.grade-cartoes .ui-datagrid-column,
body .ui-datagrid.grade-cartoes .ui-g > div { padding: 7px; }
.disciplina-cartao {
    height: 100%;
    display: flex; flex-direction: column; gap: 10px;
    padding: 14px 16px;
    background: var(--papel);
    border: 1px solid var(--borda);
    border-radius: 8px;
    box-sizing: border-box;
    transition: border-color .15s, box-shadow .15s;
}
.disciplina-cartao:hover { border-color: #b7c6da; box-shadow: 0 4px 14px rgba(20, 35, 60, .08); }
.disciplina-titulo { font-weight: 600; font-size: 14.5px; line-height: 1.35; color: var(--primaria); }
.disciplina-dados { display: flex; flex-direction: column; gap: 4px; flex: 1 0 auto; }
.disciplina-dados > span { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--texto); }
.disciplina-dados .material-icons { font-size: 16px; color: var(--texto-suave); }
.disciplina-rodape { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-top: 10px; border-top: 1px solid var(--borda); }
.disciplina-rodape .ui-button { margin-left: auto; }

/* Dados de identificação (rótulo / valor) */
.dados-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px 24px; }
.dado { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.dado.dado-largo { grid-column: span 2; }
.dado-rotulo { font-size: 11.5px; font-weight: 600; text-transform: uppercase; letter-spacing: .4px; color: var(--texto-suave); }
.dado-valor { font-size: 14px; color: var(--texto); display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
@media (max-width: 640px) { .dado.dado-largo { grid-column: auto; } }

/* Painéis em sequência dentro de um card */
.card > .ui-panel, .card .ui-panel + .ui-panel,
.card form > .ui-panel { margin-bottom: 14px; }
body .ui-panel .ui-panel-content { padding: 14px 16px; }

/* Tabelas geradas manualmente (relatórios de frequência/notas) */
.tabela-rolagem { overflow-x: auto; margin-bottom: 14px; border: 1px solid var(--borda); border-radius: var(--raio); }
table.tabela-relatorio,
table.tabela-simples { width: 100%; border-collapse: collapse; font-size: 13px; }
table.tabela-relatorio td,
table.tabela-simples td,
table.tabela-simples th { padding: 7px 10px; border-bottom: 1px solid var(--borda); vertical-align: top; }
table.tabela-relatorio tr:first-child td,
table.tabela-simples th {
    background: var(--primaria-clara); color: var(--primaria);
    font-weight: 600; font-size: 12px; text-transform: uppercase; letter-spacing: .3px;
    white-space: nowrap; text-align: left;
}
table.tabela-relatorio tr:nth-child(even) td { background: #f8fafc; }
table.tabela-relatorio tr:hover td { background: var(--primaria-clara); }
table.tabela-simples { border: 1px solid var(--borda); border-radius: var(--raio); }
.destaque-nota { color: var(--destaque); }

/* Página inicial (dashboard.xhtml) */
.painel-inicial .card { margin-bottom: 0; height: 100%; box-sizing: border-box; }
.painel-inicial > [class*="ui-g-"] { padding: 8px; }
.painel-resumo { display: flex; flex-direction: column; gap: 14px; }
.painel-resumo-topo { display: flex; align-items: center; gap: 10px; }
.painel-resumo-icone {
    width: 36px; height: 36px; border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    background: var(--primaria-clara); color: var(--primaria);
}
.painel-resumo-icone .material-icons { font-size: 20px; }
.painel-resumo-titulo { font-weight: 600; font-size: 15px; color: var(--texto); }
.painel-resumo-numeros { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; }
.painel-resumo-numeros > div { display: flex; flex-direction: column; }
.painel-resumo-valor { font-size: 30px; font-weight: 600; line-height: 1.1; color: var(--primaria); }
.painel-resumo-rotulo { font-size: 12px; color: var(--texto-suave); text-transform: uppercase; letter-spacing: .3px; }
.painel-resumo-secundario { text-align: right; align-items: flex-end; }
.painel-resumo-secundario .painel-resumo-valor { font-size: 20px; color: var(--ok); }

.indicador { display: flex; align-items: center; gap: 14px; }
.indicador-icone {
    flex: 0 0 auto; width: 48px; height: 48px; border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
}
.indicador-icone .material-icons { font-size: 26px; }
.indicador > div { display: flex; flex-direction: column; }
.indicador-nome { font-size: 13px; color: var(--texto-suave); }
.indicador-valor { font-size: 26px; font-weight: 600; line-height: 1.15; color: var(--texto); }
.indicador-ok       .indicador-icone { background: var(--ok-fundo);     color: var(--ok); }
.indicador-alerta   .indicador-icone { background: var(--alerta-fundo); color: var(--alerta); }
.indicador-info     .indicador-icone { background: var(--primaria-clara); color: var(--destaque); }
.indicador-primaria .indicador-icone { background: var(--primaria);     color: #fff; }

.card.lista-pessoas,
body.layout-compact .card.lista-pessoas { padding: 0; overflow: hidden; }
.lista-pessoas-titulo {
    display: flex; align-items: center; gap: 8px;
    padding: 12px 16px;
    border-bottom: 1px solid var(--borda);
    background: var(--primaria-clara);
    color: var(--primaria); font-weight: 600;
}
.lista-pessoas-titulo .material-icons { font-size: 20px; }
.lista-pessoas-sub { margin-left: auto; font-size: 11.5px; font-weight: 400; color: var(--texto-suave); }
.lista-pessoas ul { list-style: none; margin: 0; padding: 4px 0; max-height: 340px; overflow-y: auto; }
.lista-pessoas li { display: flex; align-items: center; gap: 12px; padding: 8px 16px; }
.lista-pessoas li + li { border-top: 1px solid #edf0f4; }
.lista-pessoas li:hover { background: #f8fafc; }
.lista-pessoas-foto { flex: 0 0 auto; width: 40px; height: 40px; border-radius: 50%; object-fit: cover; background: var(--primaria-clara); }
.lista-pessoas-dados { display: flex; flex-direction: column; min-width: 0; }
.lista-pessoas-nome { font-size: 13.5px; font-weight: 500; color: var(--texto); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lista-pessoas-email { font-size: 12px; color: var(--texto-suave); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.painel-avisos { margin-top: 8px; }
.avisos-lista { list-style: none; margin: 0 0 8px; padding: 0; }
.avisos-lista li { padding: 12px 0; border-bottom: 1px solid var(--borda); }
.avisos-cabecalho { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.avisos-cabecalho > div { display: flex; flex-direction: column; }
.avisos-titulo { font-weight: 600; color: var(--primaria); }
.avisos-data { font-size: 12px; color: var(--texto-suave); }
.avisos-texto { margin-top: 6px; font-size: 13.5px; }
.avisos-novo { margin-top: 12px; padding: 14px 16px; border-radius: var(--raio); background: #fafbfd; border: 1px solid var(--borda); }
.avisos-novo h3 { margin: 0 0 10px; font-size: 14px; color: var(--primaria); }


/* ===== Parte 7: utilitários e área do aluno ===== */
.texto-ok     { color: var(--ok); font-weight: 500; }
.texto-info   { color: var(--destaque); font-weight: 500; }
.texto-nao    { color: var(--nao); font-weight: 500; }
.texto-alerta { color: var(--alerta); font-weight: 500; }

/* Diálogos de confirmação (p:confirmDialog) */
body .ui-confirm-dialog .ui-button.ui-confirmdialog-no,
body .ui-button.ui-confirmdialog-no { background-color: var(--papel); color: var(--primaria); border: 1px solid var(--borda); }
body .ui-button.ui-confirmdialog-no .ui-icon,
body .ui-button.ui-confirmdialog-no .ui-button-text { color: var(--primaria); }
body .ui-button.ui-confirmdialog-no.ui-state-hover { background-color: var(--primaria-clara); }
body .ui-confirm-dialog .ui-confirm-dialog-severity { color: var(--alerta); }

/* Botões redondos de status (somente leitura) */
body .ui-button.rounded-button { border-radius: 50%; }
body .ui-button.ui-state-disabled.rounded-button { opacity: 1; }

/* Página inicial do aluno */
.painel-resumo-acoes { display: flex; justify-content: flex-end; margin-top: -4px; }
.card.mural { display: flex; flex-direction: column; gap: 10px; }
.mural-situacao {
    display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
    padding: 10px 12px; border-radius: var(--raio); background: var(--primaria-clara);
}
.mural-cabecalho { display: flex; align-items: center; gap: 6px; margin: 4px 0 0; font-size: 15px; color: var(--primaria); }
.mural-cabecalho .material-icons { font-size: 20px; }
.mural-lista { display: flex; flex-direction: column; max-height: 420px; overflow-y: auto; }
.mural-item { display: flex; gap: 12px; padding: 10px 0; border-top: 1px solid #edf0f4; }
.mural-data {
    flex: 0 0 48px; height: 26px; line-height: 26px; border-radius: var(--raio);
    text-align: center; font-size: 12px; font-weight: 600;
    background: var(--fundo); color: var(--texto-suave);
}
.mural-corpo { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.mural-titulo { font-weight: 600; color: var(--primaria); }
.mural-texto { font-size: 13px; color: var(--texto); overflow-wrap: anywhere; }
.mural-corpo .ui-button { align-self: flex-start; margin-top: 4px; }
.mural-item-destaque .mural-data { background: var(--ok-fundo); color: var(--ok); }
.mural-item-destaque .mural-titulo { color: var(--ok); }
.mural-item-geral .mural-data { background: var(--alerta-fundo); color: var(--alerta); }

/* Exportação de relatórios (p:dataExporter) */
.exportar-excel {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 4px 12px; border-radius: 999px;
    border: 1px solid #b9e0c9; background: var(--ok-fundo); color: var(--ok);
    font-size: 12.5px; font-weight: 600; line-height: 1.6;
    vertical-align: middle;
}
.exportar-excel .material-icons { font-size: 17px; }
a:hover > .exportar-excel { background: #d2ecdc; }
.card h1 + h2, body.layout-compact .card h1 + h2 { margin: -6px 0 14px; font-weight: 500; color: var(--texto-suave); }
body .ui-paginator a > span.exportar-excel,
body .ui-paginator > a > span.exportar-excel { display: inline-flex; }


/* ===== Parte 8: p:selectOneMenu com textos longos ===== */
/* Padrão: o texto selecionado é cortado com reticências e não ultrapassa a caixa */
body .ui-selectonemenu { max-width: 100%; box-sizing: border-box; }
body .ui-selectonemenu .ui-selectonemenu-label {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}
/* Lista aberta: itens longos quebram linha em vez de alargar o painel além da tela */
body .ui-selectonemenu-panel { max-width: calc(100vw - 24px); }
body .ui-selectonemenu-panel .ui-selectonemenu-list-item { white-space: normal; line-height: 1.35; }

/* Opcional: styleClass="select-quebra" mostra o texto selecionado inteiro, em várias linhas */
body .ui-selectonemenu.select-quebra { height: auto; }
body .ui-selectonemenu.select-quebra .ui-selectonemenu-label {
    white-space: normal;
    text-overflow: clip;
    height: auto;
    line-height: 1.35;
    padding-top: 6px;
    padding-bottom: 6px;
}
