:root {
  --primary: #1f5f8b;
  --primary-dark: #174768;
  --primary-soft: #e6f0f7;
  --green: #2f855a;
  --amber: #b7791f;
  --red: #c53030;
  --bg: #f5f7fa;
  --surface: #ffffff;
  --text: #1f2933;
  --muted: #64748b;
  --border: #d9e2ec;
  --radius: 8px;
  --shadow: 0 16px 34px rgba(31, 41, 51, .12);
}

.enrollment-renewal-admin {
  gap: 30px;
}

.renewal-workspace-block {
  display: grid;
  gap: 18px;
  padding: 22px;
  border: 1px solid #cfdde8;
  border-radius: var(--radius);
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 16px 34px rgba(31, 41, 51, .07);
}

.renewal-workspace-block > .section-header,
.renewal-block-heading {
  padding-bottom: 16px;
  border-bottom: 1px solid #dfe8f0;
}

.renewal-block-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
}

.renewal-block-heading span {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.renewal-block-heading h2 {
  margin: 3px 0 0;
  font-size: 19px;
  line-height: 1.2;
}

.renewal-block-heading small {
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
  text-align: right;
}

.renewal-summary-block {
  background: linear-gradient(135deg, #ffffff 0%, #f4f9fd 100%);
}

.renewal-campaign-block,
.renewal-list-block {
  background: #ffffff;
}

.renewal-campaign-command {
  align-items: flex-start;
}

.renewal-list-block .maintenance-search {
  gap: 16px;
}

.renewal-list-block .renewal-table-panel {
  margin-top: 2px;
}

.renewal-export-actions {
  flex-wrap: wrap;
}

.renewal-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(150px, 1fr));
  gap: 12px;
  margin: 0;
}

.renewal-summary-grid .kpi-card {
  min-height: 96px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "label value"
    "detail value";
  gap: 4px 12px;
  align-items: center;
  padding: 14px 16px;
  text-decoration: none;
  box-shadow: 0 10px 22px rgba(31, 41, 51, .06);
}

.renewal-summary-grid .kpi-card span {
  grid-area: label;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.renewal-summary-grid .kpi-card strong {
  grid-area: value;
  justify-self: end;
  color: var(--primary-dark);
  font-size: 32px;
  line-height: 1;
}

.renewal-summary-grid .kpi-card small {
  grid-area: detail;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.renewal-summary-grid .kpi-card.warning {
  border-color: #f3d28c;
  background: #fffaf0;
}

.renewal-summary-grid .kpi-card.warning strong {
  color: var(--amber);
}

.renewal-summary-grid .kpi-card.success {
  border-color: #aadbc0;
  background: #f3fbf6;
}

.renewal-summary-grid .kpi-card.success strong {
  color: var(--green);
}

.renewal-summary-grid .kpi-card.danger {
  border-color: #f3b3b3;
  background: #fff7f7;
}

.renewal-summary-grid .kpi-card.danger strong {
  color: var(--red);
}

.renewal-summary-grid .kpi-card.info {
  border-color: #b9d7ec;
  background: #f5fbff;
}

.renewal-summary-grid .kpi-card.info strong {
  color: var(--primary);
}

.renewal-settings-panel {
  overflow: hidden;
  border-color: #cfe0ec;
  background: #f8fbfd;
  box-shadow: none;
}

.renewal-settings-panel summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 15px 16px;
  user-select: none;
}

.renewal-settings-panel summary::-webkit-details-marker {
  display: none;
}

.renewal-settings-summary-main {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 12px;
}

.renewal-settings-summary-main > i {
  flex: 0 0 auto;
  color: var(--primary-dark);
}

.renewal-settings-summary-main strong,
.renewal-settings-summary-main small {
  display: block;
}

.renewal-settings-summary-main strong {
  color: var(--text);
  font-size: 18px;
  line-height: 1.2;
}

.renewal-settings-summary-main small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.35;
}

.renewal-settings-summary-action {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--primary-dark);
  font-size: 13px;
  font-weight: 900;
}

.renewal-settings-summary-action i {
  transition: transform .18s ease;
}

.renewal-settings-panel[open] .renewal-settings-summary-action i {
  transform: rotate(180deg);
}

.renewal-settings-panel[open] .renewal-settings-summary-action span {
  font-size: 0;
}

.renewal-settings-panel[open] .renewal-settings-summary-action span::after {
  content: "Cerrar configuracion";
  font-size: 13px;
}

.renewal-settings-panel .renewal-campaign-form {
  border-top: 1px solid var(--border);
  background: #ffffff;
}

.renewal-settings-grid {
  grid-template-columns: minmax(220px, 1.3fr) repeat(2, minmax(150px, .7fr)) minmax(260px, 1.4fr);
}

.wide-label {
  display: grid;
  gap: 8px;
  margin-top: 16px;
  color: var(--muted);
  font-weight: 800;
}

.wide-label textarea,
.renewal-row-form input,
.renewal-row-form select,
.renewal-reject-form textarea {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 10px 12px;
  color: var(--text);
  background: #fff;
}

.wide-label textarea {
  resize: vertical;
  min-height: 110px;
}

.renewal-admin-ops {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 4px;
  padding-top: 18px;
  border-top: 1px solid #dfe8f0;
}

.renewal-add-panel {
  padding: 18px;
  background: #f8fbfd;
}

.renewal-add-heading {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: flex-start;
  margin-bottom: 12px;
}

.renewal-add-heading span {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.renewal-add-heading strong {
  display: block;
  margin-top: 3px;
  color: var(--text);
}

.renewal-add-heading small,
.warning-text {
  color: var(--amber);
  font-weight: 700;
}

.renewal-add-search {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) auto;
  gap: 10px;
  align-items: center;
}

.renewal-add-modal-panel {
  width: min(880px, 100%);
}

.renewal-add-modal .renewal-add-panel {
  border-top: 1px solid var(--border);
}

.renewal-candidate-results {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.renewal-candidate-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 14px;
  align-items: center;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #fff;
}

.renewal-candidate-main,
.renewal-candidate-state,
.renewal-candidate-actions {
  display: grid;
  gap: 4px;
}

@media (max-width: 900px) {
  .renewal-workspace-block {
    padding: 16px;
  }

  .renewal-summary-grid {
    grid-template-columns: 1fr;
  }

  .renewal-settings-panel summary {
    display: grid;
  }

  .renewal-block-heading,
  .renewal-add-heading,
  .renewal-add-search,
  .renewal-candidate-card,
  .renewal-modal-actions {
    grid-template-columns: 1fr;
  }

  .renewal-block-heading,
  .renewal-add-heading {
    display: grid;
  }

  .renewal-block-heading small {
    text-align: left;
  }
}

.renewal-table .table-subtext {
  display: block;
  margin-top: 4px;
}

.renewal-level-next {
  color: var(--primary-dark);
  font-weight: 900;
}

.renewal-person-cell {
  min-width: 260px;
  max-width: 380px;
}

.renewal-tutor-line {
  padding-top: 6px;
  border-top: 1px solid #e6eef5;
}

.renewal-level-cell {
  min-width: 210px;
  max-width: 260px;
}

.renewal-level-flow {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: 8px;
  align-items: center;
}

.renewal-level-flow small,
.renewal-level-flow strong {
  display: block;
}

.renewal-level-flow small {
  color: var(--muted);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.renewal-level-flow strong {
  overflow-wrap: anywhere;
}

.renewal-level-flow > i {
  width: 15px;
  height: 15px;
  color: var(--muted);
}

.renewal-state-cell {
  min-width: 150px;
}

.danger-text {
  color: var(--red);
  font-weight: 700;
}

.renewal-table-actions-cell {
  width: 132px;
  min-width: 132px;
  vertical-align: middle;
}

.renewal-row-actions {
  display: inline-grid;
  gap: 8px;
  justify-items: stretch;
}

.renewal-row-actions .inline-action {
  justify-content: center;
  min-width: 118px;
}

.renewal-action-modal .modal-panel-small {
  width: min(520px, 100%);
}

.renewal-modal-summary {
  display: grid;
  gap: 6px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #f8fbfd;
}

.renewal-modal-summary strong,
.renewal-modal-summary small {
  display: block;
}

.renewal-modal-summary .status-pill {
  justify-self: start;
}

.renewal-modal-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.renewal-callout-section {
  padding: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
}

.renewal-callout {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
  padding: 18px;
  border: 1px solid #f2c66d;
  border-radius: var(--radius);
  background:
    linear-gradient(135deg, rgba(255, 248, 225, .98) 0%, rgba(232, 244, 255, .98) 58%, #ffffff 100%);
  box-shadow: 0 18px 38px rgba(183, 121, 31, .18);
  position: relative;
  overflow: hidden;
}

.renewal-callout::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 7px;
  background: linear-gradient(180deg, #f2b632, var(--primary));
}

.renewal-callout > * {
  position: relative;
}

.renewal-callout-icon,
.renewal-family-card .section-title > i {
  width: 44px;
  height: 44px;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #f2b632;
  color: #102235;
  box-shadow: 0 10px 20px rgba(183, 121, 31, .22);
}

.renewal-document-box span {
  color: var(--muted);
}

.renewal-callout span {
  color: #72510f;
  font-weight: 800;
}

.renewal-callout h2 {
  margin: 2px 0;
  font-size: 22px;
  color: #102235;
}

.renewal-callout p {
  margin: 0;
  color: #35506a;
}

.renewal-callout-students {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 10px;
}

.renewal-callout-students b {
  padding: 5px 8px;
  border: 1px solid #f2c66d;
  border-radius: 999px;
  background: #fffaf0;
  color: #102235;
  font-size: 12px;
}

.renewal-callout .button.primary {
  background: #174768;
  border-color: #174768;
  color: #ffffff;
  box-shadow: 0 12px 24px rgba(23, 71, 104, .22);
}

.renewal-callout .button.primary:hover {
  background: #0f344f;
  border-color: #0f344f;
}

.renewal-family-grid {
  display: grid;
  gap: 16px;
}

.renewal-family-card-head,
.renewal-document-box,
.renewal-document-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.renewal-level-note {
  display: inline-flex;
  width: fit-content;
  margin-top: 7px;
  border: 1px solid #b9d7ec;
  border-radius: 999px;
  padding: 5px 9px;
  color: var(--primary-dark);
  background: #eef7ff;
  font-size: 12px;
  font-weight: 900;
}

.renewal-document-box {
  margin-top: 16px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #f8fbfd;
}

.renewal-document-viewer-box {
  display: grid;
  gap: 0;
  align-items: stretch;
  padding: 0;
  overflow: hidden;
  background: #ffffff;
}

.renewal-document-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px;
  border-bottom: 1px solid var(--border);
  background: #f8fbfd;
}

.renewal-document-actions {
  flex-wrap: wrap;
  justify-content: flex-end;
}

.renewal-pdf-viewer {
  width: 100%;
  height: min(72vh, 760px);
  min-height: 560px;
  background: #e6edf4;
}

.renewal-pdf-viewer object,
.renewal-pdf-viewer iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

.renewal-legal-box {
  margin-top: 16px;
  padding: 14px;
  border-left: 4px solid var(--primary);
  background: #f8fbfd;
}

.renewal-legal-box h3 {
  margin: 0 0 8px;
}

.renewal-legal-box p {
  margin: 0;
  color: var(--muted);
}

.renewal-check-list {
  margin: 16px 0;
  display: grid;
  gap: 10px;
}

.renewal-reject-form {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}

@media (max-width: 760px) {
  .renewal-settings-grid {
    grid-template-columns: 1fr;
  }

  .renewal-callout,
  .renewal-family-card-head,
  .renewal-document-box,
  .renewal-document-toolbar {
    grid-template-columns: 1fr;
    display: grid;
  }

  .renewal-pdf-viewer {
    min-height: 440px;
    height: 62vh;
  }

  .renewal-row-form {
    min-width: 0;
  }
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: "Segoe UI", Roboto, Arial, sans-serif;
  font-size: 15px;
  line-height: 1.45;
}

body.modal-open {
  overflow: hidden;
}

a {
  color: inherit;
  text-decoration: none;
}

button,
input,
select {
  font: inherit;
}

a[href],
button:not(:disabled),
input[type="button"]:not(:disabled),
input[type="submit"]:not(:disabled),
input[type="reset"]:not(:disabled),
.switch-option,
.check-inline {
  cursor: pointer;
}

button:disabled,
input[type="button"]:disabled,
input[type="submit"]:disabled,
input[type="reset"]:disabled {
  cursor: not-allowed;
}

.site-header {
  min-height: 72px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 14px clamp(18px, 4vw, 52px);
  background: #ffffff;
  border-bottom: 1px solid var(--border);
}

.brand {
  display: flex;
  align-items: center;
  gap: 16px;
  min-width: 0;
}

.brand img {
  width: 142px;
  max-width: 38vw;
  height: auto;
  display: block;
}

.brand-text {
  display: grid;
  gap: 1px;
}

.brand-text strong {
  color: var(--text);
  font-size: 15px;
}

.brand-text span {
  color: var(--muted);
  font-size: 12px;
}

.header-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}

.button {
  min-height: 40px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 9px 14px;
  font-weight: 800;
  white-space: nowrap;
  cursor: pointer;
}

.button.primary {
  background: var(--primary);
  border-color: var(--primary);
  color: #ffffff;
}

.button:disabled {
  opacity: .55;
  cursor: not-allowed;
}

.button svg,
.field-icon svg,
.notice svg {
  width: 18px;
  height: 18px;
  stroke-width: 2;
  flex: 0 0 auto;
}

.hero {
  min-height: 390px;
  display: grid;
  align-items: center;
  position: relative;
  isolation: isolate;
  background:
    linear-gradient(90deg, rgba(15, 39, 60, .88), rgba(15, 39, 60, .62), rgba(15, 39, 60, .28)),
    linear-gradient(135deg, #314a5c, #8ea0ac);
  color: #ffffff;
  overflow: hidden;
}

.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 78% 22%, rgba(255, 255, 255, .18), transparent 32%);
  z-index: -1;
}

.hero::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  height: 80px;
  background: linear-gradient(0deg, rgba(245, 247, 250, 1), rgba(245, 247, 250, 0));
  z-index: -1;
}

.hero-content {
  width: min(1180px, 100%);
  margin: 0 auto;
  padding: 28px clamp(18px, 4vw, 52px) 18px;
  display: grid;
  gap: 20px;
}

.hero-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(230px, 300px);
  align-items: center;
  gap: 24px;
}

.hero-copy {
  max-width: 780px;
  display: grid;
  gap: 12px;
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  width: fit-content;
  border: 1px solid rgba(255, 255, 255, .32);
  border-radius: 999px;
  padding: 6px 11px;
  background: rgba(255, 255, 255, .1);
  font-size: 13px;
  font-weight: 800;
}

.eyebrow.soft {
  color: var(--primary-dark);
  border-color: var(--border);
  background: var(--primary-soft);
}

h1 {
  margin: 0;
  font-size: clamp(38px, 5vw, 58px);
  line-height: .98;
  letter-spacing: 0;
}

.hero-logo-title {
  width: min(540px, 100%);
  line-height: 0;
}

.hero-logo-title img {
  display: block;
  width: 100%;
  height: auto;
  filter: drop-shadow(0 16px 24px rgba(0, 0, 0, .24));
}

.hero-brand-subline {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.hero-brand-subline span {
  min-height: 28px;
  display: inline-flex;
  align-items: center;
  border: 1px solid rgba(255, 255, 255, .22);
  border-radius: 999px;
  background: rgba(255, 255, 255, .08);
  color: rgba(255, 255, 255, .86);
  padding: 4px 10px;
  font-size: 12px;
  font-weight: 800;
}

.hero-copy p {
  margin: 0;
  max-width: 780px;
  color: rgba(255, 255, 255, .86);
  font-size: clamp(16px, 1.6vw, 18px);
}

.english-visual {
  justify-self: end;
  width: min(100%, 300px);
  border: 1px solid rgba(255, 255, 255, .24);
  border-radius: 8px;
  background: linear-gradient(145deg, rgba(255, 255, 255, .2), rgba(255, 255, 255, .08));
  box-shadow: 0 22px 46px rgba(0, 0, 0, .16);
  padding: 10px;
  backdrop-filter: blur(6px);
}

.english-visual img {
  display: block;
  width: 100%;
  height: auto;
  filter: drop-shadow(0 16px 22px rgba(0, 0, 0, .18));
}

.access-strip {
  background: rgba(255, 255, 255, .95);
  color: var(--text);
  border: 1px solid rgba(255, 255, 255, .8);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 18px;
  display: grid;
  grid-template-columns: minmax(210px, .8fr) minmax(0, 1.6fr);
  align-items: stretch;
  gap: 18px;
}

.access-strip > * {
  min-width: 0;
}

.access-title strong {
  display: block;
  font-size: 20px;
}

.access-title span {
  color: var(--muted);
  display: block;
  font-size: 14px;
  margin-top: 5px;
  max-width: 260px;
}

.database-pill {
  width: fit-content;
  display: inline-flex !important;
  align-items: center;
  gap: 6px;
  border-radius: 999px;
  padding: 5px 9px;
  margin-top: 12px !important;
  font-size: 12px !important;
  font-weight: 800;
}

.database-pill.ok {
  background: #e6f4ed;
  color: var(--green);
}

.database-pill.warn {
  background: #fff6df;
  color: var(--amber);
}

.login-panel {
  display: grid;
  gap: 14px;
  min-width: 0;
}

.credentials-row {
  display: grid;
  grid-template-columns: minmax(170px, 1fr) minmax(170px, 1fr) minmax(240px, .95fr);
  align-items: end;
  gap: 12px;
  min-width: 0;
}

.field,
.role-choice {
  min-width: 0;
}

.field label,
.role-choice label {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
  margin-bottom: 6px;
}

.field-control {
  min-height: 42px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 11px;
}

.field-control input {
  width: 100%;
  border: 0;
  outline: 0;
  min-width: 0;
  color: var(--text);
}

.field-icon {
  color: var(--muted);
  display: grid;
  place-items: center;
}

.role-options {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.role-option {
  min-height: 48px;
  min-width: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 7px;
  padding: 10px 12px;
  font-weight: 800;
  cursor: pointer;
  line-height: 1.15;
  text-align: left;
  white-space: normal;
  overflow-wrap: anywhere;
}

.role-option:hover,
.role-option.is-selected {
  border-color: var(--primary);
  background: var(--primary-soft);
  color: var(--primary-dark);
}

.selected-role {
  margin-top: 6px;
  color: var(--muted);
  font-size: 12px;
  min-height: 18px;
}

.form-alert {
  border: 1px solid #fecaca;
  border-radius: var(--radius);
  background: #fff1f2;
  color: #9f1239;
  padding: 10px 12px;
  font-size: 13px;
  font-weight: 800;
}

.form-alert.success {
  border-color: #bbf7d0;
  background: #f0fdf4;
  color: #166534;
}

.form-alert.warning {
  border-color: #f3d48a;
  background: #fff7df;
  color: #92400e;
}

.form-alert[hidden] {
  display: none;
}

.impersonation-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  border: 1px solid #f59e0b;
  border-radius: var(--radius);
  background: #fffbeb;
  color: #78350f;
  padding: 12px 14px;
  box-shadow: 0 10px 24px rgba(120, 53, 15, .08);
}

.impersonation-banner strong {
  display: block;
  font-weight: 900;
}

.impersonation-banner span {
  display: block;
  margin-top: 2px;
  color: #92400e;
  font-size: 13px;
  font-weight: 800;
}

.app-toast-container {
  position: fixed;
  top: 22px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1200;
  display: grid;
  gap: 10px;
  width: min(560px, calc(100vw - 36px));
  pointer-events: none;
}

.app-toast {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 12px;
  align-items: start;
  padding: 14px;
  border: 1px solid var(--border);
  border-left-width: 5px;
  border-radius: var(--radius);
  background: #ffffff;
  box-shadow: 0 18px 42px rgba(15, 23, 42, .18);
  opacity: 0;
  transform: translateY(-8px);
  transition: opacity .18s ease, transform .18s ease;
  pointer-events: auto;
}

.app-toast.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.app-toast > svg {
  width: 20px;
  height: 20px;
  margin-top: 1px;
}

.app-toast-copy {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.app-toast-copy strong {
  color: var(--text);
  font-size: 14px;
}

.app-toast-copy span {
  color: var(--muted);
  font-size: 13px;
  overflow-wrap: anywhere;
}

.app-toast-close {
  border: 0;
  background: transparent;
  color: var(--muted);
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  cursor: pointer;
}

.app-toast-close svg {
  width: 17px;
  height: 17px;
}

.app-toast-success {
  border-left-color: var(--green);
}

.app-toast-success > svg {
  color: var(--green);
}

.app-toast-error {
  border-left-color: var(--red);
}

.app-toast-error > svg {
  color: var(--red);
}

.app-toast-warning {
  border-left-color: var(--amber);
}

.app-toast-warning > svg {
  color: var(--amber);
}

.app-toast-info {
  border-left-color: var(--primary);
}

.app-toast-info > svg {
  color: var(--primary);
}

.validation-message {
  display: block;
  margin-top: 6px;
  color: #9f1239;
  font-size: 12px;
  font-weight: 800;
}

.login-button {
  min-width: 0;
  width: 100%;
  justify-self: stretch;
  line-height: 1.15;
  white-space: normal;
}

.login-secondary-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: -4px;
  min-width: 0;
}

.recover-button {
  min-height: 36px;
  background: transparent;
}

.page {
  width: min(1180px, 100%);
  margin: 0 auto;
  padding: 34px clamp(18px, 4vw, 52px) 52px;
  display: grid;
  gap: 26px;
}

.section-heading {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 18px;
  margin-bottom: 14px;
}

.section-heading h2 {
  margin: 0;
  font-size: 24px;
}

.section-heading p {
  margin: 4px 0 0;
  color: #4f6785;
}

.news-layout {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 16px;
}

.news-card,
.calendar-card,
.dashboard-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 10px 30px rgba(15, 23, 42, .06);
  overflow: hidden;
}

.card-heading {
  min-height: 58px;
  border-bottom: 1px solid var(--border);
  padding: 14px 18px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.card-heading strong {
  font-size: 16px;
}

.card-heading span {
  background: #e6f0f7;
  color: var(--primary-dark);
  border-radius: 999px;
  padding: 6px 10px;
  font-size: 12px;
  font-weight: 800;
}

.news-item {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  padding: 14px 18px;
  border-bottom: 1px solid var(--border);
}

.news-item:last-child {
  border-bottom: 0;
}

.news-item time {
  min-height: 50px;
  display: grid;
  place-items: center;
  border-radius: var(--radius);
  background: #fff3d6;
  color: var(--amber);
  font-weight: 900;
}

.news-item strong {
  display: block;
  margin-bottom: 3px;
}

.news-item p {
  margin: 0;
  color: #4f6785;
  font-size: 13px;
}

.status {
  border-radius: 999px;
  padding: 6px 10px;
  font-size: 12px;
  font-weight: 900;
}

.status.warn {
  background: #fff6df;
  color: var(--amber);
}

.status.ok {
  background: #e6f4ed;
  color: var(--green);
}

.calendar-card {
  padding-bottom: 14px;
}

.calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 8px;
  padding: 0 18px 14px;
}

