:root {
  /* Brand — Identidade Visual V1 (ADR-002). Roxo é a cor predominante; verde é accent. */
  --aulary-brand-primary: #6d28d9;
  --aulary-brand-primary-soft: #a78bfa;
  --aulary-brand-lavender: #ede9fe;
  --aulary-brand-accent: #22c55e;
  --aulary-brand-accent-soft: #d1fae5;

  /* Foundation */
  --aulary-background: #f9fafb;
  --aulary-surface-base: #ffffff;
  --aulary-text-primary: #1f2937;
  --aulary-text-secondary: #6b7280;
  --aulary-border-default: #e5e7eb;

  /* State — independentes da marca; verde de marca não equivale a status "success" */
  --aulary-success: #16a34a;
  --aulary-success-dark: #15803d;
  --aulary-warning: #d97706;
  --aulary-danger: #d94b61;
  --aulary-info: #2563eb;

  /* Aliases legados — mesma camada, nomes antigos preservados para evitar churn
     em todo o CSS/Blade que já consome estas variáveis. Novo código deve preferir
     os tokens "--aulary-brand-*"/"--aulary-text-*" acima. */
  --aulary-primary: var(--aulary-brand-primary);
  --aulary-primary-dark: #5b21b6;
  --aulary-accent: var(--aulary-brand-accent);
  --aulary-surface: var(--aulary-background);
  --aulary-surface-soft: var(--aulary-brand-lavender);
  --aulary-surface-strong: #ddd6fe;
  --aulary-card: rgba(255, 255, 255, 0.94);
  --aulary-border: var(--aulary-border-default);
  --aulary-text: var(--aulary-text-primary);
  --aulary-muted: var(--aulary-text-secondary);
  --aulary-shadow: 0 1rem 2.25rem rgba(109, 40, 217, 0.08);
}

