/* GEducacional — identidade visual global profissional e futurista */
:root {
  --color-primary-50: #edf8f1;
  --color-primary-100: #d8f0e0;
  --color-primary-500: #16834b;
  --color-primary-600: #08753d;
  --color-primary-700: #075d32;
  --color-background: #f3f7f5;
  --color-background-strong: #e8f0ec;
  --color-border: #d7e2dc;
  --color-text: #15241d;
  --color-muted: #65766e;
  --shadow-sm: 0 8px 24px rgba(12, 61, 39, .065);
  --shadow-md: 0 18px 48px rgba(12, 61, 39, .12);
  --radius-sm: 7px;
  --radius-md: 11px;
  --radius-lg: 18px;
  --space-1: 3px;
  --space-2: 7px;
  --space-3: 10px;
  --space-4: 14px;
  --space-5: 20px;
  --space-6: 26px;
  --space-7: 38px;
}

html { font-size: 14px; }
body {
  background:
    radial-gradient(circle at 86% 4%, rgba(22, 131, 75, .055), transparent 24rem),
    var(--color-background);
  letter-spacing: -.005em;
}

h1 { font-size: clamp(1.55rem, 2.4vw, 2.05rem); font-weight: 600; }
h2 { font-size: 1.18rem; font-weight: 600; }
h3 { font-size: .96rem; font-weight: 600; }
.muted { line-height: 1.45; }

.card {
  padding: 18px 20px;
  border-color: color-mix(in srgb, var(--color-border) 88%, white);
  border-radius: 17px;
  box-shadow: 0 8px 26px rgba(12, 61, 39, .065);
}
.card--interactive:hover {
  transform: translateY(-1px);
  box-shadow: 0 16px 38px rgba(12, 61, 39, .105);
}