.calendar-grid b {
  color: #52657d;
  font-size: 12px;
  text-align: center;
  padding: 4px 0;
}

.calendar-grid button {
  min-height: 34px;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: #ffffff;
  color: var(--text);
  font-weight: 800;
}

.calendar-grid button.active {
  background: var(--primary-soft);
  border-color: #b9d7ec;
  color: var(--primary-dark);
}

.calendar-grid button.holiday {
  background: #fff3d6;
  border-color: #f3d28c;
  color: var(--amber);
}

.calendar-grid button.today {
  outline: 3px solid rgba(31, 95, 139, .18);
  border-color: var(--primary);
}

.calendar-grid [data-calendar-popover],
.calendar [data-calendar-popover] {
  position: relative;
  overflow: visible;
}

.calendar-grid [data-calendar-popover]::before,
.calendar [data-calendar-popover]::before,
.calendar-grid [data-calendar-popover]::after,
.calendar [data-calendar-popover]::after {
  position: absolute;
  left: 50%;
  pointer-events: none;
  opacity: 0;
  transform: translate(-50%, 6px);
  transition: opacity .16s ease, transform .16s ease;
  z-index: 60;
}

.calendar-grid [data-calendar-popover]::before,
.calendar [data-calendar-popover]::before {
  content: "";
  bottom: calc(100% + 5px);
  border: 7px solid transparent;
  border-top: 0;
  border-bottom-color: #15344a;
}

.calendar-grid [data-calendar-popover]::after,
.calendar [data-calendar-popover]::after {
  content: attr(data-calendar-popover);
  bottom: calc(100% + 12px);
  width: max-content;
  min-width: 190px;
  max-width: min(320px, 72vw);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 8px;
  background: linear-gradient(180deg, #1f5f8b 0%, #15344a 100%);
  box-shadow: 0 18px 36px rgba(15, 23, 42, .26);
  color: #ffffff;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.45;
  padding: 10px 12px;
  text-align: left;
  white-space: pre-line;
}

.calendar-grid [data-calendar-popover]:hover::before,
.calendar-grid [data-calendar-popover]:focus::before,
.calendar-grid [data-calendar-popover]:focus-visible::before,
.calendar [data-calendar-popover]:hover::before,
.calendar [data-calendar-popover]:focus::before,
.calendar [data-calendar-popover]:focus-visible::before,
.calendar-grid [data-calendar-popover]:hover::after,
.calendar-grid [data-calendar-popover]:focus::after,
.calendar-grid [data-calendar-popover]:focus-visible::after,
.calendar [data-calendar-popover]:hover::after,
.calendar [data-calendar-popover]:focus::after,
.calendar [data-calendar-popover]:focus-visible::after {
  opacity: 1;
  transform: translate(-50%, 0);
}

.calendar-grid [data-calendar-popover]:nth-child(7n+1)::after,
.calendar-grid [data-calendar-popover]:nth-child(7n+2)::after,
.calendar [data-calendar-popover]:nth-child(7n+1)::after,
.calendar [data-calendar-popover]:nth-child(7n+2)::after {
  left: 0;
  transform: translate(0, 6px);
}

.calendar-grid [data-calendar-popover]:nth-child(7n+1)::before,
.calendar-grid [data-calendar-popover]:nth-child(7n+2)::before,
.calendar [data-calendar-popover]:nth-child(7n+1)::before,
.calendar [data-calendar-popover]:nth-child(7n+2)::before {
  left: 22px;
  transform: translate(0, 6px);
}

.calendar-grid [data-calendar-popover]:nth-child(7n)::after,
.calendar-grid [data-calendar-popover]:nth-child(7n+6)::after,
.calendar [data-calendar-popover]:nth-child(7n)::after,
.calendar [data-calendar-popover]:nth-child(7n+6)::after {
  right: 0;
  left: auto;
  transform: translate(0, 6px);
}

.calendar-grid [data-calendar-popover]:nth-child(7n)::before,
.calendar-grid [data-calendar-popover]:nth-child(7n+6)::before,
.calendar [data-calendar-popover]:nth-child(7n)::before,
.calendar [data-calendar-popover]:nth-child(7n+6)::before {
  right: 22px;
  left: auto;
  transform: translate(0, 6px);
}

.calendar-grid [data-calendar-popover]:nth-child(7n+1):hover::before,
.calendar-grid [data-calendar-popover]:nth-child(7n+1):focus::before,
.calendar-grid [data-calendar-popover]:nth-child(7n+1):focus-visible::before,
.calendar-grid [data-calendar-popover]:nth-child(7n+2):hover::before,
.calendar-grid [data-calendar-popover]:nth-child(7n+2):focus::before,
.calendar-grid [data-calendar-popover]:nth-child(7n+2):focus-visible::before,
.calendar-grid [data-calendar-popover]:nth-child(7n+1):hover::after,
.calendar-grid [data-calendar-popover]:nth-child(7n+1):focus::after,
.calendar-grid [data-calendar-popover]:nth-child(7n+1):focus-visible::after,
.calendar-grid [data-calendar-popover]:nth-child(7n+2):hover::after,
.calendar-grid [data-calendar-popover]:nth-child(7n+2):focus::after,
.calendar-grid [data-calendar-popover]:nth-child(7n+2):focus-visible::after,
.calendar [data-calendar-popover]:nth-child(7n+1):hover::before,
.calendar [data-calendar-popover]:nth-child(7n+1):focus::before,
.calendar [data-calendar-popover]:nth-child(7n+1):focus-visible::before,
.calendar [data-calendar-popover]:nth-child(7n+2):hover::before,
.calendar [data-calendar-popover]:nth-child(7n+2):focus::before,
.calendar [data-calendar-popover]:nth-child(7n+2):focus-visible::before,
.calendar [data-calendar-popover]:nth-child(7n+1):hover::after,
.calendar [data-calendar-popover]:nth-child(7n+1):focus::after,
.calendar [data-calendar-popover]:nth-child(7n+1):focus-visible::after,
.calendar [data-calendar-popover]:nth-child(7n+2):hover::after,
.calendar [data-calendar-popover]:nth-child(7n+2):focus::after,
.calendar [data-calendar-popover]:nth-child(7n+2):focus-visible::after,
.calendar-grid [data-calendar-popover]:nth-child(7n):hover::before,
.calendar-grid [data-calendar-popover]:nth-child(7n):focus::before,
.calendar-grid [data-calendar-popover]:nth-child(7n):focus-visible::before,
.calendar-grid [data-calendar-popover]:nth-child(7n+6):hover::before,
.calendar-grid [data-calendar-popover]:nth-child(7n+6):focus::before,
.calendar-grid [data-calendar-popover]:nth-child(7n+6):focus-visible::before,
.calendar-grid [data-calendar-popover]:nth-child(7n):hover::after,
.calendar-grid [data-calendar-popover]:nth-child(7n):focus::after,
.calendar-grid [data-calendar-popover]:nth-child(7n):focus-visible::after,
.calendar-grid [data-calendar-popover]:nth-child(7n+6):hover::after,
.calendar-grid [data-calendar-popover]:nth-child(7n+6):focus::after,
.calendar-grid [data-calendar-popover]:nth-child(7n+6):focus-visible::after,
.calendar [data-calendar-popover]:nth-child(7n):hover::before,
.calendar [data-calendar-popover]:nth-child(7n):focus::before,
.calendar [data-calendar-popover]:nth-child(7n):focus-visible::before,
.calendar [data-calendar-popover]:nth-child(7n+6):hover::before,
.calendar [data-calendar-popover]:nth-child(7n+6):focus::before,
.calendar [data-calendar-popover]:nth-child(7n+6):focus-visible::before,
.calendar [data-calendar-popover]:nth-child(7n):hover::after,
.calendar [data-calendar-popover]:nth-child(7n):focus::after,
.calendar [data-calendar-popover]:nth-child(7n):focus-visible::after,
.calendar [data-calendar-popover]:nth-child(7n+6):hover::after,
.calendar [data-calendar-popover]:nth-child(7n+6):focus::after,
.calendar [data-calendar-popover]:nth-child(7n+6):focus-visible::after {
  transform: translate(0, 0);
}

.calendar-legend {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  padding: 0 18px;
  color: var(--muted);
  font-size: 12px;
}

.calendar-legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.calendar-legend b {
  width: 10px;
  height: 10px;
  border-radius: 999px;
  background: var(--primary-soft);
  border: 1px solid #b9d7ec;
}

.calendar-legend .holiday-key b {
  background: #fff3d6;
  border-color: #f3d28c;
}

.calendar-legend .absence-key b {
  background: #fde8e8;
  border-color: #f3a5a5;
}

.dashboard-main {
  min-height: calc(100vh - 72px);
  background: #f5f7fa;
  padding: 34px clamp(18px, 4vw, 52px) 52px;
}

.dashboard-shell {
  width: min(1180px, 100%);
  margin: 0 auto;
  display: grid;
  gap: 18px;
}

.dashboard-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  background: #ffffff;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 22px;
}

.dashboard-heading h1 {
  color: var(--text);
  font-size: 34px;
  margin-top: 12px;
}

.dashboard-heading p {
  color: var(--muted);
  margin: 8px 0 0;
}

.dashboard-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.dashboard-card {
  padding: 18px;
}

.dashboard-card span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.dashboard-card strong {
  display: block;
  margin-top: 8px;
  color: var(--text);
  font-size: 20px;
}

.dashboard-card p {
  color: var(--muted);
  margin: 10px 0 0;
}

.academy-dashboard-heading h1 {
  max-width: 760px;
}

.student-switcher {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  align-items: center;
}

.student-chip {
  min-height: 42px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  font-weight: 900;
  color: var(--text);
}

.student-chip.is-selected {
  border-color: var(--primary);
  background: var(--primary-soft);
  color: var(--primary-dark);
}

.student-chip svg {
  width: 18px;
  height: 18px;
}

.enrollment-strip {
  background: #ffffff;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}

.enrollment-strip > div {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.muted-pill {
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  border-radius: 999px;
  background: #edf2f7;
  color: #4f6785;
  padding: 5px 10px;
  font-size: 12px;
  font-weight: 900;
}

.metric-grid {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.metric-card {
  min-height: 152px;
}

.metric-card span {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

.metric-card svg {
  width: 17px;
  height: 17px;
}

.metric-card strong {
  font-size: 32px;
}

.metric-card.warn strong,
.metric-card.warn span {
  color: var(--amber);
}

.metric-card.danger strong,
.metric-card.danger span {
  color: var(--red);
}

.metric-card.ok strong,
.metric-card.ok span {
  color: var(--green);
}

.metric-card.info strong,
.metric-card.info span {
  color: var(--primary);
}

.portal-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.portal-panel {
  background: #ffffff;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 10px 30px rgba(15, 23, 42, .06);
  overflow: hidden;
}

.portal-panel.wide {
  grid-column: 1 / -1;
}

.portal-panel-heading {
  min-height: 56px;
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
}

.portal-panel-heading h2 {
  margin: 0;
  font-size: 17px;
}

.portal-panel-heading span {
  border-radius: 999px;
  background: var(--primary-soft);
  color: var(--primary-dark);
  padding: 5px 9px;
  font-size: 12px;
  font-weight: 900;
}

.timeline-list {
  display: grid;
}

.timeline-item,
.compact-row {
  display: grid;
  align-items: center;
  gap: 12px;
  border-bottom: 1px solid var(--border);
  padding: 13px 16px;
}

.timeline-item:last-child,
.compact-row:last-child {
  border-bottom: 0;
}

.timeline-item {
  grid-template-columns: 64px minmax(0, 1fr) auto;
}

.timeline-item time {
  min-height: 42px;
  border-radius: var(--radius);
  background: #edf2f7;
  color: #4f6785;
  display: grid;
  place-items: center;
  font-weight: 900;
}

.compact-row {
  grid-template-columns: minmax(0, 1fr) auto;
}

.timeline-item strong,
.compact-row strong {
  display: block;
  margin-bottom: 3px;
}

.timeline-item p,
.compact-row p,
.empty-state {
  margin: 0;
  color: #4f6785;
  font-size: 13px;
}

.compact-row svg {
  width: 19px;
  height: 19px;
  color: var(--muted);
}

.empty-state {
  padding: 18px 16px;
}

.app-body {
  background: var(--bg);
}

.app-shell {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 292px minmax(0, 1fr);
}

.sidebar {
  position: sticky;
  top: 0;
  height: 100vh;
  background: #ffffff;
  border-right: 1px solid var(--border);
  padding: 18px 16px;
  display: flex;
  flex-direction: column;
  gap: 18px;
  overflow-y: auto;
  scrollbar-gutter: stable;
}

.sidebar .brand {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 4px 14px;
  border-bottom: 1px solid var(--border);
}

.sidebar .brand img {
  width: 126px;
  flex: 0 0 126px;
  max-width: 100%;
  height: auto;
  display: block;
}

.sidebar .brand > div {
  min-width: 0;
  flex: 1 1 auto;
}

.sidebar .brand strong {
  display: block;
  font-size: 15px;
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  overflow-wrap: normal;
  word-break: normal;
}

.sidebar .brand small {
  color: var(--muted);
  display: block;
  margin-top: 3px;
  line-height: 1.2;
}

.profile-switcher {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid #cfe1ee;
  border-radius: var(--radius);
  background: #f7fbfe;
}

.profile-switcher-label {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
}

.profile-switcher-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.profile-switcher-form {
  margin: 0;
}

.profile-switcher-item {
  min-height: 32px;
  border: 1px solid #bfd5e7;
  border-radius: 999px;
  background: #ffffff;
  color: #234761;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  font-size: 12px;
  font-weight: 900;
  cursor: pointer;
}

.profile-switcher-item.is-current {
  background: var(--primary);
  border-color: var(--primary);
  color: #ffffff;
  cursor: default;
}

.profile-switcher-item svg {
  width: 15px;
  height: 15px;
}

.nav-group {
  display: grid;
  gap: 6px;
}

.nav-label {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  margin: 4px 8px;
}

.nav-toggle {
  width: calc(100% - 16px);
  border: 0;
  background: transparent;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 4px 0;
  cursor: pointer;
  text-align: left;
}

.nav-toggle:hover,
.nav-toggle:focus-visible {
  color: var(--primary-dark);
  outline: none;
}

.nav-toggle svg {
  width: 15px;
  height: 15px;
  transition: transform .16s ease;
}

.nav-group.is-collapsed .nav-toggle svg {
  transform: rotate(-90deg);
}

.nav-group.is-collapsed .nav-link {
  display: none;
}

.nav-link {
  min-height: 40px;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border-radius: var(--radius);
  color: #334155;
  font-weight: 700;
}

.nav-link:hover,
.nav-link.is-active {
  background: var(--primary-soft);
  color: var(--primary-dark);
}

.nav-link svg,
.top-action svg,
.icon-button svg,
.metric svg,
.section-title svg,
.inline-action svg {
  width: 18px;
  height: 18px;
  stroke-width: 2;
  flex: 0 0 auto;
}

.sidebar-footer {
  margin-top: auto;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #fafcff;
}

.sidebar-footer strong {
  display: block;
  margin-bottom: 3px;
}

.sidebar-footer span {
  color: var(--muted);
  font-size: 13px;
}

.admin-sidebar {
  gap: 14px;
}

.admin-shell {
  grid-template-columns: 316px minmax(0, 1fr);
}

.admin-sidebar .brand {
  padding-bottom: 12px;
}

.admin-sidebar .nav-group {
  gap: 4px;
}

.admin-sidebar .nav-link {
  min-height: 34px;
  padding: 7px 10px;
  font-size: 14px;
}

.admin-sidebar .sidebar-footer {
  margin-top: 4px;
}

.main {
  min-width: 0;
  display: flex;
  flex-direction: column;
}

.topbar {
  position: sticky;
  top: 0;
  z-index: 5;
  min-height: 72px;
  background: rgba(245, 247, 250, .92);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--border);
  padding: 14px 28px;
  display: flex;
  align-items: center;
  gap: 16px;
}

.page-heading {
  flex: 1;
  min-width: 0;
}

.page-heading h1 {
  margin: 0;
  font-size: 23px;
  line-height: 1.2;
  letter-spacing: 0;
}

.page-heading p {
  margin: 4px 0 0;
  color: var(--muted);
}

.breadcrumbs {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 7px;
  margin: 0 0 6px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
  line-height: 1.2;
}

.breadcrumbs a,
.breadcrumbs .current,
.breadcrumbs .breadcrumb-context {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 22px;
}

.breadcrumbs a {
  color: var(--primary-dark);
  text-decoration: none;
}

.breadcrumbs a:hover,
.breadcrumbs a:focus-visible {
  text-decoration: underline;
}

.breadcrumbs .current {
  color: var(--text);
}

.breadcrumbs .breadcrumb-context {
  color: var(--primary-dark);
}

.breadcrumbs .separator {
  color: #94a3b8;
  font-weight: 900;
}

.breadcrumbs svg {
  width: 15px;
  height: 15px;
}

.top-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}

.top-action,
.inline-action,
.icon-button {
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
  border-radius: var(--radius);
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 8px 12px;
  font-weight: 800;
  white-space: nowrap;
}

.top-action.primary,
.inline-action.primary {
  background: var(--primary);
  border-color: var(--primary);
  color: #ffffff;
}

.top-action-with-badge {
  position: relative;
}

.top-action-with-badge.has-alert {
  border-color: #f3d28c;
  background: #fff8e8;
  color: #92400e;
}

.top-action-badge {
  min-width: 22px;
  height: 22px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--red);
  color: #ffffff;
  padding: 0 6px;
  font-size: 12px;
  font-weight: 900;
}

.inline-action.danger {
  background: #fff1f2;
  border-color: #fecaca;
  color: #b91c1c;
}

.icon-button {
  width: 38px;
  padding: 0;
}

.icon-button.small {
  width: 34px;
  min-height: 34px;
}

.content {
  width: min(1420px, 100%);
  margin: 0 auto;
  padding: 28px;
  display: grid;
  gap: 28px;
}

.content.dashboard-content-loading {
  opacity: .68;
  pointer-events: none;
  transition: opacity .16s ease;
}

.section {
  display: grid;
  gap: 14px;
}

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

.section-title {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
}

.section-title h2 {
  margin: 0;
  font-size: 19px;
  letter-spacing: 0;
}

.section-title p {
  margin: 2px 0 0;
  color: var(--muted);
  font-size: 13px;
}

.section-helper {
  margin: -4px 0 0;
  color: var(--muted);
  font-size: 13px;
}

.section-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 10px;
}

.panel-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.compact-filter {
  display: flex;
  align-items: end;
  gap: 8px;
  min-width: 0;
}

.compact-filter label {
  display: grid;
  gap: 4px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.compact-filter select {
  width: min(260px, 34vw);
  min-height: 38px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  font-weight: 800;
  padding: 0 10px;
}

.text-link {
  color: var(--primary-dark);
  font-weight: 900;
  text-decoration: none;
}

.text-link:hover,
.text-link:focus-visible {
  text-decoration: underline;
}

.profile-strip {
  display: grid;
  grid-template-columns: minmax(260px, 1.1fr) minmax(280px, 1fr) auto;
  gap: 14px;
  align-items: stretch;
}

#resumen {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
}

#resumen > .section-header,
#resumen > .profile-strip,
#resumen > .metrics {
  grid-column: 1 / -1;
}

#resumen > .profile-strip {
  order: 1;
}

#resumen > .metrics {
  order: 2;
}

#resumen > .teacher-today-tutorials {
  order: 3;
}

#resumen > .teacher-pending-messages {
  order: 4;
}

#resumen > .teacher-dashboard-tasks {
  grid-column: 1 / -1;
  order: 5;
}

.selector,
.summary-note,
.quick-date {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px;
  box-shadow: 0 12px 28px rgba(31, 41, 51, .08);
}

.selector label {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  margin-bottom: 6px;
  text-transform: uppercase;
}

.select-like,
.input-like {
  width: 100%;
  min-height: 42px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 9px 11px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  font-weight: 800;
}

.select-like span,
.input-like span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.teacher-selector-form {
  margin: 0;
}

.native-select {
  width: 100%;
  min-height: 42px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  padding: 9px 38px 9px 11px;
  font: inherit;
  font-weight: 800;
  cursor: pointer;
}

.native-select:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(35, 107, 158, .16);
  outline: none;
}

.student-mini-list {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 10px;
}

.student-mini {
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 5px 9px;
  color: #4f6785;
  font-size: 12px;
  font-weight: 900;
}

.student-mini.is-selected {
  border-color: var(--primary);
  background: var(--primary-soft);
  color: var(--primary-dark);
}

.summary-note {
  display: flex;
  gap: 12px;
  align-items: center;
}

.summary-note .avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--primary-soft);
  color: var(--primary-dark);
  display: grid;
  place-items: center;
  font-weight: 900;
}

.summary-note strong {
  display: block;
  margin-bottom: 2px;
}

.summary-note span {
  color: var(--muted);
  font-size: 13px;
}

.summary-note .summary-teacher {
  display: block;
  margin-top: 3px;
}

.quick-date {
  min-width: 220px;
  display: grid;
  align-content: center;
  gap: 3px;
}

.quick-date strong {
  font-size: 18px;
  text-transform: capitalize;
}

.quick-date span {
  color: var(--muted);
  font-size: 13px;
}

.teacher-today-tutorials {
  display: grid;
  grid-template-columns: minmax(280px, .8fr) minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
  box-shadow: 0 12px 28px rgba(31, 41, 51, .08);
}

#resumen > .teacher-today-tutorials {
  grid-template-columns: 1fr;
  align-items: stretch;
  align-content: start;
  min-height: 132px;
  padding: 14px;
}

.teacher-today-tutorials.has-reserved {
  border-color: #f3d28c;
  background: #fffaf0;
}

.teacher-today-tutorials.has-free {
  border-color: #b9d7ec;
  background: #f5fbff;
}

.teacher-today-tutorials-main {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  min-width: 0;
}

.today-tutorial-count,
.pending-message-count {
  min-width: 42px;
  height: 42px;
  border-radius: var(--radius);
  display: grid;
  place-items: center;
  color: #ffffff;
  font-size: 21px;
  font-weight: 900;
}

.today-tutorial-count {
  background: var(--primary);
}

.teacher-today-tutorials.is-empty .today-tutorial-count {
  background: #dbe4ec;
  color: #52657d;
}

.today-tutorial-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  min-width: 0;
}

.today-tutorial-item {
  min-width: 210px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 9px 10px;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 10px;
  align-items: center;
}

