:root {
  --navy: #123552;
  --blue: #1465a3;
  --sky: #eaf4f8;
  --yellow: #ffd717;
  --coral: #ef5b43;
  --green: #4d8c70;
  --ink: #16324a;
  --muted: #607383;
  --line: #d6e1e7;
  --paper: #fff;
  --cream: #f8f5ef;
  --shadow: 0 22px 65px rgba(18, 53, 82, .12);
  --serif: Georgia, 'Times New Roman', serif;
  --sans: 'Segoe UI', Inter, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
}

* { box-sizing: border-box; }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
html { scroll-behavior: smooth; }
body { margin: 0; background: #f2f6f7; color: var(--ink); font-family: var(--sans); line-height: 1.55; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; }
img { max-width: 100%; height: auto; }
.man-container { width: min(1180px, calc(100% - 40px)); margin-inline: auto; }
.skip-link { position: fixed; z-index: 1000; left: 12px; top: -80px; padding: 10px 16px; background: var(--yellow); color: var(--navy); font-weight: 700; border-radius: 8px; }
.skip-link:focus { top: 12px; }
.man-header { position: relative; z-index: 5; background: rgba(255,255,255,.96); border-bottom: 1px solid var(--line); }
.man-header__inner { min-height: 88px; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.man-brand { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; }
.man-brand img { width: 54px; height: 54px; object-fit: contain; }
.man-brand span { display: grid; line-height: 1.08; }
.man-brand strong { font-family: var(--serif); font-size: 1.18rem; }
.man-brand small { margin-top: 5px; color: var(--blue); text-transform: uppercase; letter-spacing: .22em; font-size: .7rem; }
.man-header__back { color: var(--navy); text-decoration: none; font-size: .88rem; font-weight: 600; }
.man-header__back span { margin-right: 6px; }

.form-hero { overflow: hidden; background: var(--navy); color: white; }
.form-hero__grid { min-height: 440px; display: grid; grid-template-columns: 1.25fr .75fr; align-items: center; gap: 64px; padding-block: 70px; }
.eyebrow { margin: 0 0 14px; color: var(--yellow); font-size: .76rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; }
.eyebrow--blue { color: var(--blue); }
.form-hero h1, .confirmation-card h1 { margin: 0; font-family: var(--serif); font-size: clamp(2.7rem, 5vw, 5rem); line-height: .98; letter-spacing: -.04em; }
.form-hero h1 span { color: var(--yellow); }
.form-hero__lead { max-width: 680px; margin: 28px 0; color: #dce9ef; font-size: 1.08rem; }
.form-hero__facts { display: flex; flex-wrap: wrap; gap: 12px; }
.form-hero__facts span { padding: 10px 15px; border: 1px solid rgba(255,255,255,.2); border-radius: 999px; color: #dce9ef; font-size: .83rem; }
.form-hero__facts strong { color: white; }
.form-hero__visual { position: relative; min-height: 300px; display: grid; place-items: center; text-align: center; isolation: isolate; }
.form-hero__visual::before, .form-hero__visual::after { content: ''; position: absolute; border-radius: 50%; border: 1px solid rgba(255,255,255,.12); z-index: -1; }
.form-hero__visual::before { width: 390px; height: 390px; }
.form-hero__visual::after { width: 270px; height: 270px; }
.sun-shape { width: 140px; height: 140px; display: grid; place-items: center; border-radius: 38% 62% 56% 44% / 45% 40% 60% 55%; background: var(--yellow); box-shadow: 0 20px 50px rgba(255,215,23,.25); transform: rotate(-8deg); animation: float 5s ease-in-out infinite; }
.sun-shape span { color: var(--navy); font-size: 4.2rem; transform: rotate(8deg); }
.form-hero__visual p { position: absolute; bottom: 0; margin: 0; color: #dce9ef; font-family: var(--serif); font-size: 1.25rem; line-height: 1.25; }
.form-hero__visual strong { color: white; font-size: 1.55rem; }
@keyframes float { 50% { transform: translateY(-10px) rotate(6deg); } }

.institutional-band { background: white; border-bottom: 1px solid var(--line); }
.institutional-logos { min-height: 112px; display: flex; align-items: center; justify-content: center; gap: 32px; }
.institutional-logos img { width: auto; max-width: min(330px, 42%); max-height: 84px; object-fit: contain; }
.institutional-logos__divider { width: 1px; height: 48px; background: var(--line); }

.form-section { padding: 70px 0 90px; }
.form-layout { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 38px; align-items: start; }
.form-aside { position: sticky; top: 24px; padding: 28px; background: var(--navy); color: white; border-radius: 24px; box-shadow: var(--shadow); }
.form-aside h2 { margin: 0 0 12px; font: 700 1.6rem/1.15 var(--serif); }
.form-aside .eyebrow { color: var(--yellow); }
.form-aside > p:not(.eyebrow) { margin: 0; color: #ccdae3; font-size: .9rem; }
.step-guide { list-style: none; padding: 24px 0 0; margin: 26px 0 0; border-top: 1px solid rgba(255,255,255,.13); }
.step-guide li { position: relative; display: flex; align-items: center; gap: 12px; padding: 9px 0; color: #91a8b8; }
.step-guide li > span { flex: 0 0 34px; height: 34px; display: grid; place-items: center; border: 1px solid #61798b; border-radius: 50%; font-size: .76rem; font-weight: 700; }
.step-guide div { display: grid; }
.step-guide strong { font-size: .88rem; font-weight: 600; }
.step-guide small { font-size: .7rem; }
.step-guide li.is-active { color: white; }
.step-guide li.is-active > span { background: var(--yellow); border-color: var(--yellow); color: var(--navy); box-shadow: 0 0 0 5px rgba(255,215,23,.12); }
.step-guide li.is-complete > span { background: var(--green); border-color: var(--green); color: white; }

.form-card { min-height: 560px; padding: clamp(26px, 5vw, 56px); background: var(--paper); border: 1px solid var(--line); border-radius: 26px; box-shadow: var(--shadow); }
.js .form-step:not(.is-active) { display: none; }
.form-step h2:focus { outline: 0; }
.form-step__heading { display: flex; align-items: flex-start; gap: 18px; margin-bottom: 34px; }
.form-step__heading > span { flex: 0 0 46px; height: 46px; display: grid; place-items: center; border-radius: 14px; background: var(--sky); color: var(--blue); font-size: .76rem; font-weight: 700; letter-spacing: .08em; }
.form-step__heading p { margin: 0 0 3px; color: var(--blue); font-size: .72rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.form-step__heading h2 { margin: 0; font: 700 clamp(1.65rem, 3vw, 2.35rem)/1.15 var(--serif); letter-spacing: -.025em; }
.field-grid { display: grid; gap: 24px; }
.field-grid--two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.field--wide { grid-column: 1 / -1; }
.field { display: grid; gap: 8px; }
.field > span, .choice-fieldset legend, .question-grid legend { color: var(--navy); font-size: .86rem; font-weight: 600; }
.field em { float: right; color: var(--muted); font-size: .68rem; font-style: normal; font-weight: 500; text-transform: uppercase; letter-spacing: .08em; }
.field input, .field select, .field textarea { width: 100%; border: 1px solid #c9d7df; border-radius: 13px; background: #fbfdfe; color: var(--ink); padding: 14px 15px; outline: none; transition: border .2s, box-shadow .2s, background .2s; }
.field textarea { resize: vertical; min-height: 130px; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--blue); background: white; box-shadow: 0 0 0 4px rgba(20,101,163,.1); }
.field input.is-invalid, .field select.is-invalid, .acceptance input.is-invalid { border-color: var(--coral); box-shadow: 0 0 0 4px rgba(239,91,67,.1); }
.field small { color: var(--muted); font-size: .72rem; }
.field .field-warning { color: #8a5a00; font-weight: 600; }
.field input.has-warning { border-color: #d8a523; background: #fffaf0; box-shadow: 0 0 0 4px rgba(216,165,35,.1); }
.choice-fieldset, .question-grid fieldset { margin: 30px 0 0; padding: 0; border: 0; }
.choice-fieldset > p { margin: 4px 0 16px; color: var(--muted); font-size: .78rem; }
.day-choices { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }
.day-choices label { cursor: pointer; }
.day-choices input { position: absolute; opacity: 0; }
.day-choices span { min-height: 84px; display: grid; place-items: center; gap: 3px; padding: 10px; border: 1px solid var(--line); border-radius: 14px; color: var(--muted); font-size: .75rem; text-align: center; transition: .2s; }
.day-choices b { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 50%; background: var(--sky); color: var(--blue); }
.day-choices input:checked + span { border-color: var(--blue); background: var(--navy); color: white; transform: translateY(-2px); box-shadow: 0 9px 18px rgba(18,53,82,.15); }
.day-choices input:checked + span b { background: var(--yellow); color: var(--navy); }
.day-choices label.is-invalid span { border-color: var(--coral); }
.responsible-use { display: flex; gap: 15px; margin-top: 22px; padding: 18px; border-radius: 15px; background: #fff8d5; border: 1px solid #f5df78; }
.responsible-use > span { flex: 0 0 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; background: var(--yellow); color: var(--navy); font-size: 1.25rem; }
.responsible-use strong { font-size: .87rem; }
.responsible-use p { margin: 3px 0 0; color: #5f5b3f; font-size: .78rem; }
.student-check { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 14px; margin-top: 20px; padding: 16px 18px; border: 1px solid #c9dce5; border-radius: 14px; background: #f4f9fb; transition: border-color .2s, background .2s; }
.student-check strong { color: var(--navy); font-size: .84rem; }
.student-check p { margin: 3px 0 0; color: var(--muted); font-size: .74rem; }
.student-check__result { display: none; grid-column: 1 / -1; padding-top: 12px; border-top: 1px solid rgba(18,53,82,.1); font-weight: 600; }
.student-check[data-status] .student-check__result { display: block; }
.student-check[data-status='matched'] { border-color: #9bcdb5; background: #eff9f3; }
.student-check[data-status='matched'] .student-check__result { color: #28644a; }
.student-check[data-status='not_found'], .student-check[data-status='unavailable'], .student-check[data-status='error'], .student-check[data-status='already_registered'] { border-color: #e8cf7f; background: #fffaf0; }
.student-check[data-status='not_found'] .student-check__result, .student-check[data-status='unavailable'] .student-check__result, .student-check[data-status='error'] .student-check__result, .student-check[data-status='already_registered'] .student-check__result { color: #715900; }
.duplicate-notice { display: grid; grid-template-columns: auto 1fr; gap: 14px; margin-bottom: 24px; padding: 20px; border: 1px solid #e8cf7f; border-radius: 16px; background: #fffaf0; }
.duplicate-notice__icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 13px; background: var(--yellow); color: var(--navy); font-size: 1.25rem; font-weight: 700; }
.duplicate-notice h3 { margin: 2px 0 5px; color: var(--navy); font: 700 1.2rem var(--serif); }
.duplicate-notice p { margin: 0; color: #665d3c; font-size: .78rem; }
.duplicate-notice__fields { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 8px; }
.duplicate-notice__hint { grid-column: 1 / -1; padding-top: 12px; border-top: 1px solid rgba(112,89,0,.16); }
.question-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.question-grid--single { grid-template-columns: minmax(0, 1fr); }
.question-grid fieldset { padding: 18px; border: 1px solid var(--line); border-radius: 15px; }
.question-grid legend { padding: 0 7px; }
.question-grid label { display: inline-flex; align-items: center; gap: 7px; margin: 8px 18px 0 0; font-size: .84rem; }
.vulnerability-choices { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.vulnerability-choices label { display: flex; align-items: flex-start; gap: 10px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; color: var(--ink); font-size: .8rem; cursor: pointer; }
.vulnerability-choices label:has(input:checked) { border-color: var(--blue); background: var(--sky); }
.vulnerability-choices input { margin-top: 3px; accent-color: var(--blue); }
.vulnerability-choices .none-choice { grid-column: 1 / -1; background: #f6f8f9; font-weight: 600; }
.privacy-hint, .submit-note { display: flex; gap: 12px; margin-top: 20px; padding: 15px 17px; border-radius: 13px; background: var(--sky); color: #355a70; font-size: .78rem; }
.privacy-hint p, .submit-note p { margin: 0; }
.conditions-card { padding: 24px; border-radius: 17px; background: var(--cream); border-left: 4px solid var(--yellow); }
.conditions-card h3, .data-protection h3 { margin: 0 0 12px; font: 700 1.12rem var(--serif); }
.conditions-card ul { margin: 0; padding-left: 20px; }
.conditions-card li { margin: 8px 0; color: #4b5e6b; font-size: .82rem; }
.acceptance { display: flex; align-items: flex-start; gap: 12px; margin-top: 18px; padding: 16px; border: 1px solid var(--line); border-radius: 13px; cursor: pointer; }
.acceptance input { flex: 0 0 auto; width: 18px; height: 18px; margin-top: 2px; accent-color: var(--blue); }
.acceptance span { font-size: .82rem; }
.data-protection { margin-top: 26px; padding-top: 24px; border-top: 1px solid var(--line); }
.data-protection p { margin: 0; color: var(--muted); font-size: .78rem; }
.human-check { max-width: 330px; margin-top: 24px; }
.form-actions { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 36px; padding-top: 24px; border-top: 1px solid var(--line); }
.button { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 20px; border: 0; border-radius: 12px; text-decoration: none; font-weight: 700; font-size: .86rem; cursor: pointer; transition: transform .2s, box-shadow .2s, background .2s; }
.button:hover { transform: translateY(-2px); }
.button--primary { background: var(--navy); color: white; box-shadow: 0 10px 22px rgba(18,53,82,.18); }
.button--ghost { background: #edf2f4; color: var(--navy); }
.button--submit { background: var(--yellow); color: var(--navy); box-shadow: 0 12px 24px rgba(255,215,23,.25); }
.button:disabled { opacity: .65; cursor: wait; transform: none; }
.notice { margin-bottom: 28px; padding: 17px 20px; border-radius: 14px; }
.notice strong { display: block; }
.notice p { margin: 5px 0 0; }
.notice ul { margin: 8px 0 0; padding-left: 20px; }
.notice--error { background: #fff0ed; border: 1px solid #ffb5a9; color: #9d2d1c; }
.notice--success { background:#eff9f3; border:1px solid #a8d5bf; color:#28644a; }
.notice--warning { background:#fff8d5; border:1px solid #e8cf7f; color:#715900; }
.notice--closed { background: #fff8d5; border: 1px solid #f0d86a; }
.notice--info { background: var(--sky); border: 1px solid #bad7e5; color: #285a78; }
.honeypot { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

.confirmation-section { padding: 70px 0 90px; }
.confirmation-shell { max-width: 780px; }
.confirmation-card { padding: clamp(30px, 6vw, 64px); background: white; border: 1px solid var(--line); border-radius: 28px; box-shadow: var(--shadow); text-align: center; }
.confirmation-card h1 { font-size: clamp(2.2rem, 5vw, 3.8rem); }
.confirmation-card > p { color: var(--muted); }
.confirmation-card__icon { width: 72px; height: 72px; display: grid; place-items: center; margin: 0 auto 22px; border-radius: 50%; background: var(--green); color: white; font-size: 2rem; box-shadow: 0 0 0 10px rgba(77,140,112,.1); }
.reference-box { margin: 30px 0; padding: 22px; border-radius: 17px; background: var(--navy); color: white; }
.reference-box span, .reference-box small { display: block; color: #c8d8e2; font-size: .74rem; }
.reference-box strong { display: block; margin: 3px 0; color: var(--yellow); font-size: 1.8rem; letter-spacing: .12em; }
.confirmation-summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 0; text-align: left; }
.confirmation-summary div { padding: 14px; border-radius: 12px; background: #f4f7f8; }
.confirmation-summary dt { color: var(--muted); font-size: .68rem; text-transform: uppercase; letter-spacing: .08em; }
.confirmation-summary dd { margin: 3px 0 0; font-size: .82rem; font-weight: 600; }
.status { display: inline-flex; padding: 4px 8px; border-radius: 999px; background: #fff3bd; color: #705900; font-size: .7rem; }
.confirmation-card__note { font-size: .8rem; }
.confirmation-actions { display: flex; justify-content: center; gap: 12px; margin-top: 26px; }
.confirmation-logos { margin-top: 24px; padding: 0 20px; background: white; border: 1px solid var(--line); border-radius: 18px; }
.fatal-card { max-width: 620px; margin: 80px auto; padding: 40px; background: white; border-radius: 20px; box-shadow: var(--shadow); }
.man-footer { padding: 34px 0; background: var(--navy); color: #c8d8e2; font-size: .78rem; }
.man-footer__inner { display: flex; justify-content: space-between; gap: 30px; }
.man-footer p { margin: 0; }
.man-footer strong, .man-footer a { color: white; }

@media (max-width: 900px) {
  .form-hero__grid { grid-template-columns: 1fr; min-height: 0; padding-block: 56px; }
  .form-hero__visual { display: none; }
  .form-layout { grid-template-columns: 1fr; }
  .form-aside { position: static; padding: 22px; }
  .form-aside > h2, .form-aside > p:not(.eyebrow), .form-aside > .eyebrow { display: none; }
  .step-guide { display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; padding: 0; margin: 0; border: 0; }
  .step-guide li { justify-content: center; }
  .step-guide li div { display: none; }
}

@media (max-width: 640px) {
  .man-container { width: min(100% - 24px, 1180px); }
  .man-header__inner { min-height: 74px; }
  .man-brand img { width: 44px; height: 44px; }
  .man-brand strong { font-size: 1rem; }
  .man-header__back { font-size: 0; }
  .man-header__back span { font-size: 1.35rem; }
  .form-hero__grid { padding-block: 45px; }
  .form-hero h1 { font-size: 2.65rem; }
  .institutional-logos { min-height: 96px; gap: 14px; }
  .institutional-logos { flex-direction: column; padding-block: 18px; }
  .institutional-logos img { max-width: min(290px, 92%); max-height: none; }
  .institutional-logos__divider { width: 72px; height: 1px; }
  .form-section, .confirmation-section { padding: 28px 0 50px; }
  .form-layout { gap: 14px; }
  .form-aside { border-radius: 17px; }
  .form-card { padding: 22px 16px; border-radius: 18px; }
  .form-step__heading { gap: 12px; margin-bottom: 26px; }
  .form-step__heading > span { flex-basis: 40px; height: 40px; }
  .field-grid--two, .question-grid, .vulnerability-choices { grid-template-columns: 1fr; }
  .day-choices { grid-template-columns: repeat(5, minmax(55px, 1fr)); gap: 6px; overflow-x: auto; padding-bottom: 4px; }
  .day-choices span { min-height: 75px; padding: 7px 4px; font-size: .68rem; }
  .vulnerability-choices .none-choice { grid-column: auto; }
  .form-actions { flex-wrap: wrap; }
  .form-actions .button { flex: 1 1 auto; }
  .confirmation-summary { grid-template-columns: 1fr; }
  .confirmation-actions, .man-footer__inner { flex-direction: column; }
}

@media print {
  .man-header, .man-footer, .confirmation-actions { display: none; }
  body { background: white; }
  .confirmation-section { padding: 0; }
  .confirmation-card { box-shadow: none; border: 0; }
}

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

/* Administración */
.admin-login-page { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: radial-gradient(circle at top right, #dceef4, transparent 38%), var(--navy); }
.admin-login-card { width: min(480px, 100%); padding: 42px; border-radius: 26px; background: white; box-shadow: 0 30px 80px rgba(0,0,0,.25); }
.admin-login-card .man-brand { margin-bottom: 38px; }
.admin-login-card h1 { margin: 0 0 8px; font: 700 2.6rem/1 var(--serif); }
.admin-login-card > p:not(.eyebrow) { color: var(--muted); font-size: .86rem; }
.admin-login-form { display: grid; gap: 18px; margin-top: 26px; }
.admin-login-form .button { width: 100%; }
.password-field { position: relative; display: block; }
.password-field input { padding-right: 52px; }
.password-field button { position: absolute; top: 50%; right: 7px; width: 40px; height: 40px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 9px; background: transparent; color: var(--blue); transform: translateY(-50%); cursor: pointer; }
.password-field button:hover { background: var(--sky); }
.password-field svg { width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-width: 1.7; }
.admin-login-back { display: block; margin-top: 22px; color: var(--muted); font-size: .8rem; text-decoration: none; text-align: center; }
.admin-page { background: #edf2f4; }
.admin-header { min-height: 78px; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 11px clamp(20px, 4vw, 58px); background: white; border-bottom: 1px solid var(--line); }
.admin-header .man-brand img { width: 48px; height: 48px; }
.admin-header nav { display: flex; align-items: center; gap: 18px; font-size: .78rem; }
.admin-header nav a { color: var(--blue); text-decoration: none; font-weight: 600; }
.admin-header nav > span { padding-left: 18px; border-left: 1px solid var(--line); }
.admin-header nav form { margin: 0; }
.admin-header nav button { padding: 8px 12px; border: 0; border-radius: 9px; background: var(--navy); color: white; cursor: pointer; }
.admin-main { width: min(1400px, calc(100% - 44px)); margin: 0 auto; padding: 42px 0 80px; }
.admin-title { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 28px; }
.admin-title h1 { margin: 0; font: 700 clamp(2rem, 4vw, 3.2rem)/1.05 var(--serif); }
.admin-title p:last-child { margin: 8px 0 0; color: var(--muted); }
.admin-section-nav { position:sticky; z-index:14; top:10px; display:flex; gap:7px; margin:-10px 0 20px; padding:8px; overflow-x:auto; scrollbar-width:thin; border:1px solid rgba(194,213,222,.92); border-radius:14px; background:rgba(255,255,255,.94); box-shadow:0 8px 24px rgba(18,53,82,.09); backdrop-filter:blur(12px); -webkit-overflow-scrolling:touch; }
.admin-section-nav a { flex:0 0 auto; display:inline-flex; min-height:34px; align-items:center; gap:6px; padding:7px 11px; border-radius:9px; color:var(--navy); font-size:.68rem; font-weight:800; text-decoration:none; white-space:nowrap; scroll-snap-align:start; }
.admin-section-nav a:hover,.admin-section-nav a:focus-visible { background:var(--sky); color:var(--blue); outline:none; }
.admin-section-nav a.has-pending { background:#fff1d2; color:#8a5400; }
.admin-section-nav a b { min-width:20px; height:20px; display:grid; place-items:center; padding:0 5px; border-radius:999px; background:var(--yellow); color:var(--navy); font-size:.61rem; }
.admin-section-nav a.has-pending b { background:#e5563f; color:#fff; }
#informes,#resumen-inscripciones,#avisos-familiares,#seguimiento-asistencia,#solicitudes,#actividad,#monitores,#calendario { scroll-margin-top:72px; }
.admin-toast { position: fixed; z-index: 20; right: 24px; top: 92px; padding: 14px 20px; border-radius: 12px; background: var(--green); color: white; box-shadow: var(--shadow); animation: toast-in .3s ease both; }
.admin-toast--error { background: #b93525; }
.bulk-email-report { margin-bottom:18px; border-color:#b8d9c8; background:#f8fcfa; }
.bulk-email-report.has-errors { border-color:#e7b2aa; background:#fff9f7; }
.bulk-email-report .admin-panel__heading { align-items:center; }
.bulk-email-report .admin-panel__heading p:last-child { margin:7px 0 0; color:var(--muted); font-size:.75rem; }
.bulk-email-report .admin-panel__heading > a { color:var(--blue); font-size:.7rem; font-weight:700; text-decoration:none; }
.bulk-email-report__groups { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:12px; }
.bulk-email-report__group { padding:14px; border:1px solid var(--line); border-radius:12px; background:#fff; }
.bulk-email-report__group h3 { margin:0 0 9px; color:var(--navy); font-size:.8rem; }
.bulk-email-report__group p { display:grid; gap:2px; margin:0; padding:8px 0; border-top:1px solid #e5ecef; }
.bulk-email-report__group p:first-of-type { border-top:0; }
.bulk-email-report__group p strong { font-size:.74rem; }
.bulk-email-report__group p span { color:var(--muted); font-size:.66rem; overflow-wrap:anywhere; }
.bulk-email-report__group.is-failed { border-color:#e6b2aa; }
.bulk-email-report__group.is-failed h3 { color:#aa3425; }
.bulk-email-report__group.is-sent { border-color:#b8dac8; }
.bulk-email-report__group.is-sent h3 { color:#28704f; }
@keyframes toast-in { from { opacity: 0; transform: translateY(-10px); } }
.stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 18px; }
.stat-grid article { min-height: 145px; display: flex; flex-direction: column; justify-content: space-between; padding: 22px; background: white; border: 1px solid var(--line); border-radius: 18px; }
.stat-grid span { color: var(--muted); font-size: .76rem; }
.stat-grid strong { font: 700 2.35rem var(--serif); color: var(--navy); }
.stat-grid small { color: var(--blue); font-size: .72rem; }
.admin-grid-two { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom: 18px; }
.admin-panel { padding: 24px; background: white; border: 1px solid var(--line); border-radius: 18px; }
.admin-panel__heading { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 20px; }
.admin-panel__heading .eyebrow { margin-bottom: 5px; }
.admin-panel__actions { display:flex; align-items:center; gap:8px; flex:0 0 auto; }
.panel-collapse-button { display:inline-flex; align-items:center; gap:7px; flex:0 0 auto; min-height:34px; padding:6px 10px; border:1px solid var(--line); border-radius:9px; background:#f5f8f9; color:var(--blue); font:600 .7rem var(--sans); cursor:pointer; }
.panel-collapse-button:hover { background:var(--sky); }
.panel-collapse-button span { display:inline-block; font-size:.95rem; transition:transform .2s ease; }
.admin-panel.is-collapsed > :not(.admin-panel__heading) { display:none !important; }
.admin-panel.is-collapsed > .admin-panel__heading { margin-bottom:0; }
.admin-panel.is-collapsed .panel-collapse-button span { transform:rotate(180deg); }
.admin-panel h2 { margin: 0; font: 700 1.45rem var(--serif); }
.admin-panel h2 span { color: var(--muted); font: 500 .8rem var(--sans); }
.day-bars { display: grid; gap: 12px; }
.day-bars > div { display: grid; grid-template-columns: 75px 1fr 28px; align-items: center; gap: 10px; font-size: .76rem; }
.day-bars i { height: 8px; overflow: hidden; border-radius: 99px; background: #e7eef1; }
.day-bars b { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--blue), #53a2cd); }
.day-bars strong { text-align: right; }
.course-chips { display: flex; flex-wrap: wrap; gap: 9px; }
.course-chips span { display: flex; align-items: center; gap: 12px; padding: 9px 12px; border-radius: 10px; background: var(--sky); color: var(--blue); font-size: .76rem; }
.course-chips b { color: var(--navy); font-weight: 600; }
.priority-panel { margin-bottom: 18px; }
.priority-summary { display: grid; grid-template-columns: repeat(5, 1fr); gap: 9px; }
.priority-summary span { min-height: 66px; display: flex; align-items: center; gap: 10px; padding: 11px; border-radius: 11px; background: #f3f7f8; color: var(--muted); font-size: .68rem; }
.priority-summary b { flex: 0 0 30px; height: 30px; display: grid; place-items: center; border-radius: 9px; background: white; color: var(--blue); font-size: .82rem; box-shadow: 0 3px 9px rgba(18,53,82,.08); }
.enrollment-overview-panel > .admin-panel__heading p:last-child { max-width:720px; margin:6px 0 0; color:var(--muted); font-size:.76rem; }
.section-heading-with-icon { display:flex; align-items:flex-start; gap:13px; }
.section-heading-icon { flex:0 0 38px; width:38px; height:38px; display:grid; place-items:center; border-radius:11px; }
.section-heading-icon svg { width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.section-heading-icon.is-enrollment { background:#e5f2f7; color:var(--blue); }
.section-heading-icon.is-family { background:#edf3df; color:#557827; }
.section-heading-icon.is-monitor { background:#eee9f7; color:#674a9b; }
.enrollment-overview-tabs { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; margin-bottom:14px; }
.enrollment-overview-tabs button { min-height:44px; padding:9px 14px; border:1px solid #ccdde5; border-radius:11px; background:#edf6f8; color:var(--navy); font-weight:800; cursor:pointer; }
.enrollment-overview-tabs button:nth-child(2) { border-color:#e2dcc7; background:#faf6e9; }
.enrollment-overview-tabs button:nth-child(3) { border-color:#ddd2e5; background:#f6f0f8; }
.enrollment-overview-tabs button[aria-selected="true"] { border-color:var(--blue); box-shadow:inset 0 0 0 1px var(--blue),0 5px 12px rgba(18,53,82,.08); }
.enrollment-overview-pane { padding:16px; border-radius:14px; }
.enrollment-overview-pane.is-distribution { background:#edf6f8; }
.enrollment-overview-pane.is-summary { background:#faf6e9; }
.enrollment-overview-pane.is-criteria { background:#f6f0f8; }
.enrollment-overview-pane .stat-grid, .enrollment-overview-pane .admin-grid-two { margin-bottom:0; }
.enrollment-overview-pane .admin-grid-two > .admin-panel { border-radius:14px; }
.filter-panel { margin-bottom: 18px; }
.admin-filters { display: grid; grid-template-columns: minmax(200px, 2fr) repeat(5, minmax(120px, 1fr)) auto auto; align-items: end; gap: 12px; }
.admin-filters label, .settings-form > label:not(.switch), .danger-panel form label, .application-edit label { display: grid; gap: 5px; color: var(--muted); font-size: .68rem; }
.admin-filters input, .admin-filters select, .settings-form input:not([type='checkbox']), .danger-panel input, .application-edit select, .application-edit textarea { min-width: 0; width: 100%; min-height: 42px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 9px; background: #f9fbfc; color: var(--ink); }
.admin-filters .button { min-height: 42px; padding: 9px 14px; }
.admin-filters > a { padding: 11px 3px; color: var(--muted); font-size: .72rem; text-align: center; }
.application-filters { margin: 0 22px 18px; padding: 15px; border: 1px solid var(--line); border-radius: 13px; background: #f7fafb; }
.applications-panel { padding: 0; overflow: hidden; }
.applications-panel > .admin-panel__heading { padding: 24px 24px 0; }
.applications-panel.is-collapsed > .admin-panel__heading { padding-bottom:24px; }
.bulk-actions { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin: 0 22px 20px; padding: 13px 15px; border: 1px solid #c8dce7; border-radius: 13px; background: var(--sky); }
.bulk-select-all { display: inline-flex; align-items: center; gap: 9px; color: var(--navy); font-size: .75rem; font-weight: 600; cursor: pointer; }
.bulk-select-all input { width: 17px; height: 17px; accent-color: var(--blue); }
.bulk-actions__controls { display: flex; align-items: end; gap: 10px; }
.bulk-actions__controls label { display: grid; gap: 3px; color: var(--muted); font-size: .62rem; }
.bulk-actions__controls select { min-width: 160px; min-height: 38px; padding: 7px 10px; border: 1px solid #b9d0dc; border-radius: 9px; background: white; color: var(--ink); }
.bulk-actions__controls .button { min-height: 38px; padding-block: 7px; }
.bulk-actions__controls .button b { min-width: 22px; height: 22px; display: grid; place-items: center; border-radius: 7px; background: rgba(255,255,255,.16); font-size: .7rem; }
.application-list { border-top: 1px solid var(--line); }
.application-row { border-bottom: 1px solid var(--line); }
.application-row:last-child { border-bottom: 0; }
.application-row summary { min-height: 78px; display: grid; grid-template-columns: 24px 42px minmax(210px,1.2fr) minmax(180px,1fr) 84px 110px 24px; align-items: center; gap: 14px; padding: 13px 22px; list-style: none; cursor: pointer; }
.application-row summary::-webkit-details-marker { display: none; }
.application-row[open] summary { background: #f7fafb; }
.student-avatar { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 12px; background: var(--sky); color: var(--blue); font-weight: 700; }
.bulk-check { position: relative; width: 20px; height: 20px; display: grid; place-items: center; cursor: pointer; }
.bulk-check input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.bulk-check > span[aria-hidden] { width: 18px; height: 18px; display: grid; place-items: center; border: 1.5px solid #aabcc6; border-radius: 5px; background: white; transition: .15s; }
.bulk-check input:checked + span { border-color: var(--blue); background: var(--blue); }
.bulk-check input:checked + span::after { content: '✓'; color: white; font-size: .72rem; font-weight: 700; }
.bulk-check input:focus-visible + span { outline: 3px solid rgba(20,101,163,.22); outline-offset: 2px; }
.application-row__student, .application-row__family { min-width: 0; display: grid; }
.application-row__student strong, .application-row__family span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .8rem; }
.application-row__student small, .application-row__family small, .application-row time { overflow: hidden; color: var(--muted); font-size: .68rem; text-overflow: ellipsis; white-space: nowrap; }
.admin-status { display: inline-flex; justify-content: center; padding: 5px 8px; border-radius: 999px; font-size: .65rem; font-weight: 600; }
.admin-status--pending { background: #fff4c4; color: #705900; }
.admin-status--admitted { background: #dff3e8; color: #28644a; }
.admin-status--waitlist { background: #e2eff8; color: #245b80; }
.admin-status--rejected, .admin-status--cancelled { background: #f0e8e7; color: #845049; }
.detail-chevron { color: var(--muted); font-size: 1.2rem; transition: transform .2s; }
.application-row[open] .detail-chevron { transform: rotate(180deg); }
.application-detail { padding: 24px; background: #f7fafb; border-top: 1px solid var(--line); }
.detail-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; margin-bottom: 20px; }
.detail-grid > div { padding: 13px; border-radius: 10px; background: white; border: 1px solid var(--line); }
.detail-grid span { display: block; color: var(--muted); font-size: .62rem; text-transform: uppercase; letter-spacing: .07em; }
.detail-grid strong, .detail-grid a, .detail-grid p { display: block; margin: 4px 0 0; color: var(--ink); font-size: .75rem; font-weight: 600; }
.detail-grid .match-result--matched { color: #28644a; }
.detail-grid .match-result--not_found { color: #8a6500; }
.detail-grid .match-result--unavailable, .detail-grid .match-result--not_checked { color: var(--muted); }
.detail-wide { grid-column: 1 / -1; }
.application-edit { display: grid; grid-template-columns: 180px 1fr auto; align-items: end; gap: 12px; }
.application-edit textarea { min-height: 72px; resize: vertical; }
.delete-form { margin-top: 15px; text-align: right; }
.delete-form button { border: 0; background: transparent; color: #a13a2c; font-size: .68rem; text-decoration: underline; cursor: pointer; }
.empty-state { padding: 50px; color: var(--muted); text-align: center; }
.empty-state span { font-size: 2rem; }
.empty-state h3 { margin: 8px 0 0; color: var(--navy); }
.empty-state p { margin: 3px 0; }
.pagination { display: flex; justify-content: center; gap: 6px; padding: 20px; border-top: 1px solid var(--line); }
.pagination a { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 8px; color: var(--muted); text-decoration: none; font-size: .75rem; }
.pagination a.is-active { background: var(--navy); color: white; }
.admin-bottom { margin-top: 18px; }
.access-panel { margin-top: 18px; }
.access-panel .admin-panel__heading p:last-child { max-width: 760px; margin: 7px 0 0; color: var(--muted); font-size: .76rem; }
.access-layout { display: grid; grid-template-columns: minmax(280px, .85fr) minmax(360px, 1.15fr); gap: 22px; }
.access-grant-form { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 10px; padding: 16px; border-radius: 13px; background: var(--sky); }
.access-grant-form label { display: grid; gap: 5px; color: var(--muted); font-size: .68rem; }
.access-grant-form select { min-width: 0; width: 100%; min-height: 42px; padding: 9px 11px; border: 1px solid #b9d0dc; border-radius: 9px; background: white; color: var(--ink); }
.access-grant-form small { grid-column: 1 / -1; color: var(--muted); }
.access-grant-form button:disabled { opacity: .45; cursor: not-allowed; }
.manager-list { display: grid; align-content: start; gap: 8px; }
.manager-list > div { min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 10px 13px; border: 1px solid var(--line); border-radius: 11px; background: #f9fbfc; }
.manager-list span { min-width: 0; display: grid; }
.manager-list strong, .manager-list small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.manager-list strong { font-size: .78rem; }
.manager-list small { color: var(--muted); font-size: .68rem; }
.manager-list form { margin: 0; }
.manager-list button { border: 0; background: transparent; color: #9d2d1c; font-size: .68rem; text-decoration: underline; cursor: pointer; }
.manager-empty { margin: 0; padding: 18px; border: 1px dashed #bed0d8; border-radius: 11px; color: var(--muted); font-size: .75rem; text-align: center; }
.settings-form { display: grid; gap: 18px; }
.settings-form input[type='number'] { max-width: 180px; }
.switch { position: relative; display: flex; align-items: center; gap: 10px; cursor: pointer; }
.switch input { position: absolute; width: 1px; height: 1px; min-height: 0; margin: 0; padding: 0; opacity: 0; clip-path: inset(50%); }
.switch > span { position: relative; width: 44px; height: 24px; border-radius: 99px; background: #bac7cd; transition: .2s; }
.switch > span::after { content: ''; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: white; transition: .2s; box-shadow: 0 2px 5px rgba(0,0,0,.18); }
.switch input:checked + span { background: var(--green); }
.switch input:checked + span::after { transform: translateX(20px); }
.switch b { font-size: .78rem; font-weight: 600; }
.settings-form .button { justify-self: start; }
.danger-panel { background: #fff7f5; border-color: #f1c8c0; }
.danger-panel .eyebrow { color: var(--coral); }
.danger-panel > p { color: #745c58; font-size: .78rem; }
.danger-panel form { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 12px; margin-top: 22px; }
.danger-panel button { min-height: 42px; padding: 9px 14px; border: 1px solid #d98778; border-radius: 9px; background: white; color: #9d2d1c; font-weight: 700; cursor: pointer; }
.confirm-dialog { width: min(460px, calc(100% - 30px)); padding: 28px; border: 0; border-radius: 20px; color: var(--ink); box-shadow: 0 30px 80px rgba(10,35,55,.28); }
.confirm-dialog::backdrop { background: rgba(10,29,43,.65); backdrop-filter: blur(4px); }
.confirm-dialog__icon { width: 46px; height: 46px; display: grid; place-items: center; margin-bottom: 18px; border-radius: 14px; background: #fff0ed; color: var(--coral); font: 700 1.2rem var(--serif); }
.confirm-dialog .eyebrow { margin-bottom: 4px; }
.confirm-dialog h2 { margin: 0; font: 700 1.65rem var(--serif); }
.confirm-dialog [data-confirm-message] { margin: 10px 0 0; color: var(--muted); font-size: .84rem; }
.confirm-dialog__actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 26px; padding-top: 20px; border-top: 1px solid var(--line); }
.button--danger { background: var(--coral); color: white; }
.admin-page .button { min-height: 38px; padding: 7px 13px; border-radius: 9px; font-size: .75rem; }
.admin-page .danger-panel button { min-height: 38px; padding: 7px 13px; font-size: .75rem; }

@media (max-width: 1100px) {
  .admin-filters { grid-template-columns: repeat(4, 1fr); }
  .admin-filters label:first-child { grid-column: span 2; }
  .detail-grid { grid-template-columns: repeat(3, 1fr); }
  .priority-summary { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 800px) {
  .admin-main { width: min(100% - 24px, 1400px); padding-top: 24px; }
  .admin-header nav > span, .admin-header nav > a { display: none; }
  .admin-title { align-items: flex-start; flex-direction: column; }
  .admin-section-nav { top:6px; margin-top:-8px; padding:6px; border-radius:12px; scroll-snap-type:x proximity; }
  .admin-section-nav a { min-height:32px; padding:6px 10px; font-size:.66rem; }
  .stat-grid { grid-template-columns: 1fr 1fr; }
  .admin-grid-two { grid-template-columns: 1fr; }
  .enrollment-overview-tabs { grid-template-columns:1fr; }
  .admin-filters { grid-template-columns: 1fr 1fr; }
  .bulk-actions { align-items: stretch; flex-direction: column; }
  .bulk-actions__controls { display: grid; grid-template-columns: 1fr auto; }
  .application-row summary { grid-template-columns: 22px 38px 1fr auto 20px; gap: 10px; }
  .application-row__family, .application-row time { display: none; }
  .detail-grid { grid-template-columns: 1fr 1fr; }
  .application-edit { grid-template-columns: 1fr; }
  .access-layout { grid-template-columns: 1fr; }
}
@media (max-width: 520px) {
  .admin-login-card { padding: 28px 20px; }
  .admin-header { padding-inline: 14px; }
  .admin-header .man-brand small { display: none; }
  .stat-grid, .admin-filters, .detail-grid { grid-template-columns: 1fr; }
  .priority-summary { grid-template-columns: 1fr; }
  .admin-filters label:first-child { grid-column: auto; }
  .application-row summary { padding-inline: 14px; }
  .admin-status { font-size: 0; width: 12px; height: 12px; padding: 0; }
  .danger-panel form { grid-template-columns: 1fr; }
  .access-grant-form { grid-template-columns: 1fr; }
  .student-check { grid-template-columns: 1fr; }
  .student-check .button { width: 100%; }
  .duplicate-notice { grid-template-columns: 1fr; }
  .duplicate-notice__fields, .duplicate-notice__hint { grid-column: auto; grid-template-columns: 1fr; }
}

/* Control de asistencia · Aula Matinal */
.attendance-login-page { min-height: 100vh; display: grid; place-items: center; padding: 22px; background: linear-gradient(145deg, var(--navy), #285f86); }
.attendance-login-card { width: min(100%, 460px); padding: 38px; border-radius: 26px; background: var(--paper); box-shadow: 0 24px 60px rgba(5,35,58,.25); }
.attendance-login-card .man-brand { margin-bottom: 42px; }
.attendance-login-card h1 { margin: 5px 0 10px; font: 700 clamp(2.2rem,8vw,3.3rem) var(--serif); color: var(--navy); }
.attendance-login-card > p:not(.eyebrow) { color: var(--muted); line-height: 1.6; }
.attendance-login-form { display: grid; gap: 18px; margin-top: 28px; }
.attendance-login-form .button { width: 100%; }
.attendance-remember { display: flex; align-items: center; gap: 10px; color: var(--navy); font-size: .86rem; }
.attendance-remember input { width: 20px; height: 20px; accent-color: var(--blue); }
.attendance-login-help { margin: 18px 0 0; font-size: .72rem; }
.attendance-first-card { width: min(100%,540px); }
.attendance-page { min-height: 100vh; background: #eef3f5; color: var(--navy); }
.attendance-header { position: sticky; top: 0; z-index: 5; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 12px max(18px,calc((100vw - 980px)/2)); border-bottom: 1px solid var(--line); background: rgba(255,255,255,.96); backdrop-filter: blur(12px); }
.attendance-header > div { display: flex; align-items: center; gap: 12px; font-size: .78rem; }
.attendance-header form { margin: 0; }
.attendance-header button { padding: 8px 12px; border: 0; border-radius: 9px; background: #e7eef2; color: var(--navy); font-weight: 700; cursor: pointer; }
.attendance-main { width: min(100% - 28px,980px); margin: 0 auto; padding: 32px 0 70px; }
.attendance-title { display: flex; justify-content: space-between; align-items: end; gap: 24px; }
.attendance-title h1 { margin: 4px 0; font: 700 clamp(2rem,7vw,3.5rem) var(--serif); }
.attendance-title p:last-child { margin: 0; color: var(--muted); }
.attendance-date { display: grid; gap: 6px; min-width: 190px; }
.attendance-date label { color: var(--muted); font-size: .68rem; text-transform: uppercase; letter-spacing: .1em; }
.attendance-date input { min-height: 48px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 12px; background: white; color: var(--navy); }
.attendance-title-actions { display:flex; align-items:end; gap:10px; }
.attendance-pdf-button { min-height:48px; white-space:nowrap; }
.attendance-export-form { display:flex; align-items:flex-end; gap:10px; }
.attendance-export-form label { display:grid; gap:5px; color:var(--muted); font-size:.72rem; }
.attendance-export-form input { min-height:42px; padding:8px 11px; border:1px solid var(--line); border-radius:9px; background:#fff; color:var(--navy); font:inherit; }
.attendance-export-form .button { white-space:nowrap; }
.monthly-attendance-dialog { width:min(880px,calc(100% - 30px)); max-height:calc(100vh - 36px); padding:0; overflow:hidden; border:0; border-radius:22px; background:#fff; color:var(--navy); box-shadow:0 30px 90px rgba(8,31,47,.32); }
.monthly-attendance-dialog::backdrop { background:rgba(8,27,40,.72); backdrop-filter:blur(5px); }
.monthly-attendance-dialog__panel { position:relative; display:flex; max-height:calc(100vh - 36px); flex-direction:column; padding:28px; }
.monthly-attendance-dialog__close { position:absolute; top:18px; right:18px; display:grid; width:38px; height:38px; place-items:center; border:0; border-radius:50%; background:#eaf0f3; color:var(--navy); font-size:1.55rem; line-height:1; cursor:pointer; }
.monthly-attendance-dialog__close:hover { background:var(--navy); color:#fff; }
.monthly-attendance-dialog__heading { padding-right:52px; }
.monthly-attendance-dialog__heading .eyebrow { margin:0 0 4px; }
.monthly-attendance-dialog__heading h2 { margin:0; font:700 clamp(1.7rem,4vw,2.35rem) var(--serif); }
.monthly-attendance-dialog__heading > p:last-child { margin:6px 0 0; color:var(--muted); font-size:.78rem; }
.monthly-attendance-dialog__stats { display:flex; gap:9px; margin:20px 0 15px; }
.monthly-attendance-dialog__stats span { display:flex; align-items:baseline; gap:5px; padding:8px 12px; border-radius:10px; background:var(--sky); color:var(--muted); font-size:.7rem; }
.monthly-attendance-dialog__stats b { color:var(--blue); font-size:1rem; }
.monthly-attendance-table-wrap { min-height:0; overflow:auto; border:1px solid var(--line); border-radius:13px; }
.monthly-attendance-table { width:100%; border-collapse:collapse; font-size:.8rem; }
.monthly-attendance-table th { position:sticky; top:0; z-index:1; padding:11px 14px; background:#eaf1f4; color:var(--muted); font-size:.65rem; letter-spacing:.07em; text-align:left; text-transform:uppercase; }
.monthly-attendance-table th:last-child,.monthly-attendance-table td:last-child { width:125px; text-align:center; }
.monthly-attendance-table td { padding:11px 14px; border-top:1px solid var(--line); }
.monthly-attendance-table tbody tr:nth-child(even) { background:#f8fafb; }
.monthly-attendance-course { color:var(--blue); font-size:.7rem; font-weight:800; white-space:nowrap; }
.monthly-attendance-count { display:inline-grid; min-width:36px; height:30px; place-items:center; border-radius:9px; background:var(--yellow); color:var(--navy); font-size:.9rem; }
.monthly-attendance-empty { padding:36px!important; color:var(--muted); text-align:center!important; }
.daily-attendance-table th:nth-child(3),.daily-attendance-table td:nth-child(3) { width:145px; }
.daily-attendance-table th:last-child,.daily-attendance-table td:last-child { width:175px; text-align:left; }
.daily-attendance-status { display:inline-flex; padding:5px 8px; border-radius:999px; background:#edf1f3; color:var(--muted); font-size:.67rem; font-weight:800; white-space:nowrap; }
.daily-attendance-status.is-present { background:#e3f5eb; color:#16764c; }
.daily-attendance-status.is-absent { background:#fff0ed; color:#b33d2b; }
.daily-attendance-status.is-justified { background:#fff5d2; color:#876300; }
.attendance-summary { display: grid; grid-template-columns: repeat(5,1fr); gap: 10px; margin: 28px 0 8px; }
.attendance-summary span { display: grid; gap: 3px; padding: 14px; border: 1px solid var(--line); border-radius: 14px; background: white; color: var(--muted); font-size: .7rem; }
.attendance-summary b { color: var(--navy); font-size: 1.35rem; }
.attendance-summary .is-present b { color: #16764c; }
.attendance-summary .is-absent b { color: #b33d2b; }
.attendance-summary .is-justified b { color: #9a6b00; }
.attendance-save-state { min-height: 22px; margin: 10px 2px 18px; color: var(--muted); font-size: .73rem; text-align: right; }
.attendance-save-state.has-error { color: #a72e20; font-weight: 700; }
.attendance-help-dialog { width:min(520px,calc(100% - 28px)); padding:28px; border:0; border-radius:22px; background:#fff; color:var(--navy); box-shadow:0 28px 80px rgba(8,31,47,.35); }
.attendance-help-dialog::backdrop { background:rgba(8,27,40,.72); backdrop-filter:blur(5px); }
.attendance-help-dialog__icon { display:grid; width:48px; height:48px; place-items:center; margin-bottom:16px; border-radius:14px; background:#e3f3ea; color:#19734d; font-size:1.35rem; font-weight:900; }
.attendance-help-dialog .eyebrow { margin:0 0 4px; }
.attendance-help-dialog h2 { margin:0; font:700 clamp(1.55rem,5vw,2rem) var(--serif); }
.attendance-help-steps { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:20px 0 12px; }
.attendance-help-steps > div { display:grid; grid-template-columns:38px 1fr; align-items:center; gap:10px; padding:12px; border:1px solid; border-radius:12px; }
.attendance-help-steps > div > b { display:grid; width:36px; height:36px; place-items:center; border-radius:10px; color:#fff; font-size:1rem; }
.attendance-help-steps span { display:grid; gap:2px; }
.attendance-help-steps strong { font-size:.76rem; }
.attendance-help-steps small { color:var(--muted); font-size:.66rem; line-height:1.35; }
.attendance-help-steps .is-present { border-color:#b9dfca; background:#edf8f2; }
.attendance-help-steps .is-present > b { background:#21845a; }
.attendance-help-steps .is-absent { border-color:#efc5bc; background:#fff1ee; }
.attendance-help-steps .is-absent > b { background:#bf4935; }
.attendance-help-warning { padding:13px 15px; border-left:4px solid #d19d24; border-radius:10px; background:#fff7dc; }
.attendance-help-warning > strong { color:#795800; font-size:.72rem; text-transform:uppercase; letter-spacing:.07em; }
.attendance-help-warning p { margin:5px 0 0; color:#594b27; font-size:.76rem; line-height:1.5; }
.attendance-help-dialog > button { width:100%; min-height:46px; margin-top:18px; border:0; border-radius:11px; background:var(--navy); color:#fff; font-weight:800; cursor:pointer; }
@media(max-width:520px){.attendance-help-dialog{padding:22px 18px}.attendance-help-steps{grid-template-columns:1fr}.attendance-help-dialog__icon{margin-bottom:12px}}
.attendance-list { display: grid; gap: 9px; }
.attendance-list h2 { margin: 22px 4px 4px; color: var(--blue); font-size: .72rem; text-transform: uppercase; letter-spacing: .12em; }
.attendance-student { display: grid; grid-template-columns: 1fr auto; min-height: 72px; overflow: hidden; border: 1px solid #d3dfe5; border-left: 6px solid #aebdc5; border-radius: 15px; background: white; transition: opacity .18s,border-color .18s,background .18s; }
.attendance-student__main { display: grid; grid-template-columns: 36px 1fr; align-items: center; gap: 12px; padding: 13px 16px; border: 0; background: transparent; color: var(--navy); text-align: left; cursor: pointer; }
.attendance-student__main strong { display: block; font-size: 1rem; line-height: 1.25; }
.attendance-student__main small { display: block; margin-top: 4px; color: var(--muted); font-size: .72rem; }
.attendance-family-notice { display:block; margin-top:7px; padding:6px 9px; border-radius:8px; background:#fff3bd; color:#705900; font-size:.7rem; line-height:1.35; }
.attendance-family-notice b { font-weight:800; }
.attendance-check { width: 31px; height: 31px; display: grid; place-items: center; border: 2px solid #aebdc5; border-radius: 50%; font-size: 1rem; font-weight: 800; }
.attendance-student.is-present { border-left-color: #24945f; background: #f0faf5; }
.attendance-student.is-present .attendance-check { border-color: #24945f; background: #24945f; color: white; }
.attendance-student.is-present .attendance-check::after { content: '✓'; }
.attendance-student.is-absent { border-left-color: #e56550; background: #fff6f3; }
.attendance-student.is-absent .attendance-check { border-color: #e56550; color: #b33d2b; }
.attendance-student.is-absent .attendance-check::after { content: '×'; }
.attendance-student.is-justified { border-left-color: #e5b62e; background: #fffaf0; }
.attendance-student.is-justified .attendance-check { border-color: #d7a91d; color: #8a6500; }
.attendance-student.is-justified .attendance-check::after { content: 'J'; font-size: .78rem; }
.attendance-student.is-saving { opacity: .55; pointer-events: none; }
.attendance-justify { display: none; align-self: stretch; width: 118px; padding: 8px 12px; border: 0; border-left: 1px solid rgba(0,0,0,.08); background: rgba(255,255,255,.45); color: #8a5c00; font-size: .67rem; font-weight: 700; cursor: pointer; }
.attendance-student.is-absent .attendance-justify,.attendance-student.is-justified .attendance-justify { display: block; }
.attendance-empty { display: grid; gap: 7px; padding: 30px; border: 1px dashed #b8cad3; border-radius: 16px; background: rgba(255,255,255,.55); text-align: center; }
.attendance-empty span { color: var(--muted); font-size: .78rem; }
.monitor-panel { margin-top: 22px; }
.monitor-panel .admin-panel__heading p:last-child { margin: 7px 0 0; color: var(--muted); font-size: .76rem; }
.monitor-panel .button { min-height: 40px; padding: 8px 14px; border-radius: 10px; font-size: .75rem; }
.monitor-default-form { display: grid; grid-template-columns: minmax(260px,1fr) minmax(170px,.45fr) auto; align-items: end; gap: 14px; padding: 18px; border: 1px solid #cbdde5; border-radius: 14px; background: #f1f6f8; }
.monitor-default-form > div { display:grid; gap:5px; }
.monitor-default-form > div span { color:var(--muted); font-size:.72rem; line-height:1.45; }
.monitor-manual { margin-top:14px; border:1px solid var(--line); border-radius:13px; overflow:hidden; }
.monitor-manual summary { padding:13px 16px; color:var(--blue); font-size:.75rem; font-weight:700; cursor:pointer; }
.monitor-create-form { display: grid; grid-template-columns: minmax(140px,.7fr) minmax(180px,1fr) minmax(140px,.6fr) auto; align-items: end; gap: 12px; padding: 17px; background: #f7fafb; }
.monitor-create-form label,.monitor-pin-form label,.monitor-default-form label,.monitor-identity-form label { display: grid; gap: 6px; }
.monitor-create-form label span,.monitor-pin-form label span,.monitor-default-form label span,.monitor-identity-form label span { color: var(--muted); font-size: .65rem; }
.monitor-create-form input,.monitor-pin-form input,.monitor-default-form input,.monitor-identity-form input { min-height: 43px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 10px; background: white; }
.monitor-list { display: grid; margin-top: 14px; }
.monitor-list article { display: grid; grid-template-columns: minmax(360px,1fr) auto auto; align-items: end; gap: 16px; padding: 15px 4px; border-bottom: 1px solid var(--line); }
.monitor-list article.is-disabled { opacity: .55; }
.monitor-list article small { color: var(--muted); font-size: .68rem; }
.monitor-identity-form { display:grid; grid-template-columns:minmax(120px,.55fr) minmax(180px,1fr) auto; align-items:end; gap:8px; }
.monitor-identity-form small { grid-column:1/-1; }
.monitor-identity-form button { min-height:39px; padding:8px 11px; border:0; border-radius:9px; background:#e8eff3; color:var(--navy); font-size:.7rem; font-weight:700; cursor:pointer; }
.monitor-pin-form { display: flex; align-items: end; gap: 7px; }
.monitor-pin-form input { width: 120px; }
.monitor-pin-form button,.monitor-toggle { min-height: 39px; padding: 8px 11px; border: 0; border-radius: 9px; background: #e8eff3; color: var(--navy); font-size: .7rem; font-weight: 700; cursor: pointer; }
.monitor-toggle { color: #9d2d1c; }
@media (max-width:700px) {
  .attendance-header .man-brand small,.attendance-header > div > span { display:none; }
  .attendance-main { width:min(100% - 20px,980px); padding-top:22px; }
  .attendance-title { display:grid; align-items:stretch; }
  .attendance-title-actions { display:grid; grid-template-columns:1fr auto; }
  .attendance-date { min-width:0; }
  .attendance-summary { grid-template-columns:repeat(2,1fr); }
  .attendance-summary span:first-child { grid-column:1/-1; }
  .attendance-student { min-height:76px; }
  .attendance-student__main { padding:13px 11px; }
  .attendance-justify { width:92px; padding:7px; }
  .monitor-create-form { grid-template-columns:1fr; }
  .monitor-create-form .button { width:100%; }
  .monitor-default-form { grid-template-columns:1fr; }
  .monitor-default-form .button { width:100%; }
  .monitor-list article { grid-template-columns:1fr auto; }
  .monitor-identity-form { grid-column:1/-1; grid-template-columns:1fr; }
  .monitor-identity-form small { grid-column:auto; }
  .monitor-pin-form { grid-column:1/-1; justify-content:stretch; }
  .monitor-pin-form label,.monitor-pin-form input { width:100%; }
}
@media (max-width:440px) {
  .attendance-title-actions { grid-template-columns:1fr; }
  .attendance-pdf-button { width:100%; }
  .attendance-export-form { width:100%; align-items:stretch; flex-direction:column; }
  .attendance-export-form .button { width:100%; }
  .monthly-attendance-dialog__panel { padding:22px 15px 15px; }
  .monthly-attendance-dialog__close { top:12px; right:12px; }
  .monthly-attendance-dialog__stats { align-items:stretch; flex-direction:column; }
  .monthly-attendance-table th,.monthly-attendance-table td { padding:10px 8px; }
  .monthly-attendance-table th:last-child,.monthly-attendance-table td:last-child { width:82px; }
}
@media (max-width:420px) {
  .attendance-login-card { padding:28px 22px; }
  .attendance-student__main strong { font-size:.92rem; }
}

/* Gestión familiar de la inscripción */
.family-management-hero { padding: 58px 0 92px; background: linear-gradient(135deg,var(--navy),#23628d); color:#fff; }
.family-management-hero h1 { margin:8px 0 10px; font:700 clamp(2.35rem,7vw,4.5rem) var(--serif); }
.family-management-hero p:last-child { max-width:640px; margin:0; color:#dceaf1; font-size:1.06rem; }
.family-management-section { min-height:480px; padding:0 0 80px; background:#eef3f5; }
.family-management-shell { transform:translateY(-52px); }
.family-management-shell > .notice { margin-bottom:16px; }
.family-access-card,.family-action-card,.family-summary { border:1px solid var(--line); background:#fff; box-shadow:0 18px 44px rgba(14,48,70,.09); }
.family-access-card { width:min(100%,620px); margin:0 auto; padding:clamp(24px,5vw,42px); border-radius:22px; }
.family-access-card h2,.family-action-card h2 { margin:6px 0 8px; color:var(--navy); font:700 1.75rem var(--serif); }
.family-access-card > p:not(.eyebrow),.family-action-card > p:not(.eyebrow) { color:var(--muted); line-height:1.6; }
.family-access-form,.family-action-card form { display:grid; gap:18px; margin-top:24px; }
.family-access-form input,.family-action-card input,.family-action-card textarea { width:100%; }
.family-summary { display:grid; grid-template-columns:1.4fr .7fr 1fr auto; align-items:center; gap:18px; padding:22px 25px; border-radius:18px; }
.family-summary div { display:grid; gap:5px; }
.family-summary span { color:var(--muted); font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; }
.family-summary strong { color:var(--navy); }
.family-logout-form button { padding:8px 11px; border:1px solid var(--line); border-radius:9px; background:#f3f7f8; color:var(--blue); font-size:.7rem; font-weight:700; cursor:pointer; }
.family-management-grid { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-top:20px; }
.family-action-card { padding:clamp(22px,4vw,34px); border-radius:20px; }
.family-days { display:grid; grid-template-columns:repeat(5,1fr); gap:7px; padding:0; border:0; }
.family-days legend { margin-bottom:9px; color:var(--muted); font-size:.72rem; }
.family-days label { position:relative; }

/* Control diario: navegación semanal y agrupación por curso */
.daily-attendance-dialog { width:min(1060px,calc(100% - 30px)); }
.daily-week-navigation { display:grid; grid-template-columns:42px minmax(0,1fr) 42px; align-items:stretch; gap:9px; margin:18px 0 12px; }
.daily-week-arrow { display:grid; min-height:52px; place-items:center; border:1px solid var(--line); border-radius:11px; background:#f3f7f9; color:var(--blue); font-size:1rem; font-weight:800; text-decoration:none; }
.daily-week-arrow:not(.is-disabled):hover { border-color:var(--blue); background:#e6f0f5; }
.daily-week-arrow.is-disabled { opacity:.35; }
.daily-week-days { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; }
.daily-week-day { display:grid; min-height:52px; place-items:center; align-content:center; gap:3px; padding:6px 8px; border:1px solid var(--line); border-radius:11px; background:#f8fafb; color:var(--muted); text-decoration:none; }
.daily-week-day span { font-size:.65rem; }
.daily-week-day b { color:var(--navy); font-size:.8rem; }
.daily-week-day:not(.is-disabled):not(.is-active):hover { border-color:#8fb5c9; background:#edf5f8; }
.daily-week-day.is-active { border-color:var(--navy); background:var(--navy); color:#dcebf2; box-shadow:0 7px 16px rgba(13,54,80,.16); }
.daily-week-day.is-active b { color:#fff; }
.daily-week-day.is-disabled { opacity:.38; }
.daily-attendance-stats { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:7px; margin-bottom:12px; }
.daily-attendance-stats span { display:flex; min-width:0; align-items:baseline; gap:6px; padding:9px 10px; border:1px solid transparent; border-radius:10px; background:#edf3f5; }
.daily-attendance-stats b { color:var(--navy); font-size:1rem; }
.daily-attendance-stats small { overflow:hidden; color:var(--muted); font-size:.62rem; text-overflow:ellipsis; white-space:nowrap; }
.daily-attendance-stats .is-total { border-color:#d3e2e9; background:#edf5f8; }
.daily-attendance-stats .is-reviewed { border-color:#c8dce7; background:#e3eef3; }
.daily-attendance-stats .is-present { border-color:#cbe8d8; background:#e9f7ef; }
.daily-attendance-stats .is-present b { color:#16764c; }
.daily-attendance-stats .is-justified { border-color:#eedb9c; background:#fff7db; }
.daily-attendance-stats .is-justified b { color:#876300; }
.daily-attendance-stats .is-absent { border-color:#efc6be; background:#fff0ed; }
.daily-attendance-stats .is-absent b { color:#b33d2b; }
.daily-attendance-stats .is-absences { grid-column:span 2; flex-wrap:wrap; border-color:#e8c8a7; background:linear-gradient(90deg,#fff8dc 0 49%,#fff0ed 51% 100%); }
.daily-attendance-stats .is-absences > b { color:#9a4a20; }
.daily-attendance-stats .is-absences > em { display:flex; min-width:0; align-items:center; gap:5px; margin-left:auto; font-style:normal; }
.daily-attendance-stats .is-absences > em > i { padding:4px 7px; border-radius:999px; font-size:.56rem; font-style:normal; font-weight:700; white-space:nowrap; }
.daily-attendance-stats .is-absences > em > i strong { margin-right:2px; font-size:.65rem; }
.daily-attendance-stats .is-absences > em > .is-justified { background:#fff1bd; color:#806000; }
.daily-attendance-stats .is-absences > em > .is-unjustified { background:#ffe0d9; color:#a43726; }
.daily-attendance-stats .is-pending { border-color:#dbe2e5; background:#f2f5f6; }
.daily-attendance-table th:nth-child(1),.daily-attendance-table td:nth-child(1) { width:auto; }
.daily-attendance-table th:nth-child(2),.daily-attendance-table td:nth-child(2) { width:170px; }
.daily-attendance-table th:nth-child(3),.daily-attendance-table td:nth-child(3) { width:185px; text-align:left; }
.daily-attendance-table tbody tr:not(.daily-course-heading) td { padding:9px 13px; }
.daily-course-heading th { position:static; padding:8px 13px!important; border-top:1px solid #c7d6dd; border-left:5px solid #5d8ca5; background:#eaf2f5; color:var(--navy); text-align:left!important; text-transform:none; }
.daily-course-heading th strong { display:inline-block; margin-right:12px; font-size:.76rem; }
.daily-course-heading th span { color:#547080; font-size:.62rem; font-weight:500; letter-spacing:0; }
.daily-course-heading.is-course-1 th,.daily-course-heading.is-course-4 th,.daily-course-heading.is-course-7 th { border-left-color:#64a983; background:#edf6f1; }
.daily-course-heading.is-course-2 th,.daily-course-heading.is-course-5 th,.daily-course-heading.is-course-8 th { border-left-color:#d3a93d; background:#faf5e8; }
.daily-course-heading.is-course-3 th,.daily-course-heading.is-course-6 th { border-left-color:#9273ad; background:#f3eff7; }

@media (max-width:760px) {
  .daily-attendance-dialog { width:calc(100% - 18px); }
  .daily-week-navigation { grid-template-columns:34px minmax(0,1fr) 34px; gap:5px; margin-top:15px; }
  .daily-week-arrow,.daily-week-day { min-height:46px; }
  .daily-week-days { gap:4px; }
  .daily-week-day { padding:5px 2px; }
  .daily-week-day span { max-width:3ch; overflow:hidden; font-size:.59rem; white-space:nowrap; }
  .daily-attendance-stats { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .daily-attendance-table { min-width:590px; }
}

@media (max-width:440px) {
  .daily-attendance-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .daily-course-heading th strong,.daily-course-heading th span { display:block; }
  .daily-course-heading th span { margin-top:3px; white-space:normal; }
}

/* Informe semanal de asistencia */
.weekly-attendance-dialog { width:min(1180px,calc(100% - 30px)); }
.weekly-report-navigation { display:flex; justify-content:space-between; gap:12px; margin:16px 0 10px; }
.weekly-report-navigation a,.weekly-report-navigation > span { display:inline-flex; align-items:center; gap:7px; padding:7px 10px; border:1px solid var(--line); border-radius:9px; background:#f5f8f9; color:var(--blue); font-size:.68rem; font-weight:700; text-decoration:none; }
.weekly-report-navigation a:hover { border-color:#8fb5c9; background:#eaf3f7; }
.weekly-report-navigation .is-disabled { opacity:.35; }
.weekly-attendance-stats { margin-bottom:9px; }
.weekly-attendance-legend { display:flex; flex-wrap:wrap; gap:7px 14px; margin:0 2px 10px; color:var(--muted); font-size:.62rem; }
.weekly-attendance-legend span { display:inline-flex; align-items:center; gap:5px; }
.weekly-attendance-legend i { display:inline-grid; width:21px; height:21px; place-items:center; border-radius:6px; background:#edf1f3; color:var(--muted); font-style:normal; font-weight:800; }
.weekly-attendance-legend i.is-present,.weekly-status.is-present { background:#dff3e8; color:#16764c; }
.weekly-attendance-legend i.is-justified,.weekly-status.is-justified { background:#fff1bd; color:#806000; }
.weekly-attendance-legend i.is-absent,.weekly-status.is-absent { background:#ffe5df; color:#b33d2b; }
.weekly-attendance-legend i.is-pending,.weekly-status.is-pending { background:#e9eef0; color:#526b78; }
.weekly-attendance-legend i.is-empty,.weekly-status.is-empty { background:transparent; color:#b1bec4; }
.weekly-attendance-table { min-width:820px; table-layout:fixed; }
.weekly-attendance-table th,.weekly-attendance-table td { text-align:center; }
.weekly-attendance-table th:first-child,.weekly-attendance-table td:first-child { width:280px; text-align:left; }
.weekly-attendance-table thead th:nth-child(n+2):nth-child(-n+6) { width:74px; }
.weekly-attendance-table th:nth-last-child(-n+3),.weekly-attendance-table td:nth-last-child(-n+3),.weekly-attendance-table th:last-child,.weekly-attendance-table td:last-child { width:48px; text-align:center; }
.weekly-attendance-table thead th b,.weekly-attendance-table thead th small,.weekly-attendance-table thead th em { display:block; }
.weekly-attendance-table thead th b { color:var(--navy); font-size:.72rem; }
.weekly-attendance-table thead th small { margin-top:1px; font-size:.58rem; }
.weekly-attendance-table thead th em { margin-top:4px; color:#77909d; font-size:.52rem; font-style:normal; font-weight:500; letter-spacing:0; }
.weekly-attendance-table tbody td { padding:7px 10px; }
.weekly-attendance-table tbody td:first-child strong { font-size:.74rem; }
.weekly-status { display:inline-grid; width:29px; height:29px; place-items:center; border-radius:8px; font-size:.72rem; font-weight:900; cursor:help; }
.weekly-total { font-size:.72rem; font-weight:800; }
.weekly-total.is-present { color:#16764c; }
.weekly-total.is-justified { color:#876300; }
.weekly-total.is-absent { color:#b33d2b; }
.weekly-course-heading th { position:static!important; width:auto!important; padding:7px 11px!important; border-top:1px solid #c7d6dd; border-left:5px solid #5d8ca5; background:#eaf2f5!important; color:var(--navy); font-size:.68rem; text-align:left!important; text-transform:none; }
.weekly-course-heading.is-course-1 th,.weekly-course-heading.is-course-4 th,.weekly-course-heading.is-course-7 th { border-left-color:#64a983; background:#edf6f1!important; }
.weekly-course-heading.is-course-2 th,.weekly-course-heading.is-course-5 th,.weekly-course-heading.is-course-8 th { border-left-color:#d3a93d; background:#faf5e8!important; }
.weekly-course-heading.is-course-3 th,.weekly-course-heading.is-course-6 th { border-left-color:#9273ad; background:#f3eff7!important; }

@media (max-width:760px) {
  .weekly-attendance-dialog { width:calc(100% - 18px); }
  .weekly-report-navigation span span { display:none; }
  .weekly-attendance-legend { gap:6px 10px; }
  .weekly-attendance-table-wrap { overflow:auto; }
}

/* Informe mensual completo */
.monthly-report-dialog { width:min(1060px,calc(100% - 30px)); }
.monthly-report-navigation { margin-bottom:12px; }
.monthly-report-stats { grid-template-columns:repeat(7,minmax(0,1fr)); margin-bottom:12px; }
.monthly-report-table { min-width:760px; table-layout:fixed; }
.monthly-report-table th,.monthly-report-table td { text-align:center; }
.monthly-report-table th:first-child,.monthly-report-table td:first-child { width:auto; text-align:left; }
.monthly-report-table th:nth-child(2),.monthly-report-table td:nth-child(2) { width:68px; }
.monthly-report-table th:nth-child(n+3),.monthly-report-table td:nth-child(n+3) { width:88px; }
.monthly-report-table th:last-child,.monthly-report-table td:last-child { width:92px; text-align:center; }
.monthly-report-table tbody td { padding:8px 11px; }
.monthly-report-table tbody td:first-child strong { font-size:.75rem; }
.monthly-number { font-size:.76rem; font-weight:800; }
.monthly-number.is-present { color:#16764c; }
.monthly-number.is-justified { color:#876300; }
.monthly-number.is-absent { color:#b33d2b; }
.monthly-number.is-pending { color:#607784; }
.monthly-rate { display:inline-grid; min-width:48px; min-height:28px; place-items:center; padding:0 7px; border-radius:8px; background:#e8f1f5; color:var(--blue); font-size:.7rem; font-weight:900; }
.monthly-rate.is-low { background:#fff0ed; color:#a73828; }
.monthly-course-heading th { position:static!important; width:auto!important; padding:7px 11px!important; border-top:1px solid #c7d6dd; border-left:5px solid #5d8ca5; background:#eaf2f5!important; color:var(--navy); font-size:.68rem; text-align:left!important; text-transform:none; }
.monthly-course-heading.is-course-1 th,.monthly-course-heading.is-course-4 th,.monthly-course-heading.is-course-7 th { border-left-color:#64a983; background:#edf6f1!important; }
.monthly-course-heading.is-course-2 th,.monthly-course-heading.is-course-5 th,.monthly-course-heading.is-course-8 th { border-left-color:#d3a93d; background:#faf5e8!important; }
.monthly-course-heading.is-course-3 th,.monthly-course-heading.is-course-6 th { border-left-color:#9273ad; background:#f3eff7!important; }

@media (max-width:760px) {
  .monthly-report-dialog { width:calc(100% - 18px); }
  .monthly-report-stats { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .monthly-report-table-wrap { overflow:auto; }
}

@media (max-width:440px) {
  .monthly-report-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* Centro unificado de informes */
.attendance-reports-panel > .admin-panel__heading { margin-bottom:15px; }
.attendance-reports-panel > .admin-panel__heading p:last-child { max-width:760px; margin:6px 0 0; color:var(--muted); font-size:.76rem; }
.attendance-report-tabs { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.attendance-report-tab { position:relative; display:grid; grid-template-columns:44px minmax(0,1fr); grid-template-rows:1fr auto; gap:12px 13px; min-height:190px; padding:18px; overflow:hidden; border:1px solid #cbdce4; border-top:4px solid #4b8fb2; border-radius:14px; background:#eef7fa; }
.attendance-report-tab.is-weekly { border-color:#d5dfc9; border-top-color:#71975e; background:#f2f7ed; }
.attendance-report-tab.is-monthly { border-color:#e2d8c1; border-top-color:#b98b35; background:#fbf6e9; }
.attendance-report-icon { display:grid; width:42px; height:42px; place-items:center; border-radius:12px; background:rgba(255,255,255,.72); color:#246b91; }
.attendance-report-tab.is-weekly .attendance-report-icon { color:#527e42; }
.attendance-report-tab.is-monthly .attendance-report-icon { color:#a17323; }
.attendance-report-icon svg { width:23px; height:23px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.attendance-report-tab .eyebrow { margin:0 0 3px; color:currentColor; font-size:.61rem; }
.attendance-report-tab h3 { margin:0; color:var(--navy); font:700 1.08rem var(--serif); }
.attendance-report-tab > div > p:last-child { margin:6px 0 0; color:var(--muted); font-size:.69rem; line-height:1.45; }
.attendance-report-actions { grid-column:1/-1; display:flex; align-items:center; gap:9px; }
.attendance-report-actions .button { flex:1; min-height:39px; padding:8px 11px; border-radius:9px; font-size:.7rem; text-align:center; }
.report-pdf-link { display:inline-flex; min-height:39px; align-items:center; gap:5px; padding:8px 11px; border:1px solid rgba(20,62,88,.2); border-radius:9px; background:rgba(255,255,255,.7); color:var(--blue); font-size:.68rem; font-weight:800; text-decoration:none; }
.report-pdf-link:hover { border-color:var(--blue); background:#fff; }
.report-dialog-tools { display:flex; align-items:flex-end; justify-content:flex-end; gap:9px; margin:14px 0 0; padding:9px; border:1px solid #d5e1e6; border-radius:11px; background:#f5f8f9; }
.report-dialog-tools form { display:flex; align-items:flex-end; gap:7px; }
.report-dialog-tools label { display:grid; gap:3px; color:var(--muted); font-size:.6rem; }
.report-dialog-tools input { min-height:36px; padding:6px 9px; border:1px solid #c8d7de; border-radius:8px; background:#fff; color:var(--navy); font:inherit; }
.report-dialog-tools button,.report-dialog-tools > a { display:inline-flex; min-height:36px; align-items:center; justify-content:center; padding:7px 11px; border:0; border-radius:8px; background:var(--navy); color:#fff; font-size:.65rem; font-weight:800; text-decoration:none; cursor:pointer; }
.report-dialog-tools > a { background:var(--blue); }

@media (max-width:900px) {
  .attendance-report-tabs { grid-template-columns:1fr; }
  .attendance-report-tab { min-height:0; grid-template-columns:44px minmax(0,1fr) auto; grid-template-rows:auto; align-items:center; }
  .attendance-report-actions { grid-column:auto; }
  .attendance-report-actions .button { min-width:120px; }
}

@media (max-width:620px) {
  .attendance-report-tab { grid-template-columns:40px minmax(0,1fr); }
  .attendance-report-actions { grid-column:1/-1; }
  .report-dialog-tools { align-items:stretch; flex-direction:column; }
  .report-dialog-tools form { width:100%; }
  .report-dialog-tools label { flex:1; }
  .report-dialog-tools input,.report-dialog-tools > a { width:100%; }
}
.family-days input { position:absolute; opacity:0; }
.family-days span { display:grid; place-items:center; min-height:45px; padding:6px; border:1px solid var(--line); border-radius:10px; color:var(--navy); font-size:.72rem; font-weight:700; cursor:pointer; }
.family-days input:checked + span { border-color:var(--blue); background:var(--blue); color:#fff; }
.family-date-grid { display:grid; grid-template-columns:1fr 1fr; align-items:start; gap:12px; }
.family-cancellation-card { grid-column:1/-1; border-color:#efc9c1; background:#fff8f6; }
.family-cancellation-card .eyebrow { color:#a63a29; }
.family-cancellation-card > p:not(.eyebrow) { max-width:760px; }
.family-cancellation-card form { max-width:820px; }
.family-cancellation-confirm { display:flex; align-items:flex-start; gap:9px; padding:12px 14px; border:1px solid #ecc8c0; border-radius:11px; background:#fff; color:#71352b; font-size:.72rem; font-weight:700; line-height:1.45; }
.family-cancellation-confirm input { flex:0 0 auto; width:17px; height:17px; margin-top:1px; accent-color:#a83c2b; }
.family-cancellation-button { justify-self:start; border:0; background:#a83c2b; color:#fff; }
.family-cancellation-button:hover { background:#842d20; }
.family-cancellation-pending { display:inline-flex; margin-top:12px; padding:7px 10px; border-radius:999px; background:#fff0c7; color:#775a00; font-size:.68rem; font-weight:800; }
.family-request-list article.is-cancellation { border-left-color:#c84b37; background:#fff8f6; }
.family-request-list article.is-cancellation .family-request-type { color:#a53625; }
.cancellation-decision { display:flex; gap:8px; padding:0; border:0; }
.cancellation-decision legend { margin-bottom:5px; color:var(--muted); font-size:.62rem; }
.cancellation-decision label { padding:6px 8px; border:1px solid #d6e0e4; border-radius:8px; background:#fff; color:var(--navy)!important; }
.cancellation-decision input { accent-color:var(--blue); }
.family-requests-panel { margin-bottom:12px; padding:0; overflow:hidden; }
.family-requests-summary { display:grid; grid-template-columns:1fr auto auto; align-items:center; gap:13px; padding:17px 20px; cursor:pointer; list-style:none; }
.family-requests-summary::-webkit-details-marker { display:none; }
.family-requests-summary .eyebrow { margin:0 0 2px; font-size:.64rem; }
.family-requests-summary h2 { font-size:1.18rem; }
.family-requests-count { min-width:30px; height:30px; display:grid; place-items:center; border-radius:999px; background:var(--yellow); color:var(--navy); font-size:.75rem; font-weight:800; }
.family-requests-chevron { color:var(--blue); font-size:1.35rem; line-height:1; transition:transform .2s; }
.family-requests-panel[open] .family-requests-chevron { transform:rotate(180deg); }
.family-requests-content { padding:0 20px 20px; border-top:1px solid var(--line); }
.family-requests-intro { margin:13px 0; color:var(--muted); font-size:.72rem; }
.family-request-list { display:grid; gap:8px; }
.family-request-list article { display:grid; grid-template-columns:1fr auto; align-items:center; gap:16px; padding:12px 14px; border:1px solid #cbdbe3; border-left:4px solid var(--yellow); border-radius:11px; background:#f8fbfc; }
.family-request-list h3 { margin:2px 0; color:var(--navy); font-size:.93rem; }
.family-request-list p { margin:0; color:var(--muted); font-size:.7rem; }
.family-request-list blockquote { margin:7px 0 0; padding:5px 9px; border-left:2px solid var(--yellow); background:#fff; color:var(--navy); font-size:.73rem; }
.family-request-list form { display:grid; justify-items:end; gap:6px; }
.family-request-list form label { color:var(--muted); font-size:.68rem; }
.family-request-list .button { min-height:38px; padding:8px 12px; border-radius:9px; font-size:.7rem; }
.family-request-type { color:var(--blue); font-size:.66rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.family-center-panel { margin-bottom:12px; padding:0; overflow:hidden; }
.family-center-summary { display:grid; grid-template-columns:38px 1fr auto auto; align-items:center; gap:13px; padding:18px 20px; cursor:pointer; list-style:none; }
.family-center-summary::-webkit-details-marker { display:none; }
.family-center-summary .eyebrow { margin:0 0 2px; font-size:.64rem; }
.family-center-summary h2 { font-size:1.2rem; }
.family-center-summary p:last-child { margin:4px 0 0; color:var(--muted); font-size:.69rem; }
.family-center-chevron { color:var(--blue); font-size:1.35rem; line-height:1; transition:transform .2s; }
.family-center-panel[open] .family-center-chevron { transform:rotate(180deg); }
.family-center-content { padding:16px 20px 20px; border-top:1px solid var(--line); }
.family-center-tabs { display:grid; grid-template-columns:repeat(2,minmax(150px,240px)); gap:8px; margin-bottom:13px; }
.family-center-tabs button { display:flex; min-height:44px; align-items:center; gap:8px; padding:8px 12px; border:1px solid #cedde4; border-radius:10px; background:#edf5f8; color:var(--navy); font-size:.71rem; font-weight:800; cursor:pointer; }
.family-center-tabs button:nth-child(2) { border-color:#dfdac9; background:#f8f5eb; }
.family-center-tabs button > span { display:grid; width:22px; height:22px; place-items:center; border-radius:7px; background:#fff; color:var(--blue); font-size:.75rem; }
.family-center-tabs button b { min-width:23px; margin-left:auto; padding:3px 6px; border-radius:999px; background:rgba(255,255,255,.75); font-size:.65rem; }
.family-center-tabs button[aria-selected="true"] { border-color:var(--blue); box-shadow:inset 0 0 0 1px var(--blue),0 5px 12px rgba(18,53,82,.07); }
.family-center-pane[hidden] { display:none!important; }
.family-center-empty { margin:0; padding:22px; border:1px dashed #c6d7de; border-radius:10px; background:#f8fbfc; color:var(--muted); font-size:.72rem; text-align:center; }

@media (max-width:620px) {
  .family-center-tabs { grid-template-columns:1fr 1fr; }
  .family-center-content { padding:13px; }
  .family-center-summary { padding:16px; }
}
.attendance-followup-panel { padding:0; overflow:hidden; border:2px solid #e6a532; background:#fffdf7; box-shadow:0 8px 22px rgba(122,76,0,.08); }
.attendance-followup-panel.no-pending { border-color:#bcdcca; background:#f8fcfa; box-shadow:0 8px 22px rgba(34,112,76,.06); }
.attendance-followup-summary { display:grid; grid-template-columns:38px 1fr auto auto; align-items:center; gap:13px; padding:17px 20px; cursor:pointer; list-style:none; }
.attendance-followup-summary::-webkit-details-marker { display:none; }
.attendance-followup-heading-icon { width:36px; height:36px; display:grid; place-items:center; border-radius:11px; background:#fff0c7; color:#a76400; }
.attendance-followup-panel.no-pending .attendance-followup-heading-icon { background:#e2f3e9; color:#26734d; }
.attendance-followup-heading-icon svg,.attendance-followup-tab-icon svg { width:21px; height:21px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.attendance-followup-summary .eyebrow { margin:0 0 2px; color:#a64b21; font-size:.64rem; }
.attendance-followup-panel.no-pending .attendance-followup-summary .eyebrow { color:#26734d; }
.attendance-followup-summary h2 { font-size:1.25rem; }
.attendance-followup-summary p:last-child { margin:3px 0 0; color:var(--muted); font-size:.69rem; }
.attendance-followup-count { min-width:68px; display:grid; grid-template-columns:auto auto; align-items:center; gap:5px; padding:7px 10px; border-radius:999px; background:#e5563f; color:#fff; }
.attendance-followup-panel.no-pending .attendance-followup-count { display:flex; justify-content:center; background:#dcefe4; color:#21623f; }
.attendance-followup-count b { font-size:.82rem; }
.attendance-followup-count small { font-size:.59rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; }
.attendance-followup-chevron { color:#a64b21; font-size:1.35rem; line-height:1; transition:transform .2s; }
.attendance-followup-panel[open] .attendance-followup-chevron { transform:rotate(180deg); }
.attendance-followup-content { padding:16px 20px 20px; border-top:1px solid #ead3a5; }
.attendance-followup-tabs { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-bottom:13px; }
.attendance-followup-tabs button { display:grid; grid-template-columns:34px 1fr auto; align-items:center; gap:10px; min-height:60px; padding:10px 12px; border:1px solid #ebc7bf; border-radius:12px; background:#fff6f3; color:var(--navy); text-align:left; cursor:pointer; }
.attendance-followup-tabs button:nth-child(2) { border-color:#ead58f; background:#fffbed; }
.attendance-followup-tabs button[aria-selected="true"] { border-color:#d86a35; box-shadow:inset 0 0 0 1px #d86a35,0 5px 12px rgba(122,76,0,.07); }
.attendance-followup-tab-icon { width:32px; height:32px; display:grid; place-items:center; border-radius:9px; background:#fff; color:#c34c37; }
.attendance-followup-tabs button:nth-child(2) .attendance-followup-tab-icon { color:#9b7000; }
.attendance-followup-tabs button > span:nth-child(2) { display:grid; gap:2px; }
.attendance-followup-tabs button strong { font-size:.74rem; }
.attendance-followup-tabs button small { color:var(--muted); font-size:.64rem; }
.attendance-followup-tabs button > b { min-width:28px; height:28px; display:grid; place-items:center; border-radius:999px; background:#e5563f; color:#fff; font-size:.7rem; }
.attendance-followup-tabs button:nth-child(2) > b { background:var(--yellow); color:var(--navy); }
.attendance-followup-pane > p { margin:13px 0; color:var(--muted); font-size:.72rem; }
.attendance-followup-empty { padding:14px; border:1px dashed #dacda9; border-radius:10px; background:#fff; text-align:center; }
.absence-warnings-panel { padding:0; overflow:hidden; border-color:#efc1b9; }
.absence-warnings-summary { display:grid; grid-template-columns:1fr auto auto; align-items:center; gap:13px; padding:17px 20px; cursor:pointer; list-style:none; }
.absence-warnings-summary::-webkit-details-marker { display:none; }
.absence-warnings-summary .eyebrow { margin:0 0 2px; color:#b33d2b; font-size:.64rem; }
.absence-warnings-summary h2 { font-size:1.18rem; }
.absence-warnings-count { min-width:30px; height:30px; display:grid; place-items:center; border-radius:999px; background:#ef5b43; color:#fff; font-size:.75rem; font-weight:800; }
.absence-warnings-chevron { color:#b33d2b; font-size:1.35rem; line-height:1; transition:transform .2s; }
.absence-warnings-panel[open] .absence-warnings-chevron { transform:rotate(180deg); }
.absence-warnings-content { padding:0 20px 20px; border-top:1px solid #efc1b9; }
.absence-warnings-intro { margin:13px 0; color:var(--muted); font-size:.72rem; }
.absence-warning-list { display:grid; gap:8px; }
.absence-warning-list article { display:grid; grid-template-columns:minmax(220px,1fr) auto auto; align-items:center; gap:18px; padding:12px 14px; border:1px solid #ecd1cc; border-left:4px solid var(--coral); border-radius:11px; background:#fff8f6; }
.absence-warning-list article > div { display:grid; gap:2px; }
.absence-warning-list article > div span { color:var(--muted); font-size:.7rem; }
.absence-warning-list article > b { color:#b33d2b; font-size:1.05rem; }
.absence-warning-list article > b small { display:block; color:var(--muted); font-size:.6rem; font-weight:600; }
.absence-warning-list article > a { color:var(--blue); font-size:.72rem; font-weight:800; text-decoration:none; }
.absence-email-panel { padding:0; overflow:hidden; border:2px solid #e0ad18; background:#fffdf4; }
.absence-email-summary { display:grid; grid-template-columns:1fr auto auto; align-items:center; gap:13px; padding:17px 20px; cursor:pointer; list-style:none; }
.absence-email-summary::-webkit-details-marker { display:none; }
.absence-email-summary .eyebrow { margin:0 0 2px; color:#8a6500; font-size:.64rem; }
.absence-email-summary h2 { font-size:1.18rem; }
.absence-email-count { min-width:30px; height:30px; display:grid; place-items:center; border-radius:999px; background:var(--yellow); color:var(--navy); font-size:.75rem; font-weight:800; }
.absence-email-chevron { color:#8a6500; font-size:1.35rem; line-height:1; transition:transform .2s; }
.absence-email-panel[open] .absence-email-chevron { transform:rotate(180deg); }
.absence-email-content { padding:0 20px 20px; border-top:1px solid #ead58f; }
.absence-email-content > p { margin:13px 0; color:var(--muted); font-size:.72rem; }
.absence-email-list { display:grid; gap:8px; }
.absence-email-list article { display:grid; grid-template-columns:1fr auto; align-items:center; gap:16px; padding:12px 14px; border:1px solid #ead58f; border-radius:11px; background:#fff; }
.absence-email-list article > div { display:grid; gap:2px; }
.absence-email-list article span { color:var(--muted); font-size:.7rem; }
.absence-email-list .button { min-height:38px; padding:8px 12px; border-radius:9px; font-size:.7rem; }
.absence-email-comment { display:grid; gap:3px; margin:8px 0 0; padding:9px 11px; border-left:3px solid #e0b940; border-radius:0 8px 8px 0; background:#fff9df; }
.absence-email-comment b { color:var(--navy); font-size:.63rem; }
.absence-email-comment span { color:#5e6670!important; font-size:.68rem!important; line-height:1.45; }
.family-history-panel { margin-bottom:12px; padding:0; overflow:hidden; }
.family-history-summary { display:grid; grid-template-columns:1fr auto auto; align-items:center; gap:13px; padding:15px 20px; cursor:pointer; list-style:none; }
.family-history-summary::-webkit-details-marker { display:none; }
.family-history-summary .eyebrow { margin:0 0 2px; font-size:.62rem; }
.family-history-summary h2 { font-size:1.08rem; }
.family-history-count { min-width:28px; height:28px; display:grid; place-items:center; border-radius:999px; background:#e7eef2; color:var(--navy); font-size:.7rem; font-weight:800; }
.family-history-chevron { color:var(--blue); font-size:1.25rem; line-height:1; transition:transform .2s; }
.family-history-panel[open] .family-history-chevron { transform:rotate(180deg); }
.family-history-content { padding:12px 20px 20px; border-top:1px solid var(--line); }
.family-history-list { display:grid; gap:7px; }
.family-history-list article { display:grid; grid-template-columns:1fr auto auto; align-items:center; gap:14px; padding:10px 12px; border:1px solid var(--line); border-radius:9px; background:#f8fbfc; }
.family-history-list article > div { display:grid; gap:2px; }
.family-history-list span,.family-history-list p { margin:0; color:var(--muted); font-size:.68rem; }
.family-history-list form button { padding:6px 9px; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--blue); font-size:.65rem; font-weight:700; cursor:pointer; }
.absence-warnings-panel,.absence-email-panel { margin-bottom:12px; }
.non-school-panel { margin-top:18px; }
.non-school-panel .admin-panel__heading p:last-child { margin:7px 0 0; color:var(--muted); font-size:.76rem; }
.school-calendar-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(200px,260px); align-items:start; gap:22px; }
.school-calendar { padding:13px; border:1px solid var(--line); border-radius:14px; background:#f8fbfc; }
.school-calendar__header { display:grid; grid-template-columns:34px 1fr 34px; align-items:center; gap:8px; margin-bottom:10px; }
.school-calendar__header strong { color:var(--navy); font:700 1rem var(--serif); text-align:center; text-transform:capitalize; }
.school-calendar__header button { width:34px; height:32px; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--blue); cursor:pointer; }
.school-calendar__header button:hover:not(:disabled) { background:var(--sky); }
.school-calendar__header button:disabled { opacity:.3; cursor:default; }
.school-calendar__weekdays,.school-calendar__days { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; }
.school-calendar__weekdays { margin-bottom:4px; }
.school-calendar__weekdays span { color:var(--muted); font-size:.6rem; font-weight:700; text-align:center; }
.school-calendar__days span { position:relative; display:grid; place-items:center; aspect-ratio:1; min-width:0; border-radius:50%; color:var(--ink); font-size:.68rem; }
.school-calendar__days .is-weekend { color:#9eabb1; }
.school-calendar__days .is-today { box-shadow:inset 0 0 0 1px var(--blue); font-weight:700; }
.school-calendar__days .is-closed { background:#f4c85f; color:#173b5d; box-shadow:none; font-weight:800; cursor:help; }
.school-calendar__days .is-empty { visibility:hidden; }
.school-calendar.is-multi-month > .school-calendar__weekdays,.school-calendar.is-multi-month > .school-calendar__days { display:none; }
.school-calendar__months { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
.school-calendar__month { min-width:0; }
.school-calendar__month > strong { display:block; margin-bottom:9px; color:var(--navy); font:700 .9rem var(--serif); text-align:center; text-transform:capitalize; }
@media (min-width:901px) {
  .school-calendar__months { gap:14px; }
  .school-calendar__month { min-width:0; padding:14px 12px 16px; border:1px solid #dbe6eb; border-radius:12px; background:#fff; box-shadow:0 5px 16px rgba(18,53,82,.045); }
  .school-calendar__month:nth-child(even) { background:#f1f6f8; }
  .school-calendar__month > strong { margin-bottom:12px; padding-bottom:9px; border-bottom:1px solid #e4ecef; }
}
.school-calendar__days .is-closed::after { content:attr(data-tooltip); position:absolute; z-index:20; left:50%; bottom:calc(100% + 7px); width:max-content; max-width:220px; padding:7px 9px; border-radius:7px; background:#173b5d; color:#fff; font:600 .65rem/1.35 var(--sans); text-align:left; box-shadow:0 6px 18px rgba(12,41,61,.22); opacity:0; pointer-events:none; transform:translate(-50%,4px); transition:opacity .15s ease,transform .15s ease; }
.school-calendar__days .is-closed:hover::after,.school-calendar__days .is-closed:focus::after { opacity:1; transform:translate(-50%,0); }
.school-calendar__details { padding:10px 0; }
.school-calendar__details > strong { display:block; margin-bottom:7px; color:var(--navy); font-size:.74rem; }
.school-calendar__details div { display:grid; gap:6px; }
.school-calendar__details p { display:grid; grid-template-columns:44px 1fr; align-items:start; gap:8px; margin:0; color:var(--muted); font-size:.7rem; line-height:1.4; }
.school-calendar__details p b { display:grid; min-height:24px; place-items:center; padding:0 5px; border-radius:999px; background:#f4c85f; color:#173b5d; font-size:.62rem; }
.school-calendar__details p.school-calendar__empty { display:block; padding:10px 12px; border:1px solid var(--line); border-radius:9px; background:#f8fbfc; color:var(--muted); line-height:1.45; }
.activity-panel { margin-bottom:12px; }
.activity-panel .admin-panel__heading p:last-child { margin:7px 0 0; color:var(--muted); font-size:.76rem; }
.activity-filters { display:grid; grid-template-columns:minmax(210px,1.25fr) minmax(170px,.9fr) 145px 145px auto auto; align-items:end; gap:9px; margin-bottom:16px; padding:14px; border:1px solid #c8dce7; border-radius:12px; background:var(--sky); }
.activity-filters label { display:grid; gap:5px; color:var(--muted); font-size:.65rem; }
.activity-filters input,.activity-filters select { min-width:0; width:100%; min-height:39px; padding:8px 10px; border:1px solid #b9d0dc; border-radius:8px; background:#fff; color:var(--ink); }
.activity-filters .button { min-height:39px; padding:8px 12px; }
.activity-filters > a { padding:11px 3px; color:var(--muted); font-size:.68rem; text-align:center; }
.activity-list { display:grid; gap:7px; }
.activity-empty { margin:0; padding:18px; border:1px dashed var(--line); border-radius:10px; color:var(--muted); font-size:.74rem; text-align:center; }
.activity-item { display:grid; grid-template-columns:78px minmax(0,1fr) minmax(130px,.28fr); align-items:center; gap:14px; padding:11px 13px; border:1px solid var(--line); border-radius:10px; background:#f9fbfc; }
.activity-item > time { display:grid; gap:1px; color:var(--navy); font-size:.7rem; font-weight:700; }
.activity-item > time small { color:var(--muted); font-size:.62rem; font-weight:500; }
.activity-item__main { display:grid; grid-template-columns:auto 1fr; align-items:center; gap:3px 8px; min-width:0; }
.activity-item__main > strong { min-width:0; overflow:hidden; color:var(--navy); font-size:.75rem; text-overflow:ellipsis; white-space:nowrap; }
.activity-item__main p,.activity-item__main > small { grid-column:1/-1; margin:0; color:var(--muted); font-size:.66rem; line-height:1.4; }
.activity-item__main > small { color:#49687a; }
.activity-category { display:inline-flex; padding:3px 6px; border-radius:999px; background:#e8f0f4; color:#34566a; font-size:.55rem; font-weight:800; letter-spacing:.03em; text-transform:uppercase; }
.activity-category--family { background:#e8f3ea; color:#39704a; }
.activity-category--attendance { background:#fff0c8; color:#805d08; }
.activity-category--email { background:#e8eefb; color:#3f5f9a; }
.activity-category--access { background:#f0eafb; color:#67498c; }
.activity-category--system { background:#edf0f1; color:#59666c; }
.activity-item__actor { display:grid; gap:2px; padding-left:12px; border-left:1px solid var(--line); }
.activity-item__actor span { color:var(--muted); font-size:.57rem; text-transform:uppercase; letter-spacing:.04em; }
.activity-item__actor strong { color:var(--ink); font-size:.68rem; }
.activity-item__actor small { min-width:0; overflow:hidden; color:var(--muted); font-size:.59rem; text-overflow:ellipsis; white-space:nowrap; }
.activity-pagination { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:12px; margin-top:15px; padding-top:14px; border-top:1px solid var(--line); }
.activity-pagination a { color:var(--blue); font-size:.7rem; font-weight:700; text-decoration:none; }
.activity-pagination a:last-child { text-align:right; }
.activity-pagination strong { color:var(--muted); font-size:.66rem; font-weight:600; }
.non-school-form { display:grid; grid-template-columns:160px 160px 1fr auto; align-items:end; gap:12px; padding:15px; border-radius:12px; background:var(--sky); }
.non-school-form label { display:grid; gap:5px; color:var(--muted); font-size:.68rem; }
.non-school-form input { width:100%; min-height:42px; padding:9px 11px; border:1px solid #b9d0dc; border-radius:9px; background:#fff; }
.non-school-form .button { min-height:42px; }
.non-school-list { display:grid; gap:7px; margin-top:14px; }
.non-school-list > p { color:var(--muted); font-size:.75rem; }
.non-school-list article { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:10px 12px; border:1px solid var(--line); border-radius:9px; background:#f8fbfc; }
.non-school-list article > div { display:flex; align-items:center; gap:14px; }
.non-school-list article span { color:var(--muted); font-size:.72rem; }
.non-school-list button { border:0; background:transparent; color:#a13a2c; font-size:.68rem; text-decoration:underline; cursor:pointer; }
@media(max-width:760px){.family-management-grid,.family-summary{grid-template-columns:1fr}.family-days{grid-template-columns:repeat(2,1fr)}.family-request-list article{grid-template-columns:1fr}.family-request-list form{justify-items:stretch}.family-request-list .button{width:100%}.family-date-grid{grid-template-columns:1fr}}
@media(max-width:760px){.absence-warning-list article{grid-template-columns:1fr auto}.absence-warning-list article > a{grid-column:1/-1}}
@media(max-width:760px){.absence-email-list article{grid-template-columns:1fr}.absence-email-list .button{width:100%}}
@media(max-width:760px){.attendance-followup-summary{grid-template-columns:34px 1fr auto;padding:15px}.attendance-followup-count{grid-column:2;justify-self:start}.attendance-followup-chevron{grid-column:3;grid-row:1}.attendance-followup-content{padding:14px}.attendance-followup-tabs{grid-template-columns:1fr}.attendance-followup-count small{display:none}}
@media(max-width:900px){.school-calendar-layout{grid-template-columns:1fr}.school-calendar{max-width:390px}.school-calendar__months{grid-template-columns:1fr}.school-calendar__details{max-width:390px}.non-school-form{grid-template-columns:1fr}.non-school-form .button{width:100%}.family-history-list article{grid-template-columns:1fr}.family-summary{grid-template-columns:1fr}.family-logout-form button{width:100%}}
@media(max-width:980px){.activity-filters{grid-template-columns:1fr 1fr}.activity-filters .button{width:100%}.activity-item{grid-template-columns:68px 1fr}.activity-item__actor{grid-column:2;padding:0;border:0;grid-template-columns:auto 1fr;gap:6px}.activity-item__actor span{align-self:center}}
@media(max-width:620px){.activity-filters{grid-template-columns:1fr}.activity-item{grid-template-columns:1fr;gap:7px}.activity-item > time{display:flex;gap:6px}.activity-item__actor{grid-column:1}.activity-item__main > strong{white-space:normal}}

/* Edición administrativa del alumnado */
.student-edit-link { display:flex; width:max-content; align-items:center; gap:7px; margin:0 0 14px; padding:9px 12px; border:1px solid #b9d0dc; border-radius:9px; background:#eef6f9; color:var(--blue); font-size:.7rem; font-weight:750; text-decoration:none; }
.student-edit-link:hover { background:#e2f0f5; }
.student-edit-main { width:min(100% - 28px,980px); margin:0 auto; padding:34px 0 70px; }
.student-edit-back { display:inline-flex; margin-bottom:14px; color:var(--blue); font-size:.74rem; font-weight:700; text-decoration:none; }
.student-edit-card { padding:clamp(22px,4vw,36px); }
.student-edit-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-bottom:24px; }
.student-edit-heading h1 { margin:3px 0 6px; color:var(--navy); font:700 clamp(1.8rem,4vw,2.7rem) var(--serif); }
.student-edit-heading p:last-child { margin:0; color:var(--muted); }
.student-edit-heading > span { padding:7px 10px; border-radius:8px; background:var(--navy); color:#fff; font-size:.7rem; font-weight:800; letter-spacing:.08em; }
.student-correction-form { display:grid; gap:20px; }
.student-correction-form fieldset { margin:0; padding:17px; border:1px solid var(--line); border-radius:12px; background:#f8fbfc; }
.student-correction-form legend { padding:0 7px; color:var(--navy); font-size:.76rem; font-weight:800; }
.student-edit-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
.student-edit-grid label { display:grid; gap:6px; color:var(--muted); font-size:.7rem; font-weight:650; }
.student-edit-grid input,.student-edit-grid select { width:100%; min-width:0; min-height:44px; padding:10px 11px; border:1px solid #c6d7df; border-radius:9px; background:#fff; color:var(--ink); }
.student-edit-grid input:focus,.student-edit-grid select:focus { outline:3px solid rgba(20,101,163,.12); border-color:var(--blue); }
.student-edit-notice { padding:12px 14px; border-left:3px solid var(--blue); border-radius:8px; background:#edf5f8; color:#49687a; font-size:.72rem; line-height:1.5; }
.student-edit-actions { display:flex; align-items:center; justify-content:flex-end; gap:14px; padding-top:4px; }
.student-edit-actions > a { color:var(--muted); font-size:.74rem; }
@media(max-width:720px){.student-edit-heading{display:grid}.student-edit-heading>span{width:max-content}.student-edit-grid{grid-template-columns:1fr}.student-edit-actions{align-items:stretch;flex-direction:column-reverse}.student-edit-actions .button{width:100%}.student-edit-actions>a{text-align:center}}

/* Ficha desplegada compacta en pantallas de escritorio */
@media (min-width:901px) {
  .application-detail { padding:14px 16px 12px; }
  .application-detail .detail-grid { grid-template-columns:repeat(10,minmax(0,1fr)); gap:8px; margin-bottom:10px; }
  .application-detail .detail-grid > div { padding:9px 11px; border-radius:8px; }
  .application-detail .detail-grid > div:nth-child(-n+5) { grid-column:span 2; }
  .application-detail .detail-grid .detail-wide { grid-column:auto; }
  .application-detail .detail-grid .enrollment-days { grid-column:span 5; }
  .application-detail .detail-grid .detail-criteria { grid-column:span 5; }
  .application-detail .detail-grid .detail-reason { grid-column:1 / -1; }
  .application-detail .detail-grid strong,.application-detail .detail-grid a,.application-detail .detail-grid p { margin-top:2px; line-height:1.3; }
  .application-detail .student-edit-link { width:max-content; margin:0 0 8px auto; padding:6px 10px; border-color:#c8d7df; border-radius:7px; background:#fff; font-size:0; }
  .application-detail .student-edit-link::before { content:'✎  Editar datos'; font-size:.66rem; }
  .application-detail .student-edit-link:hover { background:#edf5f8; }
  .application-detail .application-edit { gap:8px; }
  .application-detail .application-edit textarea { min-height:42px; height:42px; }
  .application-detail .application-edit .button { min-height:42px; }
  .application-detail .delete-form { margin-top:7px; }
}

/* Días contratados dentro de la ficha del alumno */
.enrollment-days__week { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:7px; margin-top:7px; }
.detail-grid .enrollment-day { display:grid; min-height:38px; place-items:center; padding:5px; border:1px solid #efc8c0; border-radius:8px; background:#fbe9e5; color:#a34838; font-size:.76rem; font-weight:900; letter-spacing:0; text-transform:uppercase; }
.detail-grid .enrollment-day b { display:block; width:auto; height:auto; border:0; border-radius:0; background:transparent; color:inherit; font-size:inherit; }
.detail-grid .enrollment-day small,.detail-grid .enrollment-day i { display:none; }
.detail-grid .enrollment-day.is-selected { border-color:#abd9bf; background:#dff3e8; color:#176b49; box-shadow:none; }
.detail-grid .enrollment-day.is-selected b { background:transparent; color:inherit; }
@media(max-width:620px){.enrollment-days__week{gap:5px}.detail-grid .enrollment-day{min-height:36px;padding:4px}}