body.app-shell,
body.auth-shell {
  min-height: 100vh;
  color: var(--aulary-text);
  background:
    radial-gradient(circle at top left, rgba(34, 197, 94, 0.1), transparent 30%),
    radial-gradient(circle at bottom right, rgba(237, 233, 254, 0.72), transparent 28%),
    linear-gradient(180deg, #fcfefc 0%, var(--aulary-surface) 100%);
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6,
.card-title { color: var(--aulary-text); }

a { color: var(--aulary-primary); }
a:hover { color: var(--aulary-primary-dark); }
.text-primary { color: var(--aulary-primary) !important; }
.text-muted { color: var(--aulary-muted) !important; }

.btn {
  border-radius: 0.72rem;
  font-weight: 600;
}

.btn-primary {
  border-color: var(--aulary-primary);
  background: linear-gradient(135deg, var(--aulary-primary), var(--aulary-accent));
  box-shadow: 0 0.45rem 1rem rgba(109, 40, 217, 0.2);
}

.btn-primary:hover,
.btn-primary:focus,
.btn-primary:not(:disabled):not(.disabled):active {
  border-color: var(--aulary-primary-dark);
  background: linear-gradient(135deg, var(--aulary-primary-dark), var(--aulary-primary));
}

.btn-primary:focus,
.btn-primary:not(:disabled):not(.disabled):active:focus {
  box-shadow: 0 0 0 0.2rem rgba(109, 40, 217, 0.2);
}

.btn-outline-primary { border-color: var(--aulary-primary); color: var(--aulary-primary); }
.btn-outline-primary:hover { border-color: var(--aulary-primary); background: var(--aulary-primary); color: #fff; }
.btn-outline-secondary { border-color: var(--aulary-border); color: var(--aulary-muted); }
.btn-outline-secondary:hover { border-color: #c4b5fd; background: var(--aulary-surface-soft); color: var(--aulary-text); }

.form-control,
.custom-select,
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
  border-color: var(--aulary-border);
  border-radius: 0.72rem;
  background-color: #fbfdfc;
}

.form-control:focus,
.custom-select:focus,
.select2-container--default.select2-container--focus .select2-selection--multiple,
.select2-container--default.select2-container--open .select2-selection--single {
  border-color: rgba(109, 40, 217, 0.62);
  box-shadow: 0 0 0 0.2rem rgba(109, 40, 217, 0.14);
}

.custom-control-input:checked ~ .custom-control-label::before,
.dropdown-item.active,
.dropdown-item:active,
.select2-container--default .select2-results__option--highlighted[aria-selected] {
  border-color: var(--aulary-primary);
  background-color: var(--aulary-primary);
}

.page-item.active .page-link,
.badge-primary {
  border-color: var(--aulary-primary);
  background-color: var(--aulary-primary);
}

.page-link { color: var(--aulary-primary); }
.page-link:hover { color: var(--aulary-primary-dark); }

.app-topnav {
  position: sticky;
  top: 0;
  z-index: 1040;
  margin: 0.9rem 1rem 0;
  padding: 0.75rem 1rem;
  border: 1px solid rgba(255, 255, 255, 0.75);
  border-radius: 1.05rem;
  background: rgba(255, 255, 255, 0.86);
  box-shadow: 0 0.85rem 2rem rgba(109, 40, 217, 0.07);
  backdrop-filter: blur(16px);
}

.topnav-brand-copy { display: flex; flex-direction: column; justify-content: center; margin-right: auto; line-height: 1.1; }
.topnav-title { color: var(--aulary-text); font-weight: 700; }

.app-sidebar {
  margin: 1rem 0 1rem 1rem;
  border: 1px solid rgba(255, 255, 255, 0.8) !important;
  border-radius: 1.25rem;
  background: rgba(255, 255, 255, 0.94) !important;
  box-shadow: var(--aulary-shadow) !important;
}

.app-main-content { padding-top: 1rem; }

.app-brand { display: inline-flex; align-items: center; gap: 0.65rem; }
.brand-symbol { display: block; width: auto; }
.brand-symbol-compact { height: 2.25rem; }
.brand-logo { display: block; height: 2.5rem; width: auto; }
.app-brand-copy { display: flex; flex-direction: column; line-height: 1.15; }
.app-brand-title { color: var(--aulary-text); font-size: 1rem; font-weight: 800; }
.app-brand-subtitle { color: var(--aulary-muted); font-size: 0.72rem; font-weight: 600; }
.nav-section-label { margin: 1.2rem 0 0.55rem; padding: 0 0.82rem; color: var(--aulary-muted); font-size: 0.69rem; font-weight: 800; letter-spacing: 0.09em; text-transform: uppercase; }

.app-sidebar .nav-link { display: flex; align-items: center; gap: 0.75rem; min-height: 3.36rem; margin-bottom: 0.3rem; padding: 0.68rem 0.82rem; border-radius: 0.9rem; color: var(--aulary-muted) !important; font-weight: 600; transition: transform .18s ease, background-color .18s ease, box-shadow .18s ease; }
.app-sidebar .nav-link:hover { transform: translateX(2px); background: rgba(34, 197, 94, 0.08); }
.app-sidebar .nav-link.active { color: var(--aulary-text) !important; background: linear-gradient(135deg, rgba(109, 40, 217, 0.14), rgba(34, 197, 94, 0.1)); }
.app-sidebar .nav-link:focus-visible { outline: 2px solid rgba(109, 40, 217, 0.45); outline-offset: 2px; }
.app-sidebar .item-text { min-width: 0; margin-left: 0 !important; }
.nav-icon-shell { width: 2rem; height: 2rem; display: inline-flex !important; align-items: center; justify-content: center; flex-shrink: 0; border-radius: 0.72rem; color: var(--aulary-primary); background: rgba(109, 40, 217, 0.09); }
.nav-icon-shell > .fe { display: block; width: 1rem; height: 1rem; line-height: 1; text-align: center; }
.app-sidebar .nav-link.active .nav-icon-shell { color: #fff; background: linear-gradient(135deg, var(--aulary-primary), var(--aulary-accent)); box-shadow: 0 0.45rem 0.9rem rgba(109, 40, 217, 0.2); }

.user-menu-trigger { display: flex; align-items: center; gap: 0.65rem; }
.user-avatar { width: 2.25rem; height: 2.25rem; display: inline-flex; align-items: center; justify-content: center; border-radius: 0.75rem; color: #fff; background: linear-gradient(135deg, var(--aulary-primary), var(--aulary-accent)); font-size: 0.78rem; font-weight: 800; text-transform: uppercase; }

.page-head { display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-start; justify-content: space-between; margin-bottom: 1.4rem; }
.page-head-copy { max-width: 44rem; }
.page-head .page-title { margin-bottom: 0.3rem; color: var(--aulary-text); font-weight: 800; }
.page-head-actions { display: flex; flex-wrap: wrap; gap: 0.65rem; }
.section-kicker { margin-bottom: 0.35rem; color: var(--aulary-primary); font-size: 0.72rem; font-weight: 800; letter-spacing: 0.07em; text-transform: uppercase; }
.section-subtitle { margin: 0; color: var(--aulary-muted); font-size: 0.9rem; }

.hero-panel { position: relative; overflow: hidden; margin-bottom: 1.4rem; border: 1px solid var(--aulary-border); border-radius: 1.2rem; color: var(--aulary-text); background: radial-gradient(circle at top right, rgba(255,255,255,.72), transparent 34%), linear-gradient(135deg, var(--aulary-surface-soft), var(--aulary-surface-strong)); box-shadow: 0 1rem 2rem rgba(109, 40, 217, 0.1); }
.hero-panel::after { content: ''; position: absolute; right: -5rem; bottom: -6rem; width: 15rem; height: 15rem; border-radius: 50%; background: rgba(34, 197, 94,.12); }
.hero-panel .card-body { position: relative; z-index: 1; padding: 1.65rem; }
.hero-panel .section-kicker { color: var(--aulary-primary) !important; }
.hero-panel .section-subtitle, .hero-panel .text-muted { color: var(--aulary-muted) !important; }
.hero-panel .page-title { color: var(--aulary-text); }
.hero-actions { display: flex; flex-wrap: wrap; gap: 0.65rem; margin-top: 1.2rem; }
.hero-actions .btn-light { border-color: var(--aulary-primary); color: #fff; background: linear-gradient(135deg, var(--aulary-primary), var(--aulary-accent)); }
.hero-actions .btn-light:hover { border-color: var(--aulary-primary-dark); background: linear-gradient(135deg, var(--aulary-primary-dark), var(--aulary-primary)); }
.hero-actions .btn-outline-light { border-color: var(--aulary-primary); color: var(--aulary-primary); }
.hero-actions .btn-outline-light:hover { border-color: var(--aulary-primary); color: #fff; background: var(--aulary-primary); }

.metric-card,
.surface-card,
.table-card,
.form-section,
.discipline-card {
  border: 1px solid var(--aulary-border);
  border-radius: 1rem;
  background: var(--aulary-card);
  box-shadow: 0 0.7rem 1.5rem rgba(109, 40, 217, 0.055);
}
.metric-card .card-body { padding: 1.1rem 1.2rem; }
.metric-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.metric-label { color: var(--aulary-muted); font-size: 0.7rem; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; }
.metric-value { margin-top: 0.25rem; color: var(--aulary-text); font-size: 1.55rem; font-weight: 800; line-height: 1; }
.metric-note { margin-top: 0.35rem; color: var(--aulary-muted); font-size: 0.82rem; }
.metric-icon { width: 2.8rem; height: 2.8rem; display: inline-flex; align-items: center; justify-content: center; border-radius: 0.9rem; color: var(--aulary-primary); background: linear-gradient(135deg, rgba(109, 40, 217,.14), rgba(34, 197, 94,.1)); }

.table-card { overflow: hidden; }
.table-card .card-header,
.form-section .card-header,
.surface-card .card-header { padding: 1rem 1.2rem; border-bottom: 1px solid var(--aulary-border); background: transparent; }
.table-card .card-body { padding: 0; }
.table-responsive { margin-bottom: 0; }
.table-entity { margin-bottom: 0; }
.table-entity th { border-top: 0; color: var(--aulary-muted); font-size: 0.7rem; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; white-space: nowrap; }
.table-entity td { vertical-align: middle; }
.table-entity tbody tr:hover td { background: rgba(34, 197, 94, 0.045); }
.row-identity { display: flex; align-items: center; gap: 0.8rem; }
.row-avatar { width: 2.35rem; height: 2.35rem; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; border-radius: 0.75rem; color: var(--aulary-primary); background: var(--aulary-surface-soft); font-weight: 800; text-transform: uppercase; }
.row-title { color: var(--aulary-text); font-weight: 700; }
.row-subtitle { margin-top: 0.12rem; color: var(--aulary-muted); font-size: 0.82rem; }
.row-actions-compact { display: inline-flex; align-items: center; justify-content: flex-end; gap: 0.4rem; }
.btn-icon-circle { width: 2.2rem; height: 2.2rem; display: inline-flex; align-items: center; justify-content: center; padding: 0; border-radius: 50%; }

.class-group-summary-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; }
.class-group-summary-item { min-width: 0; padding: 0.8rem 0.9rem; border: 1px solid var(--aulary-border); border-radius: 0.8rem; background: var(--aulary-surface); }
.class-group-summary-item span { display: block; margin-bottom: 0.2rem; color: var(--aulary-muted); font-size: 0.7rem; font-weight: 800; letter-spacing: 0.05em; text-transform: uppercase; }
.class-group-summary-item strong { display: block; overflow-wrap: anywhere; color: var(--aulary-text); }
.class-group-description { margin: 1rem 0 0; padding-top: 1rem; border-top: 1px solid var(--aulary-border); }
.class-group-table th,
.class-group-table td { padding-right: 1.2rem; padding-left: 1.2rem; }
.class-group-table .class-group-number-column { width: 8.5rem; }
.class-group-table .class-group-time-column { width: 6.5rem; }
.class-group-table .class-group-date-column { width: 7.5rem; }
.class-group-table .class-group-period-column { width: 9.5rem; }
.class-group-table .class-group-status-column { width: 9rem; }
.class-group-table .class-group-action-column { width: 6rem; }
.class-group-card-form { padding: 1rem 1.2rem 1.2rem; border-top: 1px solid var(--aulary-border); background: rgba(232, 247, 240, 0.28); }
.class-group-inline-form { display: grid; align-items: end; gap: 0.8rem; }
.class-group-inline-form .form-group { min-width: 0; margin-bottom: 0; }
.class-group-inline-form .form-control,
.class-group-inline-form .select2-container { width: 100% !important; }
.class-group-inline-form .btn { min-height: calc(1.5em + 0.75rem + 2px); white-space: nowrap; }
.class-group-student-form { grid-template-columns: minmax(0, 1.7fr) minmax(7.5rem, 0.8fr) minmax(7.5rem, 0.7fr); }
.class-group-schedule-form { grid-template-columns: minmax(10rem, 1.35fr) repeat(2, minmax(7rem, 0.8fr)) minmax(7.5rem, 0.75fr); }
.class-group-next-lesson { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.class-group-next-lesson > div { min-width: 0; }
.class-group-next-lesson .btn { flex-shrink: 0; }

.toolbar-card { margin-bottom: 1.2rem; border: 1px solid var(--aulary-border); border-radius: 1rem; background: rgba(255,255,255,.88); box-shadow: 0 0.65rem 1.4rem rgba(109, 40, 217,.05); }
.toolbar-card .card-body { padding: 1rem 1.15rem; }
.filter-pills { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin-bottom: 1rem; }
.filter-pill { display: inline-flex; align-items: center; padding: 0.38rem 0.7rem; border-radius: 999px; color: var(--aulary-primary-dark); background: var(--aulary-surface-soft); font-size: 0.8rem; font-weight: 600; }
.filter-pill:hover { color: var(--aulary-primary-dark); text-decoration: none; background: var(--aulary-surface-strong); }
.classroom-year-filter { min-width: 10.5rem; }
.page-head-actions .classroom-year-filter .select2-container { width: 100% !important; }

.form-section { margin-bottom: 1.2rem; }
.form-section .card-body { padding: 1.25rem; }
.form-section-title { margin-bottom: 0.2rem; font-weight: 700; }
.form-helper { color: var(--aulary-muted); font-size: 0.82rem; }
.form-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 0.65rem; padding-top: 0.4rem; }

.empty-state { padding: 2.5rem 1.5rem; text-align: center; color: var(--aulary-muted); }
.empty-state-icon { width: 3.25rem; height: 3.25rem; display: inline-flex; align-items: center; justify-content: center; margin-bottom: 0.85rem; border-radius: 1rem; color: var(--aulary-primary); background: rgba(109, 40, 217,.09); font-size: 1.25rem; }
.empty-state-title { color: var(--aulary-text); font-weight: 700; }
.pagination-wrap { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.75rem; margin-top: 1rem; }

.discipline-card { display: block; height: 100%; color: inherit; text-decoration: none; transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.discipline-card:hover { transform: translateY(-3px); border-color: rgba(109, 40, 217,.25); color: inherit; text-decoration: none; box-shadow: 0 1rem 1.8rem rgba(109, 40, 217,.1); }
.discipline-card .card-body { padding: 1.2rem; }
.discipline-icon { width: 2.8rem; height: 2.8rem; display: inline-flex; align-items: center; justify-content: center; margin-bottom: 1rem; border-radius: 0.9rem; color: #fff; background: linear-gradient(135deg, var(--aulary-primary), var(--aulary-accent)); }

.detail-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 0.8rem; }
.detail-item { padding: 0.95rem; border: 1px solid var(--aulary-border); border-radius: 0.85rem; background: var(--aulary-surface); }
.detail-label { margin-bottom: 0.35rem; color: var(--aulary-muted); font-size: 0.7rem; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; }
.detail-value { color: var(--aulary-text); font-weight: 600; }
.badge-soft { padding: 0.42rem 0.68rem; border-radius: 999px; color: var(--aulary-muted); background: var(--aulary-surface-soft); font-weight: 600; }
.badge-soft-info, .badge-info { color: var(--aulary-info); background: rgba(37, 99, 235, .14); }
.attachment-row { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; padding: 0.75rem 0; border-bottom: 1px solid var(--aulary-border); }
.attachment-row:last-child { border-bottom: 0; }

.modal-content { border: 0; border-radius: 1rem; box-shadow: 0 1.2rem 2.6rem rgba(109, 40, 217,.18); overflow: hidden; }
.modal-header, .modal-footer { border-color: var(--aulary-border); }
.page-alert { border: 0; border-radius: 0.85rem; box-shadow: 0 0.5rem 1rem rgba(109, 40, 217,.08); }

.auth-shell { display: flex; align-items: stretch; overflow-x: hidden; }
.auth-shell .wrapper, .auth-shell .row { width: 100%; }
.auth-stage { min-height: 100vh; margin-right: 0; margin-left: 0; padding: 2rem 1.5rem; }
.auth-highlight { position: relative; overflow: hidden; height: 100%; padding: 2.2rem; border: 1px solid var(--aulary-border); border-radius: 1.35rem; color: var(--aulary-text); background: radial-gradient(circle at top right, rgba(255,255,255,.72), transparent 34%), linear-gradient(145deg, var(--aulary-surface-soft), var(--aulary-surface-strong)); box-shadow: 0 1.2rem 2.5rem rgba(109, 40, 217,.1); }
.auth-highlight::after { content: ''; position: absolute; right: -5rem; bottom: -6rem; width: 15rem; height: 15rem; border-radius: 50%; background: rgba(34, 197, 94,.12); }
.auth-highlight-content { position: relative; z-index: 1; max-width: 38rem; }
.auth-highlight .page-title,
.auth-highlight strong { color: var(--aulary-text); }
.auth-highlight .section-kicker { color: var(--aulary-primary) !important; }
.auth-highlight .section-subtitle, .auth-highlight .metric-note { color: var(--aulary-muted) !important; }
.auth-feature-list { display: grid; gap: 0.8rem; margin-top: 1.6rem; }
.auth-feature { display: flex; align-items: flex-start; gap: 0.75rem; padding: 0.9rem 1rem; border: 1px solid rgba(255,255,255,.92); border-radius: 0.95rem; background: rgba(255,255,255,.66); box-shadow: 0 0.5rem 1.1rem rgba(109, 40, 217,.05); }
.auth-feature-icon { width: 2.2rem; height: 2.2rem; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; border-radius: 0.75rem; color: var(--aulary-primary); background: rgba(34, 197, 94,.13); }
.auth-panel { width: 100%; max-width: 29rem; margin: 0 auto; overflow: hidden; border: 1px solid rgba(221, 214, 254, .88); border-radius: 1.35rem; background: rgba(255,255,255,.92); box-shadow: 0 1.2rem 2.5rem rgba(109, 40, 217,.1); backdrop-filter: blur(14px); }
.auth-panel-header { padding: 1.5rem 1.5rem 0; text-align: center; }
.auth-brand { display: inline-flex; align-items: center; margin-bottom: 1.25rem; text-align: left; }
.auth-brand .brand-logo { height: 2.1rem; }
.auth-panel h1 { color: var(--aulary-text); }
.auth-panel a strong { color: inherit; }
.auth-kicker { display: inline-flex; align-items: center; gap: 0.4rem; margin-bottom: 0.8rem; padding: 0.32rem 0.68rem; border-radius: 999px; color: var(--aulary-primary); background: rgba(109, 40, 217,.1); font-size: 0.7rem; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; }
.auth-body { padding: 1.5rem; }
.auth-panel .form-control { min-height: calc(1.5em + 1rem + 2px); border-radius: 0.85rem; }
.auth-panel .btn-lg { border-radius: 0.85rem; }
.auth-footer { color: var(--aulary-muted); font-size: 0.78rem; }
input[type="checkbox"] { accent-color: var(--aulary-primary); }

@media (min-width: 992px) {
  .vertical.collapsed:not(.hover) .app-sidebar .app-brand-copy,
  .vertical.collapsed:not(.hover) .app-sidebar .nav-section-label { display: none; }
  .vertical.collapsed:not(.hover) .app-sidebar .navbar-brand { width: 100%; justify-content: center; }
  .vertical.collapsed:not(.hover) .app-sidebar .app-brand { justify-content: center; padding: 0.65rem; }
  .vertical.collapsed:not(.hover) .app-sidebar .navbar-nav { margin-bottom: 0.75rem !important; }
  .vertical.collapsed:not(.hover) .app-sidebar .nav-link { justify-content: center; gap: 0; padding-right: 0; padding-left: 0; }
  .vertical.collapsed:not(.hover) .app-sidebar .nav-icon-shell { margin-right: auto; margin-left: auto; }
}

@media (max-width: 991.98px) {
  .app-topnav, .app-sidebar { margin-left: 0.7rem; margin-right: 0.7rem; }
  .app-sidebar { margin-top: 0.7rem; border-radius: 1rem; }
  .app-sidebar .toggle-btn { position: absolute; top: 0.75rem; right: 0.75rem; z-index: 1001; display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; margin: 0 !important; padding: 0; border-radius: 0.7rem; }
  .app-sidebar .toggle-btn:hover { color: var(--aulary-primary) !important; background: var(--aulary-surface-soft); }
  .auth-highlight { min-height: auto; margin-bottom: 1rem; }
  .auth-stage { padding: 1rem; }
}

@media (max-width: 767.98px) {
  .app-main-content { padding-left: 0.75rem; padding-right: 0.75rem; }
  .page-head-actions, .page-head-actions .btn { width: 100%; }
  .page-head-actions form { width: 100%; }
  .page-head-actions form .btn { width: 100%; }
  .hero-actions .btn { flex: 1 1 auto; }
  .auth-highlight { padding: 1.5rem; }
  .auth-feature-list { display: none; }
  .auth-stage > [class*="col-"] { padding-right: 0; padding-left: 0; }
  .auth-panel { max-width: 100%; }
  .table-card { border-radius: 0.85rem; }
  .class-group-summary-grid,
  .class-group-student-form,
  .class-group-schedule-form { grid-template-columns: minmax(0, 1fr); }
  .class-group-card-form { padding: 1rem; }
  .class-group-table { min-width: 34rem; }
  .class-group-next-lesson { align-items: flex-start; flex-direction: column; }
  .class-group-next-lesson .btn { width: 100%; }
}

/* Calendário (Grade de Horários e Aulas) — badges dedicados por CalendarEventType,
   mantidos como classes próprias (não .badge-warning/.badge-success/.badge-info)
   para preservar a distinção visual laranja/verde/azul entre Grade/Preparada/Avulsa
   independente de ajustes futuros nos tokens de status globais. */
.calendar-badge-warning { color: #9a5b12; background: rgba(245, 166, 35, .16); }
.calendar-badge-success { color: var(--aulary-success-dark); background: rgba(34, 197, 94, .16); }
.calendar-badge-info { color: #1d5bb8; background: rgba(59, 130, 246, .14); }

.calendar-event { display: flex; align-items: center; width: 100%; gap: 0.4rem; padding: 0.5rem 0.65rem; margin-bottom: 0.5rem; border-radius: 0.8rem; font-size: 0.85rem; text-align: left; text-decoration: none; appearance: none; transition: transform .14s ease, box-shadow .14s ease; }
.calendar-event:hover { text-decoration: none; transform: translateY(-1px); box-shadow: 0 0.4rem 0.9rem rgba(109, 40, 217, .08); }
.calendar-event-time { font-variant-numeric: tabular-nums; font-weight: 700; }
.calendar-event-full { flex-wrap: wrap; }
.calendar-event-compact { padding: 0.3rem 0.45rem; margin-bottom: 0.3rem; font-size: 0.74rem; }
.calendar-event-compact .calendar-event-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.calendar-day-list { display: flex; flex-direction: column; }

.calendar-week-grid { display: flex; gap: 0.75rem; overflow-x: auto; padding-bottom: 0.25rem; }
.calendar-week-day { flex: 1 1 0; min-width: 9.5rem; }
.calendar-week-day-header { margin-bottom: 0.5rem; padding: 0.4rem 0.1rem; border-bottom: 2px solid var(--aulary-border); text-align: center; }
.calendar-week-day-header.is-today { border-bottom-color: var(--aulary-primary); }
.calendar-week-day-header.is-today .calendar-week-day-number { color: var(--aulary-primary); }
.calendar-week-day-number { font-size: 1.1rem; font-weight: 800; color: var(--aulary-text); }

.calendar-month-grid-header { display: flex; }
.calendar-month-grid { display: flex; flex-wrap: wrap; }
.calendar-month-cell { width: 14.28%; min-height: 7.5rem; padding: 0.5rem; border: 1px solid var(--aulary-border); }
.calendar-month-cell-blank { border: none; }
.calendar-month-cell.is-today { background: var(--aulary-surface-soft); }
.calendar-month-cell-day { margin-bottom: 0.3rem; color: var(--aulary-muted); font-size: 0.78rem; font-weight: 700; }
.calendar-month-overflow { display: block; margin-top: 0.2rem; color: var(--aulary-muted); font-size: 0.72rem; font-weight: 600; }

@media (max-width: 767.98px) {
  .calendar-week-day { min-width: 8rem; }
  .calendar-month-cell { width: 100%; min-height: auto; }
  .calendar-month-grid-header { display: none; }
}

.planner-timeline-scroll { overflow-x: auto; border: 1px solid var(--aulary-border); border-radius: .5rem; background: #fff; }
.planner-timeline { min-width: 1120px; }
.planner-timeline-header,
.planner-timeline-body { display: grid; grid-template-columns: 72px repeat(7, minmax(145px, 1fr)); }
.planner-timeline-header { position: sticky; top: 0; z-index: 8; background: #fff; border-bottom: 1px solid var(--aulary-border); }
.planner-timeline-header > div { padding: .75rem .25rem; border-left: 1px solid var(--aulary-border); }
.planner-time-axis { position: relative; border-right: 1px solid var(--aulary-border); }
.planner-time-axis span { position: absolute; right: .5rem; transform: translateY(-50%); color: var(--aulary-muted); font-size: .75rem; }
.planner-day-column { position: relative; border-right: 1px solid var(--aulary-border); transition: background-color .12s ease; }
.planner-day-column:last-child { border-right: 0; }
.planner-day-column-dragover { background: var(--aulary-surface-soft); outline: 2px dashed var(--aulary-primary); outline-offset: -2px; }
.planner-time-guide { position: absolute; left: 0; right: 0; pointer-events: none; border-top: 1px dashed rgba(0, 0, 0, .07); }
.planner-time-guide-hour { border-top-style: solid; border-top-color: rgba(0, 0, 0, .14); }
.planner-grid-add { position: absolute; right: .25rem; z-index: 1; width: 22px; height: 22px; padding: 0; border: 1px solid transparent; border-radius: 50%; background: rgba(255, 255, 255, .85); color: var(--aulary-muted); opacity: .3; }
.planner-grid-add:hover,
.planner-grid-add:focus { z-index: 6; border-color: var(--aulary-primary); color: var(--aulary-primary); opacity: 1; }
.schedule-card { position: absolute; z-index: 3; left: 3px; width: calc(100% - 6px); min-height: 32px; overflow: hidden; cursor: grab; }
.schedule-card .card-body { overflow: hidden; }
.schedule-card-actions { display: flex; gap: .25rem; margin-top: .25rem; }
.schedule-card-actions .btn { padding: .15rem .35rem; line-height: 1.1; }
.schedule-card-dragging { opacity: .45; }
.schedule-card-conflict { border-color: #f6b93b; }
.planner-stage-grid,
.planner-level-grid,
.planner-school-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)); gap: .5rem; }
.planner-choice-card { min-height: 58px; padding: .75rem; border: 1px solid var(--aulary-border); border-radius: .5rem; background: #fff; color: inherit; text-align: left; }
.planner-choice-card:hover,
.planner-choice-card:focus,
.planner-choice-card.is-selected { border-color: var(--aulary-primary); background: var(--aulary-surface-soft); color: var(--aulary-primary); box-shadow: 0 0 0 1px var(--aulary-primary); }
.planner-choice-card-action { border-style: dashed; color: var(--aulary-primary); }
#plannerSchoolQuickAdd > .quick-add-trigger { display: none; }
.planner-context-summary { display: flex; flex-wrap: wrap; gap: .35rem 1rem; margin-bottom: 1rem; padding: .65rem .75rem; border-radius: .375rem; background: var(--aulary-surface-soft); color: var(--aulary-muted); font-size: .875rem; }
.planner-context-item { min-width: 0; }
.planner-context-item span { display: block; color: var(--aulary-muted); font-size: .7rem; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; }
.planner-context-item strong { color: var(--aulary-text); font-weight: 600; }
.planner-grade-level-selected { padding: .65rem .75rem; border-left: 3px solid var(--aulary-primary); border-radius: .375rem; background: var(--aulary-surface-soft); }
.planner-grade-level-selected span { display: block; color: var(--aulary-muted); font-size: .7rem; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; }

/* Onboarding — immersive, exclusive surface. Never the functional app shell/sidebar. */
body.onboarding-shell {
  min-height: 100vh;
  color: var(--aulary-text);
  background:
    radial-gradient(circle at top left, rgba(34, 197, 94, 0.1), transparent 30%),
    radial-gradient(circle at bottom right, rgba(237, 233, 254, 0.72), transparent 28%),
    linear-gradient(180deg, #fcfefc 0%, var(--aulary-surface) 100%);
}
.onboarding-wrapper { display: flex; min-height: 100vh; }
.onboarding-trail-panel { display: flex; flex-direction: column; width: 17rem; flex-shrink: 0; padding: 2rem 1.5rem; border-right: 1px solid var(--aulary-border); background: var(--aulary-card); }
.onboarding-brand { display: block; margin-bottom: 2.5rem; }
.onboarding-trail { flex: 1; list-style: none; margin: 0; padding: 0; }
.onboarding-trail-item { display: flex; align-items: center; gap: .75rem; padding: .6rem 0; color: var(--aulary-muted); }
.onboarding-trail-marker { display: flex; align-items: center; justify-content: center; width: 1.75rem; height: 1.75rem; flex-shrink: 0; border-radius: 50%; border: 2px solid var(--aulary-border); font-size: .8rem; font-weight: 700; color: var(--aulary-muted); }
.onboarding-trail-label { font-weight: 600; font-size: .9rem; }
.onboarding-trail-item.is-done .onboarding-trail-marker { border-color: var(--aulary-primary); background: var(--aulary-primary); color: #fff; }
.onboarding-trail-item.is-done .onboarding-trail-label { color: var(--aulary-text); }
.onboarding-trail-item.is-current .onboarding-trail-marker { border-color: var(--aulary-primary); color: var(--aulary-primary); }
.onboarding-trail-item.is-current .onboarding-trail-label { color: var(--aulary-primary); }
.onboarding-logout { margin-top: auto; padding-top: 1.5rem; }
.onboarding-content { flex: 1; max-width: 42rem; margin: 0 auto; padding: 3rem 1.5rem; }
.onboarding-content h1 { font-size: 1.5rem; margin-bottom: .5rem; }

@media (max-width: 767.98px) {
  .onboarding-wrapper { flex-direction: column; }
  .onboarding-trail-panel { width: 100%; flex-direction: row; align-items: center; padding: 1rem; border-right: none; border-bottom: 1px solid var(--aulary-border); }
  .onboarding-brand { margin-bottom: 0; margin-right: 1rem; }
  .onboarding-trail { display: flex; gap: .5rem; overflow-x: auto; }
  .onboarding-trail-item { flex-direction: column; gap: .25rem; padding: 0; }
  .onboarding-trail-label { font-size: .68rem; white-space: nowrap; }
  .onboarding-logout { margin-top: 0; margin-left: auto; padding-top: 0; }
  .onboarding-content { padding: 1.5rem 1rem; }
}
.planner-grade-level-selected strong { display: block; margin-top: .1rem; color: var(--aulary-text); font-weight: 600; }