.today-tutorial-item time {
  min-width: 48px;
  border-radius: 999px;
  background: #edf2f7;
  color: #4f6785;
  padding: 5px 8px;
  text-align: center;
  font-size: 12px;
  font-weight: 900;
}

.today-tutorial-item.is-reserved time {
  background: #fff3d6;
  color: var(--amber);
}

.today-tutorial-item span {
  min-width: 0;
}

.today-tutorial-item strong,
.today-tutorial-item small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.today-tutorial-item strong {
  color: var(--text);
  font-size: 13px;
}

.today-tutorial-item small,
.today-tutorial-more {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.today-tutorial-more {
  align-self: center;
}

.teacher-today-tutorials-actions {
  display: flex;
  justify-content: flex-end;
}

.teacher-pending-messages {
  display: grid;
  grid-template-columns: minmax(240px, .85fr) minmax(260px, 1fr) auto;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 12px 14px;
  box-shadow: 0 12px 28px rgba(31, 41, 51, .08);
}

#resumen > .teacher-pending-messages {
  grid-template-columns: 1fr;
  align-items: stretch;
  align-content: start;
  min-height: 132px;
  padding: 14px;
}

.teacher-pending-messages.has-pending {
  border-color: #f3d28c;
  background: #fffaf0;
}

.teacher-pending-messages-main {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  min-width: 0;
}

.pending-message-count {
  background: var(--amber);
}

.teacher-pending-messages.is-empty .pending-message-count {
  background: #dbe4ec;
  color: #52657d;
}

.pending-message-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  min-width: 0;
}

.pending-message-item {
  min-width: 0;
  max-width: 520px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: inherit;
  display: grid;
  gap: 4px;
  padding: 9px 12px;
  text-decoration: none;
}

.pending-message-oldest {
  width: 100%;
}

#resumen .pending-message-item {
  max-width: none;
}

.pending-message-item:hover,
.pending-message-item:focus-visible {
  border-color: var(--primary);
  background: #f5fbff;
}

.pending-message-item span,
.pending-message-item strong,
.pending-message-item small,
.pending-message-item em {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.pending-message-item strong,
.pending-message-item small {
  display: block;
}

.pending-message-item small,
.pending-message-more,
.pending-message-label,
.pending-message-empty {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.pending-message-label {
  text-transform: uppercase;
}

.pending-message-item em {
  color: var(--text);
  font-size: 13px;
  font-style: normal;
  font-weight: 900;
}

.pending-message-more {
  align-self: center;
}

.teacher-pending-messages-actions {
  display: flex;
  justify-content: flex-end;
}

.dashboard-task-panel {
  display: grid;
  grid-template-columns: minmax(280px, .85fr) minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
  box-shadow: 0 12px 28px rgba(31, 41, 51, .08);
}

.teacher-dashboard-tasks,
.family-dashboard-tasks {
  align-items: stretch;
}

.family-dashboard-primary-column {
  display: grid;
  gap: 18px;
}

.dashboard-task-panel.has-overdue {
  border-color: #f3b3b3;
  background: #fff5f5;
}

.dashboard-task-panel.has-pending {
  border-color: #f3d28c;
  background: #fffaf0;
}

.dashboard-task-main {
  display: grid;
  gap: 12px;
  min-width: 0;
}

.dashboard-task-counters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.task-counter {
  min-width: 86px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 8px 10px;
  display: grid;
  gap: 2px;
}

.task-counter strong {
  color: var(--text);
  font-size: 23px;
  line-height: 1;
}

.task-counter small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
}

.task-counter.overdue {
  border-color: #f3b3b3;
  background: #fde8e8;
}

.task-counter.pending,
.task-counter.review {
  border-color: #f3d28c;
  background: #fff7e5;
}

.task-counter.info {
  border-color: #b9d7ec;
  background: #eaf4fb;
}

.dashboard-resource-panel.library {
  border-color: #b9d7ec;
  background: #f5fbff;
}

.dashboard-resource-panel.messages.has-unread {
  border-color: #f3d28c;
  background: #fffaf0;
}

.dashboard-resource-panel.messages.is-empty {
  background: #ffffff;
}

.dashboard-task-list {
  display: grid;
  gap: 8px;
  min-width: 0;
}

.dashboard-task-item {
  min-width: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: inherit;
  display: grid;
  gap: 3px;
  padding: 9px 11px;
  text-decoration: none;
}

.dashboard-task-item.is-overdue {
  border-color: rgba(217, 77, 77, .35);
}

.dashboard-task-item.is-unread {
  border-color: rgba(183, 121, 31, .36);
  background: #fffaf0;
}

.dashboard-task-item:hover,
.dashboard-task-item:focus-visible {
  border-color: var(--primary);
  background: #f5fbff;
  outline: none;
}

.dashboard-task-item strong,
.dashboard-task-item span,
.dashboard-task-item small {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dashboard-task-item strong {
  color: var(--text);
  font-size: 14px;
}

.dashboard-task-item span,
.dashboard-task-item small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.dashboard-library-item {
  min-width: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: inherit;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  padding: 8px 10px;
  text-decoration: none;
}

.dashboard-library-item:hover,
.dashboard-library-item:focus-visible {
  border-color: var(--primary);
  background: #f5fbff;
  outline: none;
}

.dashboard-library-item.is-missing {
  opacity: .75;
}

.dashboard-library-text {
  min-width: 0;
  display: grid;
  gap: 2px;
}

.dashboard-library-text strong,
.dashboard-library-text small {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dashboard-library-text strong {
  color: var(--text);
  font-size: 14px;
  line-height: 1.15;
  text-transform: uppercase;
}

.dashboard-library-text small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.dashboard-task-actions {
  display: flex;
  justify-content: flex-end;
  align-items: end;
}

.metrics {
  display: grid;
  grid-template-columns: repeat(6, minmax(130px, 1fr));
  gap: 14px;
}

.metric {
  min-height: 120px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px;
  display: grid;
  align-content: space-between;
  box-shadow: 0 12px 28px rgba(31, 41, 51, .08);
}

a.metric {
  color: inherit;
  text-decoration: none;
}

.metric-link {
  cursor: pointer;
  transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}

.metric-link:hover,
.metric-link:focus-visible {
  border-color: var(--primary);
  box-shadow: 0 16px 34px rgba(31, 41, 51, .14), 0 0 0 3px rgba(31, 102, 144, .12);
  transform: translateY(-1px);
  outline: none;
}

.metric-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
}

.metric-label {
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.metric-value {
  font-size: 28px;
  line-height: 1;
  font-weight: 900;
  margin: 12px 0 4px;
}

.metric-foot {
  color: var(--muted);
  font-size: 13px;
}

.metric.warning {
  border-color: #f3d48a;
  background: #fff6df;
}

.metric.success {
  border-color: #b9e0cb;
  background: #e6f4ed;
}

.metric.danger {
  border-color: #f3b3b3;
  background: #fde8e8;
}

.family-dashboard-alerts {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 12px;
  margin-top: 16px;
}

.family-alert-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  box-shadow: 0 12px 28px rgba(31, 41, 51, .08);
  color: inherit;
  padding: 12px 14px;
  text-decoration: none;
  transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}

.family-alert-card:hover,
.family-alert-card:focus-visible {
  border-color: var(--primary);
  box-shadow: 0 16px 34px rgba(31, 41, 51, .14), 0 0 0 3px rgba(31, 102, 144, .12);
  outline: none;
  transform: translateY(-1px);
}

.family-alert-icon {
  display: inline-flex;
  width: 42px;
  height: 42px;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  background: var(--primary-soft);
  color: var(--primary-dark);
}

.family-alert-card strong,
.family-alert-card p,
.family-alert-card small {
  display: block;
  min-width: 0;
}

.family-alert-card strong {
  color: var(--text);
  font-size: 15px;
}

.family-alert-card p {
  margin: 3px 0 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.35;
}

.family-alert-card small {
  margin-top: 2px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.family-alert-card b {
  border-radius: 999px;
  background: #eef4f8;
  color: var(--primary-dark);
  padding: 6px 9px;
  font-size: 12px;
  line-height: 1;
}

.family-alert-card.tutorial {
  border-color: #b9e0cb;
  background: #f3fbf6;
}

.family-alert-card.message,
.family-alert-card.circular,
.family-alert-card.evaluation,
.family-alert-card.task {
  border-color: #b7d8ee;
  background: #f4f9fc;
}

.family-alert-card.task.is-overdue {
  border-color: #f3b3b3;
  background: #fff5f5;
}

.family-alert-card.task.is-overdue .family-alert-icon {
  background: #fde8e8;
  color: #9f1239;
}

.family-alert-card.absence,
.family-alert-card.incident {
  border-color: #f3b3b3;
  background: #fff5f5;
}

.family-alert-card.absence .family-alert-icon,
.family-alert-card.incident .family-alert-icon {
  background: #fde8e8;
  color: #9f1239;
}

.app-shell .dashboard-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(360px, .9fr);
  gap: 18px;
}

.panel,
.table-panel {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 12px 28px rgba(31, 41, 51, .08);
  overflow: hidden;
}

.panel-body {
  padding: 16px;
}

.timeline {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.timeline-item {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
}

.time {
  font-weight: 900;
  color: var(--primary-dark);
}

.timeline-item strong {
  display: block;
  margin-bottom: 2px;
}

.timeline-item span {
  color: var(--muted);
  font-size: 13px;
}

.app-shell .status {
  border-radius: 999px;
  min-height: 30px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}

.app-shell .status.info {
  background: var(--primary-soft);
  color: var(--primary-dark);
}

.app-shell .status.pending {
  background: #eef2f7;
  color: #475569;
  box-shadow: inset 0 0 0 1px #cbd5e1;
}

.app-shell .status.danger {
  background: #fde8e8;
  color: var(--red);
}

.calendar {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 6px;
  margin-top: 14px;
}

.calendar div,
.calendar a,
.calendar-empty {
  min-height: 38px;
  border-radius: 6px;
  border: 1px solid var(--border);
  display: grid;
  place-items: center;
  font-weight: 800;
  color: #475569;
  background: #ffffff;
}

.calendar a {
  text-decoration: none;
  gap: 2px;
  padding: 5px;
}

.calendar a span {
  min-height: 14px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
}

.calendar .head {
  border: 0;
  color: var(--muted);
  background: transparent;
  min-height: 26px;
  font-size: 12px;
  text-transform: uppercase;
}

.calendar .has-class {
  background: var(--primary-soft);
  border-color: #b7d8ee;
  color: var(--primary-dark);
}

.calendar .holiday {
  background: #fde8e8;
  border-color: #f3b3b3;
  color: var(--red);
}

.calendar .today {
  outline: 3px solid rgba(31, 95, 139, .18);
  border-color: var(--primary);
}

.calendar .selected {
  border-color: var(--primary);
  box-shadow: inset 0 0 0 2px var(--primary);
}

.calendar-empty {
  border: 0;
  background: transparent;
}

.selected-key {
  border-color: var(--primary) !important;
  background: var(--primary) !important;
}

.admin-summary-strip {
  grid-template-columns: minmax(280px, 1.3fr) minmax(240px, .7fr) minmax(220px, .55fr);
}

.dashboard-calendar-layout {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(420px, 1.1fr);
  gap: 18px;
  align-items: start;
}

.family-dashboard-calendar-layout {
  grid-template-columns: minmax(0, 1fr) minmax(360px, .78fr);
  margin-top: 18px;
}

.family-dashboard-bottom-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 18px;
  align-items: start;
  margin-top: 18px;
}

.family-dashboard-primary-column {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.family-dashboard-primary-column .dashboard-task-panel {
  grid-template-columns: minmax(0, 1fr);
  align-items: stretch;
  min-height: 245px;
  align-content: start;
}

.family-dashboard-primary-column .dashboard-task-list {
  align-content: center;
  grid-template-columns: minmax(0, 1fr);
}

.family-dashboard-primary-column .dashboard-task-list .empty-state {
  align-self: center;
  min-height: 64px;
  margin: 0;
  display: grid;
  place-items: center;
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  background: rgba(255, 255, 255, .58);
  text-align: center;
}

.family-dashboard-primary-column .dashboard-task-actions {
  align-items: end;
  justify-content: stretch;
  margin-top: auto;
}

.family-dashboard-primary-column .dashboard-task-actions .inline-action {
  width: 100%;
}

.dashboard-news-panel .panel-body {
  display: grid;
  gap: 12px;
}

.dashboard-news-header {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 14px;
}

.dashboard-news-header > span {
  flex: 0 0 auto;
  min-width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: var(--radius);
  background: #e8f1f8;
  color: var(--brand);
  font-size: 16px;
  font-weight: 900;
}

.dashboard-news-feed {
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
}

.dashboard-news-feed .empty-state {
  min-height: 120px;
  margin: 0;
  border: 0;
  border-radius: 0;
}

.dashboard-news-row {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) 74px 82px;
  gap: 10px;
  align-items: center;
  min-height: 66px;
  padding: 10px 12px;
  color: var(--text);
  text-decoration: none;
  border-bottom: 1px solid var(--border);
  background: #ffffff;
  transition: background .15s ease, border-color .15s ease;
}

.dashboard-news-row:last-child {
  border-bottom: 0;
}

.dashboard-news-row:hover,
.dashboard-news-row:focus-visible {
  background: #f5fbff;
}

.dashboard-news-icon {
  width: 34px;
  height: 34px;
  border: 1px solid #cfe2ef;
  border-radius: var(--radius);
  background: #eef7ff;
  color: var(--brand);
  display: grid;
  place-items: center;
}

.dashboard-news-icon svg {
  width: 18px;
  height: 18px;
}

.dashboard-news-content {
  min-width: 0;
  display: grid;
  gap: 2px;
}

.dashboard-news-content small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
}

.dashboard-news-content strong,
.dashboard-news-content em {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dashboard-news-content strong {
  color: var(--text);
  font-size: 14px;
  line-height: 1.2;
}

.dashboard-news-content em {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
  font-weight: 800;
}

.dashboard-news-date,
.dashboard-news-status {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-align: right;
  white-space: nowrap;
}

.dashboard-news-status {
  justify-self: end;
  border-radius: 999px;
  background: #eef2f7;
  padding: 5px 8px;
}

.dashboard-news-row.warn .dashboard-news-status {
  background: #fff4d7;
  color: #92400e;
}

.dashboard-news-row.danger .dashboard-news-status {
  background: #fff1f2;
  color: #9f1239;
}

.dashboard-news-row.ok .dashboard-news-status {
  background: #e6f6ee;
  color: #166534;
}

.dashboard-news-row.info .dashboard-news-status {
  background: #e8f1f8;
  color: var(--brand);
}

.admin-calendar {
  gap: 7px;
}

.admin-calendar a {
  min-height: 56px;
}

.family-calendar div {
  min-height: 56px;
  gap: 2px;
  padding: 5px;
}

.family-calendar div span {
  min-height: 14px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
}

.family-calendar .has-absence:not(.holiday) {
  border-color: #f3a5a5;
  background: #fff1f2;
  color: #9f1239;
}

.family-calendar .has-absence:not(.holiday) span {
  color: #9f1239;
}

.family-calendar .has-absence.has-class:not(.holiday) {
  background: linear-gradient(135deg, #fff1f2 0%, #fff1f2 58%, #e7f2fb 58%, #e7f2fb 100%);
}

.family-calendar .has-event:not(.holiday):not(.has-absence) {
  border-color: #fdba74;
  background: #fff7ed;
  color: #9a3412;
}

.family-calendar .has-event:not(.holiday):not(.has-absence) span {
  color: #9a3412;
}

.family-calendar .has-event.has-class:not(.holiday):not(.has-absence) {
  background: linear-gradient(135deg, #fff7ed 0%, #fff7ed 52%, #e7f2fb 52%, #e7f2fb 100%);
}

.calendar-legend .event-key b {
  border-color: #fdba74;
  background: #fff7ed;
}

.calendar-legend .today-key b {
  border-color: var(--primary);
  background: #ffffff;
  outline: 3px solid rgba(31, 95, 139, .18);
}

.agenda-list {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.agenda-item {
  display: grid;
  grid-template-columns: 100px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 12px;
  position: relative;
  overflow: hidden;
}

.agenda-item.is-now {
  border-color: #1f8f55;
  background: linear-gradient(90deg, #eafaf0 0%, #ffffff 72%);
  box-shadow: 0 0 0 3px rgba(31, 143, 85, .18), 0 14px 30px rgba(22, 101, 52, .14);
}

.agenda-item.is-now::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 5px;
  background: #1f8f55;
}

.agenda-item.is-now time,
.agenda-item.is-now .text-link {
  color: #14532d;
}

.agenda-item.is-holiday {
  border-color: #f3b3b3;
  background: #fff5f5;
}

.agenda-item time {
  color: var(--primary-dark);
  font-size: 13px;
  font-weight: 900;
}

.agenda-item strong {
  display: block;
}

.agenda-group-button {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 0;
  font: inherit;
  cursor: pointer;
  text-align: left;
}

.agenda-item span {
  display: block;
  color: var(--muted);
  font-size: 13px;
}

.agenda-item .live-pill {
  display: inline-flex;
  width: max-content;
  align-items: center;
  min-height: 24px;
  margin: 4px 0;
  border: 1px solid #86d6a7;
  border-radius: 999px;
  background: #dcfce7;
  color: #166534;
  padding: 3px 9px;
  font-size: 12px;
  font-weight: 900;
}

.agenda-meta {
  display: grid;
  justify-items: end;
  gap: 6px;
}

.family-session-item {
  grid-template-columns: 86px minmax(0, 1fr) auto;
}

.teacher-group-panel {
  display: grid;
  gap: 12px;
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid var(--border);
}

.teacher-group-panel-wide {
  margin-top: 18px;
}

.teacher-group-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.teacher-group-list-wide {
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
}

.teacher-group-link {
  display: grid;
  gap: 4px;
  min-height: 58px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  padding: 10px 12px;
  text-decoration: none;
}

.teacher-group-list-wide .teacher-group-link {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  min-height: 72px;
}

.teacher-group-link:hover,
.teacher-group-link.is-selected {
  border-color: var(--primary);
  background: #eef7fc;
}

.teacher-group-info {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.teacher-group-info strong {
  font-weight: 900;
}

.teacher-group-info small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.teacher-group-link b {
  justify-self: end;
  align-self: center;
  color: var(--primary);
  font-size: 12px;
  font-weight: 900;
}

.teacher-stats-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(300px, .72fr);
  gap: 16px;
  align-items: start;
  margin-top: 16px;
}

.teacher-stat-card .panel-body {
  display: grid;
  gap: 14px;
}

.stat-bar-list,
.progress-list,
.teacher-watch-list {
  display: grid;
  gap: 9px;
}

.stat-bar-list-horizontal {
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}

.stat-bar-row,
.progress-row {
  display: grid;
  grid-template-columns: minmax(130px, .9fr) minmax(120px, 1fr) 48px;
  gap: 10px;
  align-items: center;
  border: 1px solid transparent;
  border-radius: 8px;
  color: var(--text);
  padding: 8px;
  text-decoration: none;
}

.stat-bar-row.wide-value {
  grid-template-columns: minmax(150px, .9fr) minmax(120px, 1fr) minmax(88px, auto);
}

.stat-bar-row.wide-value > strong:last-child {
  text-align: right;
  white-space: nowrap;
}

.stat-bar-row.teaching-hours-row b {
  background: linear-gradient(90deg, var(--primary), #2f8fb7);
}

.stat-bar-row:hover,
.progress-row:hover,
.compact-link:hover {
  border-color: rgba(38, 107, 150, .28);
  background: rgba(38, 107, 150, .08);
}

.stat-bar-row span,
.progress-row span {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.stat-bar-row strong,
.progress-row strong {
  overflow-wrap: anywhere;
}

.stat-bar-row small,
.progress-row small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.stat-bar-row em,
.progress-row em {
  height: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7edf4;
}

.stat-bar-row b,
.progress-row b {
  display: block;
  height: 100%;
  border-radius: inherit;
}

.stat-bar-row b {
  background: #d94d4d;
}

.progress-row b {
  background: #1f8f55;
}

.compact-link {
  border: 1px solid transparent;
  color: var(--text);
  text-decoration: none;
}

.app-shell .status.live {
  background: #dcfce7;
  color: #166534;
  box-shadow: inset 0 0 0 1px #86d6a7;
}

.dashboard-modal-body {
  display: grid;
  gap: 16px;
  padding: 18px;
}

.attendance-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.attendance-modal-list {
  display: grid;
  gap: 8px;
}

.attendance-modal-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 11px 12px;
}

.attendance-modal-row.is-absent {
  border-color: #f3b3b3;
  background: #fff7f7;
}

.attendance-modal-row.is-present {
  border-color: #b7dfc7;
}

.attendance-modal-row.is-pending {
  border-color: #cbd5e1;
  background: #f8fafc;
}

.attendance-modal-row span,
.attendance-modal-state small {
  display: block;
  color: var(--muted);
  font-size: 13px;
}

.attendance-modal-state {
  display: grid;
  justify-items: end;
  gap: 4px;
}

.modal-footer-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  border-top: 1px solid var(--border);
  padding: 14px 18px 18px;
}

.bar-chart {
  display: grid;
  gap: 12px;
  margin-top: 14px;
}

.stats-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin: 14px 0;
}

.stats-summary div {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 10px;
}

.stats-summary span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.stats-summary strong {
  display: block;
  margin-top: 4px;
  color: var(--text);
  font-size: 22px;
  line-height: 1;
}

.stats-dashboard-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}

.statistics-filter {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) minmax(180px, .35fr) auto;
  gap: 12px;
  align-items: end;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
}

.statistics-filter label {
  display: grid;
  gap: 7px;
  min-width: 0;
}

.statistics-filter span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.statistics-filter select,
.statistics-filter input {
  width: 100%;
  min-width: 0;
  min-height: 42px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #f8fafc;
  color: var(--text);
  font-size: 14px;
  font-weight: 800;
  outline: 0;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .85);
}

.statistics-filter select {
  appearance: none;
  -webkit-appearance: none;
  padding: 0 42px 0 12px;
  background-color: #f8fafc;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--primary-dark) 50%),
    linear-gradient(135deg, var(--primary-dark) 50%, transparent 50%);
  background-position:
    calc(100% - 18px) 18px,
    calc(100% - 12px) 18px;
  background-size: 6px 6px, 6px 6px;
  background-repeat: no-repeat;
}

.statistics-filter input {
  padding: 0 12px;
}

.statistics-filter select:hover,
.statistics-filter input:hover {
  border-color: #b9c9dc;
  background-color: #ffffff;
}

.statistics-filter select:focus,
.statistics-filter input:focus {
  border-color: var(--primary);
  background-color: #ffffff;
  box-shadow: 0 0 0 3px rgba(31, 95, 139, .14);
}

.statistics-filter input[type="month"]::-webkit-calendar-picker-indicator {
  cursor: pointer;
  opacity: .75;
}

.statistics-filter-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

.statistics-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}