.button {
  min-height: 38px;
  padding: 8px 14px;
  border-radius: 10px;
  font-size: .88rem;
  font-weight: 600;
  box-shadow: none;
}
.button--primary {
  background: linear-gradient(180deg, #11844a, #08713b);
  box-shadow: 0 7px 16px rgba(8, 113, 59, .18);
}
.button--primary:hover { background: linear-gradient(180deg, #0c7842, #065d31); }
.button--secondary:hover { border-color: color-mix(in srgb, var(--color-primary-500) 38%, var(--color-border)); }

.field { gap: 6px; }
.field > span, .field > label { font-size: .79rem; font-weight: 600; color: #30453b; }
.input, .select, .textarea,
input:not([type="checkbox"]):not([type="radio"]), select, textarea {
  min-height: 39px;
  padding: 8px 11px;
  border-radius: 10px;
  font-size: .88rem;
  transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease;
}
.textarea, textarea { min-height: 92px; }
.input:focus, .select:focus, .textarea:focus,
input:focus, select:focus, textarea:focus {
  outline: none;
  box-shadow: 0 0 0 3px rgba(22, 131, 75, .105);
}
.form-grid { gap: 12px 14px; }

.section-heading { margin-bottom: 13px; gap: 14px; }
.section-heading h2 { margin-bottom: 3px; }
.section-heading p { font-size: .88rem; }
.toolbar { gap: 10px; }
.toolbar__search { width: min(360px, 100%); }

.badge {
  min-height: 24px;
  padding: 3px 9px;
  font-size: .72rem;
  font-weight: 600;
  border: 1px solid rgba(17, 117, 65, .08);
}
.message { padding: 10px 12px; border-radius: 10px; font-size: .86rem; }

.table-wrap { border-radius: 11px; }
.data-table th, .data-table td { padding: 9px 11px; }
.data-table th { font-size: .69rem; font-weight: 700; letter-spacing: .045em; }
.data-table td { font-size: .79rem; }
.data-table tbody tr { transition: background-color .14s ease; }
.pagination { margin-top: 11px; }

.main { padding: 20px 22px; }
.main__inner { max-width: 1500px; }
.page-grid { gap: 12px; }
.page-header { margin-bottom: 16px; }

/* Área administrativa: navegação e densidade uniformes em todos os módulos */
.module-page .module-layout,
.panel-page .panel-layout { grid-template-columns: 278px minmax(0, 1fr) !important; }

.module-page .panel-sidebar,
.panel-page .panel-sidebar {
  padding: 20px 20px 0 !important;
  background: rgba(255,255,255,.94);
  border-right-color: rgba(22, 83, 55, .12);
  backdrop-filter: blur(14px);
}

.module-page .panel-brand,
.panel-page .panel-brand { margin-bottom: 14px; font-size: .96rem; font-weight: 600; }
.module-page .panel-brand .brand__mark,
.panel-page .panel-brand .brand__mark {
  width: 40px;
  height: 40px;
  border-radius: 11px;
  background: linear-gradient(145deg, #16834b, #075d32);
  box-shadow: 0 9px 20px rgba(8, 113, 59, .18);
}

.module-page .panel-search,
.panel-page .panel-search { margin-bottom: 13px; }
.module-page .panel-search input,
.panel-page .panel-search input {
  height: 40px;
  border-radius: 10px;
  font-size: .84rem;
  background: rgba(255,255,255,.9);
}

.module-page .panel-navigation__overview,
.panel-page .panel-navigation__overview,
.module-page .panel-primary-module,
.panel-page .panel-primary-module {
  min-height: 39px !important;
  padding: 8px 10px !important;
  border-radius: 9px !important;
  font-size: .88rem;
}
.module-page .panel-primary-module--current,
.module-page .panel-primary-module[data-open="true"],
.panel-page .panel-primary-module--current,
.panel-page .panel-primary-module[data-open="true"] {
  background: linear-gradient(90deg, rgba(22,131,75,.11), rgba(22,131,75,.045));
  box-shadow: inset 3px 0 0 var(--color-primary-600);
}
.module-page .panel-navigation__label,
.panel-page .panel-navigation__label { font-size: .68rem; letter-spacing: .08em; }
.module-page .panel-user,
.panel-page .panel-user { padding-top: 12px; }

.module-page .main,
.panel-page .main { padding-top: 18px !important; }
.module-page .card,
.panel-page .card { border-radius: 16px; }
.module-page #form-card,
.module-page #records-card { padding: 17px 19px; }
.module-page .module-form-window { min-height: 220px; }
.module-page .module-form-window-arrow {
  width: 38px;
  height: 52px;
  border-radius: 12px;
  box-shadow: 0 10px 24px rgba(9, 84, 48, .12);
}
.module-page .module-form-window-arrow--previous { left: -19px; }
.module-page .module-form-window-arrow--next { right: -19px; }
.module-page .module-form-window-arrow span { font-size: 1.65rem; }
.module-page .module-form-actions { margin-top: 15px; }
.module-page .module-table { margin-top: 12px; }
.module-page .module-form-window-status { font-size: .72rem; }

/* Painel principal */
.panel-page .panel-header { margin-bottom: 14px; }
.panel-page .panel-header h1 { font-size: 1.55rem; }
.panel-page .panel-welcome,
.panel-page .panel-section,
.panel-page .quick-access-card,
.panel-page .recent-activities { border-radius: 16px; }

/* Portais do professor e aluno */
.portal-page .card,
.teacher-page .card,
.student-page .card,
body[class*="dashboard"] .card { border-radius: 16px; }

/* Cadastros e autenticação: mesma tipografia e refinamento */
.registration-page,
.login-page,
body[class*="login"],
body[class*="cadastro"] { font-size: 14px; }
.registration-page .button,
.login-page .button { min-height: 40px; }

/* Scrollbars discretas */
* { scrollbar-width: thin; scrollbar-color: rgba(8,117,61,.46) rgba(8,117,61,.07); }
*::-webkit-scrollbar { width: 8px; height: 8px; }
*::-webkit-scrollbar-track { background: rgba(8,117,61,.05); }
*::-webkit-scrollbar-thumb { border-radius: 999px; background: rgba(8,117,61,.42); }

@media (max-width: 900px) {
  html { font-size: 13.5px; }
  .module-page .module-layout,
  .panel-page .panel-layout { grid-template-columns: 1fr !important; }
  .main { padding: 14px; }
  .card { padding: 15px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
}


/* Tipografia global sem negrito — padrão solicitado para todo o frontend */
html, body,
body *, body *::before, body *::after {
  font-weight: 400 !important;
}

strong, b,
h1, h2, h3, h4, h5, h6,
button, .button, .badge,
.data-table th,
.field > span, .field > label,
.panel-brand, .panel-primary-module,
.panel-navigation__overview,
.panel-navigation__label {
  font-weight: 400 !important;
}


/* Feedback global animado */
.global-feedback-popup[hidden] { display: none; }
.global-feedback-popup {
  position: fixed;
  inset: 0;
  z-index: 3000;
  display: grid;
  place-items: center;
  padding: 20px;
  opacity: 0;
  transition: opacity .18s ease;
}
.global-feedback-popup.is-visible { opacity: 1; }
.global-feedback-popup__backdrop {
  position: absolute; inset: 0; background: rgb(8 30 21 / 38%); backdrop-filter: blur(5px);
}
.global-feedback-popup__dialog {
  position: relative;
  display: grid;
  width: min(470px, calc(100vw - 32px));
  grid-template-columns: 48px minmax(0, 1fr) 34px;
  gap: 14px;
  align-items: start;
  padding: 22px;
  border: 1px solid var(--color-border);
  border-radius: 22px;
  background: var(--color-surface);
  box-shadow: 0 28px 70px rgb(8 40 27 / 25%);
  transform: translateY(10px) scale(.98);
  transition: transform .2s ease;
}
.global-feedback-popup.is-visible .global-feedback-popup__dialog { transform: translateY(0) scale(1); }
.global-feedback-popup__icon {
  display: grid; width: 48px; height: 48px; place-items: center; border-radius: 16px;
  color: var(--color-primary-700); background: var(--color-primary-50);
}
.global-feedback-popup__icon::before { content: 'i'; font-size: 1.2rem; }
.global-feedback-popup[data-type='success'] .global-feedback-popup__icon::before { content: '✓'; }
.global-feedback-popup[data-type='error'] .global-feedback-popup__icon::before { content: '!'; }
.global-feedback-popup[data-type='warning'] .global-feedback-popup__icon::before { content: '•'; }
.global-feedback-popup[data-type='error'] .global-feedback-popup__icon { color: #b42318; background: #fff1f0; }
.global-feedback-popup[data-type='warning'] .global-feedback-popup__icon { color: #9a6700; background: #fff7df; }
.global-feedback-popup__eyebrow { display: block; margin-bottom: 4px; color: var(--color-primary-700); font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; }
.global-feedback-popup__content h2 { margin: 0 0 6px; font-size: 1.04rem; font-weight: 400; }
.global-feedback-popup__content p { margin: 0; color: var(--color-muted); line-height: 1.55; font-size: .9rem; }
.global-feedback-popup__close {
  display: grid; width: 34px; height: 34px; place-items: center; border: 0; border-radius: 999px;
  color: var(--color-muted); background: var(--color-primary-50); cursor: pointer; font-size: 1.2rem;
}
.global-feedback-popup__actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: 10px; margin-top: 4px; }
.global-feedback-popup__danger { border: 1px solid #b42318; color: #fff; background: #b42318; }
@media (prefers-reduced-motion: reduce) { .global-feedback-popup, .global-feedback-popup__dialog { transition: none; } }


/* Mensagens do sistema são exibidas exclusivamente no popup global. */
body .message,
body .message.message--success,
body .message.message--error,
body .message.message--warning {
  display: none !important;
}

/* Navegacao administrativa refinada - 20260722-34 */
.module-page .panel-navigation__overview,
.panel-page .panel-navigation__overview {
  position: relative;
  border: 1px solid color-mix(in srgb, var(--color-primary-600) 22%, var(--color-border));
  box-shadow: 0 5px 14px rgb(18 91 55 / 5%);
  transition: color .2s ease, background-color .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}

.module-page .panel-navigation__overview:hover,
.module-page .panel-navigation__overview:focus-visible,
.panel-page .panel-navigation__overview:hover,
.panel-page .panel-navigation__overview:focus-visible {
  border-color: color-mix(in srgb, var(--color-primary-600) 48%, var(--color-border));
  box-shadow: 0 8px 18px rgb(18 91 55 / 10%);
  transform: translateY(-1px);
  outline: none;
}

.module-page .panel-navigation__overview[aria-current="page"],
.panel-page .panel-navigation__overview[aria-current="page"] {
  border-color: var(--color-primary-500);
  background: linear-gradient(90deg, color-mix(in srgb, var(--color-primary-100) 78%, white), var(--color-primary-50));
  box-shadow: inset 3px 0 0 var(--color-primary-600), 0 8px 18px rgb(18 91 55 / 10%);
}

.module-page .panel-primary-module,
.panel-page .panel-primary-module {
  position: relative;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--color-border) 90%, transparent) !important;
  background: color-mix(in srgb, var(--color-surface) 94%, var(--color-primary-50)) !important;
  box-shadow: 0 4px 12px rgb(18 91 55 / 4%);
  transition: color .2s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}

.module-page .panel-primary-module::before,
.panel-page .panel-primary-module::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: var(--color-primary-600);
  opacity: 0;
  transform: scaleY(.35);
  transition: opacity .2s ease, transform .2s ease;
}

.module-page .panel-primary-module:hover,
.module-page .panel-primary-module:focus-visible,
.panel-page .panel-primary-module:hover,
.panel-page .panel-primary-module:focus-visible {
  border-color: color-mix(in srgb, var(--color-primary-500) 38%, var(--color-border)) !important;
  background: linear-gradient(90deg, color-mix(in srgb, var(--color-primary-50) 88%, white), var(--color-surface)) !important;
  box-shadow: 0 8px 18px rgb(18 91 55 / 9%);
  transform: translateX(2px);
  outline: none;
}

.module-page .panel-primary-module--current,
.module-page .panel-primary-module[data-open="true"],
.panel-page .panel-primary-module--current,
.panel-page .panel-primary-module[data-open="true"] {
  border-color: color-mix(in srgb, var(--color-primary-600) 52%, var(--color-border)) !important;
  background: linear-gradient(90deg, color-mix(in srgb, var(--color-primary-100) 76%, white), color-mix(in srgb, var(--color-primary-50) 72%, white)) !important;
  box-shadow: 0 9px 22px rgb(18 91 55 / 11%) !important;
  transform: translateX(2px);
}

.module-page .panel-primary-module--current::before,
.module-page .panel-primary-module[data-open="true"]::before,
.panel-page .panel-primary-module--current::before,
.panel-page .panel-primary-module[data-open="true"]::before {
  opacity: 1;
  transform: scaleY(1);
}

.module-page .panel-primary-module .ui-icon,
.panel-page .panel-primary-module .ui-icon {
  transition: transform .2s ease;
}

.module-page .panel-primary-module:hover .ui-icon,
.module-page .panel-primary-module[data-open="true"] .ui-icon,
.panel-page .panel-primary-module:hover .ui-icon,
.panel-page .panel-primary-module[data-open="true"] .ui-icon {
  transform: scale(1.08);
}

.module-page .panel-primary-module__chevron,
.panel-page .panel-primary-module__chevron {
  transition: transform .22s ease;
}

.module-page .panel-temporary-submenu,
.panel-page .panel-temporary-submenu {
  border-left: 1px solid color-mix(in srgb, var(--color-primary-600) 18%, var(--color-border)) !important;
  border-right: 1px solid color-mix(in srgb, var(--color-primary-600) 24%, var(--color-border)) !important;
  animation: gedu-submenu-enter .24s cubic-bezier(.2,.78,.25,1);
}

.module-page .panel-temporary-submenu__header,
.panel-page .panel-temporary-submenu__header {
  background: linear-gradient(180deg, color-mix(in srgb, var(--color-primary-50) 54%, white), var(--color-surface));
}

.module-page .panel-temporary-submenu__link,
.panel-page .panel-temporary-submenu__link {
  position: relative;
  margin: 3px 0;
  border: 1px solid transparent;
  transition: color .18s ease, background .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.module-page .panel-temporary-submenu__link:hover,
.module-page .panel-temporary-submenu__link:focus-visible,
.panel-page .panel-temporary-submenu__link:hover,
.panel-page .panel-temporary-submenu__link:focus-visible {
  border-color: color-mix(in srgb, var(--color-primary-500) 34%, var(--color-border));
  box-shadow: 0 6px 14px rgb(18 91 55 / 7%);
  transform: translateX(3px);
}

.module-page .panel-temporary-submenu__link--active,
.panel-page .panel-temporary-submenu__link--active {
  border-color: color-mix(in srgb, var(--color-primary-600) 48%, var(--color-border));
  background: linear-gradient(90deg, color-mix(in srgb, var(--color-primary-100) 76%, white), var(--color-primary-50));
  box-shadow: inset 3px 0 0 var(--color-primary-600), 0 7px 16px rgb(18 91 55 / 9%);
  transform: translateX(3px);
}

@keyframes gedu-submenu-enter {
  from { opacity: 0; transform: translateX(-12px); }
  to { opacity: 1; transform: translateX(0); }
}

@media (prefers-reduced-motion: reduce) {
  .module-page .panel-navigation__overview,
  .panel-page .panel-navigation__overview,
  .module-page .panel-primary-module,
  .panel-page .panel-primary-module,
  .module-page .panel-primary-module::before,
  .panel-page .panel-primary-module::before,
  .module-page .panel-primary-module .ui-icon,
  .panel-page .panel-primary-module .ui-icon,
  .module-page .panel-temporary-submenu,
  .panel-page .panel-temporary-submenu,
  .module-page .panel-temporary-submenu__link,
  .panel-page .panel-temporary-submenu__link {
    animation: none !important;
    transition: none !important;
  }
}



/* Menu profissional v35: contraste, bordas, icones e estados ativos */
.module-page .panel-navigation__overview,
.panel-page .panel-navigation__overview,
.module-page .panel-primary-module,
.panel-page .panel-primary-module {
  border: 1px solid #c9d9d0 !important;
  background: #ffffff !important;
  box-shadow: 0 2px 5px rgba(13, 78, 45, .04) !important;
}

.module-page .panel-primary-module:hover,
.module-page .panel-primary-module:focus-visible,
.panel-page .panel-primary-module:hover,
.panel-page .panel-primary-module:focus-visible {
  border-color: #50a778 !important;
  background: #f0faf4 !important;
  box-shadow: 0 7px 16px rgba(13, 98, 55, .12) !important;
}

.module-page .panel-primary-module--current,
.module-page .panel-primary-module[data-open="true"],
.panel-page .panel-primary-module--current,
.panel-page .panel-primary-module[data-open="true"] {
  color: #075d32 !important;
  border: 2px solid #16834b !important;
  background: linear-gradient(90deg, #e2f6ea 0%, #f3fbf6 100%) !important;
  box-shadow: inset 4px 0 0 #08713b, 0 8px 18px rgba(8, 113, 59, .14) !important;
  font-weight: 650 !important;
}

.module-page .panel-primary-module--current .ui-icon,
.module-page .panel-primary-module[data-open="true"] .ui-icon,
.panel-page .panel-primary-module--current .ui-icon,
.panel-page .panel-primary-module[data-open="true"] .ui-icon {
  color: #08713b !important;
  stroke-width: 2.2;
}

.module-page .panel-primary-module[data-open="true"] .panel-primary-module__chevron,
.panel-page .panel-primary-module[data-open="true"] .panel-primary-module__chevron {
  transform: rotate(90deg);
}

.module-page .panel-temporary-submenu,
.panel-page .panel-temporary-submenu {
  border: 1px solid #b9cec2 !important;
  border-top: 0 !important;
  background: #ffffff !important;
  box-shadow: 10px 0 28px rgba(16, 73, 45, .12) !important;
}

.module-page .panel-temporary-submenu__header,
.panel-page .panel-temporary-submenu__header {
  border-bottom: 1px solid #c9d9d0 !important;
  background: linear-gradient(180deg, #f5fbf7, #ffffff) !important;
  font-weight: 700 !important;
}

.module-page .panel-temporary-submenu__list,
.panel-page .panel-temporary-submenu__list {
  padding: 14px 12px !important;
}

.module-page .panel-temporary-submenu__link,
.panel-page .panel-temporary-submenu__link {
  display: grid !important;
  grid-template-columns: 34px minmax(0, 1fr) 18px;
  align-items: center;
  gap: 10px;
  min-height: 46px;
  margin: 6px 0 !important;
  padding: 7px 11px !important;
  color: #263c31 !important;
  border: 1px solid #cfddd5 !important;
  border-radius: 10px !important;
  background: #ffffff !important;
  box-shadow: 0 2px 5px rgba(13, 78, 45, .035);
}

.module-page .panel-temporary-submenu__link:hover,
.module-page .panel-temporary-submenu__link:focus-visible,
.panel-page .panel-temporary-submenu__link:hover,
.panel-page .panel-temporary-submenu__link:focus-visible {
  color: #075d32 !important;
  border-color: #55a97c !important;
  background: #eef9f2 !important;
  box-shadow: 0 8px 16px rgba(8, 113, 59, .11) !important;
  transform: translateX(4px);
}

.module-page .panel-temporary-submenu__link--active,
.panel-page .panel-temporary-submenu__link--active {
  color: #ffffff !important;
  border: 2px solid #075d32 !important;
  background: linear-gradient(135deg, #16834b, #075d32) !important;
  box-shadow: 0 9px 18px rgba(8, 113, 59, .22) !important;
  font-weight: 700 !important;
  transform: translateX(4px);
}

.panel-temporary-submenu__item-icon {
  display: inline-grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border: 1px solid #c8ddd1;
  border-radius: 9px;
  background: #edf8f1;
  color: #08713b;
  transition: transform .18s ease, background .18s ease, color .18s ease;
}

.panel-temporary-submenu__item-icon .ui-icon {
  width: 18px;
  height: 18px;
}

.panel-temporary-submenu__item-arrow {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  opacity: .7;
}

.panel-temporary-submenu__link:hover .panel-temporary-submenu__item-icon,
.panel-temporary-submenu__link:focus-visible .panel-temporary-submenu__item-icon {
  transform: scale(1.06);
  border-color: #55a97c;
  background: #ffffff;
}

.panel-temporary-submenu__link--active .panel-temporary-submenu__item-icon {
  border-color: rgba(255,255,255,.45);
  background: rgba(255,255,255,.15);
  color: #ffffff;
}