.statistics-grid .span-full {
  grid-column: 1 / -1;
}

.stats-panel-heading {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 14px;
}

.level-distribution-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 10px;
}

.level-distribution-row {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 10px 12px;
}

.level-distribution-value {
  min-height: 58px;
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 3px;
  border-radius: 8px;
  background: #eef7fc;
  color: var(--primary-dark);
}

.level-distribution-value strong {
  color: var(--primary-dark);
  font-size: 22px;
  line-height: 1;
}

.level-distribution-value span,
.level-distribution-title small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.2;
}

.level-distribution-main {
  min-width: 0;
  display: grid;
  gap: 8px;
}

.level-distribution-title {
  min-width: 0;
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: baseline;
}

.level-distribution-title strong {
  min-width: 0;
  color: var(--text);
  font-size: 15px;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.level-distribution-title small {
  flex: 0 0 auto;
  white-space: nowrap;
}

.level-distribution-meter {
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7edf4;
}

.level-distribution-meter b {
  display: block;
  height: 100%;
  min-width: 3px;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--primary), #2f8fb7);
}

.enrollment-stats-panel {
  grid-column: 1 / -1;
}

.section > .grade-trend-panel {
  margin-top: 18px;
}

.stats-dashboard-grid .grade-trend-panel {
  grid-column: 1 / -1;
  margin-top: 0;
}

.grade-trend-summary {
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

.stats-block {
  display: grid;
  gap: 10px;
  margin-top: 16px;
}

.stats-block-title {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: end;
}

.stats-block-title h3 {
  margin: 0;
  color: var(--text);
  font-size: 15px;
  line-height: 1.2;
}

.stats-block-title span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  text-align: right;
}

.day-tile-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(116px, 1fr));
  gap: 10px;
}

.trend-meter {
  height: 7px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7edf4;
}

.trend-meter b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--primary), #4f9bc8);
}

.trend-meter.enrollment b {
  background: linear-gradient(90deg, #1f8f55, #65b88d);
}

.month-compact-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px 12px;
}

.month-compact-row {
  display: grid;
  grid-template-columns: 66px 58px minmax(72px, .42fr);
  grid-template-areas:
    "month value detail"
    "meter meter meter";
  gap: 6px 10px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 9px 10px;
}

.month-compact-row.is-selected {
  border-color: rgba(31, 95, 139, .32);
  background: #eef7fc;
}

.month-label {
  grid-area: month;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.month-compact-row strong {
  grid-area: value;
  color: var(--text);
  font-size: 20px;
  line-height: 1;
}

.month-detail {
  grid-area: detail;
  justify-self: end;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.month-meter {
  grid-area: meter;
  height: 7px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7edf4;
}

.month-meter b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #1f8f55, #4fb477);
}

.month-meter.access b {
  background: linear-gradient(90deg, var(--primary), #4f9bc8);
}

.day-tile {
  min-height: 82px;
  display: grid;
  gap: 5px;
  align-content: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 10px;
}

.day-tile.ok {
  background: #eef9f3;
  border-color: #b8e2c8;
}

.day-tile.warn {
  background: #fff7e6;
  border-color: #f3c46d;
}

.day-tile span,
.day-tile small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.day-tile strong {
  color: var(--text);
  font-size: 22px;
  line-height: 1;
}

.course-stat-list {
  display: grid;
  gap: 10px;
}

.course-stat-row {
  display: grid;
  grid-template-columns: minmax(180px, .95fr) minmax(0, 1fr) 54px minmax(190px, .55fr);
  gap: 12px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 11px 12px;
}

.course-stat-row.is-selected {
  border-color: rgba(31, 95, 139, .32);
  background: #eef7fc;
}

.course-stat-row strong {
  color: var(--text);
}

.course-stat-row span,
.course-stat-row small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.course-stat-row span {
  display: block;
  margin-top: 2px;
}

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

.donut-card {
  min-height: 132px;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 12px;
}

a.donut-card {
  color: inherit;
  text-decoration: none;
}

a.donut-card:hover,
a.donut-card:focus-visible {
  border-color: rgba(31, 95, 139, .38);
  background: rgba(31, 95, 139, .05);
}

.donut-ring {
  --chart-color: var(--primary);
  --p: 0;
  width: 82px;
  height: 82px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  position: relative;
  background: conic-gradient(var(--chart-color) calc(var(--p) * 1%), #e7edf4 0);
}

.donut-ring::after {
  content: "";
  position: absolute;
  inset: 11px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: inset 0 0 0 1px rgba(217, 226, 236, .9);
}

.donut-ring span {
  position: relative;
  z-index: 1;
  color: var(--text);
  font-size: 18px;
  font-weight: 900;
}

.donut-card.tone-ok .donut-ring {
  --chart-color: #1f8f55;
}

.donut-card.tone-warn .donut-ring {
  --chart-color: #d94d4d;
}

.donut-card.tone-info .donut-ring {
  --chart-color: var(--primary);
}

.donut-card.tone-muted .donut-ring {
  --chart-color: #64748b;
}

.donut-info {
  min-width: 0;
}

.donut-info strong {
  display: block;
  color: var(--text);
  font-size: 16px;
  line-height: 1.2;
}

.donut-info span,
.donut-info small {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.stat-tile-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 12px;
}

.stat-tile {
  min-height: 104px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
  display: grid;
  align-content: space-between;
  gap: 10px;
}

.stat-tile.warn {
  background: #fff7e6;
  border-color: #f3c46d;
}

.stat-tile.ok {
  background: #e9f7ef;
  border-color: #b8e2c8;
}

.stat-tile.info {
  background: #eaf4fb;
  border-color: #b9d7ec;
}

.stat-tile span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.stat-tile strong {
  color: var(--text);
  font-size: 28px;
  line-height: 1;
}

.stat-tile small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

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

.score-card {
  min-height: 92px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 12px;
  display: grid;
  gap: 9px;
  align-content: space-between;
}

.score-card.is-selected {
  border-color: rgba(31, 95, 139, .32);
  background: #eef7fc;
}

.score-card-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
}

.score-card-top strong {
  min-width: 0;
  color: var(--text);
  font-size: 15px;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.score-card-top span {
  color: var(--primary-dark);
  font-size: 24px;
  font-weight: 900;
  line-height: 1;
  white-space: nowrap;
}

.score-meter {
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7edf4;
}

.score-meter b {
  display: block;
  width: calc(var(--p, 0) * 1%);
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--primary), #1f8f55);
}

.score-card small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.stats-line-list {
  display: grid;
  gap: 8px;
}

.stats-line-list-split {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.stats-line-row {
  display: grid;
  grid-template-columns: minmax(150px, .95fr) minmax(120px, 1fr) 56px minmax(78px, .35fr);
  gap: 10px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  padding: 9px 10px;
  text-decoration: none;
}

.stats-line-row.is-selected {
  border-color: rgba(31, 95, 139, .32);
  background: #eef7fc;
}

a.stats-line-row:hover,
a.stats-line-row:focus-visible {
  border-color: rgba(31, 95, 139, .38);
  background: rgba(31, 95, 139, .06);
}

.stats-line-main {
  min-width: 0;
  display: grid;
  gap: 2px;
}

.stats-line-main strong {
  min-width: 0;
  color: var(--text);
  font-size: 14px;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.stats-line-main span,
.stats-line-row small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.25;
}

.stats-line-meter {
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7edf4;
}

.stats-line-meter b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #1f8f55, #4fb477);
}

.stats-line-meter.grade b {
  background: linear-gradient(90deg, var(--primary), #1f8f55);
}

.stats-line-value {
  color: var(--primary-dark);
  font-size: 18px;
  line-height: 1;
  text-align: right;
  white-space: nowrap;
}

.grade-history-compact .stats-line-row {
  grid-template-columns: minmax(180px, 1fr) minmax(120px, .75fr) 58px;
}

.absence-month-list {
  display: grid;
  gap: 8px;
}

.absence-month-row {
  display: grid;
  grid-template-columns: 74px minmax(0, 1fr) 36px minmax(96px, .42fr);
  gap: 10px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 9px 10px;
}

.absence-month-row.has-data {
  border-color: rgba(183, 121, 31, .32);
  background: #fffaf0;
}

.absence-month-row span,
.absence-month-row small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.absence-month-row strong {
  color: var(--text);
  font-size: 18px;
  line-height: 1;
  text-align: right;
}

.absence-month-bar {
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7edf4;
}

.absence-month-bar b {
  display: block;
  height: 100%;
  min-width: 0;
  border-radius: inherit;
  background: linear-gradient(90deg, #b7791f, #d94d4d);
}

.absence-month-row:not(.has-data) .absence-month-bar b {
  display: none;
}

.attendance-chart-list,
.access-chart-list,
.month-trend-list,
.enrollment-trend-list,
.grade-trend-list {
  display: grid;
  gap: 9px;
}

.month-trend-row {
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr) 48px 78px;
  gap: 10px;
  align-items: center;
  border: 1px solid transparent;
  border-radius: 8px;
  padding: 7px 8px;
}

.month-trend-row.is-selected {
  border-color: rgba(38, 107, 150, .28);
  background: rgba(38, 107, 150, .08);
}

.attendance-day-row {
  display: grid;
  grid-template-columns: minmax(120px, .8fr) minmax(160px, 1fr) 86px;
  gap: 12px;
  align-items: center;
}

.attendance-day-row strong,
.access-day-row strong,
.month-trend-row strong {
  color: var(--text);
}

.attendance-day-row span,
.access-day-row span,
.access-day-row small,
.attendance-day-values span,
.month-trend-row span,
.month-trend-row small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.attendance-stack,
.access-day-row div,
.access-bar {
  height: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7edf4;
}

.attendance-stack {
  display: flex;
}

.attendance-stack b,
.attendance-stack em,
.access-day-row b,
.access-bar b {
  display: block;
  height: 100%;
}

.attendance-stack b {
  background: #1f8f55;
}

.attendance-stack em {
  background: #d94d4d;
}

.attendance-day-values {
  display: grid;
  justify-items: end;
  gap: 2px;
}

.access-day-row {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr) 38px 72px;
  gap: 10px;
  align-items: center;
}

.enrollment-year-row {
  display: grid;
  grid-template-columns: minmax(180px, .95fr) minmax(0, 1fr) 86px 230px;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #ffffff;
  padding: 10px;
}

.grade-trend-row {
  display: grid;
  grid-template-columns: minmax(180px, .95fr) minmax(0, 1fr) 70px;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #ffffff;
  padding: 10px;
}

.enrollment-year-row.is-selected,
.grade-trend-row.is-selected {
  border-color: rgba(38, 107, 150, .28);
  background: rgba(38, 107, 150, .08);
}

.enrollment-year-row strong,
.grade-trend-row strong {
  color: var(--text);
}

.enrollment-year-row span,
.enrollment-year-row small,
.grade-trend-row span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.enrollment-year-row span,
.grade-trend-row span {
  display: block;
  margin-top: 2px;
}

.enrollment-bar,
.grade-trend-bar {
  height: 12px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7edf4;
}

.enrollment-bar b,
.grade-trend-bar b {
  display: block;
  height: 100%;
  border-radius: inherit;
}

.enrollment-bar b {
  background: linear-gradient(90deg, #1f8f55, #4fb477);
}

.grade-trend-bar b {
  background: linear-gradient(90deg, #1f5f8b, #38a169);
}

.access-day-row b,
.access-bar b {
  border-radius: 999px;
  background: var(--primary);
}

.stats-actions {
  margin-top: 14px;
  justify-content: flex-end;
}

.bar-row {
  display: grid;
  grid-template-columns: 86px minmax(0, 1fr) 42px;
  gap: 12px;
  align-items: center;
}

.bar-row span,
.bar-row strong {
  color: var(--muted);
  font-size: 13px;
  font-weight: 900;
}

.bar-row strong {
  color: var(--text);
  text-align: right;
}

.bar-row div {
  height: 14px;
  border-radius: 999px;
  background: #e8eef3;
  overflow: hidden;
}

.bar-row b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--primary), #4f9bc8);
}

.split {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(340px, .55fr);
  gap: 18px;
}

.compact-list {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.compact-item {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 12px;
  display: grid;
  gap: 8px;
  background: #ffffff;
}

a.compact-item {
  color: inherit;
  text-decoration: none;
}

a.compact-item:hover,
a.compact-item:focus-visible {
  border-color: rgba(31, 105, 150, .45);
  box-shadow: 0 10px 24px rgba(31, 105, 150, .12);
}

.compact-item strong {
  display: block;
}

.compact-item span {
  color: var(--muted);
  font-size: 13px;
}

.linked-tutor-item {
  border-color: #bfdbfe;
  background: #f8fbff;
}

.linked-tutor-contact {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.linked-tutor-contact span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.linked-tutor-contact svg {
  width: 15px;
  height: 15px;
}

.absence-summary-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 14px 0 16px;
}

.absence-summary-card {
  display: grid;
  gap: 5px;
  min-height: 104px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
  box-shadow: 0 10px 24px rgba(15, 23, 42, .04);
}

.absence-summary-card span,
.absence-summary-card small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.absence-summary-card span {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  text-transform: uppercase;
}

.absence-summary-card svg {
  width: 17px;
  height: 17px;
}

.absence-summary-card strong {
  color: var(--text);
  font-size: 30px;
  line-height: 1;
}

.absence-summary-card.is-pending {
  border-color: #f6c3c3;
  background: #fff7f7;
}

.absence-summary-card.is-pending strong,
.absence-summary-card.is-pending span {
  color: #b91c1c;
}

.absence-summary-card.is-ok {
  border-color: #b7dfc7;
  background: #f3fbf6;
}

.absence-summary-card.is-ok strong,
.absence-summary-card.is-ok span {
  color: #166534;
}

.absence-card-list {
  display: grid;
  gap: 12px;
}

.absence-card {
  display: grid;
  grid-template-columns: 82px minmax(0, 1fr) auto;
  gap: 14px;
  align-items: stretch;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 12px;
  box-shadow: 0 12px 28px rgba(15, 23, 42, .05);
}

.absence-card.is-pending {
  border-color: #f4b9b9;
  background: linear-gradient(90deg, #fff7f7 0%, #ffffff 42%);
}

.absence-card.is-justified {
  border-color: #c9e8d5;
}

.absence-date-tile {
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 2px;
  min-height: 94px;
  border-radius: var(--radius);
  background: #eef7fc;
  color: var(--primary-dark);
}

.absence-card.is-pending .absence-date-tile {
  background: #fff1f2;
  color: #b91c1c;
}

.absence-card.is-justified .absence-date-tile {
  background: #eaf8ef;
  color: #166534;
}

.absence-date-tile strong {
  font-size: 28px;
  line-height: 1;
}

.absence-date-tile span,
.absence-date-tile small {
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.absence-card-main {
  min-width: 0;
  display: grid;
  gap: 10px;
}

.absence-card-heading {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}

.absence-card-heading > div {
  min-width: 0;
}

.absence-card-heading strong {
  display: block;
  color: var(--text);
  font-size: 16px;
}

.absence-card-heading span:not(.status-pill) {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  margin-top: 2px;
}

.absence-card-main p {
  margin: 0;
  color: #31445a;
}

.absence-justification,
.absence-warning {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  align-items: center;
}

.absence-justification span,
.absence-warning {
  min-height: 30px;
  border-radius: 999px;
  padding: 6px 10px;
  font-size: 12px;
  font-weight: 900;
}

.absence-justification span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: #edf8f1;
  color: #166534;
}

.absence-justification .absence-observation {
  max-width: 100%;
  border-radius: var(--radius);
  background: #f8fafc;
  color: #40546b;
}

.absence-warning {
  width: fit-content;
  background: #fff4d7;
  color: #92400e;
}

.absence-justification svg,
.absence-warning svg {
  width: 15px;
  height: 15px;
}

.absence-card-actions {
  display: grid;
  align-content: center;
  justify-items: end;
  min-width: 132px;
}

.absence-card-actions .inline-action,
.absence-card-actions .status-pill {
  width: 100%;
  justify-content: center;
}

.app-shell .student-evaluations-table table,
.app-shell table.student-evaluations-table {
  min-width: 1240px;
  table-layout: fixed;
}

.student-evaluations-table col.eval-col-date {
  width: 100px;
}

.student-evaluations-table col.eval-col-name {
  width: 300px;
}

.student-evaluations-table col.eval-col-course {
  width: 230px;
}

.student-evaluations-table col.eval-col-group {
  width: 150px;
}

.student-evaluations-table col.eval-col-state {
  width: 130px;
}

.student-evaluations-table col.eval-col-summary {
  width: auto;
}

.student-evaluations-table col.eval-col-actions {
  width: 96px;
}

.student-evaluations-table .eval-date-cell,
.student-evaluations-table .eval-course-cell,
.student-evaluations-table .eval-group-cell {
  white-space: nowrap;
}

.student-evaluations-table .eval-name-cell strong {
  display: block;
  line-height: 1.3;
}

.student-evaluations-table .eval-state-cell {
  display: grid;
  gap: 6px;
  align-content: center;
  justify-items: start;
}

.student-evaluations-table .eval-summary-cell {
  min-width: 0;
}

.student-evaluations-table .evaluation-summary {
  display: grid;
  gap: 4px;
  min-width: 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.35;
}

.student-evaluations-table .evaluation-summary-line {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.evaluation-diploma-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 430px), 1fr));
  gap: 16px;
}

.evaluation-diploma-card {
  position: relative;
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr);
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  box-shadow: var(--shadow-soft);
}

.evaluation-diploma-card::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 5px;
  background: #1f6b9b;
}

.evaluation-diploma-card.is-new {
  border-color: #f2bd63;
  box-shadow: 0 16px 34px rgba(154, 100, 16, .12);
}

.evaluation-diploma-card.is-new::before {
  background: #c78317;
}

.evaluation-diploma-visual {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 220px;
  padding: 24px 18px;
  background:
    radial-gradient(circle at 22% 20%, rgba(252, 244, 215, .95), transparent 38%),
    linear-gradient(150deg, #e9f4fb 0%, #f6fbfe 58%, #fff8e7 100%);
  border-right: 1px solid var(--border);
}

.evaluation-diploma-sheet {
  position: relative;
  display: grid;
  align-content: start;
  gap: 10px;
  width: 96px;
  height: 126px;
  padding: 34px 14px 14px;
  border: 1px solid #d8c994;
  border-radius: 7px;
  background: linear-gradient(180deg, #fffdfa 0%, #fff7df 100%);
  box-shadow: 0 12px 26px rgba(19, 52, 76, .16);
  transform: rotate(-3deg);
}

.evaluation-diploma-ribbon {
  position: absolute;
  top: 10px;
  left: 50%;
  display: grid;
  width: 28px;
  height: 28px;
  place-items: center;
  color: #1f6b9b;
  transform: translateX(-50%);
}

.evaluation-diploma-ribbon svg {
  width: 24px;
  height: 24px;
}

.evaluation-diploma-line {
  display: block;
  height: 7px;
  border-radius: 99px;
  background: #dbe9f2;
}

.evaluation-diploma-line.wide {
  background: #1f6b9b;
}

.evaluation-diploma-line.short {
  width: 64%;
  margin-inline: auto;
  background: #f0c36f;
}

.evaluation-diploma-seal {
  position: absolute;
  right: 24px;
  bottom: 30px;
  display: grid;
  width: 46px;
  height: 46px;
  place-items: center;
  border: 4px solid #ffffff;
  border-radius: 50%;
  color: #ffffff;
  background: #1f6b9b;
  box-shadow: 0 10px 18px rgba(19, 52, 76, .22);
}

.evaluation-diploma-body {
  display: grid;
  gap: 14px;
  min-width: 0;
  padding: 18px;
}

.evaluation-diploma-head {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  justify-content: space-between;
}

.evaluation-diploma-head h3 {
  margin: 3px 0 0;
  color: var(--text);
  font-size: 20px;
  line-height: 1.25;
}

.evaluation-diploma-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.evaluation-diploma-meta span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
}

.evaluation-diploma-meta svg {
  width: 15px;
  height: 15px;
}

.evaluation-grade-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(118px, 1fr));
  gap: 8px;
}

.evaluation-grade-chip {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
  border: 1px solid #d7e3ee;
  border-radius: 8px;
  background: #f7fafc;
  padding: 8px 10px;
}

.evaluation-grade-chip small {
  min-width: 0;
  overflow: hidden;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  text-overflow: ellipsis;
  text-transform: uppercase;
  white-space: nowrap;
}

.evaluation-grade-chip strong {
  display: grid;
  min-width: 32px;
  height: 32px;
  place-items: center;
  border-radius: 50%;
  color: #11496d;
  background: #e7f2f8;
  font-size: 16px;
}

.evaluation-diploma-empty {
  margin: 0;
  color: var(--muted);
  font-weight: 700;
}

.evaluation-diploma-actions {
  display: flex;
  justify-content: flex-end;
  padding-top: 2px;
}

.message-search {
  display: grid;
  gap: 12px;
}

.message-search-main {
  display: grid;
  grid-template-columns: minmax(360px, 1fr) max-content;
  gap: 10px;
  align-items: center;
}

.message-filter-panel {
  display: grid;
  grid-template-columns: minmax(130px, .16fr) minmax(0, 1fr);
  gap: 18px;
  align-items: stretch;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 12px;
}

.message-filter-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) max-content;
  gap: 10px;
  align-items: center;
}

.message-filter-fields {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 10px;
  min-width: 0;
}

.message-filter-fields label,
.message-reply-form label,
.modal-form label {
  display: grid;
  gap: 6px;
  min-width: 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.message-filter-fields select,
.message-reply-form input,
.message-reply-form textarea,
.modal-form input,
.modal-form select,
.modal-form textarea {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  font: inherit;
  font-weight: 800;
  padding: 10px 12px;
}

.message-reply-form textarea,
.modal-form textarea {
  resize: vertical;
  line-height: 1.45;
  font-weight: 700;
}

.modal-form .field-help {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.35;
  text-transform: none;
}

.message-filter-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

.message-layout {
  display: grid;
  grid-template-columns: minmax(310px, 420px) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}

.message-thread-list,
.message-conversation {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  box-shadow: 0 12px 28px rgba(31, 41, 51, .08);
  overflow: hidden;
}

.message-panel-heading,
.message-conversation-header {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: center;
  border-bottom: 1px solid var(--border);
  padding: 16px;
}

.message-panel-heading h2,
.message-conversation-header h2 {
  margin: 0;
  font-size: 18px;
}

.message-panel-heading p,
.message-conversation-header p {
  margin: 3px 0 0;
  color: var(--muted);
  font-size: 13px;
}

.message-conversation-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 10px;
}

.message-thread {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 12px;
  align-items: start;
  border-bottom: 1px solid var(--border);
  color: inherit;
  text-decoration: none;
  padding: 14px 16px;
}

.message-thread:last-child {
  border-bottom: 0;
}

.message-thread:hover,
.message-thread.is-selected {
  background: #eef7fc;
}

.message-thread.is-selected {
  box-shadow: inset 4px 0 0 var(--primary);
}

.message-avatar {
  width: 42px;
  height: 42px;
  border-radius: 999px;
  background: var(--primary-soft);
  color: var(--primary-dark);
  display: grid;
  place-items: center;
  font-weight: 900;
}

.message-thread-copy {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.message-thread-copy strong,
.message-thread-copy em,
.message-thread-copy span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.message-thread-copy small,
.message-thread-copy span,
.message-thread-meta time {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
}

.message-thread-copy em {
  color: var(--text);
  font-style: normal;
  font-weight: 900;
}

.message-thread-meta {
  display: grid;
  justify-items: end;
  gap: 6px;
}

.message-thread-meta b,
.status-pill {
  min-height: 24px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 4px 8px;
  font-size: 11px;
  font-weight: 900;
}

.message-thread-meta b {
  min-width: 24px;
  background: var(--primary);
  color: #ffffff;
}

.status-pill.warning {
  background: #fff3d6;
  color: var(--amber);
}

.status-pill.ok {
  background: #e6f4ed;
  color: var(--green);
}

.status-pill.neutral {
  background: #eef2f7;
  color: #52637a;
}

.status-pill.info {
  background: #e7f3fb;
  color: var(--primary);
}

.status-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 6px;
}

.message-conversation {
  min-height: 640px;
}

.message-timeline {
  display: grid;
  gap: 12px;
  padding: 18px;
  max-height: 540px;
  overflow: auto;
  background: #f8fafc;
}

.message-bubble {
  width: min(720px, 88%);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 13px 14px;
  box-shadow: 0 8px 20px rgba(15, 23, 42, .05);
}

.message-bubble.is-teacher {
  justify-self: end;
  border-color: #b9d7ec;
  background: #eef7fc;
}

.message-bubble header {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.message-bubble h3 {
  margin: 8px 0 6px;
  font-size: 15px;
}

.message-bubble p {
  margin: 0;
  color: #334155;
  line-height: 1.5;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.message-reply-form {
  display: grid;
  gap: 12px;
  border-top: 1px solid var(--border);
  padding: 16px;
}

.message-empty {
  min-height: 520px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 10px;
  padding: 28px;
  text-align: center;
  color: var(--muted);
}

.message-empty svg {
  width: 48px;
  height: 48px;
  color: var(--primary);
}

.message-empty h2 {
  margin: 0;
  color: var(--text);
}

.top-action.is-disabled {
  pointer-events: none;
  opacity: .55;
}

.family-chat-section {
  display: grid;
  gap: 16px;
}

.family-chat-compose,
.family-conversation-panel {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  box-shadow: 0 14px 32px rgba(31, 41, 51, .08);
}

.family-chat-compose {
  display: grid;
  gap: 12px;
  padding: 16px;
}

.family-compose-grid {
  display: grid;
  grid-template-columns: minmax(220px, 320px) minmax(0, 1fr);
  gap: 12px;
}

.family-chat-compose label {
  display: grid;
  gap: 7px;
  min-width: 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.family-chat-compose select,
.family-chat-compose input,
.family-chat-compose textarea {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  font: inherit;
  font-weight: 750;
  padding: 11px 12px;
  text-transform: none;
}

.family-chat-compose textarea {
  min-height: 92px;
  resize: vertical;
  line-height: 1.45;
  text-transform: none;
}

.family-compose-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  align-items: end;
}

.family-compose-row .inline-action {
  min-height: 48px;
}

.family-chat-help {
  margin: 0;
  color: var(--muted);
  font-weight: 800;
}

.family-conversation-panel {
  overflow: hidden;
}

.family-conversation-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border-bottom: 1px solid var(--border);
  padding: 14px 16px;
}

.family-conversation-heading span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.family-conversation-heading strong {
  display: block;
  margin-top: 3px;
  font-size: 18px;
}

.family-chat-empty {
  display: grid;
  place-items: center;
  gap: 8px;
  padding: 44px 20px;
  color: var(--muted);
  text-align: center;
}

.family-chat-empty svg {
  width: 42px;
  height: 42px;
  color: var(--primary);
}

.family-chat-empty strong {
  color: var(--text);
  font-size: 18px;
}

.family-chat-empty p {
  margin: 0;
}

.family-conversation-card {
  display: grid;
  gap: 12px;
  border-bottom: 1px solid var(--border);
  padding: 16px;
  background: #ffffff;
}

.family-conversation-card:last-child {
  border-bottom: 0;
}

.family-conversation-card.has-unread {
  background: #f1f8fd;
  box-shadow: inset 4px 0 0 var(--primary);
}

.family-conversation-card-header {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 12px;
  align-items: start;
}

.family-conversation-avatar {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--primary-soft);
  color: var(--primary-dark);
  display: grid;
  place-items: center;
}

.family-conversation-avatar svg {
  width: 20px;
  height: 20px;
}

.family-conversation-card-header h3,
.family-conversation-card-header p {
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

.family-conversation-card-header h3 {
  font-size: 17px;
}

.family-conversation-card-header p,
.family-conversation-card-header time {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.family-conversation-card-header time {
  white-space: nowrap;
}

.family-conversation-unread {
  justify-self: start;
  border-radius: 999px;
  background: var(--primary);
  color: #ffffff;
  padding: 5px 9px;
  font-size: 12px;
  font-weight: 900;
}

.family-conversation-messages {
  display: grid;
  gap: 10px;
  padding: 12px;
  border-radius: var(--radius);
  background: #f8fafc;
}

.family-conversation-message {
  display: flex;
}

.family-conversation-message.from-me {
  justify-content: flex-end;
}

.family-conversation-bubble {
  width: min(720px, 84%);
  border: 1px solid var(--border);
  border-radius: 16px 16px 16px 4px;
  background: #ffffff;
  padding: 11px 12px;
}

.family-conversation-message.from-me .family-conversation-bubble {
  border-color: #b8d8ec;
  border-radius: 16px 16px 4px 16px;
  background: #eaf6fd;
}

.family-conversation-bubble header {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 6px;
}

.family-conversation-bubble strong,
.family-conversation-bubble time,
.family-conversation-bubble p {
  overflow-wrap: anywhere;
}

.family-conversation-bubble strong {
  color: var(--text);
  font-size: 13px;
}

.family-conversation-bubble time {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.family-conversation-bubble p {
  margin: 0;
  color: #334155;
  line-height: 1.5;
  white-space: pre-wrap;
}

.family-conversation-bubble em {
  display: inline-flex;
  margin-top: 8px;
  border-radius: 999px;
  background: #fff3d6;
  color: var(--amber);
  padding: 3px 8px;
  font-size: 11px;
  font-style: normal;
  font-weight: 900;
}

@media (max-width: 760px) {
  .family-compose-grid,
  .family-compose-row {
    grid-template-columns: 1fr;
  }

  .family-conversation-card-header {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .family-conversation-card-header time {
    grid-column: 2;
    justify-self: start;
  }

  .family-conversation-bubble {
    width: min(100%, 620px);
  }
}

.related-header {
  gap: 12px;
}

.related-item {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
}

.related-item .inline-form {
  justify-self: end;
}

.teacher-groups-layout {
  display: grid;
  grid-template-columns: minmax(260px, 340px) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}

.teacher-group-card {
  gap: 12px;
}

.teacher-group-card.is-selected {
  border-color: var(--primary);
  background: #eef7fc;
  box-shadow: 0 10px 24px rgba(31, 111, 154, .10);
}

.teacher-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.teacher-group-overview-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 14px;
}

[data-group-view-panel][hidden] {
  display: none !important;
}

.view-toggle {
  display: inline-flex;
  gap: 6px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 4px;
}

.view-toggle .button {
  min-height: 34px;
  border-color: transparent;
  box-shadow: none;
  padding: 7px 10px;
}

.view-toggle .button.is-selected {
  border-color: var(--primary);
  background: var(--primary);
  color: #ffffff;
}

.view-toggle .button.is-selected svg {
  stroke: #ffffff;
}

.teacher-group-list-view table {
  min-width: 980px;
}

.teacher-group-list-view .table-actions {
  flex-wrap: nowrap;
}

.teacher-group-overview-card {
  display: grid;
  gap: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
  box-shadow: 0 12px 28px rgba(31, 41, 51, .08);
}

.teacher-group-overview-main {
  display: grid;
  gap: 12px;
  color: inherit;
  text-decoration: none;
}

.teacher-group-overview-main:hover .teacher-group-overview-title strong,
.teacher-group-overview-main:focus-visible .teacher-group-overview-title strong {
  color: var(--primary-dark);
}

.teacher-group-overview-main:focus-visible {
  outline: 3px solid rgba(31, 102, 144, .18);
  outline-offset: 4px;
}

.teacher-group-overview-title {
  display: grid;
  gap: 4px;
}

.teacher-group-overview-title strong {
  font-size: 18px;
  font-weight: 900;
}

.teacher-group-overview-title small,
.teacher-group-overview-classroom,
.teacher-group-overview-next {
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.teacher-group-overview-classroom,
.teacher-group-overview-next {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.teacher-group-overview-classroom svg,
.teacher-group-overview-next svg {
  width: 15px;
  height: 15px;
}

.teacher-group-overview-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.teacher-group-overview-stats span {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  padding: 10px;
}

.teacher-group-overview-stats strong,
.teacher-group-overview-stats small {
  display: block;
}

.teacher-group-overview-stats strong {
  color: var(--text);
  font-size: 22px;
  font-weight: 900;
}

.teacher-group-overview-stats small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
}

.teacher-group-overview-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
  border-top: 1px solid var(--border);
  padding-top: 12px;
}

.table-subtext {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  margin-top: 4px;
}

.status-stack {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.info-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.info-grid div {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 12px;
}

.info-grid span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
}

.info-grid strong {
  display: block;
  margin-top: 5px;
  overflow-wrap: anywhere;
}

.password-target-list {
  display: grid;
  gap: 12px;
}

.password-change-card {
  display: grid;
  grid-template-columns: minmax(240px, .8fr) minmax(360px, 1fr) auto;
  gap: 14px;
  align-items: end;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
}

.password-target-heading {
  display: flex;
  gap: 12px;
  align-items: center;
  min-width: 0;
}

.password-target-icon {
  width: 42px;
  height: 42px;
  border-radius: var(--radius);
  background: var(--primary-soft);
  color: var(--primary-dark);
  display: grid;
  place-items: center;
  flex: 0 0 auto;
}

.password-target-heading strong,
.password-target-heading span {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.password-target-heading span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.password-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(180px, 1fr));
  gap: 10px;
}

.password-fields label {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.password-fields input {
  width: 100%;
  min-height: 40px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  padding: 9px 11px;
  font: inherit;
  font-weight: 700;
}

.password-fields input:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(35, 107, 158, .16);
  outline: none;
}

.table-panel-header {
  padding: 16px 16px 0;
}

.tutorial-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}

.tutorials-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, .65fr);
  gap: 18px;
  align-items: start;
}

.tutorial-create-grid {
  grid-template-columns: minmax(160px, .8fr) minmax(150px, .55fr) minmax(150px, .55fr) minmax(130px, .45fr);
}

.evaluation-filter-grid {
  grid-template-columns: minmax(260px, 1fr) minmax(260px, 1fr);
}

.modal-panel-wide {
  width: min(760px, 100%);
}

.grade-modal-backdrop {
  padding: 10px;
}

.grade-modal-panel {
  width: min(820px, calc(100vw - 32px));
  max-height: calc(100vh - 20px);
}

.grade-modal-form {
  gap: 10px;
  background: #f8fafc;
  padding: 12px 18px 14px;
}

.grade-modal-panel .modal-header {
  align-items: center;
  padding: 12px 18px;
}

.grade-modal-panel .section-title {
  gap: 10px;
}

.grade-modal-panel .section-title h2 {
  font-size: 20px;
}

.grade-modal-panel .section-title p {
  margin-top: 1px;
  font-size: 12px;
}

.styled-select,
.grade-select {
  appearance: none;
  -webkit-appearance: none;
  min-height: 42px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background-color: #ffffff;
  background-image:
    linear-gradient(45deg, transparent 50%, #1f668f 50%),
    linear-gradient(135deg, #1f668f 50%, transparent 50%);
  background-position:
    calc(100% - 17px) 50%,
    calc(100% - 11px) 50%;
  background-size: 6px 6px, 6px 6px;
  background-repeat: no-repeat;
  color: var(--text);
  font-weight: 800;
  padding: 0 34px 0 12px;
  transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease;
}

.styled-select:focus,
.grade-select:focus {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(31, 102, 143, .14);
  outline: none;
}

.evaluation-modal-meta {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.evaluation-modal-meta span {
  display: grid;
  gap: 3px;
  min-width: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 8px 10px;
}

.evaluation-modal-meta b {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
}

.evaluation-modal-meta strong {
  min-width: 0;
  overflow-wrap: anywhere;
}

.grade-table-scroll {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  overflow: hidden;
}

.app-shell .grade-table {
  min-width: 0;
  table-layout: fixed;
}

.app-shell .grade-table th,
.app-shell .grade-table td {
  padding: 7px 12px;
  vertical-align: middle;
}

.app-shell .grade-table tbody tr:hover {
  background: #f8fafc;
}

.grade-column,
.grade-value-cell {
  width: 150px;
  text-align: right;
}

.grade-select {
  width: 118px;
  min-width: 118px;
  min-height: 34px;
  padding-left: 10px;
}

.grade-observations {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.grade-observations textarea {
  min-height: 70px;
  width: 100%;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.35;
  padding: 9px 10px;
  resize: vertical;
  text-transform: none;
}

.grade-modal-form .form-actions {
  margin-top: 0;
}

.grade-observations textarea:focus {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(31, 102, 143, .14);
  outline: none;
}

.tutorial-slot-grid {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.tutorial-slot-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 12px;
}

.tutorial-slot-card strong,
.tutorial-slot-card span {
  display: block;
}

.tutorial-slot-card span {
  color: var(--muted);
  font-size: 13px;
}

.tutorial-student {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 12px;
}

.tutorial-student svg {
  width: 20px;
  height: 20px;
  color: var(--primary);
}

.tutorial-student strong {
  display: block;
}

.tutorial-student span,
.tutorial-help {
  color: var(--muted);
  font-size: 13px;
}

.tutorial-layout {
  align-items: start;
}

.tutorial-history-list {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.tutorial-history-item {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 12px;
}

.tutorial-date strong,
.tutorial-history-main strong {
  display: block;
}

.tutorial-date span,
.tutorial-history-main span {
  color: var(--muted);
  font-size: 13px;
}

.tutorial-recent-panel {
  overflow: hidden;
}

.tutorial-recent-list {
  display: grid;
  gap: 10px;
}

.tutorial-recent-item {
  display: grid;
  grid-template-columns: 118px minmax(0, 1fr) max-content;
  gap: 14px;
  align-items: start;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 12px;
}

.tutorial-recent-item time {
  min-height: 58px;
  border-radius: var(--radius);
  background: #edf2f7;
  color: #4f6785;
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 2px;
  font-weight: 900;
}

.tutorial-recent-item time strong,
.tutorial-recent-item div > strong,
.tutorial-recent-item div > span {
  display: block;
}

.tutorial-recent-item time span,
.tutorial-recent-item div > span,
.tutorial-recent-item p {
  color: var(--muted);
  font-size: 13px;
}

.tutorial-recent-item p {
  margin: 6px 0 0;
  line-height: 1.45;
}

.tutorial-observations-preview {
  border-left: 3px solid var(--primary);
  padding-left: 10px;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.tutorial-observations-preview strong {
  color: var(--text);
}

.tutorial-recent-actions {
  display: flex;
  justify-content: flex-end;
  align-items: flex-start;
}

.app-shell .tutorial-layout table {
  min-width: 0;
  table-layout: fixed;
}

.app-shell .tutorial-layout th,
.app-shell .tutorial-layout td {
  overflow-wrap: anywhere;
}

.app-shell .tutorial-layout th:nth-child(1),
.app-shell .tutorial-layout td:nth-child(1) {
  width: 24%;
}

.app-shell .tutorial-layout th:nth-child(2),
.app-shell .tutorial-layout td:nth-child(2) {
  width: 17%;
}

.app-shell .tutorial-layout th:nth-child(5),
.app-shell .tutorial-layout td:nth-child(5) {
  width: 94px;
}

.status-pill {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 4px 10px;
  border-radius: 999px;
  background: #e8f1f7;
  color: var(--primary-dark);
  font-size: 12px;
  font-weight: 900;
}

.session-selector {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px;
  box-shadow: 0 12px 28px rgba(31, 41, 51, .08);
}

.attendance-form {
  margin: 0;
}

.attendance-button {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 6px 10px;
  background: #ffffff;
  color: var(--text);
  font-weight: 900;
  white-space: nowrap;
  cursor: pointer;
}

.attendance-button svg {
  width: 17px;
  height: 17px;
}

.attendance-button.danger {
  border-color: #f3b3b3;
  background: #fde8e8;
  color: var(--red);
}

.attendance-button.ok {
  border-color: #b9e0cb;
  background: #e6f4ed;
  color: var(--green);
}

.module-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

.module-grid.compact {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.module-card {
  min-height: 138px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 12px 28px rgba(31, 41, 51, .08);
  padding: 14px;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 12px;
  align-items: start;
}

.module-card.success {
  border-color: #b9e0cb;
}

.module-card.warning {
  border-color: #f3d48a;
}

.module-icon {
  width: 42px;
  height: 42px;
  border-radius: var(--radius);
  background: var(--primary-soft);
  color: var(--primary-dark);
  display: grid;
  place-items: center;
}

.module-icon svg {
  width: 20px;
  height: 20px;
}

.module-copy {
  min-width: 0;
  display: grid;
  gap: 5px;
}

.module-copy strong {
  font-size: 16px;
}

.module-copy span,
.module-count small {
  color: var(--muted);
  font-size: 13px;
}

.module-count {
  grid-column: 1 / -1;
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 12px;
  border-top: 1px solid var(--border);
  padding-top: 12px;
  margin-top: 4px;
}

.module-count b {
  font-size: 24px;
  line-height: 1;
}

.record-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.record-card {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 13px;
  box-shadow: 0 10px 24px rgba(31, 41, 51, .06);
}

.record-card strong {
  display: block;
  margin-bottom: 4px;
}

.record-card span,
.record-card p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}

.record-card p {
  margin-top: 8px;
}

.admin-search {
  display: grid;
  grid-template-columns: minmax(320px, 1fr) max-content max-content;
  gap: 10px;
  align-items: center;
}

.users-search {
  grid-template-columns: minmax(360px, 1fr) minmax(170px, .2fr) max-content max-content max-content;
}

.administrator-search {
  grid-template-columns: minmax(280px, 1fr) max-content max-content;
}

.administrator-grid,
.administrator-candidate-list {
  display: grid;
  gap: 12px;
}

.administrator-card,
.administrator-candidate-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
  box-shadow: 0 12px 28px rgba(31, 41, 51, .06);
}

.administrator-card-main {
  display: flex;
  align-items: center;
  min-width: 0;
  gap: 12px;
}

.administrator-avatar {
  width: 42px;
  height: 42px;
  border: 1px solid #b9d7ec;
  border-radius: 10px;
  background: #eef8ff;
  color: var(--primary);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
}

.administrator-avatar.muted {
  border-color: var(--border);
  background: #f8fafc;
  color: #52637a;
}

.administrator-avatar svg {
  width: 21px;
  height: 21px;
}

.administrator-copy {
  min-width: 0;
  display: grid;
  gap: 3px;
}

.administrator-copy strong,
.administrator-copy span {
  overflow-wrap: anywhere;
}

.administrator-copy span {
  color: var(--muted);
  font-size: 13px;
}

.administrator-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
}

.administrators-modal-panel {
  width: min(780px, 100%);
}

.teacher-students-search {
  grid-template-columns: minmax(360px, 1fr) minmax(190px, .22fr) minmax(190px, .22fr) max-content max-content;
}

.app-shell .teacher-students-table {
  min-width: 1120px;
  table-layout: fixed;
}

.teacher-students-table col.student-col-name {
  width: 260px;
}

.teacher-students-table col.student-col-contact {
  width: 270px;
}

.teacher-students-table col.student-col-course {
  width: 240px;
}

.teacher-students-table col.student-col-tutor {
  width: 250px;
}

.teacher-students-table col.student-col-tracking {
  width: 170px;
}

.teacher-students-table col.student-col-actions {
  width: 108px;
}

.teacher-students-table th,
.teacher-students-table td {
  vertical-align: middle;
}

.teacher-students-table .student-name-cell strong,
.teacher-students-table .student-course-cell strong,
.teacher-students-table .student-tutor-cell strong {
  display: block;
  line-height: 1.25;
}

.teacher-students-table .student-course-cell strong {
  white-space: nowrap;
}

.teacher-students-table .student-course-cell .table-sub {
  margin-top: 6px;
  white-space: nowrap;
}

.teacher-students-table .student-contact-cell,
.teacher-students-table .student-tutor-cell {
  font-size: 13px;
  line-height: 1.35;
}

.teacher-students-table .student-tracking-cell {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}

.teacher-students-table .student-tracking-cell .status-pill {
  min-height: 24px;
  padding: 4px 8px;
}

.search-select-field {
  min-height: 42px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  display: grid;
  grid-template-columns: auto minmax(100px, 1fr);
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
}

.search-select-field span {
  color: #334155;
  font-size: 13px;
  font-weight: 800;
  white-space: nowrap;
}

.search-select-field select {
  border: 0;
  background: transparent;
  color: var(--text);
  font-size: 14px;
  font-weight: 800;
  outline: 0;
  min-width: 0;
}

.maintenance-search {
  display: grid;
  gap: 12px;
}

.maintenance-search-main {
  display: grid;
  grid-template-columns: minmax(360px, 1fr) max-content max-content;
  gap: 10px;
  align-items: center;
}

.maintenance-search-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
}

.maintenance-filter-panel {
  display: grid;
  grid-template-columns: minmax(130px, .16fr) minmax(0, 1fr);
  gap: 18px;
  align-items: stretch;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 12px;
}

.filter-panel-title {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  border-right: 1px solid var(--border);
  padding-right: 12px;
}

.filter-panel-title svg {
  width: 18px;
  height: 18px;
  color: var(--primary-dark);
  margin-top: 2px;
}

.filter-panel-title strong {
  display: block;
  color: var(--text);
  font-size: 14px;
}

.filter-panel-title span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
  margin-top: 2px;
}

.maintenance-filter-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) max-content;
  gap: 10px;
  align-items: center;
}

.maintenance-filter-fields {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 10px;
  min-width: 0;
}

.maintenance-filter-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

.filter-clear-button,
.search-clear-button {
  width: 156px;
  min-width: 156px;
  max-width: 156px;
  flex: 0 0 156px;
  justify-self: end;
  align-self: center;
}

.maintenance-filter-grid .filter-clear-button {
  width: auto;
  min-width: 150px;
  max-width: 168px;
  min-height: 42px;
}

.switch-field {
  min-height: 42px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: #ffffff;
  color: #334155;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 6px 12px;
  font-size: 13px;
  font-weight: 800;
  white-space: nowrap;
}

.switch-control {
  position: relative;
  display: inline-flex;
  width: 42px;
  height: 24px;
}

.switch-control input {
  position: absolute;
  opacity: 0;
  inset: 0;
  margin: 0;
}

.switch-control span {
  width: 100%;
  height: 100%;
  border-radius: 999px;
  background: #cbd5e1;
  transition: background .16s ease;
}

.switch-control span::after {
  content: "";
  position: absolute;
  width: 18px;
  height: 18px;
  left: 3px;
  top: 3px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 2px 6px rgba(15, 23, 42, .25);
  transition: transform .16s ease;
}

.switch-control input:checked + span {
  background: var(--primary);
}

.switch-control input:checked + span::after {
  transform: translateX(18px);
}

.admin-users-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, .42fr);
  gap: 18px;
  align-items: start;
}

.admin-form {
  overflow: visible;
}

.admin-form .panel-body {
  display: grid;
  gap: 14px;
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.maintenance-edit-grid {
  grid-template-columns: repeat(12, minmax(0, 1fr));
  align-items: start;
}

.form-grid.one {
  grid-template-columns: 1fr;
}

.maintenance-edit-grid .field-tiny {
  grid-column: span 2;
}

.maintenance-edit-grid .field-short {
  grid-column: span 3;
}

.maintenance-edit-grid .field-date {
  grid-column: span 3;
}

.maintenance-edit-grid .field-medium {
  grid-column: span 4;
}

.maintenance-edit-grid .field-wide {
  grid-column: span 6;
}

.maintenance-edit-grid .field-name-wide {
  grid-column: span 9;
}

.maintenance-edit-grid .field-own-row {
  grid-column: 1 / -1;
  max-width: 330px;
}

.form-grid .field-full {
  grid-column: 1 / -1;
}

.form-grid .field-switch-row {
  align-items: start;
}

.form-grid .field-switch-row .check-inline {
  justify-self: start;
}

.maintenance-edit-grid.maintenance-festivos .field-wide {
  grid-column: span 6;
}

.maintenance-edit-grid.maintenance-areas,
.maintenance-edit-grid.maintenance-niveles,
.maintenance-edit-grid.maintenance-aulas,
.maintenance-edit-grid.maintenance-profesores,
.maintenance-edit-grid.maintenance-cursos,
.maintenance-edit-grid.maintenance-festivos {
  max-width: 980px;
}

.form-grid label,
.check-list label {
  display: grid;
  gap: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
}

.form-grid input,
.form-grid select,
.form-grid textarea {
  min-height: 40px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  padding: 8px 10px;
  min-width: 0;
}

.form-grid textarea {
  min-height: 98px;
  resize: vertical;
}

.mail-settings-grid {
  grid-template-columns: repeat(12, minmax(0, 1fr));
  align-items: end;
}

.mail-settings-grid .field-smtp-host {
  grid-column: span 7;
}

.mail-settings-grid .field-smtp-port {
  grid-column: span 2;
}

.mail-settings-grid .field-smtp-ssl {
  grid-column: span 3;
}

.mail-settings-grid .field-smtp-user,
.mail-settings-grid .field-smtp-password,
.mail-settings-grid .field-mail-half {
  grid-column: span 6;
}

.mail-settings-grid .field-mail-follow-switch {
  grid-column: span 4;
}

.mail-settings-grid .field-mail-follow-email {
  grid-column: span 8;
}

.mail-settings-grid .field-mail-error-switch {
  grid-column: span 4;
}

.mail-settings-grid .field-mail-error-email {
  grid-column: span 8;
}

.mail-settings-grid .field-switch-row {
  align-self: end;
}

.mail-settings-grid .field-switch-row .check-inline {
  min-height: 40px;
}

.mail-build-status {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px 16px;
  margin-bottom: 16px;
  box-shadow: var(--shadow-soft);
}

.mail-build-status.is-debug {
  background: #fff7e6;
  border-color: #f3c46d;
}

.mail-build-status.is-release {
  background: #ecfdf3;
  border-color: #a9dfbd;
}

.mail-build-icon {
  width: 46px;
  height: 46px;
  border-radius: 14px;
  display: grid;
  place-items: center;
  background: #eef4f9;
  color: var(--primary-dark);
}

.mail-build-status.is-debug .mail-build-icon {
  background: #fdecc8;
  color: #a65f00;
}

.mail-build-status.is-release .mail-build-icon {
  background: #dff5e8;
  color: #17663b;
}

.mail-build-status span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .02em;
  text-transform: uppercase;
}

.mail-build-status strong {
  display: block;
  margin-top: 2px;
  color: var(--text);
  font-size: 24px;
  line-height: 1.1;
}

.mail-build-status p {
  margin: 4px 0 0;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.45;
}

.mail-tracking-types {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #f8fafc;
  margin: 16px 0 0;
  padding: 13px;
}

.mail-tracking-types legend {
  padding: 0 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .02em;
  text-transform: uppercase;
}

.mail-tracking-types p {
  margin: 0 0 12px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.mail-tracking-types .notification-switch-grid {
  grid-template-columns: repeat(auto-fit, minmax(165px, 1fr));
  gap: 10px;
}

.mail-tracking-types .switch-option {
  position: relative;
  min-height: 42px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: #334155;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  padding: 9px 12px;
  font-weight: 800;
  text-transform: none;
}

.mail-tracking-types .switch-option:hover {
  border-color: #b7cee0;
  background: #ffffff;
}

.mail-tracking-types .switch-option > span:last-child {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.legacy-import-grid label {
  grid-column: span 3;
}

.legacy-import-grid .field-full {
  grid-column: span 6;
}

.import-options-panel {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 12px 16px;
}

.import-options-panel .option-section {
  min-width: 240px;
}

.import-options-panel .switch-option small {
  flex-basis: 100%;
  margin-left: 52px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.3;
}

.import-summary-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 18px;
}

.notifications-summary-section {
  gap: 0;
}

.notification-worker-card {
  display: grid;
  grid-template-columns: minmax(280px, .72fr) minmax(460px, 1fr);
  gap: 18px;
  align-items: start;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 16px;
  box-shadow: 0 10px 24px rgba(31, 41, 51, .06);
}

.notification-worker-info {
  display: grid;
  gap: 12px;
  min-width: 0;
}

.notification-worker-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.notification-worker-meta span {
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid #d7e5ef;
  border-radius: 999px;
  background: #f7fbfe;
  color: #44576e;
  padding: 6px 10px;
  font-size: 12px;
  font-weight: 900;
}

.notification-worker-meta svg {
  width: 16px;
  height: 16px;
  color: var(--primary-dark);
}

.notification-worker-controls {
  display: grid;
  gap: 10px;
  min-width: 0;
}

.notification-worker-url-field {
  display: grid;
  gap: 7px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.notification-worker-url-field input {
  width: 100%;
  min-height: 42px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #f8fafc;
  color: var(--text);
  padding: 9px 11px;
  font-family: Consolas, "Courier New", monospace;
  font-size: 13px;
  font-weight: 700;
  text-transform: none;
}

.notification-worker-actions {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 10px;
}

.notification-worker-warning {
  grid-column: 1 / -1;
  display: flex;
  align-items: flex-start;
  gap: 9px;
  border: 1px solid #f3d28c;
  border-radius: 8px;
  background: #fff8e8;
  color: #7c4a03;
  padding: 10px 12px;
  font-size: 13px;
  font-weight: 800;
}

.notification-worker-warning svg {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
}

.compact-button {
  min-height: 36px;
  padding: 8px 12px;
  white-space: nowrap;
}

.notification-help-content {
  display: grid;
  gap: 16px;
}

.notification-help-callout {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  border: 1px solid #b9d7ec;
  border-radius: var(--radius);
  background: #f5fbff;
  color: #1f5f8b;
  padding: 12px 14px;
}

.notification-help-callout svg {
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
  margin-top: 2px;
}

.notification-help-callout strong,
.notification-help-callout span {
  display: block;
}

.notification-help-callout strong {
  color: var(--text);
  font-size: 15px;
}

.notification-help-callout span {
  color: #44576e;
  font-size: 13px;
  line-height: 1.45;
  margin-top: 2px;
}

.notification-help-block {
  display: grid;
  gap: 8px;
}

.notification-help-block h3 {
  margin: 0;
  color: var(--text);
  font-size: 16px;
}

.notification-help-block p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

.notification-help-code,
.notification-help-steps code {
  display: block;
  width: 100%;
  overflow-x: auto;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #f8fafc;
  color: #123047;
  padding: 10px 12px;
  font-family: Consolas, "Courier New", monospace;
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.notification-help-params {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
}

.notification-help-params div,
.notification-help-steps div {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #ffffff;
  padding: 11px 12px;
}

.notification-help-params dt {
  color: var(--primary-dark);
  font-size: 13px;
  font-weight: 900;
  margin-bottom: 4px;
}

.notification-help-params dd {
  color: #44576e;
  font-size: 13px;
  line-height: 1.45;
  margin: 0;
}

.notification-help-steps {
  display: grid;
  gap: 8px;
}

.notification-help-steps strong {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
  margin-bottom: 6px;
}

.notification-help-list {
  display: grid;
  gap: 7px;
  margin: 0;
  padding-left: 18px;
  color: #44576e;
  font-size: 13px;
  line-height: 1.45;
}

.notifications-summary-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0;
}

.notification-status-card {
  width: min(100%, 220px);
  min-height: 70px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 12px 14px;
  box-shadow: 0 8px 20px rgba(31, 41, 51, .05);
}

.notification-status-card div {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.notification-status-card span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.notification-status-card small {
  color: var(--muted);
  font-size: 12px;
}

.notification-status-card strong {
  color: var(--text);
  font-size: 30px;
  line-height: 1;
}

.notification-status-card.ok {
  border-color: #b6dfc8;
  background: #f3fbf6;
}

.notification-status-card.info {
  border-color: #b9d7ec;
  background: #f5fbff;
}

.notification-status-card.warning {
  border-color: #f3d28c;
  background: #fff8e8;
}

.notification-status-card.ok strong {
  color: var(--green);
}

.notification-status-card.info strong {
  color: var(--primary);
}

.notification-status-card.warning strong {
  color: var(--amber);
}

.import-result-table th:nth-child(1),
.import-result-table td:nth-child(1) {
  width: 190px;
}

.import-result-table td small {
  display: block;
  color: var(--muted);
  font-size: 12px;
  margin-top: 4px;
}

.app-date-input {
  position: relative;
  display: flex;
  align-items: stretch;
  width: 100%;
  min-width: 0;
}

.app-date-input [data-date-visible] {
  width: 100%;
  padding-right: 44px;
}

.app-date-button {
  position: absolute;
  top: 1px;
  right: 1px;
  bottom: 1px;
  width: 40px;
  border: 0;
  border-left: 1px solid var(--border);
  border-radius: 0 var(--radius) var(--radius) 0;
  background: #f8fafc;
  color: var(--primary-dark);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}

.app-date-button:hover,
.app-date-button:focus-visible {
  background: var(--primary-soft);
  outline: none;
}

.app-date-button svg {
  width: 18px;
  height: 18px;
}

.app-date-picker {
  position: fixed;
  z-index: 1400;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  box-shadow: 0 24px 60px rgba(15, 23, 42, .24);
  padding: 12px;
}

.app-date-picker-header {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) 34px;
  gap: 8px;
  align-items: center;
  margin-bottom: 10px;
}

.app-date-picker-header strong {
  color: var(--text);
  font-size: 14px;
  font-weight: 900;
  text-align: center;
  text-transform: capitalize;
}

.app-date-picker-header button,
.app-date-picker-footer button,
.app-date-picker-days button {
  border: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-weight: 800;
  cursor: pointer;
}

.app-date-picker-header button {
  width: 34px;
  height: 34px;
  border-radius: var(--radius);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.app-date-picker-header button:hover,
.app-date-picker-header button:focus-visible,
.app-date-picker-days button:hover,
.app-date-picker-days button:focus-visible {
  background: var(--primary-soft);
  color: var(--primary-dark);
  outline: none;
}

.app-date-picker-header svg {
  width: 18px;
  height: 18px;
}

.app-date-picker-weekdays,
.app-date-picker-days {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
}

.app-date-picker-weekdays {
  margin-bottom: 5px;
}

.app-date-picker-weekdays span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-align: center;
}

.app-date-picker-days button {
  min-height: 34px;
  border-radius: 7px;
  font-size: 13px;
}

.app-date-picker-days button.is-muted {
  color: #94a3b8;
}

.app-date-picker-days button.is-today {
  box-shadow: inset 0 0 0 2px rgba(31, 102, 144, .24);
}

.app-date-picker-days button.is-selected {
  background: var(--primary);
  color: #ffffff;
}

.app-date-picker-footer {
  border-top: 1px solid var(--border);
  margin-top: 10px;
  padding-top: 10px;
  display: flex;
  justify-content: space-between;
  gap: 10px;
}

.app-date-picker-footer button {
  color: var(--primary-dark);
  padding: 7px 8px;
  border-radius: var(--radius);
}

.app-date-picker-footer button:hover,
.app-date-picker-footer button:focus-visible {
  background: var(--primary-soft);
  outline: none;
}

.html-editor-field {
  display: grid;
  gap: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
}

.html-editor-source {
  display: none;
}

.html-editor {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  overflow: hidden;
}

.html-editor-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 8px;
  border-bottom: 1px solid var(--border);
  background: #f8fafc;
}

.html-editor-toolbar button {
  width: 34px;
  height: 34px;
  min-height: 34px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: #ffffff;
  color: var(--text);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}

.html-editor-toolbar button:hover {
  border-color: var(--primary);
  color: var(--primary);
}

.html-editor-toolbar svg {
  width: 17px;
  height: 17px;
}

.html-editor-surface {
  min-height: 150px;
  padding: 12px 14px;
  color: var(--text);
  font-size: 14px;
  font-weight: 500;
  line-height: 1.5;
  outline: none;
  text-transform: none;
}

.html-editor-surface:focus {
  box-shadow: inset 0 0 0 2px rgba(31, 95, 139, .18);
}

.communication-html {
  margin-top: 6px;
  color: var(--text);
  font-size: 13px;
  line-height: 1.45;
}

.communication-html p,
.html-editor-surface p {
  margin: 0 0 8px;
}

.communication-html p:last-child,
.html-editor-surface p:last-child {
  margin-bottom: 0;
}

.family-event-agenda {
  display: grid;
  gap: 12px;
}

.family-event-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.family-event-summary span {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: #ffffff;
  padding: 6px 10px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.family-event-summary strong {
  color: var(--text);
  font-size: 17px;
}

.family-event-summary .warn {
  border-color: #f8c471;
  background: #fff7e5;
  color: #92400e;
}

.family-event-item {
  display: grid;
  grid-template-columns: 82px minmax(0, 1fr);
  gap: 14px;
  align-items: stretch;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
  box-shadow: 0 10px 24px rgba(31, 41, 51, .05);
}

.family-event-item.is-new {
  border-color: #f8c471;
  background: linear-gradient(90deg, #fffaf0 0, #ffffff 34%);
}

.family-event-date {
  display: grid;
  place-items: center;
  min-height: 86px;
  border: 1px solid #cfe2ef;
  border-radius: var(--radius);
  background: #eef7ff;
  color: var(--brand);
  text-align: center;
  text-decoration: none;
}

.family-event-date strong {
  color: var(--brand);
  font-size: 30px;
  line-height: 1;
}

.family-event-date span,
.family-event-date small {
  color: var(--muted);
  font-weight: 900;
  text-transform: uppercase;
}

.family-event-date span {
  font-size: 13px;
}

.family-event-date small {
  font-size: 11px;
}

.family-event-body {
  min-width: 0;
  display: grid;
  gap: 8px;
  align-content: start;
}

.family-event-topline {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 8px;
  align-items: center;
}

.family-event-topline > span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: capitalize;
}

.family-event-topline svg {
  width: 14px;
  height: 14px;
}

.family-event-body h3 {
  margin: 0;
  color: var(--text);
  font-size: 18px;
  line-height: 1.25;
}

.family-event-description {
  margin-top: 0;
  border-left: 3px solid #cfe2ef;
  background: #f8fafc;
  border-radius: 0 var(--radius) var(--radius) 0;
  padding: 10px 12px;
}

.family-event-empty {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}

.circular-document-list {
  display: grid;
  gap: 10px;
}

.circular-document-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(270px, 360px);
  gap: 16px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
  box-shadow: 0 10px 24px rgba(31, 41, 51, .05);
}

.circular-document-item.is-new {
  border-color: #f8c471;
  background: linear-gradient(90deg, #fffaf0 0, #ffffff 32%);
}

.circular-document-main {
  min-width: 0;
}

.circular-document-main h3 {
  margin: 6px 0 0;
  color: var(--text);
  font-size: 16px;
  line-height: 1.25;
}

.circular-document-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.circular-document-meta > span:not(.status) {
  display: inline-flex;
  gap: 5px;
  align-items: center;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.circular-document-meta svg {
  width: 14px;
  height: 14px;
}

.circular-document-description {
  max-width: 860px;
}

.circular-poster-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  align-items: start;
}

.circular-poster-card {
  min-width: 0;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: inherit;
  display: grid;
  text-decoration: none;
  box-shadow: 0 14px 32px rgba(31, 41, 51, .08);
  transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

a.circular-poster-card:hover,
a.circular-poster-card:focus-visible {
  border-color: var(--primary);
  box-shadow: 0 18px 38px rgba(31, 101, 146, .14);
  outline: none;
  transform: translateY(-1px);
}

.circular-poster-card.is-new {
  border-color: #f3d28c;
}

.circular-poster-card.is-disabled {
  opacity: .78;
}

.circular-poster-preview {
  position: relative;
  aspect-ratio: 1 / 1.414;
  border-bottom: 1px solid var(--border);
  background: linear-gradient(135deg, #f8fafc, #eef4f8);
  display: grid;
  place-items: center;
}

.circular-poster-preview img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  background: #ffffff;
}

.circular-poster-preview img + .circular-poster-fallback {
  display: none;
}

.circular-poster-fallback {
  width: 86px;
  height: 86px;
  border-radius: 14px;
}

.circular-poster-fallback svg {
  width: 42px;
  height: 42px;
}

.circular-poster-preview .library-file-badge {
  position: absolute;
  top: 12px;
  right: 12px;
  box-shadow: 0 8px 20px rgba(31, 41, 51, .08);
}

.circular-poster-info {
  display: grid;
  gap: 7px;
  padding: 12px;
}

.circular-poster-info h3 {
  margin: 0;
  color: var(--text);
  font-size: 15px;
  line-height: 1.25;
}

.circular-poster-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.circular-poster-meta span:not(.status) {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.circular-poster-meta svg {
  width: 14px;
  height: 14px;
}

.circular-poster-description {
  max-height: 56px;
  overflow: hidden;
  color: var(--muted);
  font-size: 12px;
}

.maintenance-poster-grid {
  margin-top: 2px;
}

.maintenance-circular-card {
  min-height: 100%;
}

.maintenance-circular-card .circular-poster-preview {
  color: inherit;
  text-decoration: none;
}

.maintenance-circular-card .circular-poster-info {
  align-content: start;
}

.maintenance-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  justify-content: flex-end;
  margin-top: 4px;
  border-top: 1px solid var(--border);
  padding-top: 10px;
}

.maintenance-event-agenda {
  gap: 14px;
}

.maintenance-event-item {
  grid-template-columns: 86px minmax(0, 1fr);
}

.maintenance-event-scope {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.app-shell .status.muted {
  background: #eef2f7;
  color: #64748b;
}

.document-mini-link {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  min-width: 0;
  min-height: 58px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #f8fafc;
  padding: 9px 10px;
  color: var(--text);
  text-decoration: none;
  transition: border-color .15s ease, background .15s ease, transform .15s ease;
}

.document-mini-link:hover {
  border-color: #9ec9e4;
  background: #eef7ff;
  transform: translateY(-1px);
}

.document-mini-link.is-disabled {
  cursor: default;
  color: var(--muted);
  background: #fbfdff;
}

.document-mini-link.is-disabled:hover {
  border-color: var(--border);
  background: #fbfdff;
  transform: none;
}

.document-mini-text {
  min-width: 0;
  display: grid;
  gap: 3px;
}

.document-mini-text strong {
  overflow: hidden;
  color: var(--text);
  font-size: 13px;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.document-mini-text small {
  overflow: hidden;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  text-overflow: ellipsis;
  text-transform: uppercase;
  white-space: nowrap;
}

.document-mini-action {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--brand);
}

.document-mini-action svg {
  width: 16px;
  height: 16px;
}

.library-summary-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 14px;
}

.library-type-count {
  min-width: 86px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 8px 10px;
  display: grid;
  gap: 2px;
}

.library-type-count strong {
  color: var(--text);
  font-size: 23px;
  line-height: 1;
}

.library-type-count small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
}

.library-type-count.pdf {
  border-color: #f3b3b3;
  background: #fff1f2;
}

.library-type-count.word {
  border-color: #b9d7ec;
  background: #eef7ff;
}

.library-type-count.other {
  border-color: #d8e0ea;
  background: #f8fafc;
}

.family-library-search-card {
  display: grid;
  gap: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
  box-shadow: 0 10px 24px rgba(31, 41, 51, .05);
}

.family-library-search {
  display: grid;
  grid-template-columns: minmax(320px, 1fr) max-content max-content;
  gap: 10px;
  align-items: center;
}

.library-management-search-card {
  gap: 14px;
}

.library-management-search {
  display: grid;
  gap: 12px;
}

.library-management-search-main {
  display: grid;
  grid-template-columns: minmax(320px, 1fr) max-content max-content;
  gap: 10px;
  align-items: center;
}

.library-management-filter-fields {
  grid-template-columns: repeat(4, minmax(180px, 1fr));
}

.library-explorer.is-management .library-explorer-header,
.library-explorer.is-management .library-explorer-row {
  grid-template-columns: minmax(250px, 1.3fr) 104px minmax(220px, .9fr) 92px 112px 174px;
}

.library-explorer.is-management .library-explorer-row {
  cursor: default;
}

.library-explorer.is-management .library-explorer-row:hover {
  background: #fbfdff;
}

.library-management-actions {
  display: flex !important;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
}

.library-explorer-panel {
  display: grid;
  gap: 12px;
}

.library-explorer-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.library-explorer-toolbar span {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: #ffffff;
  padding: 6px 10px;
}

.library-explorer-toolbar strong {
  color: var(--text);
  font-size: 17px;
}

.library-explorer-toolbar .warn {
  border-color: #f8c471;
  background: #fff7e5;
  color: #92400e;
}

.library-explorer {
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  box-shadow: 0 12px 28px rgba(31, 41, 51, .06);
}

.library-explorer-header,
.library-explorer-row {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) 120px 110px 118px 92px;
  gap: 14px;
  align-items: center;
}

.library-explorer-header {
  min-height: 42px;
  padding: 0 14px;
  border-bottom: 1px solid var(--border);
  background: #f8fafc;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.library-explorer-row {
  min-height: 64px;
  padding: 10px 14px;
  color: var(--text);
  text-decoration: none;
  border-bottom: 1px solid var(--border);
  transition: background .15s ease, color .15s ease;
  cursor: pointer;
}

.library-explorer-row:last-child {
  border-bottom: 0;
}

.library-explorer-row:hover {
  background: #eef7ff;
}

.library-explorer-row.is-disabled {
  cursor: default;
  color: var(--muted);
  background: #fbfdff;
}

.library-explorer-row.is-disabled:hover {
  background: #fbfdff;
}

.library-explorer-row > span {
  min-width: 0;
  color: inherit;
  font-size: 13px;
  font-weight: 800;
}

.library-explorer-name {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 10px;
  align-items: center;
}

.library-explorer-name strong {
  display: block;
  overflow: hidden;
  color: var(--text);
  font-size: 15px;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.library-explorer-name small {
  display: block;
  overflow: hidden;
  margin-top: 3px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.library-explorer-icon {
  width: 38px;
  height: 38px;
  border: 1px solid #d8e0ea;
  border-radius: var(--radius);
  background: #f8fafc;
  color: var(--muted);
  display: grid;
  place-items: center;
}

.library-explorer-icon svg {
  width: 20px;
  height: 20px;
}

.library-explorer-icon.pdf {
  border-color: #f3b3b3;
  background: #fff1f2;
  color: #9f1239;
}

.library-explorer-icon.word {
  border-color: #b9d7ec;
  background: #eef7ff;
  color: #15577d;
}

.library-explorer-icon.sheet {
  border-color: #bbf7d0;
  background: #f0fdf4;
  color: #166534;
}

.library-explorer-icon.slides,
.library-explorer-icon.zip,
.library-explorer-icon.link,
.library-explorer-icon.other {
  border-color: #f3d28c;
  background: #fff7e5;
  color: #92400e;
}

.library-explorer-action {
  display: inline-flex;
  justify-content: flex-end;
  align-items: center;
  gap: 6px;
  color: var(--brand) !important;
}

.library-explorer-action svg {
  width: 16px;
  height: 16px;
}

.library-explorer-action.muted {
  color: var(--muted) !important;
}

@media (max-width: 760px) {
  .library-explorer-header {
    display: none;
  }

  .library-explorer-row {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px 12px;
    align-items: start;
  }

  .library-explorer-name {
    grid-column: 1 / -1;
  }

  .library-explorer-row > span:not(.library-explorer-name):not(.library-explorer-action) {
    font-size: 12px;
  }

  .library-explorer-action {
    justify-content: flex-start;
  }

  .library-explorer.is-management .library-explorer-header {
    display: none;
  }

  .library-explorer.is-management .library-explorer-row {
    grid-template-columns: 1fr;
    gap: 8px;
    align-items: start;
  }

  .library-management-actions {
    justify-content: flex-start;
  }
}

.library-timeline {
  display: grid;
  gap: 16px;
}

.library-date-group {
  display: grid;
  gap: 10px;
}

.library-date-header {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 14px;
  border-bottom: 1px solid var(--border);
  padding-bottom: 8px;
}

.library-date-header strong {
  display: block;
  color: var(--text);
  font-size: 18px;
  text-transform: capitalize;
}

.library-date-header span,
.library-date-header b {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.library-card-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.library-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 12px;
  align-items: start;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
  box-shadow: 0 10px 24px rgba(31, 41, 51, .06);
}

.library-card-icon {
  width: 42px;
  height: 42px;
  border: 1px solid #d8e0ea;
  border-radius: var(--radius);
  background: #f8fafc;
  color: var(--muted);
  display: grid;
  place-items: center;
}

.library-card-icon svg {
  width: 21px;
  height: 21px;
}

.library-card-icon.pdf,
.library-file-badge.pdf {
  border-color: #f3b3b3;
  background: #fff1f2;
  color: #9f1239;
}

.library-card-icon.word,
.library-file-badge.word {
  border-color: #b9d7ec;
  background: #eef7ff;
  color: #15577d;
}

.library-card-icon.sheet,
.library-file-badge.sheet {
  border-color: #bbf7d0;
  background: #f0fdf4;
  color: #166534;
}

.library-card-icon.slides,
.library-file-badge.slides,
.library-card-icon.zip,
.library-file-badge.zip,
.library-card-icon.link,
.library-file-badge.link,
.library-file-badge.other {
  border-color: #f3d28c;
  background: #fff7e5;
  color: #92400e;
}

.library-card-body {
  min-width: 0;
  display: grid;
  gap: 8px;
}

.library-card-title {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  gap: 10px;
}

.library-card-title h3 {
  margin: 0;
  min-width: 0;
  color: var(--text);
  font-size: 16px;
  line-height: 1.25;
}

.library-file-badge {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  justify-self: start;
  border: 1px solid #d8e0ea;
  border-radius: 999px;
  background: #f8fafc;
  color: var(--muted);
  padding: 4px 8px;
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
  white-space: nowrap;
}

.library-description {
  margin-top: 0;
}

.library-description-muted {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}

.library-card-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 12px;
}

.library-card-meta span {
  display: inline-flex;
  align-items: center;
  min-width: 0;
  gap: 5px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  overflow-wrap: anywhere;
}

.library-card-meta svg {
  flex: 0 0 auto;
  width: 14px;
  height: 14px;
}

.library-card-actions {
  grid-column: 2;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  min-width: 0;
}

.library-card-actions .inline-action {
  min-width: 136px;
  justify-content: center;
}

.form-grid input:disabled {
  background: #f1f5f9;
  color: #64748b;
}

.file-upload-card {
  display: grid;
  gap: 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #f8fafc;
  padding: 14px;
}

.maintenance-options-panel {
  display: grid;
  gap: 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
}

.maintenance-options-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
  align-items: stretch;
}

.readonly-field,
.option-switch-card {
  min-height: 82px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #f8fafc;
  padding: 12px;
}

.readonly-field {
  display: grid;
  align-content: center;
  gap: 4px;
}

.readonly-field span,
.option-switch-card > span:first-child small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.mail-legal-panel {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  margin-top: 18px;
  overflow: hidden;
}

.mail-legal-panel summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 15px 16px;
  color: var(--text);
  user-select: none;
}

.mail-legal-panel summary::-webkit-details-marker {
  display: none;
}

.mail-legal-summary-main {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 12px;
}

.mail-legal-summary-main > i {
  flex: 0 0 auto;
  color: var(--primary-dark);
}

.mail-legal-summary-main strong,
.mail-legal-summary-main small {
  display: block;
}

.mail-legal-summary-main strong {
  color: var(--text);
  font-size: 18px;
  line-height: 1.2;
}

.mail-legal-summary-main small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.35;
}

.mail-legal-summary-action {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--primary-dark);
  font-size: 13px;
  font-weight: 900;
}

.mail-legal-summary-action i {
  transition: transform .18s ease;
}

.mail-legal-panel[open] .mail-legal-summary-action i {
  transform: rotate(180deg);
}

.mail-legal-panel[open] .mail-legal-summary-action span {
  font-size: 0;
}

.mail-legal-panel[open] .mail-legal-summary-action span::after {
  content: "Cerrar configuracion";
  font-size: 13px;
}

.mail-legal-panel-body {
  border-top: 1px solid var(--border);
  background: #f8fafc;
  padding: 16px;
}

.readonly-field strong,
.option-switch-card > span:first-child strong {
  color: var(--text);
}

.readonly-field small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.embedded-title {
  margin-top: 18px;
}

.mail-debug-note,
.tutorial-cancel-actions {
  display: flex;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #f8fafc;
  padding: 12px;
}

.mail-debug-note i,
.tutorial-cancel-actions i {
  flex: 0 0 auto;
}

.mail-debug-note div,
.tutorial-cancel-actions span {
  min-width: 0;
}

.mail-debug-note strong,
.mail-debug-note span {
  display: block;
}

.mail-debug-note span,
.tutorial-cancel-actions span {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

.tutorial-cancel-actions {
  justify-content: space-between;
}

.mail-error-detail {
  border: 1px solid #f3b3b3;
  border-radius: var(--radius);
  background: #fff5f5;
  color: var(--red);
  font-weight: 800;
  line-height: 1.45;
  padding: 12px;
  white-space: pre-wrap;
  word-break: break-word;
}

.readonly-field.wide {
  min-height: 0;
}

.readonly-field p {
  margin: 6px 0 0;
  color: var(--muted);
  line-height: 1.45;
}

.option-switch-card {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}

.option-switch-card > span:first-child {
  display: grid;
  gap: 3px;
}

.file-upload-layout {
  display: grid;
  grid-template-columns: minmax(320px, 1fr) minmax(260px, .42fr);
  gap: 14px;
  align-items: stretch;
}

.file-drop-zone {
  display: flex;
  align-items: center;
  gap: 14px;
  min-height: 112px;
  border: 1px dashed #8fb5d3;
  border-radius: var(--radius);
  background: #ffffff;
  padding: 18px;
  color: var(--text);
  cursor: pointer;
  transition: border-color .16s ease, background .16s ease, box-shadow .16s ease;
}

.file-drop-zone:hover,
.file-drop-zone.is-dragover {
  border-color: var(--primary);
  background: #eef6fb;
  box-shadow: 0 12px 24px rgba(15, 23, 42, .08);
}

.file-drop-zone input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.file-drop-icon {
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  flex: 0 0 46px;
  border-radius: 12px;
  background: #e7f1f8;
  color: var(--primary);
}

.file-drop-icon svg {
  width: 24px;
  height: 24px;
}

.file-drop-copy {
  display: grid;
  gap: 4px;
}

.file-drop-copy strong {
  font-size: 15px;
  color: var(--text);
}

.file-drop-copy small {
  color: var(--muted);
  font-weight: 700;
}

.file-current-box {
  display: grid;
  align-content: center;
  gap: 8px;
  min-height: 112px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 16px;
}

.file-current-label {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.file-current-box strong {
  overflow-wrap: anywhere;
}

.check-sections {
  display: grid;
  gap: 12px;
}

.check-group {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #f8fafc;
  padding: 13px;
}

.check-group legend {
  padding: 0 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .02em;
  text-transform: uppercase;
}

.check-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.check-list label {
  min-height: 34px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: #ffffff;
  color: #334155;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 6px 10px;
  text-transform: none;
}

.check-list input {
  margin: 0;
}

.switch-list {
  gap: 10px;
}

.check-list .switch-option {
  position: relative;
  min-height: 40px;
  border-radius: var(--radius);
  padding: 8px 12px 8px 9px;
  gap: 10px;
}

.switch-option input[type="checkbox"] {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.switch-option input[type="hidden"] {
  display: none;
}

.switch-toggle {
  position: relative;
  width: 40px;
  height: 22px;
  flex: 0 0 auto;
  border: 1px solid #b8c6d4;
  border-radius: 999px;
  background: #cbd5e1;
  transition: background .16s ease, border-color .16s ease;
}

.switch-toggle::after {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 2px 6px rgba(15, 23, 42, .28);
  transition: transform .16s ease;
}

.switch-option input[type="checkbox"]:checked ~ .switch-toggle {
  border-color: var(--primary);
  background: var(--primary);
}

.switch-option input[type="checkbox"]:checked ~ .switch-toggle::after {
  transform: translateX(18px);
}

.switch-option input[type="checkbox"]:focus-visible ~ .switch-toggle {
  outline: 3px solid rgba(31, 95, 139, .22);
  outline-offset: 2px;
}

.notification-preferences-form {
  margin-top: 16px;
}

.notification-switch-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 10px;
}

.notification-switch-grid .switch-option {
  justify-content: flex-start;
  min-width: 0;
}

.tutored-notification-list {
  display: grid;
  gap: 12px;
}

.tutored-notification-card {
  display: grid;
  gap: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 14px;
}

.tutored-notification-heading {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 14px;
}

.tutored-notification-heading strong,
.tutored-notification-heading span {
  display: block;
}

.tutored-notification-heading strong {
  color: var(--text);
  font-size: 16px;
  line-height: 1.2;
}

.tutored-notification-heading span {
  margin-top: 3px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.role-checks label {
  border-radius: var(--radius);
}

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

.is-selected-row td {
  background: var(--primary-soft);
}

.app-shell th.table-actions-heading,
.app-shell td.table-actions-cell {
  width: 1%;
  text-align: right;
  white-space: nowrap;
}

.table-actions,
.order-actions {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}

.order-actions {
  gap: 4px;
}

.pagination {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  padding-top: 14px;
}

.page-link {
  min-width: 38px;
  min-height: 36px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 7px 11px;
  font-size: 13px;
  font-weight: 800;
  text-decoration: none;
}

.page-link.is-active {
  border-color: var(--primary);
  background: var(--primary);
  color: #ffffff;
}

.page-link.is-disabled {
  opacity: .45;
  pointer-events: none;
}

.inline-form,
.inner-form {
  margin: 0;
}

.inner-form {
  display: grid;
  gap: 14px;
}

.danger-link {
  color: var(--red);
}

.check-inline {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  color: var(--text);
  background: #ffffff;
  text-transform: none;
}

.form-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}

.form-actions.align-right {
  justify-content: flex-end;
}

.form-actions .button {
  flex: 0 0 auto;
}

.action-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 10px;
}

.modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(15, 23, 42, .46);
}

.modal-backdrop[hidden] {
  display: none;
}

.modal-panel {
  width: min(680px, 100%);
  max-height: min(760px, calc(100vh - 48px));
  overflow: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: 0 28px 70px rgba(15, 23, 42, .28);
}

.modal-panel-small {
  width: min(460px, 100%);
}

.page-help-button {
  position: fixed;
  right: 22px;
  bottom: 22px;
  z-index: 920;
  min-height: 42px;
  border: 1px solid #b9d0e3;
  border-radius: 999px;
  background: var(--primary);
  color: #ffffff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 16px;
  font-weight: 900;
  box-shadow: 0 14px 30px rgba(31, 95, 139, .28);
}

.page-help-button svg {
  width: 19px;
  height: 19px;
}

.page-help-panel {
  width: min(940px, 100%);
}

.page-help-header .section-title svg {
  color: var(--primary);
}

.page-help-body {
  display: grid;
  gap: 16px;
  padding: 18px;
}

.page-help-summary {
  margin: 0;
  color: #334155;
  font-size: 16px;
}

.page-help-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.page-help-block,
.page-help-tips,
.page-help-related {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #f8fafc;
  padding: 14px;
}

.page-help-block h3,
.page-help-tips h3,
.page-help-related h3 {
  margin: 0 0 10px;
  display: flex;
  align-items: center;
  gap: 8px;
  color: #0f2740;
  font-size: 16px;
}

.page-help-block h3 svg,
.page-help-tips h3 svg,
.page-help-related h3 svg {
  width: 18px;
  height: 18px;
  color: var(--primary);
}

.page-help-block ul,
.page-help-block ol,
.page-help-tips ul,
.page-help-related ul {
  margin: 0;
  padding-left: 20px;
  color: #42526e;
}

.page-help-block li,
.page-help-tips li,
.page-help-related li {
  margin: 7px 0;
}

.page-help-tips {
  background: #fffaf0;
  border-color: #f6d58f;
}

.page-help-related {
  background: #f8fbff;
}

.legal-modal-panel {
  width: min(820px, 100%);
}

.legal-page {
  min-height: 100vh;
  background: #f3f6fa;
}

.legal-container {
  width: min(1180px, calc(100% - 48px));
  margin: 0 auto;
}

.legal-hero-band {
  background:
    linear-gradient(90deg, rgba(15, 39, 60, .95), rgba(31, 95, 139, .82)),
    #1f5f8b;
  color: #ffffff;
  padding: 34px 0 38px;
  border-bottom: 1px solid rgba(255, 255, 255, .16);
}

.legal-breadcrumb {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 18px;
  color: rgba(255, 255, 255, .78);
  font-size: 13px;
  font-weight: 800;
}

.legal-breadcrumb a {
  color: #ffffff;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.legal-kicker {
  display: inline-flex;
  width: fit-content;
  border: 1px solid rgba(255, 255, 255, .28);
  border-radius: 999px;
  padding: 5px 11px;
  margin-bottom: 12px;
  color: rgba(255, 255, 255, .9);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.legal-hero-band h1 {
  margin: 0;
  font-size: clamp(34px, 5vw, 58px);
  line-height: 1;
  letter-spacing: 0;
}

.legal-hero-band p {
  max-width: 850px;
  margin: 14px 0 0;
  color: rgba(255, 255, 255, .9);
  font-size: 18px;
}

.legal-updated {
  display: block;
  margin-top: 18px;
  color: rgba(255, 255, 255, .72);
  font-size: 13px;
  font-weight: 800;
}

.legal-layout {
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
  gap: 22px;
  align-items: start;
  padding: 28px 0 44px;
}

.legal-side-nav {
  position: sticky;
  top: 16px;
  display: grid;
  gap: 14px;
}

.legal-side-card {
  display: grid;
  gap: 8px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 16px;
  box-shadow: 0 10px 24px rgba(31, 41, 51, .07);
}

.legal-side-card strong {
  color: #0f2740;
  font-size: 16px;
}

.legal-side-card a {
  display: block;
  border-radius: 6px;
  padding: 8px 10px;
  color: #1f5f8b;
  font-weight: 850;
}

.legal-side-card a:hover {
  background: var(--primary-soft);
}

.legal-contact-card span {
  color: #42526e;
}

.legal-document {
  display: grid;
  gap: 18px;
}

.legal-section {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 22px;
  box-shadow: 0 12px 26px rgba(31, 41, 51, .06);
}

.legal-section h2 {
  margin: 0 0 12px;
  color: #0f2740;
  font-size: 22px;
  line-height: 1.2;
}

.legal-section p {
  margin: 0;
  color: #334155;
}

.legal-section p + p,
.legal-section p + .legal-purpose-grid,
.legal-section p + .legal-table,
.legal-section p + .legal-check-list {
  margin-top: 12px;
}

.legal-section a {
  color: var(--primary);
  font-weight: 850;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.legal-definition-list {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  gap: 10px 18px;
  margin: 0;
}

.legal-definition-list dt {
  color: #0f2740;
  font-weight: 900;
}

.legal-definition-list dd {
  margin: 0;
  min-width: 0;
  color: #334155;
}

.legal-check-list {
  margin: 0;
  padding-left: 20px;
  color: #334155;
}

.legal-check-list li {
  margin: 8px 0;
}

.legal-purpose-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.legal-purpose-grid > div {
  border: 1px solid #cbd8e5;
  border-radius: var(--radius);
  background: #f8fbff;
  padding: 14px;
}

.legal-purpose-grid strong {
  display: block;
  color: #0f2740;
  margin-bottom: 5px;
}

.legal-purpose-grid span {
  color: #42526e;
  font-size: 14px;
}

.legal-muted {
  color: var(--muted) !important;
  font-size: 14px;
}

.legal-table.legal-cookie-table > div {
  grid-template-columns: minmax(0, 1.15fr) 104px minmax(0, 1.7fr) minmax(0, 1.05fr);
  align-items: start;
}

.legal-table > div > * {
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: normal;
}

.legal-table.legal-cookie-table > div > :nth-child(2) {
  overflow-wrap: normal;
  white-space: nowrap;
}

.legal-table.legal-cookie-table > div:first-child > * {
  white-space: normal;
}

.cookie-preference-panel {
  display: grid;
  gap: 14px;
}

.legal-contact-form {
  display: grid;
  gap: 14px;
  margin-top: 16px;
}

.legal-contact-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.legal-contact-grid textarea {
  min-height: 150px;
}

.contact-captcha-field {
  max-width: 340px;
}

.contact-captcha-question {
  display: inline-flex;
  width: fit-content;
  border: 1px solid #cbd8e5;
  border-radius: 6px;
  background: #f8fbff;
  color: #0f2740;
  padding: 7px 9px;
  font-size: 13px;
  font-weight: 900;
  text-transform: none;
}

.legal-form-note {
  display: grid;
  gap: 3px;
  border: 1px solid #cbd8e5;
  border-radius: var(--radius);
  background: #f8fbff;
  color: #42526e;
  padding: 12px;
  font-size: 13px;
}

.legal-form-note strong {
  color: #0f2740;
}

.contact-hp {
  position: absolute;
  left: -10000px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.error-page {
  min-height: calc(100vh - 72px);
  display: grid;
  place-items: center;
  padding: 46px 20px;
  background:
    linear-gradient(135deg, rgba(31, 95, 139, .10), rgba(47, 133, 90, .08)),
    var(--bg);
}

.error-panel {
  width: min(760px, 100%);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 20px;
  align-items: start;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  box-shadow: var(--shadow);
  padding: clamp(24px, 4vw, 38px);
}

.error-icon {
  width: 58px;
  height: 58px;
  border-radius: 16px;
  display: grid;
  place-items: center;
  background: #fff7df;
  color: #9a5b00;
}

.error-icon svg {
  width: 30px;
  height: 30px;
}

.error-kicker {
  display: block;
  color: var(--primary);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
  margin-bottom: 6px;
}

.error-panel h1 {
  margin: 0 0 10px;
  color: #0f2740;
  font-size: clamp(32px, 5vw, 48px);
  line-height: 1;
}

.error-panel p {
  margin: 0;
  color: #334155;
}

.error-muted {
  margin-top: 10px !important;
  color: var(--muted) !important;
}

.error-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 20px;
}

.legal-copy {
  display: grid;
  gap: 14px;
  padding: 18px;
  color: #334155;
}

.legal-copy p,
.legal-copy ul,
.legal-copy dl {
  margin: 0;
}

.legal-copy ul {
  padding-left: 20px;
}

.legal-copy li {
  margin: 7px 0;
}

.legal-copy dl {
  display: grid;
  grid-template-columns: 170px minmax(0, 1fr);
  gap: 10px 18px;
}

.legal-copy dt {
  color: #0f2740;
  font-weight: 900;
}

.legal-copy dd {
  margin: 0;
}

.legal-copy a {
  color: var(--primary);
  font-weight: 800;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.legal-table {
  display: grid;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
}

.legal-table > div {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr) 190px;
  gap: 12px;
  padding: 12px;
  border-bottom: 1px solid var(--border);
}

.legal-table > div:first-child {
  background: #f8fafc;
  color: #475569;
  font-size: 12px;
  text-transform: uppercase;
}

.legal-table > div:last-child {
  border-bottom: 0;
}

.cookie-banner {
  position: fixed;
  left: 24px;
  right: 24px;
  bottom: 24px;
  z-index: 940;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 18px;
  align-items: center;
  border: 1px solid #c6d6e4;
  border-radius: var(--radius);
  background: #ffffff;
  box-shadow: 0 20px 46px rgba(15, 23, 42, .22);
  padding: 16px;
}

.cookie-banner[hidden] {
  display: none;
}

.cookie-banner strong {
  display: block;
  color: #0f2740;
  font-size: 18px;
  margin-bottom: 3px;
}

.cookie-banner p {
  margin: 0;
  color: #42526e;
}

.cookie-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 10px;
}

.cookie-settings-form {
  gap: 14px;
}

.cookie-setting-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 138px;
  gap: 18px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #f8fafc;
  padding: 12px;
  text-transform: none;
  cursor: pointer;
}

.cookie-setting-row > div {
  min-width: 0;
}

.cookie-setting-row strong {
  display: block;
  color: #0f2740;
  font-size: 15px;
  line-height: 1.25;
  text-transform: none;
}

.cookie-setting-row p {
  margin: 3px 0 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.35;
  font-weight: 400;
  text-transform: none;
}

.cookie-switch-control {
  justify-self: end;
  min-width: 126px;
  min-height: 42px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: #ffffff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  padding: 8px 12px;
  color: #0f2740;
  font-weight: 900;
  text-transform: none;
  white-space: nowrap;
}

.legal-inline-note {
  border: 1px solid #f6d58f;
  border-radius: var(--radius);
  background: #fffaf0;
  color: #5f420b;
  padding: 10px 12px;
  font-size: 13px;
}

.app-confirm-modal .modal-header {
  border-bottom: 0;
}

.app-confirm-modal .section-title p {
  max-width: 360px;
}

.modal-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  border-bottom: 1px solid var(--border);
  padding: 18px;
}

.modal-form {
  display: grid;
  gap: 16px;
  padding: 18px;
}

.danger-button {
  background: #fde8e8;
  border-color: #f3b3b3;
  color: var(--red);
}

.delete-panel {
  margin-top: 14px;
  border-color: #f3b3b3;
}

.table-scroll {
  overflow-x: auto;
}

.app-shell table {
  width: 100%;
  border-collapse: collapse;
  min-width: 720px;
}

.app-shell th,
.app-shell td {
  padding: 12px 14px;
  text-align: left;
  border-bottom: 1px solid var(--border);
  vertical-align: middle;
}

.app-shell th {
  background: #f8fafc;
  color: #475569;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0;
}

.app-shell tr:last-child td {
  border-bottom: 0;
}

.screen-anchor {
  scroll-margin-top: 92px;
}

.app-placeholder {
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 18px;
}

.task-filter-grid .maintenance-filter-fields {
  grid-template-columns: repeat(4, minmax(170px, 1fr));
}

.task-edit-grid {
  grid-template-columns: minmax(260px, 1.2fr) minmax(180px, .45fr) minmax(140px, .28fr);
}

.task-table-panel .tasks-table th:first-child,
.task-table-panel .tasks-table td:first-child {
  min-width: 260px;
}

.attachment-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}

.attachment-list.compact {
  margin-top: 0;
}

.attachment-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 34px;
  max-width: 100%;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: #ffffff;
  color: var(--text);
  font-weight: 800;
  padding: 6px 10px;
  text-decoration: none;
}

.attachment-chip:hover {
  border-color: var(--primary);
  color: var(--primary);
}

.attachment-chip svg {
  width: 16px;
  height: 16px;
  flex: 0 0 auto;
}

.review-inline-form {
  display: grid;
  grid-template-columns: 130px minmax(180px, 1fr) auto;
  gap: 8px;
  align-items: center;
}

.alert-center-content {
  gap: 18px;
}

.alert-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(150px, 1fr));
  gap: 12px;
  margin: 0;
}

.alert-summary-grid .kpi-card {
  min-height: 86px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  color: var(--text);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "label value"
    "detail value";
  gap: 2px 12px;
  align-items: center;
  padding: 14px 16px;
  text-decoration: none;
  box-shadow: 0 10px 22px rgba(31, 41, 51, .06);
  transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}

.alert-summary-grid .kpi-card:hover {
  border-color: var(--primary);
  box-shadow: 0 14px 28px rgba(31, 41, 51, .1);
  transform: translateY(-1px);
}

.alert-summary-grid .kpi-card span {
  grid-area: label;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .02em;
  text-transform: uppercase;
}

.alert-summary-grid .kpi-card strong {
  grid-area: value;
  color: var(--primary-dark);
  font-size: 32px;
  line-height: 1;
  justify-self: end;
}

.alert-summary-grid .kpi-card small {
  grid-area: detail;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.alert-summary-grid .kpi-card.danger {
  border-color: #f3b3b3;
  background: #fff7f7;
}

.alert-summary-grid .kpi-card.danger strong {
  color: var(--red);
}

.alert-summary-grid .kpi-card.warning {
  border-color: #f3d28c;
  background: #fffaf0;
}

.alert-summary-grid .kpi-card.warning strong {
  color: var(--amber);
}

.alert-summary-grid .kpi-card.info {
  border-color: #b9d7ec;
  background: #f5fbff;
}

.alert-summary-grid .kpi-card.info strong {
  color: var(--primary);
}

.alert-card-list {
  display: grid;
  gap: 14px;
}

.smart-alert-card .panel-body {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}

.smart-alert-content {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  min-width: 0;
}

.smart-alert-content h2 {
  margin: 0 0 4px;
  font-size: 18px;
}

.smart-alert-content p {
  margin: 0;
  color: var(--muted);
}

.smart-alert-icon {
  width: 42px;
  height: 42px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--panel-muted);
  color: var(--primary);
  flex: 0 0 auto;
}

.smart-alert-action {
  display: flex;
  align-items: center;
  gap: 14px;
  flex: 0 0 auto;
}

.smart-alert-action strong {
  font-size: 26px;
  color: var(--text);
}

.smart-alert-card.critical {
  border-color: #f5b7b1;
}

.smart-alert-card.warn {
  border-color: #f7d28d;
}

.smart-alert-card.info {
  border-color: #bdd7ee;
}

.split-layout {
  display: grid;
  grid-template-columns: minmax(280px, .42fr) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}

.template-selector {
  color: inherit;
  text-decoration: none;
}

.template-selector.is-active {
  border-color: var(--primary);
  background: var(--primary-soft);
}

.template-selector-link {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  color: inherit;
  text-decoration: none;
}

.template-selector-link:hover strong,
.template-selector-link:focus-visible strong {
  color: var(--primary-dark);
}

.template-test-button {
  justify-self: end;
}

.enrollment-report-layout {
  grid-template-columns: minmax(320px, .55fr) minmax(0, 1fr);
}

.report-config-section {
  padding-top: 4px;
}

.report-config-section + .report-config-section {
  border-top: 1px solid var(--border);
  padding-top: 26px;
}

.report-section-header {
  align-items: flex-end;
}

.report-active-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.report-active-card {
  display: grid;
  gap: 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 16px;
  box-shadow: var(--shadow-soft);
}

.report-active-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
}

.report-empty-state {
  margin: 0;
}

.report-active-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 10px;
  border-top: 1px solid var(--border);
  padding-top: 14px;
}

.active-report-card {
  display: grid;
  gap: 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #f8fafc;
  padding: 14px;
}

.active-report-card strong,
.active-report-card span,
.active-report-card small {
  display: block;
}

.active-report-card > div span,
.active-report-card small {
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.warning-line {
  margin: 0;
  color: var(--amber);
  font-weight: 800;
}

.enrollment-report-form-grid {
  grid-template-columns: minmax(260px, 1fr) minmax(180px, .45fr) minmax(150px, max-content);
}

.report-history-list {
  display: grid;
  gap: 12px;
}

.report-history-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 12px;
}

.report-history-item strong,
.report-history-item span,
.report-history-item small {
  display: block;
}

.report-history-item span,
.report-history-item small {
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.maintenance-search-form {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) minmax(180px, .28fr) auto auto;
  gap: 10px;
  align-items: center;
}

.audit-search-main {
  grid-template-columns: minmax(360px, 1fr) minmax(220px, 280px) max-content;
}

.audit-area-filter {
  min-width: 0;
}

.fixed-clear-button {
  min-width: 150px;
  justify-content: center;
}

.table-text-clamp {
  max-width: 520px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.review-inline-form textarea,
.task-submit-form textarea,
.task-edit-grid textarea {
  resize: vertical;
}

.task-submission-text {
  max-width: 360px;
  white-space: pre-wrap;
  word-break: break-word;
}

.task-card-list {
  display: grid;
  gap: 14px;
}

.task-card {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 16px;
  box-shadow: var(--shadow-soft);
}

.task-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
}

.task-card-header h2 {
  margin: 0;
  font-size: 20px;
}

.task-card-header p,
.task-card-meta,
.task-description {
  color: var(--muted);
  line-height: 1.45;
}

.task-card-header p {
  margin: 4px 0 0;
}

.task-card-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 12px;
  font-size: 13px;
  font-weight: 800;
}

.task-card-meta span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.task-card-meta svg {
  width: 16px;
  height: 16px;
}

.task-description {
  margin: 14px 0 0;
  white-space: pre-wrap;
}

.task-submission-panel {
  margin-top: 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #f8fafc;
  padding: 12px;
}

.task-submission-panel h3 {
  margin: 0;
  font-size: 16px;
}

.task-submission-panel p,
.task-submit-form {
  margin-top: 12px;
}

.task-submit-form {
  display: grid;
  gap: 12px;
}

.file-drop-zone.compact {
  min-height: 76px;
  padding: 12px;
}

.file-drop-zone.compact .file-drop-icon {
  width: 38px;
  height: 38px;
  flex-basis: 38px;
}

.task-status-toggle {
  flex-wrap: wrap;
}

@media (max-width: 1180px) {
  .app-shell {
    grid-template-columns: 1fr;
  }

  .sidebar {
    position: static;
    height: auto;
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }

  .nav-group {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .nav-label {
    grid-column: 1 / -1;
  }

  .sidebar-footer {
    display: none;
  }

  .metrics {
    grid-template-columns: repeat(3, minmax(150px, 1fr));
  }

  .module-grid,
  .record-grid,
  .admin-users-layout,
  .dashboard-calendar-layout,
  .family-dashboard-bottom-grid,
  .teacher-stats-grid,
  .admin-summary-strip,
  .alert-summary-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .app-shell .dashboard-grid,
  .split,
  .stats-dashboard-grid,
  .statistics-filter,
  .statistics-grid,
  .task-edit-grid,
  .profile-strip,
  .password-change-card {
    grid-template-columns: 1fr;
  }

  .family-dashboard-bottom-grid,
  .family-dashboard-primary-column .dashboard-task-panel {
    grid-template-columns: 1fr;
  }

  .quick-date {
    min-width: 0;
  }
}

@media (max-width: 760px) {
  .topbar {
    position: static;
    padding: 14px 16px;
    align-items: flex-start;
    flex-direction: column;
  }

  .top-actions {
    width: 100%;
    overflow-x: auto;
    padding-bottom: 2px;
  }

  .content {
    padding: 18px 14px 28px;
  }

  .nav-group {
    grid-template-columns: 1fr 1fr;
  }

  .metrics {
    grid-template-columns: 1fr 1fr;
  }

  #resumen {
    grid-template-columns: 1fr;
  }

  .module-grid,
  .module-grid.compact,
  .record-grid,
  .stats-summary,
  .alert-summary-grid,
  .stats-dashboard-grid,
  .statistics-filter,
  .statistics-grid,
  .admin-users-layout,
  .dashboard-calendar-layout,
  .family-dashboard-bottom-grid,
  .teacher-stats-grid,
  .admin-summary-strip,
  .admin-search,
  .maintenance-search-main,
  .maintenance-filter-panel,
  .maintenance-filter-grid,
  .maintenance-filter-fields,
  .message-search-main,
  .message-filter-panel,
  .message-filter-grid,
  .message-filter-fields,
  .message-layout,
  .absence-summary-strip,
  .absence-card,
  .teacher-today-tutorials,
  .teacher-pending-messages,
  .family-dashboard-primary-column,
  .family-library-search,
  .library-management-search-main,
  .library-management-filter-fields,
  .circular-document-item,
  .family-event-item,
  .library-card-grid,
  .dashboard-task-panel,
  .library-card,
  .file-upload-layout,
  .maintenance-options-grid,
  .tutorials-layout,
  .tutorial-create-grid,
  .evaluation-filter-grid,
  .evaluation-modal-meta,
  .tutorial-slot-card,
  .tutorial-recent-item,
  .teacher-groups-layout,
  .teacher-group-list,
  .stat-bar-row,
  .progress-row,
  .course-stat-row,
  .stats-line-row,
  .grade-history-compact .stats-line-row,
  .info-grid,
  .form-grid,
  .password-fields,
  .report-active-grid,
  .report-history-item {
    grid-template-columns: 1fr;
  }

  .circular-poster-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .notification-worker-card {
    grid-template-columns: 1fr;
  }

  .notification-help-params {
    grid-template-columns: 1fr;
  }

  .dashboard-news-row {
    grid-template-columns: 34px minmax(0, 1fr) auto;
  }

  .dashboard-news-date {
    grid-column: 2;
    text-align: left;
  }

  .dashboard-news-status {
    grid-column: 3;
    grid-row: 1;
  }

  .family-event-date {
    min-height: 72px;
  }

  .document-mini-link {
    max-width: 100%;
  }

  .task-filter-grid .maintenance-filter-fields,
  .stats-line-list-split,
  .month-compact-list,
  .review-inline-form,
  .task-card-header {
    grid-template-columns: 1fr;
  }

  .task-card-header {
    flex-direction: column;
  }

  .mail-settings-grid > label,
  .legacy-import-grid > label {
    grid-column: 1 / -1;
  }

  .import-summary-grid {
    grid-template-columns: 1fr 1fr;
  }

  .teacher-group-list-wide .teacher-group-link {
    grid-template-columns: 1fr;
  }

  .teacher-group-link b {
    justify-self: start;
  }

  .absence-card-actions {
    min-width: 0;
    justify-items: stretch;
  }

  .absence-date-tile {
    min-height: 72px;
  }

  .view-toggle {
    width: 100%;
  }

  .view-toggle .button {
    flex: 1 1 0;
    justify-content: center;
  }

  .maintenance-filter-actions {
    justify-content: flex-start;
  }

  .maintenance-search-actions {
    justify-content: flex-start;
  }

  .message-filter-actions {
    justify-content: flex-start;
  }

  .message-bubble {
    width: 100%;
  }

  .teacher-today-tutorials-actions {
    justify-content: flex-start;
  }

  .teacher-pending-messages-actions {
    justify-content: flex-start;
  }

  .dashboard-task-actions {
    justify-content: flex-start;
  }

  .filter-panel-title {
    border-right: 0;
    border-bottom: 1px solid var(--border);
    padding: 0 0 10px;
  }

  .maintenance-edit-grid > label {
    grid-column: 1 / -1;
  }

  .metric {
    min-height: 108px;
  }

  .timeline-item {
    grid-template-columns: 1fr;
    align-items: start;
  }

  .section-header {
    align-items: flex-start;
    flex-direction: column;
  }

  .section-actions {
    justify-content: flex-start;
  }

  .stats-panel-heading,
  .stats-block-title {
    align-items: flex-start;
    flex-direction: column;
  }

  .panel-title-row,
  .compact-filter {
    align-items: stretch;
    flex-direction: column;
  }

  .compact-filter select {
    width: 100%;
  }

  .related-item {
    grid-template-columns: 1fr;
  }

  .related-item .inline-form {
    justify-self: start;
  }

  .agenda-item {
    grid-template-columns: 1fr;
    align-items: start;
  }

  .agenda-meta {
    justify-items: start;
  }

  .month-trend-row,
  .enrollment-year-row,
  .grade-trend-row,
  .attendance-day-row,
  .access-day-row {
    grid-template-columns: 1fr;
  }

  .stats-block-title span {
    text-align: left;
  }

  .statistics-filter-actions {
    justify-content: flex-start;
  }

  .attendance-day-values {
    justify-items: start;
  }

  .attendance-modal-row,
  .modal-footer-actions {
    grid-template-columns: 1fr;
  }

  .attendance-modal-state {
    justify-items: start;
  }

  .modal-footer-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .bar-row {
    grid-template-columns: 70px minmax(0, 1fr) 34px;
  }
}

@media (max-width: 520px) {
  .circular-poster-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 460px) {
  .metrics,
  .nav-group {
    grid-template-columns: 1fr;
  }
}

.auth-main {
  min-height: calc(100vh - 72px);
  background: linear-gradient(180deg, #eef4f8 0, #f5f7fa 48%);
  padding: 40px clamp(18px, 4vw, 52px) 58px;
}

.auth-shell {
  width: min(880px, 100%);
  margin: 0 auto;
}

.auth-panel {
  background: #ffffff;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: clamp(22px, 4vw, 34px);
  display: grid;
  gap: 22px;
}

.auth-copy {
  display: grid;
  gap: 12px;
  max-width: 680px;
}

.auth-copy h1 {
  color: var(--text);
  font-size: clamp(32px, 4vw, 44px);
  line-height: 1.05;
}

.auth-copy p {
  margin: 0;
  color: #4f6785;
  font-size: 16px;
}

.recovery-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.recovery-form .form-alert,
.auth-actions {
  grid-column: 1 / -1;
}

.recovery-form .full {
  grid-column: 1 / -1;
}

.auth-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  align-items: center;
}

.auth-notice {
  border: 1px solid #bfdbfe;
  border-radius: var(--radius);
  background: #eff6ff;
  color: #1e3a5f;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px;
  padding: 12px 14px;
}

.auth-notice svg {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  color: var(--primary);
}

.auth-notice p {
  margin: 0;
  font-size: 13px;
  line-height: 1.5;
}

.site-footer {
  border-top: 1px solid rgba(15, 23, 42, .25);
  background: #24384a;
  color: #cbd5e1;
}

.footer-inner {
  width: min(1180px, 100%);
  margin: 0 auto;
  padding: 32px clamp(18px, 4vw, 52px) 0;
}

.footer-grid {
  display: grid;
  grid-template-columns: minmax(260px, .95fr) minmax(260px, 1fr) minmax(230px, .8fr);
  gap: 28px;
  align-items: start;
}

.footer-brand-block {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.footer-title {
  display: block;
  color: #ffffff;
  font-size: 18px;
  font-weight: 900;
  margin-bottom: 6px;
}

.footer-text {
  margin: 0;
  font-size: 13px;
  line-height: 1.55;
  max-width: 310px;
  color: #d7e2ed;
}

.manchanet-link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 10px 12px;
  background: #ffffff;
  min-width: 0;
  width: fit-content;
  box-shadow: 0 12px 24px rgba(0, 0, 0, .18);
}

.manchanet-link span {
  color: #64748b;
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
}

.manchanet-link img {
  width: 140px;
  max-width: 100%;
  height: auto;
  display: block;
}

.footer-section h2 {
  margin: 0 0 12px;
  color: #ffffff;
  font-size: 13px;
  font-weight: 900;
  text-transform: uppercase;
}

.footer-contact-list,
.footer-legal-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.footer-contact-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 13px;
  line-height: 1.45;
}

.footer-contact-list li {
  display: grid;
  grid-template-columns: 86px 1fr;
  gap: 10px;
}

.footer-contact-list b {
  color: #9fb3c8;
  font-size: 12px;
  text-transform: uppercase;
}

.footer-contact-list a,
.footer-legal-list a {
  color: #ffffff;
  font-weight: 800;
}

.footer-contact-list a:hover,
.footer-legal-list a:hover {
  color: #93c5fd;
}

.footer-legal-list {
  columns: 2;
  column-gap: 22px;
  font-size: 13px;
}

.footer-legal-list li {
  break-inside: avoid;
  margin-bottom: 10px;
}

.footer-bottom {
  margin-top: 28px;
  border-top: 1px solid rgba(255, 255, 255, .14);
  padding: 14px 0 18px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  color: #b7c5d4;
  font-size: 12px;
  line-height: 1.45;
}

.footer-bottom p {
  margin: 0;
}

.footer-bottom strong {
  color: #ffffff;
}

@media (max-width: 980px) {
  .hero-top {
    grid-template-columns: minmax(0, 1fr) minmax(190px, 230px);
    gap: 18px;
  }

  .english-visual {
    width: min(100%, 230px);
  }

  .access-strip,
  .news-layout,
  .footer-grid,
  .dashboard-grid,
  .metric-grid,
  .portal-grid,
  .legal-layout {
    grid-template-columns: 1fr;
  }

  .legal-side-nav {
    position: static;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .legal-side-card:first-child {
    grid-column: 1 / -1;
  }

  .credentials-row {
    grid-template-columns: 1fr;
  }

  .role-options {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .footer-bottom,
  .dashboard-heading,
  .enrollment-strip {
    align-items: flex-start;
    flex-direction: column;
  }

  .enrollment-strip > div {
    justify-content: flex-start;
  }

  .hero-content {
    padding-top: 30px;
  }
}

@media (max-width: 680px) {
  .site-header {
    align-items: flex-start;
    flex-direction: column;
  }

  .header-actions {
    width: 100%;
    overflow-x: auto;
    padding-bottom: 2px;
  }

  h1 {
    font-size: 42px;
  }

  .hero-logo-title {
    width: min(100%, 390px);
  }

  .hero-top {
    grid-template-columns: 1fr;
  }

  .english-visual {
    justify-self: start;
    width: min(100%, 280px);
  }

  .role-options {
    grid-template-columns: 1fr;
  }

  .recovery-form {
    grid-template-columns: 1fr;
  }

  .news-item {
    grid-template-columns: 1fr;
  }

  .footer-contact-list li {
    grid-template-columns: 1fr;
    gap: 2px;
  }

  .footer-legal-list {
    columns: 1;
  }

  .page-help-grid {
    grid-template-columns: 1fr;
  }

  .legal-copy dl,
  .legal-definition-list,
  .legal-purpose-grid,
  .error-panel,
  .legal-table > div,
  .legal-cookie-table > div,
  .cookie-banner,
  .cookie-setting-row {
    grid-template-columns: 1fr;
  }

  .legal-container {
    width: min(100% - 28px, 1180px);
  }

  .legal-hero-band {
    padding: 26px 0 30px;
  }

  .legal-hero-band p {
    font-size: 16px;
  }

  .legal-section {
    padding: 18px;
  }

  .legal-side-nav {
    grid-template-columns: 1fr;
  }

  .cookie-actions {
    justify-content: stretch;
  }

  .cookie-actions .button {
    flex: 1 1 150px;
  }

  .cookie-switch-control {
    justify-self: start;
  }

  .evaluation-diploma-card {
    grid-template-columns: 1fr;
  }

  .evaluation-diploma-visual {
    min-height: 150px;
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }

  .evaluation-diploma-actions {
    justify-content: stretch;
  }

  .evaluation-diploma-actions .inline-action {
    justify-content: center;
    width: 100%;
  }
}
