
:root{
  --navy:#172f4f;--navy2:#24496f;--slate:#5f7185;--light:#eef3f7;
  --lighter:#f7f9fb;--line:#d6e0e8;--text:#1d2a38;--muted:#657485;
  --pink:#ff0f73;--green:#16794a;--green-bg:#e4f5ec;--amber:#9a6500;
  --amber-bg:#fff3d6;--red:#a43c3c;--red-bg:#fae8e8;--shadow:0 8px 24px rgba(21,47,79,.09);
}
*{box-sizing:border-box}
html{background:#eef2f5;overscroll-behavior-y:none}
body{overscroll-behavior-y:none;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--text);background:linear-gradient(180deg,#f7f9fb,#edf2f6);min-height:100vh}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
.app-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;padding:10px 18px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);backdrop-filter:blur(10px)}
.brand-logo{width:92px;height:58px;object-fit:contain}
.brand-copy{flex:1}.brand-copy h1{font-size:19px;margin:0;color:var(--navy)}.brand-copy p{font-size:12px;margin:2px 0;color:var(--muted)}
.header-actions{display:flex;gap:8px;align-items:center}
.status-pill,.pill{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:700;background:var(--green-bg);color:var(--green)}
.status-pill.offline{background:var(--amber-bg);color:var(--amber)}
main{max-width:1180px;margin:auto;padding:22px 20px 92px}
.view{display:none}.view.active{display:block}
.view-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:0 0 16px}
.view-heading h2{margin:0;color:var(--navy);font-size:28px}.view-heading p{margin:4px 0 0;color:var(--muted)}
.panel{background:white;border:1px solid var(--line);border-radius:18px;padding:18px;margin-bottom:16px;box-shadow:var(--shadow)}
.panel.note{background:#f0f5f9;border-left:5px solid var(--navy2)}
.panel h3{margin:0 0 12px;color:var(--navy)}
.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.panel-title h3{margin:0}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.kpi{background:white;border:1px solid var(--line);border-radius:17px;padding:16px;box-shadow:var(--shadow)}
.kpi .label{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800}
.kpi .value{font-size:29px;font-weight:850;color:var(--navy);margin-top:5px}.kpi .sub{font-size:12px;color:var(--muted);margin-top:3px}
.stack{display:flex;flex-direction:column;gap:9px}
.list-card{border:1px solid var(--line);border-radius:13px;padding:11px 13px;background:var(--lighter);display:flex;gap:10px;align-items:center}
.list-card .grow{flex:1}.list-card strong{color:var(--navy)}.list-card small{color:var(--muted);display:block;margin-top:2px}
.btn{border:0;border-radius:11px;padding:10px 14px;font-weight:750;transition:.15s}
.btn.primary{background:var(--navy);color:white}.btn.primary:hover{background:var(--navy2)}
.btn.secondary{background:#e8eef4;color:var(--navy)}.btn.ghost{background:white;color:var(--navy);border:1px solid var(--line)}
.btn.danger{background:var(--red-bg);color:var(--red)}
.btn.small{padding:7px 10px;font-size:12px}
.link-btn{border:0;background:none;color:var(--navy2);font-weight:750}
.hidden{display:none!important}
.form-grid{display:grid;gap:12px;align-items:end}.form-grid.two{grid-template-columns:repeat(2,1fr)}.form-grid.three{grid-template-columns:repeat(3,1fr)}.form-grid.four{grid-template-columns:repeat(4,1fr)}.form-grid.five{grid-template-columns:repeat(5,1fr)}
.form-stack{display:flex;flex-direction:column;gap:12px}
label{font-size:13px;font-weight:750;color:var(--navy)}
input,select,textarea{width:100%;margin-top:5px;border:1px solid #c8d4df;border-radius:10px;background:white;padding:10px;color:var(--text);outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--navy2);box-shadow:0 0 0 3px rgba(36,73,111,.12)}
textarea{resize:vertical}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:14px 0}
.muted{color:var(--muted);font-size:13px}
.roster{display:flex;flex-direction:column;gap:8px}
.roster-row{display:grid;grid-template-columns:minmax(180px,1fr) auto;gap:10px;align-items:center;padding:11px;border:1px solid var(--line);border-radius:13px;background:var(--lighter)}
.roster-row .name{font-weight:800;color:var(--navy)}.roster-row small{color:var(--muted)}
.segmented{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
.segmented button{padding:7px 9px;border-radius:9px;border:1px solid var(--line);background:white;font-size:12px;font-weight:800}
.segmented button.active.present{background:var(--green-bg);border-color:#9ed7ba;color:var(--green)}
.segmented button.active.absent{background:var(--amber-bg);border-color:#e8ca8d;color:var(--amber)}
.segmented button.active.drop{background:var(--red-bg);border-color:#dfb1b1;color:var(--red)}
.segmented button.active.cash,.segmented button.active.bizum{background:#e3edf8;border-color:#9eb8d3;color:var(--navy)}
.payment-due{font-weight:850;color:var(--navy);min-width:48px;text-align:right}
.class-card{border:1px solid var(--line);border-radius:14px;padding:13px;background:var(--lighter)}
.class-card h4{margin:0;color:var(--navy)}.class-card p{margin:6px 0;font-size:13px}.class-card .meta{color:var(--muted);font-size:12px}
.class-actions{display:flex;gap:8px;margin-top:10px}
.subnav{display:flex;gap:8px;overflow:auto;padding-bottom:10px;margin-bottom:10px}
.subnav button{white-space:nowrap;border:1px solid var(--line);background:white;color:var(--navy);border-radius:999px;padding:9px 13px;font-weight:800}
.subnav button.active{background:var(--navy);color:white}
.tab-panel{display:none}.tab-panel.active{display:block}
.add-box{border:1px dashed #aebdca;border-radius:12px;padding:11px;margin-bottom:14px;background:var(--lighter)}
.add-box summary{font-weight:800;color:var(--navy);cursor:pointer;margin-bottom:10px}
.student-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.student-card{border:1px solid var(--line);border-radius:14px;padding:13px;background:white}
.student-card h4{margin:0 0 3px;color:var(--navy)}.student-card .phone{font-size:12px;color:var(--muted)}
.student-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.student-card-actions{display:flex;gap:6px}.student-card .btn{flex:0 0 auto}
.modal-dialog{width:min(860px,calc(100vw - 24px));max-height:calc(100vh - 24px);border:0;padding:0;border-radius:20px;background:transparent;box-shadow:0 24px 80px rgba(15,35,58,.28)}
.modal-dialog::backdrop{background:rgba(15,35,58,.52);backdrop-filter:blur(3px)}
.modal-card{background:white;border:1px solid var(--line);border-radius:20px;padding:20px;max-height:calc(100vh - 24px);overflow:auto}
.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}.modal-header h3{margin:0;color:var(--navy);font-size:23px}.modal-header p{margin:3px 0 0;color:var(--muted);font-size:13px}
.icon-btn{width:38px;height:38px;border:1px solid var(--line);background:white;border-radius:50%;font-size:25px;line-height:1;color:var(--navy)}
.modal-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:18px 0 10px}.modal-section-title h4{margin:0;color:var(--navy)}.modal-section-title p{margin:2px 0 0;color:var(--muted);font-size:12px}
.enrollment-editor{display:flex;flex-direction:column;gap:8px}.enrollment-row{display:grid;grid-template-columns:minmax(0,1fr) 150px;align-items:center;gap:10px;border:1px solid var(--line);border-radius:13px;padding:10px;background:var(--lighter)}
.enrollment-check{display:flex;align-items:flex-start;gap:10px;margin:0;color:var(--text);font-weight:600}.enrollment-check input{width:18px;height:18px;margin:2px 0 0;flex:0 0 auto}.enrollment-check strong{display:block;color:var(--navy)}.enrollment-check small{display:block;color:var(--muted);font-weight:500;margin-top:2px}
.enrollment-row select{margin:0}.enrollment-row.disabled{opacity:.62}.modal-help{font-size:12px;color:var(--muted);background:var(--lighter);border-radius:10px;padding:9px 11px}
.modal-actions{display:flex;align-items:center;gap:9px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.modal-actions .grow{flex:1}
.chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}.chip{font-size:11px;background:var(--light);color:var(--navy);border-radius:999px;padding:5px 8px}.chip.pending{background:var(--amber-bg);color:var(--amber)}.chip.inactive{background:var(--red-bg);color:var(--red)}
.progress-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-top:14px}
.progress-item{border:1px solid var(--line);border-radius:13px;padding:11px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--lighter)}
.progress-item.done{background:var(--green-bg);border-color:#a8d8bf}.progress-item strong{color:var(--navy)}
.progress-item button{border:1px solid var(--line);background:white;border-radius:9px;padding:7px 9px;font-weight:800;color:var(--navy)}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:10px;border-bottom:1px solid var(--line)}th{color:var(--navy);background:var(--lighter)}
.event-row{display:flex;align-items:center;gap:12px;padding:11px;border:1px solid var(--line);border-radius:13px}.event-row .grow{flex:1}.event-status{font-size:11px;border-radius:999px;padding:5px 8px;background:#e7eef6;color:var(--navy)}.event-status.probable{background:var(--amber-bg);color:var(--amber)}
.file-btn input{display:none}
.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:30;background:rgba(255,255,255,.97);border-top:1px solid var(--line);display:flex;justify-content:center;padding:8px max(8px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));box-shadow:0 -8px 24px rgba(20,44,70,.08)}
.bottom-nav button{flex:1;max-width:160px;border:0;background:transparent;color:var(--muted);font-size:11px;font-weight:800;padding:5px}.bottom-nav button span{display:block;font-size:20px;line-height:20px;margin-bottom:3px}.bottom-nav button.active{color:var(--navy)}
.toast{position:fixed;left:50%;bottom:86px;transform:translate(-50%,20px);background:#172f4f;color:white;border-radius:12px;padding:10px 15px;opacity:0;pointer-events:none;transition:.25s;z-index:50;box-shadow:var(--shadow)}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:820px){
  .two-col,.kpi-grid{grid-template-columns:1fr 1fr}.student-grid,.progress-grid{grid-template-columns:1fr}
  .form-grid.three,.form-grid.four,.form-grid.five{grid-template-columns:1fr 1fr}.brand-logo{width:76px}.view-heading h2{font-size:24px}
}
@media(max-width:560px){
  .modal-card{padding:14px}.enrollment-row{grid-template-columns:1fr}.modal-section-title{align-items:flex-start;flex-direction:column}.modal-actions{flex-wrap:wrap}.modal-actions .grow{display:none}.modal-actions .btn{flex:1 1 auto}

  main{padding:16px 12px 90px}.app-header{padding:8px 10px}.brand-copy p{display:none}.status-pill{display:none}
  .two-col,.kpi-grid,.form-grid.two,.form-grid.three,.form-grid.four,.form-grid.five{grid-template-columns:1fr}.kpi-grid{grid-template-columns:1fr 1fr}
  .panel{padding:14px;border-radius:15px}.view-heading{align-items:flex-start}.view-heading .btn{font-size:12px;padding:9px 10px}
  .roster-row{grid-template-columns:1fr}.segmented{justify-content:flex-start}.brand-logo{width:68px;height:48px}
}
@media print{.bottom-nav,.app-header,.btn,.subnav{display:none!important}main{padding:0}.panel{box-shadow:none}}

/* v0.4 · Biblioteca de vídeos */
.field-help{display:block;margin-top:6px;color:var(--muted);font-weight:500;font-size:11px;line-height:1.35}
.video-chip{display:inline-flex;align-items:center;gap:6px;margin-top:6px;padding:6px 9px;border-radius:999px;background:#e8eef4;color:var(--navy);font-size:11px;font-weight:800}
.external-video a{color:var(--navy2);font-weight:750}
.video-grid{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.video-card{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:11px;border:1px solid var(--line);border-radius:15px;padding:12px;background:var(--lighter)}
.video-icon{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--navy);color:#fff;font-size:17px;padding-left:2px;box-shadow:0 5px 12px rgba(23,47,79,.16)}
.video-card .grow{min-width:0}.video-card strong{display:block;color:var(--navy);margin-bottom:2px}.video-card small{display:block;color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.video-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.video-modal-card{width:min(900px,calc(100vw - 24px))}
.video-modal-card video{display:block;width:100%;max-height:68vh;background:#0b1726;border-radius:14px;box-shadow:0 10px 28px rgba(15,35,58,.18)}
#videoStorageInfo{white-space:normal;text-align:center;line-height:1.2}
@media(max-width:720px){
  .video-card{grid-template-columns:40px minmax(0,1fr)}
  .video-icon{width:40px;height:40px}.video-actions{grid-column:1 / -1;justify-content:flex-start}
  .video-actions .btn{flex:1 1 auto}
}

.video-folder-box{display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid var(--line);background:var(--lighter);border-radius:16px;padding:14px 16px;margin:12px 0 16px}.video-folder-box p{margin:4px 0 0}.toolbar.compact{margin:0;justify-content:flex-end}@media(max-width:760px){.video-folder-box{align-items:stretch;flex-direction:column}.toolbar.compact{justify-content:flex-start}}

/* v0.6 · nube */
.cloud-pill{border:1px solid #cbd5e1;background:#fff;color:#172f4f;cursor:pointer;font:inherit}
.status-pill.ok,.cloud-pill.ok{background:#ecfdf5;color:#166534;border-color:#bbf7d0}
.status-pill.warning,.cloud-pill.warning{background:#fff7ed;color:#9a3412;border-color:#fed7aa}
.cloud-panel{border:1px solid #cbd5e1}
.cloud-login-box{margin-top:14px;padding-top:14px;border-top:1px solid #e2e8f0}
.cloud-user-line{display:flex;gap:14px;justify-content:space-between;align-items:center;flex-wrap:wrap;margin:12px 0}
#cloudKey{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
@media (max-width:700px){.header-actions{gap:6px}.cloud-pill{max-width:155px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cloud-panel .toolbar{align-items:stretch}.cloud-panel .toolbar .btn{flex:1 1 160px}}

/* v0.7 · sincronización en directo */
.status-pill.live,.cloud-pill.live{background:#e8f7ff;color:#075985;border-color:#bae6fd}
.realtime-status{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800;border:1px solid var(--line);background:var(--lighter);color:var(--muted)}
.realtime-status.live{background:#e8f7ff;color:#075985;border-color:#bae6fd}
.realtime-status.connecting{background:var(--amber-bg);color:var(--amber);border-color:#f4d88d}
.realtime-status.error{background:var(--red-bg);color:var(--red);border-color:#e5b1b1}
.cloud-last-sync{margin:-4px 0 12px;font-size:12px}
@media(max-width:560px){
  #connectionBadge{display:none!important}
  #cloudQuickBtn{display:inline-flex!important;max-width:145px;padding:5px 8px}
  .cloud-user-line{align-items:flex-start}
}

/* v0.7.2 · pagos parciales */
.payment-row{align-items:start}
.payment-person{min-width:0}.payment-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.payment-totals{display:flex;flex-direction:column;align-items:flex-end;min-width:125px}.payment-totals strong{color:var(--navy);font-size:14px}.payment-totals small{font-size:11px}
.payment-status{display:inline-flex;vertical-align:middle;margin-left:6px;padding:3px 7px;border-radius:999px;font-size:10px;font-weight:850}
.payment-status.pending{background:var(--lighter);color:var(--muted);border:1px solid var(--line)}
.payment-status.partial{background:var(--amber-bg);color:var(--amber);border:1px solid #e8ca8d}
.payment-status.paid{background:var(--green-bg);color:var(--green);border:1px solid #9ed7ba}
.payment-movements{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.payment-movement{display:inline-flex;align-items:center;gap:4px;background:white;border:1px solid var(--line);border-radius:999px;padding:4px 5px 4px 8px;font-size:11px;color:var(--muted)}
.payment-movement button{width:20px;height:20px;border:0;border-radius:50%;background:transparent;color:var(--muted);font-size:15px;line-height:18px;cursor:pointer;padding:0}.payment-movement button:hover{background:var(--red-bg);color:var(--red)}
.payment-complete{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--green-bg);color:var(--green);font-weight:900}
.payment-modal-card{width:min(620px,calc(100vw - 24px))}
@media(max-width:700px){.payment-actions{justify-content:space-between}.payment-totals{align-items:flex-start}.payment-actions .add-payment{margin-left:auto}.payment-status{margin-left:2px}.payment-movement{font-size:10px}}

/* v0.9.0 · Interfaz moderna, profundidad visual y nuevas pantallas */
:root{
  --surface:#ffffff;--surface-soft:rgba(255,255,255,.82);--surface-raised:#fbfdff;--navy3:#0f233b;--cyan:#2d7eaa;--blue-soft:#e9f4fb;
  --shadow-sm:0 6px 18px rgba(15,35,59,.07);--shadow-md:0 14px 34px rgba(15,35,59,.11),0 2px 7px rgba(15,35,59,.04);--shadow-lg:0 24px 60px rgba(15,35,59,.16),0 4px 12px rgba(15,35,59,.05)
}
html{background:#edf3f7}
body{background:radial-gradient(circle at 6% 4%,rgba(45,126,170,.10),transparent 28rem),radial-gradient(circle at 96% 14%,rgba(23,47,79,.08),transparent 30rem),linear-gradient(180deg,#f8fbfd 0%,#eef4f8 46%,#f7fafc 100%);background-attachment:fixed}
.app-header{background:rgba(252,254,255,.86);border-bottom:1px solid rgba(196,211,223,.72);box-shadow:0 8px 28px rgba(20,44,70,.06);backdrop-filter:blur(18px) saturate(1.15)}
.brand-copy h1{font-weight:880;letter-spacing:-.02em}.brand-logo{filter:drop-shadow(0 5px 8px rgba(15,35,59,.08))}main{max-width:1220px;padding-top:26px}.view-heading{margin-bottom:20px}.view-heading h2{letter-spacing:-.035em;font-weight:880}.view-heading p{font-size:13px}
.panel{border:1px solid rgba(204,217,228,.86);background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(249,252,254,.96));box-shadow:var(--shadow-md);border-radius:22px;position:relative}.panel::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.9)}.panel.note{background:linear-gradient(145deg,#f2f7fb,#eaf2f8);border-left:0;box-shadow:var(--shadow-sm)}.panel.note::before{content:"";position:absolute;left:0;top:18px;bottom:18px;width:4px;border-radius:5px;background:linear-gradient(180deg,var(--navy2),var(--cyan))}
.kpi{border:1px solid rgba(205,218,229,.82);border-radius:20px;background:linear-gradient(145deg,#fff,#f7fbfd);box-shadow:var(--shadow-md);overflow:hidden;position:relative;transition:transform .18s ease,box-shadow .18s ease}.kpi::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:linear-gradient(180deg,var(--navy),var(--cyan));opacity:.85}.kpi:nth-child(2)::before{background:linear-gradient(180deg,#3b6d91,#75a8c5)}.kpi:nth-child(3)::before{background:linear-gradient(180deg,#9a6500,#d9a62c)}.kpi:nth-child(4)::before{background:linear-gradient(180deg,#16794a,#51ad7c)}.kpi .value{letter-spacing:-.04em}.kpi .label{font-size:11px}
@media(hover:hover){.kpi:hover,.student-card:hover,.class-card:hover,.video-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}}
.list-card,.roster-row,.student-card,.class-card,.video-card,.event-row,.progress-item{border-color:rgba(205,218,229,.86);background:linear-gradient(145deg,#fff,#f8fbfd);box-shadow:0 5px 14px rgba(15,35,59,.045);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.list-card{border-radius:16px;padding:13px 14px}.roster-row{border-radius:16px;padding:13px}.student-card,.class-card{border-radius:18px;padding:15px}.video-card{border-radius:18px}
.btn{border-radius:12px;box-shadow:0 3px 7px rgba(15,35,59,.06);transform:translateZ(0)}.btn.primary{background:linear-gradient(145deg,#1d3d62,#102945);box-shadow:0 7px 16px rgba(23,47,79,.20),inset 0 1px 0 rgba(255,255,255,.15)}.btn.primary:hover{background:linear-gradient(145deg,#274f79,#173652);box-shadow:0 9px 20px rgba(23,47,79,.24)}.btn.secondary{background:linear-gradient(145deg,#eef5fa,#dde9f1);border:1px solid #cfdee9;box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 3px 7px rgba(15,35,59,.05)}.btn.ghost{background:rgba(255,255,255,.82);backdrop-filter:blur(6px)}.btn:active{transform:translateY(1px);box-shadow:none}
input,select,textarea{border-color:#cbd9e4;border-radius:12px;background:linear-gradient(180deg,#fff,#fbfdfe);box-shadow:inset 0 1px 2px rgba(15,35,59,.035),0 1px 0 rgba(255,255,255,.8);transition:border-color .15s,box-shadow .15s,background .15s}input:focus,select:focus,textarea:focus{background:#fff;border-color:#5c89a8;box-shadow:0 0 0 4px rgba(45,126,170,.12),0 4px 10px rgba(15,35,59,.05)}
.subnav{padding:4px 4px 12px}.subnav button{background:rgba(255,255,255,.72);box-shadow:0 3px 10px rgba(15,35,59,.05)}.subnav button.active{background:linear-gradient(145deg,#23496e,#122d4b);box-shadow:0 7px 16px rgba(23,47,79,.18)}
.bottom-nav{bottom:10px;left:50%;right:auto;transform:translateX(-50%);width:min(620px,calc(100% - 20px));border:1px solid rgba(199,214,226,.86);border-radius:22px;background:rgba(253,254,255,.91);backdrop-filter:blur(18px) saturate(1.2);padding:7px;box-shadow:0 18px 44px rgba(15,35,59,.17)}.bottom-nav button{border-radius:15px;padding:7px 5px;transition:.16s}.bottom-nav button.active{background:linear-gradient(145deg,#e9f2f8,#fff);color:var(--navy);box-shadow:inset 0 0 0 1px #d6e3ec,0 4px 10px rgba(15,35,59,.07)}.bottom-nav button span{font-size:19px}.toast{border-radius:14px;background:rgba(15,35,59,.94);backdrop-filter:blur(12px);box-shadow:0 14px 34px rgba(15,35,59,.28)}
.update-banner{position:sticky;top:79px;z-index:19;margin:0 auto;width:min(900px,calc(100% - 28px));display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 13px;border:1px solid #bcd7e7;border-radius:0 0 16px 16px;background:linear-gradient(135deg,#edf8ff,#fff);box-shadow:0 10px 24px rgba(15,35,59,.10)}.update-banner div{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.update-banner strong{color:var(--navy)}.update-banner span{font-size:12px;color:var(--muted)}
.attendance-panel{overflow:hidden}.attendance-context{display:flex;align-items:center;gap:14px;margin:-18px -18px 18px;padding:18px 20px;background:linear-gradient(135deg,#152f4f,#285b7e);color:#fff;box-shadow:inset 0 -1px 0 rgba(255,255,255,.08)}.attendance-context .context-icon{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-size:23px;font-weight:900;background:linear-gradient(145deg,rgba(255,255,255,.23),rgba(255,255,255,.10));box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 8px 16px rgba(0,0,0,.12)}.attendance-context .grow{flex:1;min-width:0}.attendance-context .eyebrow,.student-profile-hero .eyebrow{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.1em;font-weight:850;opacity:.76;margin-bottom:3px}.attendance-context strong{display:block;font-size:17px}.attendance-context small{display:block;margin-top:2px;color:rgba(255,255,255,.76)}.context-date{font-size:11px;font-weight:900;border-radius:999px;padding:6px 9px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.18);white-space:nowrap}.context-date.past{background:#fff0c5;color:#805a00;border-color:#f0d58b}.attendance-controls{grid-template-columns:minmax(240px,1.5fr) minmax(180px,1fr) auto;align-items:end}.attendance-controls .btn{margin-bottom:0;height:42px}.context-warning{margin:12px 0 2px;border:1px solid #edcf87;background:linear-gradient(145deg,#fff8e6,#fff2ce);color:#815b00;border-radius:13px;padding:10px 12px;font-size:12px;font-weight:800;box-shadow:var(--shadow-sm)}
.profile-modal-card{width:min(980px,calc(100vw - 24px))}.student-profile-hero{display:flex;align-items:center;gap:15px;padding:16px;border-radius:18px;background:linear-gradient(135deg,#173451,#2d6488);color:white;box-shadow:0 12px 28px rgba(15,35,59,.18)}.profile-avatar{width:58px;height:58px;border-radius:18px;display:grid;place-items:center;background:linear-gradient(145deg,#fff,#dcecf6);color:var(--navy);font-size:26px;font-weight:900;box-shadow:0 8px 18px rgba(0,0,0,.15)}.student-profile-hero h4{margin:0;font-size:21px}.student-profile-hero p{margin:4px 0 0;color:rgba(255,255,255,.78);font-size:12px}.profile-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0}.profile-kpi{padding:12px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,#fff,#f6fafc);box-shadow:var(--shadow-sm)}.profile-kpi span,.profile-kpi small{display:block;color:var(--muted);font-size:11px}.profile-kpi strong{display:block;color:var(--navy);font-size:20px;margin:3px 0}.profile-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px}.profile-section{border:1px solid var(--line);border-radius:18px;padding:14px;background:var(--surface-raised);box-shadow:var(--shadow-sm)}.profile-section h4{margin:0 0 10px;color:var(--navy)}.profile-line{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid #e6edf2}.profile-line:last-child{border-bottom:0}.profile-line strong,.profile-line small{display:block}.profile-line small{color:var(--muted);font-size:11px;margin-top:2px}.profile-line.compact{font-size:12px}.profile-progress>div:first-child{display:flex;justify-content:space-between;gap:12px;align-items:center}.profile-progress span{color:var(--muted);font-size:11px}.mini-bar{height:8px;border-radius:999px;background:#e4edf3;overflow:hidden;margin:8px 0}.mini-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2b668b,#4ba37a)}.attendance-mini{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.attendance-mini span{padding:5px 8px;border-radius:999px;font-size:11px;font-weight:800}.attendance-mini .good{background:var(--green-bg);color:var(--green)}.attendance-mini .warn{background:var(--amber-bg);color:var(--amber)}.attendance-mini .bad{background:var(--red-bg);color:var(--red)}
.class-form-heading{padding-bottom:10px;border-bottom:1px solid #e4edf2;margin-bottom:14px}.class-card{position:relative}.class-card::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:4px;background:linear-gradient(180deg,#2d7eaa,#172f4f);opacity:.7}.class-actions{flex-wrap:wrap}
.progress-summary-bar{margin-bottom:4px;padding:9px 11px;border-radius:14px;background:linear-gradient(145deg,#f4f8fb,#fff);border:1px solid var(--line)}.compact-search{display:flex;align-items:center;gap:8px;font-size:11px}.compact-search input{width:210px;margin:0;padding:7px 9px}.progress-item.done{background:linear-gradient(145deg,#eef9f3,#e2f4eb);box-shadow:0 6px 16px rgba(22,121,74,.06)}
.advanced-box{margin-top:12px;border:1px solid #d7e1e9;border-radius:15px;background:linear-gradient(145deg,#f8fafc,#fff);padding:10px 12px}.advanced-box summary{cursor:pointer;color:var(--navy);font-weight:800;font-size:12px}.advanced-box[open] summary{margin-bottom:8px}.backup-panel{background:linear-gradient(145deg,#fff,#f7fbfd)}.status-pill.neutral{background:#edf3f7;color:var(--navy);border:1px solid #d3e0e9}
@media(max-width:820px){.profile-kpi-grid{grid-template-columns:1fr 1fr}.profile-columns{grid-template-columns:1fr}.attendance-controls{grid-template-columns:1fr 1fr auto}}
@media(max-width:560px){main{padding-bottom:100px}.bottom-nav{bottom:6px;width:calc(100% - 12px);border-radius:19px}.bottom-nav button{font-size:10px}.bottom-nav button span{font-size:18px}.update-banner{top:65px;width:calc(100% - 16px);border-radius:0 0 14px 14px}.update-banner span{display:none}.attendance-context{margin:-14px -14px 15px;padding:15px}.attendance-context .context-date{max-width:110px;overflow:hidden;text-overflow:ellipsis}.attendance-controls{grid-template-columns:1fr 1fr}.attendance-controls .btn{grid-column:1/-1}.profile-kpi-grid{grid-template-columns:1fr 1fr}.profile-kpi strong{font-size:17px}.student-profile-hero{padding:13px}.profile-avatar{width:50px;height:50px;border-radius:15px}.compact-search{width:100%;align-items:stretch;flex-direction:column}.compact-search input{width:100%}.class-actions .btn{flex:1 1 auto}.student-card-actions{flex-direction:column}}

/* v0.9.1 · Centro de control premium + asistencia/pagos rediseñados */
:root{--ink:#12263f;--ink-2:#274661;--sky:#eaf4fb;--aqua:#68b7c9;--mint:#63b990;--gold:#e6b14b;--card-border:rgba(185,204,219,.72);--glass:rgba(255,255,255,.76)}
body{background:linear-gradient(135deg,#f7fafc 0%,#eef5f9 44%,#f9fbfd 100%);background-attachment:fixed}.app-header{min-height:76px;padding:9px 24px;background:rgba(250,253,255,.88);border-bottom:1px solid rgba(180,200,216,.55);box-shadow:0 8px 24px rgba(25,55,82,.055)}.brand-logo{width:82px;height:55px}.brand-copy h1{font-size:18px}.brand-copy p{font-size:11px}.header-actions{gap:7px}.status-pill,.cloud-pill{box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}main{max-width:1460px;padding-top:28px}
.dashboard-hero{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px;padding:25px 28px;border-radius:28px;color:white;background:linear-gradient(130deg,#122c49 0%,#1c4668 58%,#2b6582 100%);box-shadow:0 24px 58px rgba(20,52,79,.22),inset 0 1px 0 rgba(255,255,255,.14)}.dashboard-hero::before{content:"";position:absolute;width:360px;height:360px;right:-145px;top:-220px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.20),rgba(255,255,255,0) 68%)}.dashboard-hero::after{content:"";position:absolute;width:210px;height:210px;right:170px;bottom:-175px;border-radius:50%;border:1px solid rgba(255,255,255,.12)}.dashboard-hero>div{position:relative;z-index:1}.hero-kicker,.section-kicker{display:block;margin-bottom:5px;font-size:10px;line-height:1;text-transform:uppercase;letter-spacing:.14em;font-weight:900;color:#6d8195}.hero-kicker{color:rgba(255,255,255,.64)}.dashboard-hero h2{margin:0;font-size:31px;letter-spacing:-.035em}.dashboard-hero p{margin:6px 0 0;color:rgba(255,255,255,.72);font-size:13px}.hero-dot{padding:0 8px;opacity:.55}.hero-status{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border-radius:999px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(8px);font-size:12px;font-weight:800;white-space:nowrap}.hero-status-dot{width:8px;height:8px;border-radius:50%;background:#78d4a7;box-shadow:0 0 0 5px rgba(120,212,167,.12),0 0 14px rgba(120,212,167,.7)}
.kpi-grid{gap:14px}.kpi{min-height:135px;padding:17px 18px 16px;border:1px solid var(--card-border);border-radius:23px;background:linear-gradient(150deg,rgba(255,255,255,.98),rgba(246,250,253,.94));box-shadow:0 16px 32px rgba(28,57,84,.09),inset 0 1px 0 rgba(255,255,255,.95)}.kpi::before{display:none}.kpi::after{content:"";position:absolute;right:-22px;bottom:-32px;width:100px;height:100px;border-radius:50%;background:radial-gradient(circle,rgba(63,130,169,.12),rgba(63,130,169,0) 70%)}.kpi-top{display:flex;align-items:center;gap:9px}.kpi-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#687d91;font-weight:900}.kpi-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:12px;background:linear-gradient(145deg,#e9f4fa,#dcebf4);color:#275d7d;box-shadow:inset 0 1px 0 white,0 6px 12px rgba(32,75,104,.09)}.kpi-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.kpi-payments .kpi-icon{background:linear-gradient(145deg,#fff5da,#f8e9ba);color:#8d670c}.kpi-attendance .kpi-icon{background:linear-gradient(145deg,#eaf8f1,#d8efe3);color:#24754e}.kpi-groups .kpi-icon{background:linear-gradient(145deg,#edf1fa,#e1e8f5);color:#4a6185}.kpi .value{font-size:34px;margin-top:12px}.kpi .sub{line-height:1.35;margin-top:5px}
.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(360px,.95fr);gap:16px}.dashboard-grid.secondary-grid{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}.dashboard-grid .panel{margin-bottom:16px}.dashboard-primary,.dashboard-alerts{min-height:320px}.panel-title h3{font-size:19px;letter-spacing:-.02em}.section-kicker{margin-bottom:4px}.class-agenda-card{position:relative;display:grid;grid-template-columns:68px minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:15px;border:1px solid rgba(197,214,226,.88);border-radius:18px;background:linear-gradient(145deg,#fff,#f7fbfd);box-shadow:0 7px 16px rgba(22,52,80,.05);transition:.16s}.class-agenda-card:hover{transform:translateY(-1px);border-color:#b7cedd;box-shadow:0 12px 24px rgba(22,52,80,.09)}.agenda-time{display:flex;flex-direction:column;align-items:flex-start;padding-right:12px;border-right:1px solid #e1eaf0}.agenda-time strong{font-size:18px;color:var(--navy)}.agenda-time span{font-size:10px;color:var(--muted);text-transform:uppercase;font-weight:850;letter-spacing:.06em}.class-agenda-card .grow>strong{display:block;color:var(--navy);font-size:15px}.class-agenda-card .grow>small{display:block;margin-top:2px;color:var(--muted)}.occupancy{display:flex;align-items:center;gap:8px;margin-top:7px}.occupancy>span{width:90px;height:5px;border-radius:999px;background:#e3ebf1;overflow:hidden}.occupancy i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#538faf,#72bdc4)}.occupancy small{font-size:10px;color:#738596}.occupancy-dot{width:8px;height:8px;border-radius:50%;background:#7cb89d}.occupancy-dot.warning{background:#d8a33d}.occupancy-dot.danger{background:#cd6060}
.alert-card{display:flex;align-items:flex-start;gap:12px;padding:14px;border-radius:17px;border:1px solid #d8e4ec;background:#fbfdfe}.alert-card .alert-icon{width:31px;height:31px;display:grid;place-items:center;flex:0 0 auto;border-radius:10px;font-weight:950;background:#e8f3fa;color:#2a6586}.alert-card.medium{background:linear-gradient(145deg,#fffaf0,#fff);border-color:#ead7a6}.alert-card.medium .alert-icon{background:#fff0c8;color:#936407}.alert-card.high{background:linear-gradient(145deg,#fff2f2,#fff);border-color:#e8c2c2}.alert-card.high .alert-icon{background:#fae0e0;color:#a34141}.alert-card strong,.activity-row strong,.recent-class-row strong{display:block;color:var(--navy)}.alert-card small,.activity-row small,.recent-class-row small{display:block;color:var(--muted);margin-top:2px}.activity-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:11px;padding:10px 4px;border-bottom:1px solid #e6edf2}.activity-row:last-child{border-bottom:0}.activity-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:11px;background:#eaf4fa;color:#2a6484;font-weight:900}.activity-icon.payment{background:#fff3d5;color:#8f680c}.activity-icon.attendance{background:#e5f5ed;color:#24764e}.activity-row time{font-size:10px;color:#8a99a7;white-space:nowrap}.recent-class-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:11px 4px;border-bottom:1px solid #e6edf2}.recent-class-row:last-child{border-bottom:0}.recent-class-date{width:42px;height:46px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:12px;background:linear-gradient(145deg,#eef5fa,#e0ebf3);color:var(--navy)}.recent-class-date strong{font-size:15px;line-height:1}.recent-class-date span{margin-top:3px;font-size:9px;text-transform:uppercase;font-weight:900}.recent-class-row p{margin:4px 0 0;font-size:11px;color:#53697d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon-action{width:32px;height:32px;display:grid;place-items:center;border:1px solid #d6e2ea;border-radius:10px;background:#fff;color:var(--navy);font-weight:900}.icon-action:hover{background:#edf5fa}.empty-state{display:flex;align-items:center;gap:12px;padding:18px;border:1px dashed #c8d9e4;border-radius:17px;background:rgba(245,250,253,.75)}.empty-state.compact{padding:13px}.empty-state .empty-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:#eaf3f8;color:#446c87;font-weight:900}.empty-state div{flex:1}.empty-state strong{display:block;color:var(--navy)}.empty-state small{display:block;color:var(--muted);margin-top:2px}
.attendance-panel{padding-bottom:20px}.attendance-context{margin:-18px -18px 20px;padding:20px 22px;background:linear-gradient(130deg,#132b47,#245576 62%,#2c6881);border-radius:22px 22px 0 0}.attendance-context strong{font-size:18px}.attendance-context .context-icon{border-radius:15px}.attendance-controls{padding:3px 2px}.attendance-summary-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;width:100%;margin-top:4px}.mini-stat{display:flex;align-items:center;gap:9px;min-height:58px;padding:10px 11px;border-radius:15px;border:1px solid #dce6ed;background:#f9fbfd}.mini-stat>span{width:30px;height:30px;display:grid;place-items:center;border-radius:10px;background:#edf3f7;color:#60778b;font-weight:900}.mini-stat strong{display:block;color:var(--navy);font-size:17px;line-height:1}.mini-stat small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.mini-stat.present{background:#f0faf5;border-color:#d4eadf}.mini-stat.present>span{background:#def1e7;color:#26734e}.mini-stat.absent{background:#fffaf0;border-color:#ecdfbc}.mini-stat.absent>span{background:#fff0c9;color:#936707}.mini-stat.drop{background:#fff5f5;border-color:#edd1d1}.mini-stat.drop>span{background:#f8e3e3;color:#a34242}.attendance-row{grid-template-columns:minmax(240px,1fr) auto;min-height:66px;padding:10px 12px;border-left:4px solid transparent}.attendance-row.present{border-left-color:#6db791;background:linear-gradient(145deg,#fbfffd,#f2faf6)}.attendance-row.absent{border-left-color:#deb04e;background:linear-gradient(145deg,#fffefa,#fff9ec)}.attendance-row.drop{border-left-color:#cf6868;background:linear-gradient(145deg,#fffdfd,#fff3f3)}.attendance-person{display:flex;align-items:center;gap:10px}.student-avatar-mini{width:36px;height:36px;display:grid;place-items:center;flex:0 0 auto;border-radius:12px;background:linear-gradient(145deg,#e9f3f9,#dae7f0);color:#2f5875;font-weight:900;box-shadow:inset 0 1px 0 white}.attendance-row .segmented{gap:6px}.attendance-row .segmented button{display:inline-flex;align-items:center;gap:5px;min-width:92px;justify-content:center;border-radius:11px;padding:8px 10px;background:#fff;transition:.15s}.attendance-row .segmented button span{font-size:13px}.attendance-row .segmented button:hover{transform:translateY(-1px);box-shadow:0 4px 10px rgba(20,50,75,.07)}
#view-payments>.view-heading{margin-bottom:18px}.payment-summary-cards{width:100%}.payment-overview{display:grid;grid-template-columns:minmax(250px,1.5fr) repeat(4,minmax(110px,.7fr));gap:10px;width:100%}.overview-main,.overview-stat{border:1px solid #d8e4ec;border-radius:17px;background:linear-gradient(145deg,#fff,#f8fbfd);padding:13px;box-shadow:0 5px 14px rgba(23,51,78,.045)}.overview-main{padding:14px 16px}.overview-main>strong{display:block;margin-top:3px;font-size:22px;color:var(--navy)}.overview-main>strong small{font-size:12px;color:var(--muted);font-weight:700}.overview-main>span:last-child{display:block;margin-top:5px;font-size:10px;color:var(--muted)}.overview-progress{height:7px;margin-top:10px;border-radius:999px;background:#e5edf3;overflow:hidden}.overview-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#315f80,#5da8b6)}.overview-stat{display:flex;align-items:center;gap:8px}.overview-stat>span{width:30px;height:30px;display:grid;place-items:center;border-radius:10px;background:#edf4f8;color:#315f80;font-weight:900}.overview-stat strong{display:block;color:var(--navy);font-size:15px}.overview-stat small{display:block;margin-top:2px;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.04em;font-weight:850}.overview-stat.pending>span{background:#fff0c9;color:#926608}.overview-stat.partial>span{background:#fef3d8;color:#8d650d}.overview-stat.paid>span{background:#def1e7;color:#26734e}.payment-row{grid-template-columns:minmax(320px,1fr) minmax(260px,.62fr);padding:13px 14px;border-left:4px solid #d6e0e7}.payment-row.partial{border-left-color:#dca83d;background:linear-gradient(145deg,#fffefa,#fffaf0)}.payment-row.paid{border-left-color:#68b18d;background:linear-gradient(145deg,#fcfffd,#f3faf6)}.payment-head{display:flex;align-items:center;gap:10px}.payment-head>.payment-status{margin-left:auto}.payment-totals{min-width:170px}.payment-number{display:flex;align-items:baseline;justify-content:flex-end;gap:4px}.payment-number strong{font-size:17px}.payment-number span{font-size:10px;color:var(--muted)}.payment-progress{width:170px;height:6px;margin:6px 0 4px;border-radius:999px;background:#e4ebf0;overflow:hidden}.payment-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#d1a33f,#ebc45d)}.payment-row.paid .payment-progress i{background:linear-gradient(90deg,#388361,#6cbd96)}.payment-actions{align-self:center}.payment-movement{background:rgba(255,255,255,.75)}
@media(min-width:1160px){main{max-width:none;width:calc(100% - 235px);margin:0 18px 0 217px;padding:28px 30px 82px}.bottom-nav{left:18px;right:auto;top:98px;bottom:auto;transform:none;width:180px;display:flex;flex-direction:column;gap:7px;padding:10px;border:1px solid rgba(190,207,220,.78);border-radius:22px;background:rgba(252,254,255,.88);backdrop-filter:blur(18px);box-shadow:0 18px 42px rgba(19,46,72,.12)}.bottom-nav button{width:100%;max-width:none;flex:none;display:flex;align-items:center;justify-content:flex-start;gap:11px;padding:11px 12px;border-radius:14px;text-align:left;font-size:12px}.bottom-nav button span{width:22px;text-align:center;font-size:19px}.bottom-nav button.active{background:linear-gradient(145deg,#1d4263,#122f4e);color:#fff;box-shadow:0 8px 16px rgba(22,51,78,.18)}.update-banner{width:min(860px,calc(100% - 500px))}}
@media(max-width:1300px) and (min-width:1160px){.dashboard-grid{grid-template-columns:1.25fr .9fr}.payment-overview{grid-template-columns:1.4fr repeat(2,1fr)}.overview-stat.partial,.overview-stat.paid{display:none}}
@media(max-width:1159px){main{max-width:1220px}.dashboard-grid{grid-template-columns:1fr 1fr}.payment-overview{grid-template-columns:1.4fr repeat(2,1fr)}.overview-stat.partial,.overview-stat.paid{display:none}}
@media(max-width:820px){.dashboard-hero{padding:20px}.dashboard-hero h2{font-size:27px}.hero-status{display:none}.dashboard-grid,.dashboard-grid.secondary-grid{grid-template-columns:1fr}.attendance-summary-cards{grid-template-columns:1fr 1fr}.payment-overview{grid-template-columns:1fr 1fr}.overview-main{grid-column:1/-1}.overview-stat.partial,.overview-stat.paid{display:flex}.payment-row{grid-template-columns:1fr}.payment-actions{justify-content:space-between}.payment-number{justify-content:flex-start}.payment-totals{align-items:flex-start}.payment-progress{width:min(240px,70vw)}.class-agenda-card{grid-template-columns:58px minmax(0,1fr) auto}.occupancy-dot{display:none}.class-agenda-card .btn{grid-column:3}}
@media(max-width:560px){.dashboard-hero{margin:0 -2px 14px;padding:18px;border-radius:22px}.dashboard-hero h2{font-size:25px}.dashboard-hero p{font-size:11px}.hero-dot{padding:0 5px}.kpi{min-height:126px;padding:14px}.kpi .value{font-size:29px}.kpi-icon{width:31px;height:31px}.kpi-label{font-size:9px}.dashboard-primary,.dashboard-alerts{min-height:0}.panel-title h3{font-size:17px}.class-agenda-card{grid-template-columns:55px minmax(0,1fr);gap:10px}.class-agenda-card .btn{grid-column:1/-1;width:100%}.agenda-time{padding-right:8px}.occupancy>span{width:70px}.attendance-context{border-radius:18px 18px 0 0}.attendance-summary-cards{gap:6px}.mini-stat{min-height:52px;padding:8px}.mini-stat>span{width:27px;height:27px}.attendance-row{padding:10px;grid-template-columns:1fr}.attendance-row .segmented{display:grid;grid-template-columns:repeat(3,1fr);width:100%}.attendance-row .segmented button{min-width:0;padding:8px 5px;font-size:10px}.attendance-row .segmented button span{font-size:12px}.payment-overview{grid-template-columns:1fr 1fr;gap:7px}.overview-stat{padding:10px}.overview-stat strong{font-size:13px}.payment-row{padding:11px}.payment-head{align-items:flex-start}.payment-head>.payment-status{margin-left:auto}.student-avatar-mini{width:33px;height:33px}.payment-actions{align-items:flex-start;gap:8px}.payment-actions .add-payment{width:100%;margin-left:0}.payment-progress{width:100%}.activity-row{grid-template-columns:34px minmax(0,1fr)}.activity-row time{display:none}.recent-class-row{grid-template-columns:40px minmax(0,1fr) auto}.recent-class-row .edit-class{display:none}}

/* ===== v0.9.3 · refinement pass ===== */
.global-sync-pill{min-width:132px;justify-content:center;background:linear-gradient(145deg,#eef8f3,#e3f3eb);border:1px solid #cde5d8;color:#266b4b;box-shadow:inset 0 1px 0 #fff}
.dashboard-hero{min-height:0;padding:22px 26px}.dashboard-hero h2{font-size:31px;margin-top:3px}.dashboard-hero p{margin-top:5px}
.class-agenda-card{cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.class-agenda-card:hover{transform:translateY(-2px);box-shadow:0 10px 22px rgba(20,50,75,.09);border-color:#bdd2df}
.nav-footer{display:none}.nav-user-avatar{width:34px;height:34px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(145deg,#e9f3f9,#d9e8f1);color:#244d69;font-weight:950}.nav-user-copy{min-width:0}.nav-user-copy strong,.nav-user-copy small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-user-copy strong{font-size:11px;color:var(--navy)}.nav-user-copy small{font-size:9px;color:var(--muted);margin-top:2px}

/* Attendance: stable context + stronger selected states */
.attendance-sticky-zone{position:static;z-index:8;margin:-18px -18px 14px;background:rgba(255,255,255,.96);border-radius:22px 22px 16px 16px;box-shadow:0 10px 24px rgba(19,46,72,.07);backdrop-filter:blur(14px)}
.attendance-sticky-zone .attendance-context{margin:0}.attendance-sticky-body{padding:12px 18px 14px;border:1px solid #dce6ed;border-top:0;border-radius:0 0 16px 16px}.attendance-toolbar{margin:10px 0 0}.attendance-sticky-zone .attendance-summary-cards{margin:0;flex:1}#attendanceList{position:relative;z-index:1;clear:both}
.attendance-row.present .segmented button.active.present{box-shadow:0 5px 12px rgba(39,115,78,.13)}.attendance-row.absent .segmented button.active.absent{box-shadow:0 5px 12px rgba(147,103,7,.12)}.attendance-row.drop .segmented button.active.drop{box-shadow:0 5px 12px rgba(163,66,66,.12)}

/* Payment quick action */
.quick-payment-tools{align-self:end;border:1px dashed #c8d8e3;border-radius:13px;padding:8px 10px;background:#f7fafc;display:flex;align-items:center;justify-content:space-between;gap:10px}.quick-payment-tools span{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:900}.quick-payment-tools .btn{padding:8px 11px}

/* Classes */
#view-classes .two-col{grid-template-columns:minmax(410px,.85fr) minmax(520px,1.15fr);align-items:start}.class-editor-panel{position:sticky;top:84px;background:linear-gradient(155deg,#fff,#f8fbfd)}.class-editor-panel .class-form-heading{padding-bottom:12px;border-bottom:1px solid #e3ebf1}.class-editor-panel label{font-size:12px}.class-editor-panel textarea{min-height:70px}.class-history-panel{background:linear-gradient(155deg,#fff,#fbfdfe)}.class-history-panel .panel-title input{max-width:250px}
.modern-class-card{padding:0;overflow:hidden;background:#fff;box-shadow:0 7px 18px rgba(21,47,79,.05);transition:.16s}.modern-class-card:hover{transform:translateY(-1px);box-shadow:0 12px 26px rgba(21,47,79,.09)}.class-card-top{display:flex;align-items:center;gap:12px;padding:14px 15px;border-bottom:1px solid #e8eef3;background:linear-gradient(145deg,#fbfdff,#f4f8fb)}.class-date-badge{width:48px;height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:14px;background:linear-gradient(145deg,#eaf3f8,#dceaf2);color:#244d69;box-shadow:inset 0 1px 0 #fff}.class-date-badge strong{font-size:17px;line-height:1}.class-date-badge span{margin-top:4px;font-size:9px;text-transform:uppercase;font-weight:900}.class-card-title{display:flex;align-items:center;gap:8px}.class-card-title h4{font-size:17px}.storage-badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 7px;font-size:9px;font-weight:900;background:#edf3f7;color:#587083}.storage-badge.cloud{background:#e6f5ed;color:#27734e}.storage-badge.folder{background:#e8f1f7;color:#31627f}.storage-badge.local{background:#fff2d4;color:#8b640d}.class-content-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:13px 15px}.class-detail{padding:10px 11px;border-radius:13px;background:#f7fafc;border:1px solid #e1eaf0}.class-detail>span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;font-weight:900;color:#698094}.class-detail p{margin:4px 0 0;font-size:12px;line-height:1.45;color:#33495d}.class-detail.compact{grid-column:span 1}.class-detail.accent{background:#f1f8fb;border-color:#d3e5ee}.class-detail.warning{background:#fffaf0;border-color:#ecdfbd}.video-inline-card{margin:0 15px 12px;width:calc(100% - 30px);display:flex;align-items:center;gap:10px;border:1px solid #d8e5ed;background:linear-gradient(145deg,#f7fbfd,#eef5f9);border-radius:13px;padding:9px 10px;color:var(--navy);text-align:left}.video-inline-card .video-play-dot{width:31px;height:31px;display:grid;place-items:center;border-radius:10px;background:var(--navy);color:#fff}.video-inline-card div{flex:1;min-width:0}.video-inline-card strong,.video-inline-card small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.video-inline-card small{color:var(--muted);font-size:10px;margin-top:2px}.video-inline-card>span:last-child{font-size:10px;font-weight:900}.modern-actions{padding:11px 15px;margin:0;border-top:1px solid #e8eef3;background:#fbfdfe}.modern-actions .grow{flex:1}

/* More tabs and students */
.subnav{gap:7px;padding:4px;margin-bottom:14px;background:rgba(255,255,255,.72);border:1px solid #d9e4eb;border-radius:16px;box-shadow:0 7px 18px rgba(21,47,79,.05)}.subnav button{border:0;background:transparent;padding:9px 12px}.subnav button span{margin-right:5px}.subnav button.active{background:linear-gradient(145deg,#1c4262,#13314f);box-shadow:0 6px 14px rgba(22,51,78,.17)}
.student-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.modern-student-card{padding:14px;border-radius:17px;background:linear-gradient(150deg,#fff,#f9fbfd);box-shadow:0 7px 18px rgba(21,47,79,.05);transition:.16s}.modern-student-card:hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(21,47,79,.09)}.student-main-line{display:flex;align-items:center;gap:10px}.student-avatar{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;background:linear-gradient(145deg,#e9f3f9,#d7e6ef);color:#26516e;font-size:16px;font-weight:950}.modern-student-card h4{font-size:15px}.student-metric{margin-left:auto;white-space:nowrap;border-radius:999px;padding:5px 7px;font-size:9px;font-weight:900;background:#eef3f6;color:#677b8c}.student-metric.paid{background:#e5f5ed;color:#26734e}.student-metric.partial{background:#fff2d2;color:#8c650d}.student-metric.pending{background:#fff3e5;color:#94651e}.student-mini-kpis{display:flex;gap:8px;margin:11px 0 2px}.student-mini-kpis span{flex:1;padding:7px 8px;border-radius:10px;background:#f3f7fa;color:#6a7d8f;font-size:9px}.student-mini-kpis strong{color:var(--navy);font-size:12px}.modern-student-card .student-card-actions{margin-top:11px;padding-top:10px;border-top:1px solid #e7edf2}.modern-student-card .student-card-actions .profile-student{flex:1}

/* Cartilla */
.progress-filters{padding:12px;border:1px solid #dce6ed;border-radius:16px;background:linear-gradient(145deg,#fbfdff,#f5f9fb)}.progress-summary-bar{align-items:stretch}.progress-summary-bar #progressSummary{flex:1}.progress-person-summary{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid #dbe6ed;border-radius:14px;background:#fff}.progress-avatar{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:#e6f1f7;color:#315f7c;font-weight:950}.progress-person-summary strong,.progress-person-summary span{display:block}.progress-person-summary span{font-size:10px;color:var(--muted);margin-top:2px}.progress-person-summary .mini-bar{margin-top:7px}.progress-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.progress-item{justify-content:flex-start;min-height:76px;background:linear-gradient(145deg,#fff,#f8fbfd);box-shadow:0 4px 12px rgba(21,47,79,.035)}.movement-number{width:34px;height:34px;display:grid;place-items:center;border-radius:11px;background:#e8f1f7;color:#315d79;font-weight:950}.progress-item.done .movement-number{background:#d9efe4;color:#27734e}.progress-item button{margin-left:auto}.progress-item.done button{color:#27734e;border-color:#aad7c0}

/* Videos */
.video-folder-box{border-radius:16px;background:linear-gradient(145deg,#f8fbfd,#eef5f8)}.video-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modern-video-card{display:grid;grid-template-columns:105px minmax(0,1fr);gap:12px;padding:12px;border:1px solid #dce6ed;border-radius:18px;background:linear-gradient(145deg,#fff,#f8fbfd);box-shadow:0 7px 18px rgba(21,47,79,.05)}.video-poster{grid-row:1/3;width:105px;min-height:112px;border:0;border-radius:15px;background:linear-gradient(145deg,#173c5d,#285f7e);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;box-shadow:inset 0 1px 0 rgba(255,255,255,.15)}.video-poster>span{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;background:rgba(255,255,255,.15);backdrop-filter:blur(4px)}.video-poster small{font-size:9px;opacity:.8}.video-title-line{display:flex;align-items:center;gap:8px}.video-copy>small{display:block;color:var(--muted);font-size:10px;margin-top:2px}.video-copy p{margin:7px 0 0;font-size:11px;color:#3d5266;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.video-meta-row{display:flex;gap:6px;margin-top:8px}.video-meta-row span{font-size:9px;border-radius:999px;padding:4px 7px;background:#edf3f7;color:#607689}.modern-video-card .video-actions{grid-column:2;display:flex;gap:6px;flex-wrap:wrap}

/* Profit, events, settings */
#tab-profit .kpi{background:linear-gradient(145deg,#fff,#f8fbfd)}#tab-profit .kpi:nth-child(3){border-color:#cfe5d9;background:linear-gradient(145deg,#fff,#f2faf6)}.event-row{background:linear-gradient(145deg,#fff,#f9fbfd);box-shadow:0 4px 12px rgba(21,47,79,.035)}.cloud-panel,.backup-panel{background:linear-gradient(150deg,#fff,#f8fbfd)}.advanced-box{border:1px dashed #c7d8e3;border-radius:14px;padding:11px;background:#f7fafc}.advanced-box summary{font-weight:850;color:var(--navy)}

@media(min-width:1160px){.bottom-nav{min-height:330px}.nav-footer{display:flex;align-items:center;gap:9px;margin-top:auto;padding:11px 8px 3px;border-top:1px solid #e1e9ef}.app-header .brand-copy p{font-size:11px}.app-header{min-height:64px}.attendance-sticky-zone{top:auto}}
@media(max-width:1450px) and (min-width:1160px){.student-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.progress-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.video-grid{grid-template-columns:1fr}#view-classes .two-col{grid-template-columns:.9fr 1.1fr}}
@media(max-width:1159px){.attendance-sticky-zone{top:auto}.class-editor-panel{position:static}.student-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.progress-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.video-grid{grid-template-columns:1fr}}
@media(max-width:820px){#view-classes .two-col{grid-template-columns:1fr}.attendance-sticky-zone{position:static;margin:-18px -18px 14px}.student-grid,.progress-grid{grid-template-columns:1fr}.class-content-grid{grid-template-columns:1fr}.class-detail.compact{grid-column:auto}.modern-video-card{grid-template-columns:82px minmax(0,1fr)}.video-poster{width:82px;min-height:98px}.quick-payment-tools{grid-column:1/-1}}
@media(max-width:560px){.dashboard-hero{padding:16px 17px}.dashboard-hero h2{font-size:24px}.class-card-top{padding:12px}.class-content-grid{padding:10px 12px}.video-inline-card{margin:0 12px 10px;width:calc(100% - 24px)}.modern-actions{padding:10px 12px}.modern-video-card{grid-template-columns:68px minmax(0,1fr);gap:9px}.video-poster{width:68px;min-height:88px}.modern-video-card .video-actions{grid-column:1/-1}.modern-video-card .video-actions .btn{flex:1}.student-main-line{align-items:flex-start}.student-metric{font-size:8px}.progress-filters{padding:9px}}


/* ===== v0.9.4 mobile/productivity refinements ===== */
.hero-status{display:none!important}
.profile-student-card{cursor:pointer}.profile-student-card:focus-visible{outline:3px solid rgba(36,73,111,.18);outline-offset:2px}.student-open-hint{font-size:10px;font-weight:850;color:#63798c;display:flex;align-items:center}.student-open-hint:before{content:"↗";margin-right:5px;color:#315f80}.modern-student-card .student-card-actions{align-items:center;justify-content:space-between}.modern-student-card .student-card-actions .edit-student{margin-left:auto}
.payment-full-quick{width:100%;font-size:16px;padding:13px 16px;margin-bottom:12px}.payment-other-label{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.09em;font-weight:900;margin:2px 0 10px}.payment-other-label:before,.payment-other-label:after{content:"";height:1px;background:#dfe7ed;flex:1}.payment-detail-grid{align-items:end}
.class-copy-previous{width:100%;margin-top:-2px}.class-save-actions{display:grid;grid-template-columns:1fr auto;gap:9px}.class-save-actions .btn{min-height:42px}
.video-upload-field{display:block}.video-upload-card{position:relative;display:flex;align-items:center;gap:11px;margin-top:6px;padding:12px;border:1px dashed #b8ccd9;border-radius:15px;background:linear-gradient(145deg,#f8fbfd,#eef5f9);transition:.15s;overflow:hidden}.video-upload-card:hover{border-color:#6e9ab4;background:linear-gradient(145deg,#fbfdff,#edf6fa)}.video-file-input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;margin:0;padding:0}.video-upload-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:linear-gradient(145deg,#173c5d,#285f7e);color:white;font-size:14px;box-shadow:0 6px 14px rgba(23,60,93,.16)}.video-upload-copy{flex:1;min-width:0}.video-upload-copy strong,.video-upload-copy small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.video-upload-copy small{font-size:10px;color:var(--muted);font-weight:600;margin-top:2px}.video-upload-action{font-size:10px;font-weight:900;padding:6px 9px;border-radius:999px;background:#fff;border:1px solid #d4e0e8;color:var(--navy)}
.progress-filters{position:sticky;top:76px;z-index:7;backdrop-filter:blur(12px)}

@media(max-width:820px){
  main{padding-bottom:calc(104px + env(safe-area-inset-bottom))}
  .app-header{transition:min-height .18s,padding .18s,box-shadow .18s}.app-header.compact-mobile{min-height:52px;padding-top:4px;padding-bottom:4px;box-shadow:0 8px 22px rgba(20,44,70,.10)}.app-header.compact-mobile .brand-logo{width:58px;height:38px}.app-header.compact-mobile .brand-copy h1{font-size:15px}.app-header.compact-mobile .brand-copy p{display:none}.app-header.compact-mobile .global-sync-pill{font-size:9px;padding:4px 7px}
  .attendance-controls{grid-template-columns:1fr auto!important}.attendance-controls label:first-child{grid-column:1/-1}.attendance-controls label:nth-child(2){grid-column:1}.attendance-controls #attendanceTodayBtn{grid-column:2;align-self:end;min-width:76px}
  .progress-filters{position:static}
  .video-folder-box{border-style:dashed}.video-folder-box>div:first-child strong:after{content:" · ordenador";color:var(--muted);font-weight:700}
}
@media(max-width:560px){
  .app-header{min-height:64px;padding:6px 12px;gap:8px}.brand-logo{width:70px;height:46px}.brand-copy h1{font-size:16px}.brand-copy p{display:none}.global-sync-pill{font-size:9px;padding:5px 7px;white-space:nowrap}
  .dashboard-hero{padding:15px 16px}.dashboard-hero h2{font-size:23px}.dashboard-hero p{font-size:10px}.kpi{min-height:112px;padding:12px}.kpi .value{font-size:27px}.dashboard-primary .class-agenda-card{padding:12px 11px}.class-agenda-card .btn{padding:8px 10px}.dashboard-alerts .alert-row{padding:11px}
  .attendance-context{padding:13px}.attendance-context .context-icon{width:40px;height:40px}.attendance-context strong{font-size:16px}.attendance-context small{font-size:10px}.attendance-sticky-body{padding:10px 12px 12px}.attendance-controls{gap:8px}.attendance-controls input,.attendance-controls select{padding:9px}.attendance-toolbar{gap:8px}.attendance-toolbar #markAllPresent{width:100%;padding:9px}.attendance-summary-cards{grid-template-columns:1fr 1fr}.mini-stat{min-height:49px}.attendance-row{padding:9px 10px;min-height:0}.attendance-person{gap:8px}.attendance-row .name{font-size:14px}.attendance-row small{font-size:10px}.attendance-row .segmented button{padding:7px 3px;font-size:9px}.attendance-row .segmented button span{font-size:11px}.roster{gap:7px}
  #view-payments>.panel{padding:13px}.payment-overview{gap:6px}.overview-main{padding:11px 12px}.overview-main>strong{font-size:19px}.overview-progress{margin-top:7px}.overview-stat{padding:8px}.overview-stat>span{width:27px;height:27px}.payment-row{padding:9px 10px;gap:7px;border-radius:15px}.payment-head{gap:8px}.payment-head .name{font-size:14px}.payment-head small{font-size:9px}.payment-status{font-size:8px!important;padding:4px 6px!important}.payment-actions{gap:5px}.payment-number strong{font-size:16px}.payment-number span{font-size:9px}.payment-progress{height:5px;margin:4px 0 2px}.payment-totals small{font-size:9px}.payment-actions .add-payment{padding:9px 10px}.payment-movements{margin-top:5px}.payment-movement{font-size:9px!important}
  .class-editor-panel{padding:14px}.class-editor-panel .form-stack{gap:10px}.class-editor-panel textarea{min-height:62px}.class-top-fields{grid-template-columns:1fr!important}.class-copy-previous{padding:9px}.video-upload-card{padding:10px}.video-upload-icon{width:34px;height:34px}.class-save-actions{grid-template-columns:1fr}.class-save-actions .btn{width:100%}.class-history-panel{padding:14px}.class-history-panel .panel-title{align-items:flex-start}.class-history-panel .panel-title input{max-width:none;width:52%}
  .student-card-actions{flex-direction:row!important}.modern-student-card{padding:12px}.student-mini-kpis{margin-top:8px}.student-open-hint{font-size:9px}
  .subnav{position:sticky;top:64px;z-index:9;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}.subnav::-webkit-scrollbar{display:none}.subnav button{padding:8px 10px;font-size:10px}
  .progress-filters{grid-template-columns:1fr!important}.progress-summary-bar{gap:8px}.progress-item{min-height:64px;padding:9px}.movement-number{width:30px;height:30px}.progress-item strong{font-size:12px}
  .video-folder-box{padding:10px}.video-folder-box .toolbar{display:none}.modern-video-card{padding:9px}.video-storage-info{font-size:9px}
  .bottom-nav{padding-bottom:calc(7px + env(safe-area-inset-bottom))}
}

/* ===== v0.9.6 · desktop modal overflow fix ===== */
/* El diálogo exterior debe ser, como mínimo, tan ancho como las fichas grandes.
   La tarjeta interior nunca puede rebasar el viewport ni generar scroll horizontal. */
.modal-dialog{
  width:min(980px,calc(100vw - 24px));
  max-width:calc(100vw - 24px);
  overflow:hidden;
}
.modal-card{
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:hidden;
}
.profile-modal-card,
.video-modal-card,
.payment-modal-card{
  width:100%;
  max-width:100%;
  min-width:0;
}
.video-modal-card video{
  display:block;
  width:100%;
  max-width:100%;
  height:auto;
  max-height:68vh;
  object-fit:contain;
}
.profile-kpi-grid,
.profile-columns,
.student-profile-hero,
.modal-actions{
  min-width:0;
}
.profile-section,
.profile-kpi,
.profile-line,
.student-profile-hero>div{
  min-width:0;
}
.profile-line>div,
.student-profile-hero p,
.student-profile-hero h4{
  min-width:0;
  overflow-wrap:anywhere;
}
@media(max-width:700px){
  .modal-dialog{
    width:calc(100vw - 16px);
    max-width:calc(100vw - 16px);
    max-height:calc(100dvh - 16px);
  }
  .modal-card{max-height:calc(100dvh - 16px)}
  .profile-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .profile-columns{grid-template-columns:1fr}
  .video-modal-card video{max-height:60dvh}
}

/* ===== v0.9.6 · required fields clarity ===== */
.required-mark{color:#b42318;font-weight:800}.class-required-note{margin:-4px 0 0;font-size:.78rem;color:var(--muted,#68788a)}


/* v0.10.0 · Notas/tareas, eventos editables y ajustes separados */
.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.settings-card{margin:0}.settings-card .settings-icon{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;background:#edf4f8;color:var(--navy);font-weight:900;font-size:18px}.settings-card form .btn{align-self:end}.event-form-actions{grid-column:1/-1;margin-top:0}.task-form{display:grid;gap:12px;padding:14px;border:1px solid #dbe6ed;border-radius:18px;background:linear-gradient(145deg,#fbfdfe,#f5f9fb);margin-bottom:12px}.task-form textarea,.profile-notes-section textarea{width:100%;resize:vertical;min-height:84px}.task-summary{margin:2px 0 10px;font-size:12px;font-weight:750}.task-row{display:flex;align-items:flex-start;gap:11px;padding:13px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,#fff,#f8fbfd);box-shadow:0 4px 12px rgba(21,47,79,.035)}.task-row.done{opacity:.66}.task-row.overdue{border-color:#e9c5c5;background:linear-gradient(145deg,#fff,#fff8f8)}.task-check{flex:0 0 28px;width:28px;height:28px;border-radius:9px;border:2px solid #b8cbd8;background:white;color:white;font-weight:900;cursor:pointer}.task-check.checked{background:#2f7a5c;border-color:#2f7a5c}.task-title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.task-title-line strong{color:var(--navy)}.task-row p{margin:5px 0;color:#43586c;font-size:12px;white-space:pre-wrap}.task-row small{display:block;color:var(--muted);font-size:11px}.task-priority{font-size:9px;text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:4px 7px;background:#edf2f6;color:#607284;font-weight:900}.task-priority.high{background:var(--red-bg);color:var(--red)}.task-priority.low{background:#eef7f3;color:#447a64}.task-actions{display:flex;align-items:center;gap:5px}.task-actions .icon-btn{width:30px;height:30px}.profile-notes-section{grid-column:1/-1}.profile-section-title{display:flex;justify-content:space-between;align-items:center;gap:8px}.profile-section-title h4{margin-bottom:10px}.profile-notes-section .toolbar{margin-top:8px}
@media(max-width:900px){.settings-grid{grid-template-columns:1fr}}
@media(max-width:560px){.task-row{display:grid;grid-template-columns:30px minmax(0,1fr)}.task-actions{grid-column:2;justify-content:flex-end}.settings-card .form-grid.three{grid-template-columns:1fr}.event-row{flex-wrap:wrap}.event-row .grow{flex-basis:100%}}


/* v1.0.0 · aviso de tareas en Inicio */
.dashboard-task-card{width:100%;display:flex;align-items:center;gap:13px;margin:0 0 16px;padding:14px 16px;border:1px solid #d6e3eb;border-radius:18px;background:linear-gradient(145deg,#fff,#f6fafc);box-shadow:0 7px 18px rgba(21,47,79,.055);color:var(--navy);font:inherit;text-align:left;cursor:pointer;transition:.16s}
.dashboard-task-card:hover{transform:translateY(-1px);border-color:#b8cfdd;box-shadow:0 11px 24px rgba(21,47,79,.085)}
.dashboard-task-card:focus-visible{outline:3px solid rgba(61,132,169,.24);outline-offset:2px}
.dashboard-task-card.has-tasks{border-color:#c9dce7;background:linear-gradient(145deg,#ffffff,#f3f8fb)}
.dashboard-task-card.has-overdue{border-color:#e5bebe;background:linear-gradient(145deg,#fff,#fff7f7)}
.dashboard-task-card.all-clear{border-color:#cfe3d9;background:linear-gradient(145deg,#fff,#f5fbf8)}
.dashboard-task-icon{flex:0 0 40px;width:40px;height:40px;display:grid;place-items:center;border-radius:13px;background:#e7f0f5;color:#245579;font-size:19px;font-weight:900}
.dashboard-task-card.has-overdue .dashboard-task-icon{background:#fbe8e8;color:#a34040}.dashboard-task-card.all-clear .dashboard-task-icon{background:#e7f5ed;color:#34735a}
.dashboard-task-main{display:flex;flex-direction:column;min-width:0;flex:1}.dashboard-task-main .section-kicker{margin-bottom:3px}.dashboard-task-main strong{font-size:15px;line-height:1.25}.dashboard-task-main small{margin-top:2px;color:var(--muted);font-size:11px}
.dashboard-task-badges{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.task-dashboard-chip{display:inline-flex;align-items:center;min-height:25px;padding:5px 8px;border-radius:999px;background:#edf3f6;color:#556c7d;font-size:9px;line-height:1;font-weight:900;text-transform:uppercase;letter-spacing:.035em;white-space:nowrap}.task-dashboard-chip.today{background:#fff3d9;color:#8a6421}.task-dashboard-chip.overdue{background:#fbe4e4;color:#a23d3d}.task-dashboard-chip.ok{background:#e7f5ed;color:#34735a}
.dashboard-task-arrow{flex:0 0 auto;font-size:27px;line-height:1;color:#8094a5;margin-left:1px}
@media(max-width:700px){.dashboard-task-card{align-items:flex-start;padding:13px}.dashboard-task-badges{justify-content:flex-start;flex:0 0 auto}.dashboard-task-arrow{align-self:center}}
@media(max-width:560px){.dashboard-task-card{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:10px}.dashboard-task-icon{width:38px;height:38px}.dashboard-task-badges{grid-column:2/-1;justify-content:flex-start}.dashboard-task-arrow{grid-column:3;grid-row:1;align-self:center}.dashboard-task-main strong{font-size:14px}}


/* v1.0.1 · resolución individual de conflictos de nube */
.cloud-conflict-panel{margin:14px 0;padding:14px;border:1px solid #fed7aa;border-radius:16px;background:linear-gradient(145deg,#fffaf5,#fff7ed);box-shadow:0 8px 20px rgba(154,52,18,.06)}
.conflict-panel-head h4{margin:0;color:#8a3412;font-size:16px}.conflict-panel-head p{margin:5px 0 0}.conflict-count{display:inline-grid;min-width:24px;height:24px;padding:0 7px;place-items:center;border-radius:999px;background:#fff0df;color:#9a3412;border:1px solid #fdba74;font-size:12px}
.cloud-conflict-list{display:grid;gap:10px;margin-top:12px}.cloud-conflict-card{padding:12px;border:1px solid #f1c8a8;border-radius:14px;background:#fff;box-shadow:0 3px 10px rgba(55,65,81,.04)}
.conflict-card-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:9px}.conflict-card-head h5{margin:3px 0 0;font-size:15px;color:var(--navy)}.conflict-type{display:inline-flex;padding:3px 7px;border-radius:999px;background:#fff3e6;color:#9a3412;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}
.conflict-versions{display:grid;grid-template-columns:1fr 1fr;gap:9px}.conflict-version{min-width:0;padding:10px;border-radius:12px;border:1px solid #dce5ec;background:#f9fbfd}.conflict-version.local{border-color:#cfe0ea;background:#f4f9fc}.conflict-version.remote{border-color:#e4ded7;background:#fcfaf7}.conflict-version strong{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#5b7082}.conflict-version p{margin:5px 0 0;line-height:1.35;overflow-wrap:anywhere}.conflict-version .conflict-main{font-weight:800;color:#203a55}.conflict-actions{margin-top:10px}.conflict-actions .btn{min-height:38px}
@media (max-width:700px){.conflict-versions{grid-template-columns:1fr}.conflict-actions{display:grid;grid-template-columns:1fr}.conflict-actions .btn{width:100%}.cloud-conflict-panel{padding:11px}}

/* v1.0.2 · Recibos y WhatsApp */
.payment-movement{display:inline-flex!important;align-items:center;gap:7px!important;padding:5px 6px 5px 9px!important}
.payment-movement>span:first-child{white-space:nowrap}.payment-movement-actions{display:inline-flex;align-items:center;gap:4px}
.payment-movement .payment-movement-actions button{width:auto;height:25px;border-radius:999px;padding:0 8px;font-size:9px;font-weight:800;line-height:23px;border:1px solid #d6e0e7;background:#fff;cursor:pointer}
.payment-movement .payment-movement-actions .receipt-mini-btn{color:#315f80}.payment-movement .payment-movement-actions .receipt-mini-btn:hover{background:#edf4f8}
.payment-movement .payment-movement-actions .whatsapp-mini-btn{color:#18794e;border-color:#bde3cd}.payment-movement .payment-movement-actions .whatsapp-mini-btn:hover{background:#e9f8ef}
.payment-movement .payment-movement-actions .delete-payment-btn{width:25px;padding:0;color:var(--muted);font-size:15px;border:0;background:transparent}.payment-movement .payment-movement-actions .delete-payment-btn:hover{background:var(--red-bg);color:var(--red)}
.receipt-dialog{width:min(700px,calc(100vw - 24px))}.receipt-modal-card{padding-bottom:18px}.receipt-preview{margin:12px 0;border:1px solid #d8e4ec;border-radius:20px;padding:22px;background:linear-gradient(145deg,#fff,#f8fbfd);box-shadow:0 8px 26px rgba(23,51,78,.06)}
.receipt-brand{text-align:center}.receipt-brand img{width:min(230px,65%);height:auto}.receipt-title{text-align:center;margin:8px 0 18px;font-size:20px;font-weight:900;color:var(--navy);text-transform:uppercase;letter-spacing:.04em}.receipt-preview dl{margin:0;display:grid;gap:0}.receipt-preview dl>div{display:grid;grid-template-columns:145px 1fr;gap:16px;padding:10px 0;border-bottom:1px solid #e4ebf0}.receipt-preview dt{font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:850;color:var(--muted)}.receipt-preview dd{margin:0;font-weight:800;color:var(--navy)}
.receipt-status{margin:18px auto 8px;width:max-content;max-width:100%;padding:8px 13px;border-radius:999px;font-size:11px;font-weight:900;background:#fff4d8;color:#8d650d;text-align:center}.receipt-status.paid{background:#e5f4ec;color:#26734e}.receipt-preview>p{text-align:center;color:var(--muted);font-size:12px;margin:18px 0 2px}.whatsapp-btn{background:#198754!important;border-color:#198754!important}.whatsapp-btn:hover{filter:brightness(.96)}
@media(max-width:560px){.payment-movement{width:100%;justify-content:space-between;align-items:center;flex-wrap:wrap}.payment-movement>span:first-child{white-space:normal}.payment-movement-actions{width:100%}.payment-movement .payment-movement-actions button{flex:1}.payment-movement .payment-movement-actions .delete-payment-btn{flex:0 0 28px}.receipt-preview{padding:16px}.receipt-preview dl>div{grid-template-columns:1fr;gap:2px}.receipt-actions{display:grid;grid-template-columns:1fr 1fr}.receipt-actions .grow{display:none}.receipt-actions #shareReceiptWhatsappBtn{grid-column:1/-1;grid-row:1}.receipt-actions #openReceiptWhatsappChatBtn{grid-column:1/-1}.receipt-help{font-size:10px}}


/* v1.1.1 LOCAL · Portal del alumno (demo visual) */
.student-demo-settings{border-color:#cddfe9;background:linear-gradient(145deg,#fff,#f5fafc)}
.student-demo-action{display:flex;align-items:end}.student-demo-action .btn{width:100%;min-height:42px}
.student-portal-view{max-width:900px;margin:0 auto}.student-portal-topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}.student-portal-topbar h2{margin:3px 0;color:var(--navy);font-size:30px}.student-portal-topbar p{margin:0}
.student-home-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.student-home-grid>.student-hero-card{grid-column:1/-1}.student-hero-card{position:relative;border-radius:22px;padding:24px;background:linear-gradient(135deg,#172f4f,#2f628d);color:white;box-shadow:0 14px 30px rgba(23,47,79,.18)}.student-hero-card h3{font-size:27px;margin:8px 0 5px;color:white}.student-hero-card p{margin:0;color:#e5eef5}.student-demo-badge{display:inline-flex;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.12);border-radius:999px;padding:5px 9px;font-size:9px;font-weight:900;letter-spacing:.08em}
.student-progress-card .panel-title strong{font-size:26px;color:var(--navy)}.student-big-progress{height:11px}.student-public-head{display:flex;align-items:center;gap:14px;margin-bottom:18px}.student-public-head h3{margin:2px 0 4px;font-size:25px}.student-public-head p{margin:0;color:var(--muted)}.student-public-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:18px}.student-public-fields>div{padding:13px;border:1px solid var(--line);border-radius:13px;background:var(--lighter)}.student-public-fields span,.student-public-fields strong{display:block}.student-public-fields span{font-size:11px;color:var(--muted);margin-bottom:4px}.student-security-note{margin-top:18px;padding:12px 14px;border-radius:13px;background:#eef6fb;color:#496174;font-size:12px;line-height:1.45}
.student-cartilla-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:16px}.student-cartilla-item{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:14px;padding:11px;background:#fff}.student-cartilla-item>span{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:#edf2f5;color:#7b8995;font-weight:900}.student-cartilla-item.done{background:var(--green-bg);border-color:#afdac3}.student-cartilla-item.done>span{background:#2f7a5c;color:white}.student-cartilla-item strong,.student-cartilla-item small{display:block}.student-cartilla-item small{color:var(--muted);margin-top:2px;font-size:11px}
.student-class-list{display:grid;gap:11px}.student-class-card{padding:14px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,#fff,#f8fbfd)}.student-class-date{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:4px}.student-class-date strong{color:var(--navy)}.student-class-date span{font-size:11px;font-weight:850;padding:5px 8px;border-radius:999px;background:#e9f1f6;color:#315f80}.student-class-card>small{display:block;color:var(--muted);margin-bottom:8px}.student-class-card p{margin:6px 0;line-height:1.45}.student-next-class{padding-top:8px;border-top:1px dashed var(--line)}.student-external-link{display:inline-block;margin-left:6px;text-decoration:none}
.student-video-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.student-video-card{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid var(--line);border-radius:16px;padding:13px;background:#fff;color:var(--text)}.student-video-card:hover{background:#f7fafc}.student-video-play{flex:0 0 42px;width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#e6f0f6;color:var(--navy);font-size:17px}.student-video-card strong,.student-video-card small,.student-video-card div>span{display:block}.student-video-card strong{color:var(--navy)}.student-video-card small,.student-video-card div>span{color:var(--muted);font-size:11px;margin-top:3px}
.student-bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:31;background:rgba(255,255,255,.98);border-top:1px solid var(--line);display:flex;justify-content:center;padding:8px max(8px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));box-shadow:0 -8px 24px rgba(20,44,70,.08)}.student-bottom-nav button{flex:1;max-width:160px;border:0;background:transparent;color:#33485f;font-size:11px;font-weight:800;padding:6px 5px;border-radius:16px;transition:transform .18s ease,background .18s ease,box-shadow .18s ease}.student-bottom-nav button span{display:grid;place-items:center;width:34px;height:34px;line-height:1.1;margin:0 auto 6px;border-radius:12px;box-shadow:0 6px 14px rgba(20,44,70,.10),inset 0 0 0 1px rgba(255,255,255,.22)}.student-bottom-nav button span .student-ui-svg{width:19px;height:19px}.student-bottom-nav button.tab-home span{background:linear-gradient(135deg,#17314f,#315f83);color:#fff}.student-bottom-nav button.tab-profile span{background:linear-gradient(135deg,#c23372,#ef5a93);color:#fff}.student-bottom-nav button.tab-progress span{background:linear-gradient(135deg,#1f8d72,#43b692);color:#fff}.student-bottom-nav button.tab-classes span{background:linear-gradient(135deg,#5861c7,#7985f2);color:#fff}.student-bottom-nav button.tab-videos span{background:linear-gradient(135deg,#a85c1b,#dd8c31);color:#fff}.student-bottom-nav button.active{background:linear-gradient(135deg,#17314f,#274f78);color:#fff;box-shadow:0 10px 24px rgba(23,47,79,.18);transform:translateY(-1px)}.student-bottom-nav button.active span{background:rgba(255,255,255,.18);color:#fff;transform:translateY(-1px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}
@media(max-width:700px){.student-home-grid,.student-cartilla-grid,.student-video-grid{grid-template-columns:1fr}.student-portal-topbar{align-items:center}.student-portal-topbar h2{font-size:25px}.student-bottom-nav button{font-size:9px}.student-bottom-nav button span{height:20px}.student-public-fields{grid-template-columns:1fr}.student-hero-card{padding:20px}.student-hero-card h3{font-size:23px}}

.local-cloud-disabled{opacity:.72}.local-cloud-disabled:before{content:"PRUEBA LOCAL · conexión a Supabase bloqueada";display:block;margin-bottom:12px;padding:10px 12px;border-radius:12px;background:#fff3d6;color:#8a6416;font-size:12px;font-weight:900}

/* v1.2.0 LOCAL · cartillas múltiples */
.student-book-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.student-book-card{position:relative;text-align:left;border:1px solid var(--line);background:#fff;border-radius:18px;padding:16px;display:grid;grid-template-columns:1fr auto;gap:8px 14px;cursor:pointer;color:var(--text)}.student-book-card:hover{border-color:#9fb9ce;box-shadow:0 10px 28px rgba(37,70,99,.08)}.student-book-card strong,.student-book-card small{display:block}.student-book-card strong{font-size:18px;margin:3px 0}.student-book-card small{color:var(--muted)}.student-book-score{display:flex;align-items:center;gap:8px;font-size:18px}.student-book-score b{font-size:20px}.student-book-score span{font-size:26px;color:var(--muted)}.student-book-card .mini-bar{grid-column:1/-1}.student-cartilla-detail-head>.btn{margin-bottom:12px}.compact-stack{margin-top:10px}.progress-person-summary{flex-wrap:wrap}.progress-person-summary #toggleCartillaAssignmentBtn{margin-left:auto}
@media(max-width:700px){.student-book-grid{grid-template-columns:1fr}.progress-person-summary #toggleCartillaAssignmentBtn{width:100%;margin-left:0}}

/* v1.3.1 LOCAL · Alumno+ */
.student-alumnoplus{display:grid;gap:14px}.student-today-card{background:linear-gradient(135deg,#17314f,#315f83);color:#fff;border:0;box-shadow:0 14px 30px rgba(23,49,79,.16)}.student-today-card .section-kicker,.student-today-card h3,.student-today-card p{color:#fff}.student-today-card .section-kicker{opacity:.72}.student-today-card p{margin:4px 0 0;opacity:.9}.student-ui-svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2.35;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.student-icon-badge,.student-row-icon{display:grid;place-items:center;border-radius:14px;background:linear-gradient(135deg,#17314f,#315f83);color:#fff;box-shadow:0 8px 18px rgba(23,49,79,.16),inset 0 0 0 1px rgba(255,255,255,.12)}.student-icon-badge{width:44px;height:44px;flex:0 0 44px}.student-icon-badge .student-ui-svg{width:22px;height:22px}.student-icon-badge.on-dark{background:rgba(255,255,255,.16);color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}.student-row-icon{width:32px;height:32px;flex:0 0 32px;border-radius:11px}.student-row-icon .student-ui-svg{width:17px;height:17px}.student-icon-badge.is-progress,.student-row-icon.is-progress{background:linear-gradient(135deg,#d53d7e,#f36a9d);color:#fff;box-shadow:0 8px 18px rgba(213,61,126,.18),inset 0 0 0 1px rgba(255,255,255,.15)}.student-icon-badge.is-receipt,.student-row-icon.is-receipt{background:linear-gradient(135deg,#c97614,#efab38);color:#fff;box-shadow:0 8px 18px rgba(201,118,20,.18),inset 0 0 0 1px rgba(255,255,255,.14)}.student-icon-badge.is-target,.student-row-icon.is-target{background:linear-gradient(135deg,#a82f75,#eb4f9d);color:#fff;box-shadow:0 8px 18px rgba(168,47,117,.18),inset 0 0 0 1px rgba(255,255,255,.14)}.student-icon-badge.is-sparkles,.student-row-icon.is-sparkles{background:linear-gradient(135deg,#d6a01b,#f1c74e);color:#fff;box-shadow:0 8px 18px rgba(214,160,27,.18),inset 0 0 0 1px rgba(255,255,255,.16)}.student-icon-badge.is-groups,.student-row-icon.is-groups{background:linear-gradient(135deg,#1e8c86,#46bab3);color:#fff;box-shadow:0 8px 18px rgba(30,140,134,.18),inset 0 0 0 1px rgba(255,255,255,.14)}.student-icon-badge.is-videos,.student-row-icon.is-videos{background:linear-gradient(135deg,#4f63d8,#7f8cff);color:#fff;box-shadow:0 8px 18px rgba(79,99,216,.18),inset 0 0 0 1px rgba(255,255,255,.14)}.student-icon-badge.is-calendar,.student-row-icon.is-calendar{background:linear-gradient(135deg,#2e79af,#4ea3da);color:#fff;box-shadow:0 8px 18px rgba(46,121,175,.18),inset 0 0 0 1px rgba(255,255,255,.14)}.student-icon-badge.is-profile,.student-row-icon.is-profile{background:linear-gradient(135deg,#b44589,#e461b1);color:#fff;box-shadow:0 8px 18px rgba(180,69,137,.18),inset 0 0 0 1px rgba(255,255,255,.14)}.student-title-side{display:flex;align-items:center;gap:10px}.student-today-sub{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:17px;padding-top:13px;border-top:1px solid rgba(255,255,255,.18);font-size:12px}.student-today-sub span{opacity:.72}.student-today-sub strong{text-align:right}.student-home-grid-plus{align-items:stretch}.student-home-grid-plus>.panel{height:100%}.student-home-secondary{opacity:.96}.student-news-card.empty{align-self:start;height:auto!important;min-height:0}.student-news-card.empty .student-news-list{min-height:0}.student-news-card.empty .student-news-list .muted{margin:2px 0 0}.student-inline-link{margin-top:12px;padding:0;border:0;background:transparent;color:#315f80;font:inherit;font-size:11px;font-weight:900;cursor:pointer}.student-inline-link:hover{text-decoration:underline}.student-fee-status{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:999px;padding:6px 9px;font-size:10px;font-weight:900}.student-fee-status.paid{background:#e5f5ed;color:#26734e}.student-fee-status.partial{background:#fff2d2;color:#8c650d}.student-fee-status.pending{background:#fff0e3;color:#975f16}.student-fee-status.neutral{background:#edf2f5;color:#687b8b}.student-fee-card p{margin:7px 0 0}.student-focus-list,.student-news-list,.student-receipt-list{display:grid;gap:8px}.student-focus-row,.student-news-row{width:100%;display:flex;align-items:center;gap:10px;text-align:left;border:1px solid var(--line);background:#fff;border-radius:13px;padding:10px 11px;color:var(--text);cursor:pointer}.student-focus-row:hover,.student-news-row:hover{background:#f7fafc;border-color:#b4c8d7}.student-focus-row>div,.student-news-row>div{min-width:0;flex:1}.student-focus-row strong,.student-focus-row small,.student-news-row strong,.student-news-row small{display:block}.student-focus-row strong,.student-news-row strong{color:var(--navy)}.student-focus-row small,.student-news-row small{margin-top:2px;color:var(--muted);font-size:10px;white-space:normal}.student-focus-row>b{font-size:21px;color:#8394a2}.student-news-type{flex:0 0 30px;width:30px;height:30px;display:grid;place-items:center;border-radius:10px;color:#fff;box-shadow:0 6px 14px rgba(20,44,70,.10),inset 0 0 0 1px rgba(255,255,255,.18)}.student-news-type .student-ui-svg{width:16px;height:16px}.student-news-type.video{background:linear-gradient(135deg,#4b63d6,#7d8cff)}.student-news-type.class{background:linear-gradient(135deg,#7450b2,#9d7ade)}.student-news-type.progress{background:linear-gradient(135deg,#2a9869,#59c08f)}.student-profile-stack{display:grid;gap:14px}.student-payment-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:12px 0 18px}.student-payment-summary>div{padding:12px;border:1px solid var(--line);border-radius:13px;background:#f8fafc}.student-payment-summary span,.student-payment-summary strong{display:block}.student-payment-summary span{font-size:10px;color:var(--muted);margin-bottom:4px}.student-payment-summary strong{font-size:17px;color:var(--navy)}.student-receipt-row{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:13px;padding:11px 12px;background:#fff}.student-receipt-row>div{min-width:0;flex:1}.student-receipt-row strong,.student-receipt-row small{display:block}.student-receipt-row small{margin-top:2px;color:var(--muted);font-size:10px}.student-payments-public h4{margin-top:16px}
@media(max-width:700px){.student-payment-summary{grid-template-columns:1fr}.student-today-sub{align-items:flex-start;flex-direction:column}.student-today-sub strong{text-align:left}.student-fee-status{font-size:9px}.student-focus-row,.student-news-row{padding:10px}.student-home-secondary{grid-template-columns:1fr}}


/* v1.5.2 LOCAL · Iconografía alumno tipo CRM */

.student-ui-svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2.15;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.student-icon-badge,.student-row-icon,.student-news-type,.student-bottom-nav button span{position:relative;overflow:hidden}
.student-icon-badge::before,.student-row-icon::before,.student-news-type::before,.student-bottom-nav button span::before{content:"";position:absolute;inset:1px;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.42),rgba(255,255,255,0));pointer-events:none}
.student-icon-badge,.student-row-icon{background:#fff;border:1px solid rgba(195,210,223,.9);box-shadow:0 10px 20px rgba(16,39,64,.08)}
.student-icon-badge{width:46px;height:46px;flex:0 0 46px;border-radius:15px}
.student-icon-badge .student-ui-svg{width:22px;height:22px;position:relative;z-index:1}
.student-row-icon{width:34px;height:34px;flex:0 0 34px;border-radius:12px}
.student-row-icon .student-ui-svg,.student-news-type .student-ui-svg{width:17px;height:17px;position:relative;z-index:1}
.student-icon-badge.on-dark{background:rgba(255,255,255,.15)!important;color:#fff!important;border-color:rgba(255,255,255,.20)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.student-icon-badge.is-progress,.student-row-icon.is-progress{background:linear-gradient(135deg,#fff4fa,#ffd7e9);color:#cf2f78;border-color:#f5bfd7}
.student-icon-badge.is-receipt,.student-row-icon.is-receipt{background:linear-gradient(135deg,#fff6eb,#ffe0b9);color:#b86b10;border-color:#f2cf96}
.student-icon-badge.is-target,.student-row-icon.is-target{background:linear-gradient(135deg,#fff1fb,#ffd5f0);color:#c22e88;border-color:#f1b8df}
.student-icon-badge.is-sparkles,.student-row-icon.is-sparkles{background:linear-gradient(135deg,#fff9df,#ffeaa1);color:#b48312;border-color:#efd97b}
.student-icon-badge.is-groups,.student-row-icon.is-groups{background:linear-gradient(135deg,#eefcf8,#c8f2e8);color:#167e73;border-color:#a5e5d8}
.student-icon-badge.is-videos,.student-row-icon.is-videos{background:linear-gradient(135deg,#f2f2ff,#d8deff);color:#4d61d5;border-color:#bcc8ff}
.student-icon-badge.is-calendar,.student-row-icon.is-calendar{background:linear-gradient(135deg,#eff8ff,#cfe9ff);color:#2d7cb2;border-color:#b7ddfb}
.student-icon-badge.is-profile,.student-row-icon.is-profile{background:linear-gradient(135deg,#fff3fb,#ffd8ee);color:#b44589;border-color:#efbddb}
.student-news-type{flex:0 0 32px;width:32px;height:32px;border-radius:11px;border:1px solid rgba(195,210,223,.9);background:#fff;box-shadow:0 8px 18px rgba(16,39,64,.08)}
.student-news-type.video{background:linear-gradient(135deg,#f2f2ff,#dbe0ff);color:#4d61d5;border-color:#bdc6ff}
.student-news-type.class{background:linear-gradient(135deg,#f4efff,#e0d2ff);color:#7450b2;border-color:#cdb8ff}
.student-news-type.progress{background:linear-gradient(135deg,#effcf4,#d0f4df);color:#2a9869;border-color:#b6e8c9}
.student-bottom-nav button{color:#3d556c}
.student-bottom-nav button span{width:38px;height:38px;border:1px solid rgba(195,210,223,.95);background:#fff;box-shadow:0 10px 20px rgba(16,39,64,.08)}
.student-bottom-nav button span .student-ui-svg{width:18px;height:18px;position:relative;z-index:1}
.student-bottom-nav button.tab-home span{background:linear-gradient(135deg,#eff6ff,#d7e8ff);color:#244f82;border-color:#bfd6f2}
.student-bottom-nav button.tab-profile span{background:linear-gradient(135deg,#fff2fb,#ffd8ee);color:#b44589;border-color:#efbddb}
.student-bottom-nav button.tab-progress span{background:linear-gradient(135deg,#f1fbf7,#cef0e4);color:#1a8f76;border-color:#b2e5d5}
.student-bottom-nav button.tab-classes span{background:linear-gradient(135deg,#f2f3ff,#d9ddff);color:#5963cb;border-color:#bec7ff}
.student-bottom-nav button.tab-videos span{background:linear-gradient(135deg,#fff7ef,#ffe0c2);color:#b36818;border-color:#f1c999}
.student-bottom-nav button.active{background:linear-gradient(135deg,#17314f,#274f78);color:#fff;box-shadow:0 12px 24px rgba(23,47,79,.18)}
.student-bottom-nav button.active span{background:rgba(255,255,255,.16)!important;color:#fff!important;border-color:rgba(255,255,255,.16)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
.student-bottom-nav button.active span::before{background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0))}


/* v1.5.2 LOCAL · Iconografía alumno más cercana al CRM */
.student-ui-svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.student-icon-badge,.student-row-icon,.student-news-type,.student-bottom-nav button span{position:relative;overflow:hidden}
.student-icon-badge::before,.student-row-icon::before,.student-news-type::before,.student-bottom-nav button span::before{content:"";position:absolute;inset:1px;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,0));pointer-events:none}
.student-icon-badge::after,.student-row-icon::after,.student-news-type::after{content:"";position:absolute;top:7px;right:7px;width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.18;box-shadow:0 0 0 4px rgba(255,255,255,.18)}
.student-icon-badge,.student-row-icon{display:grid;place-items:center;color:#fff;border:0;box-shadow:0 12px 24px rgba(18,41,67,.16), inset 0 1px 0 rgba(255,255,255,.18)}
.student-icon-badge{width:46px;height:46px;flex:0 0 46px;border-radius:16px}
.student-row-icon{width:34px;height:34px;flex:0 0 34px;border-radius:12px}
.student-icon-badge .student-ui-svg{width:22px;height:22px;position:relative;z-index:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.07))}
.student-row-icon .student-ui-svg,.student-news-type .student-ui-svg{width:17px;height:17px;position:relative;z-index:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.06))}
.student-icon-badge.on-dark{background:linear-gradient(135deg,rgba(255,255,255,.24),rgba(255,255,255,.10))!important;color:#fff!important;border:1px solid rgba(255,255,255,.18)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 10px 18px rgba(11,27,46,.16)!important}
.student-icon-badge.on-dark::after{background:#fff;opacity:.20;box-shadow:0 0 0 4px rgba(255,255,255,.10)}
.student-icon-badge.is-progress,.student-row-icon.is-progress{background:linear-gradient(135deg,#d83377,#f45a98)}
.student-icon-badge.is-receipt,.student-row-icon.is-receipt{background:linear-gradient(135deg,#dc8a12,#f4b63b)}
.student-icon-badge.is-target,.student-row-icon.is-target{background:linear-gradient(135deg,#a93684,#ee5bb0)}
.student-icon-badge.is-sparkles,.student-row-icon.is-sparkles{background:linear-gradient(135deg,#d9a313,#f6d34d)}
.student-icon-badge.is-groups,.student-row-icon.is-groups{background:linear-gradient(135deg,#16897f,#35c3b0)}
.student-icon-badge.is-videos,.student-row-icon.is-videos{background:linear-gradient(135deg,#4a62d8,#7e90ff)}
.student-icon-badge.is-calendar,.student-row-icon.is-calendar{background:linear-gradient(135deg,#2d78b1,#53b0e8)}
.student-icon-badge.is-profile,.student-row-icon.is-profile{background:linear-gradient(135deg,#c84d93,#ef70b9)}
.student-title-side{display:flex;align-items:center;gap:10px}
.student-news-type{flex:0 0 32px;width:32px;height:32px;display:grid;place-items:center;border-radius:11px;color:#fff;border:0;box-shadow:0 9px 18px rgba(18,41,67,.12), inset 0 1px 0 rgba(255,255,255,.18)}
.student-news-type.video{background:linear-gradient(135deg,#4a62d8,#8191ff)}
.student-news-type.class{background:linear-gradient(135deg,#7550b9,#ab84e3)}
.student-news-type.progress{background:linear-gradient(135deg,#1f9a65,#62c790)}
.student-focus-row,.student-news-row{border:1px solid rgba(194,208,222,.88);border-radius:14px;box-shadow:0 8px 16px rgba(18,41,67,.03)}
.student-focus-row:hover,.student-news-row:hover{background:#f8fbff;border-color:#a9c4dc;box-shadow:0 10px 18px rgba(18,41,67,.06)}
.student-bottom-nav button{color:#39516a;font-weight:900;letter-spacing:.01em}
.student-bottom-nav button span{width:40px;height:40px;border-radius:14px;border:1px solid rgba(201,214,227,.95);background:#fff;box-shadow:0 12px 22px rgba(18,41,67,.08), inset 0 1px 0 rgba(255,255,255,.9)}
.student-bottom-nav button span .student-ui-svg{width:19px;height:19px;position:relative;z-index:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.05))}
.student-bottom-nav button.tab-home span{background:linear-gradient(135deg,#edf4ff,#dcecff);color:#1f537d;border-color:#c5daf1}
.student-bottom-nav button.tab-profile span{background:linear-gradient(135deg,#fff0f8,#ffddec);color:#b73f84;border-color:#efc0da}
.student-bottom-nav button.tab-progress span{background:linear-gradient(135deg,#edf9f5,#d6f1e6);color:#177f66;border-color:#bce2d5}
.student-bottom-nav button.tab-classes span{background:linear-gradient(135deg,#eff1ff,#dde2ff);color:#5766cd;border-color:#c9d1ff}
.student-bottom-nav button.tab-videos span{background:linear-gradient(135deg,#fff5ea,#ffe5c4);color:#b8701d;border-color:#f3d1a2}
.student-bottom-nav button.active{background:linear-gradient(135deg,#17314f,#274f78);color:#fff;box-shadow:0 14px 26px rgba(23,47,79,.20);transform:translateY(-1px)}
.student-bottom-nav button.active span{background:rgba(255,255,255,.18)!important;color:#fff!important;border-color:rgba(255,255,255,.18)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.20)}
.student-bottom-nav button.active span::before{background:linear-gradient(180deg,rgba(255,255,255,.22),rgba(255,255,255,0))}
.student-bottom-nav button.active span::after{content:"";position:absolute;top:7px;right:7px;width:6px;height:6px;border-radius:50%;background:#fff;opacity:.24}
@media(min-width:1160px){
  .student-bottom-nav{left:18px;right:auto;top:98px;bottom:auto;transform:none;width:180px;display:flex;flex-direction:column;gap:7px;padding:10px;border:1px solid rgba(190,207,220,.78);border-radius:22px;background:rgba(252,254,255,.88);backdrop-filter:blur(18px);box-shadow:0 18px 42px rgba(19,46,72,.12)}
  .student-bottom-nav button{width:100%;max-width:none;flex:none;display:flex;align-items:center;justify-content:flex-start;gap:11px;padding:11px 12px;border-radius:14px;text-align:left;font-size:12px}
  .student-bottom-nav button span{margin:0;width:38px;height:38px}
}


/* v1.5.2 LOCAL · Fase 1 · Home alumno estilo Story */
.student-portal-home-mode .student-portal-topbar{align-items:flex-start;gap:12px;margin-bottom:12px}
.student-portal-home-mode .student-portal-topbar h2{font-size:clamp(28px,5vw,40px);line-height:1.05;margin-top:2px}
.student-portal-home-mode #studentPortalGroupLine{font-size:14px;color:#6a7d90}
.student-story-home{display:grid;gap:18px}
.student-story-hero{position:relative;overflow:hidden;display:grid;grid-template-columns:1.4fr .9fr;gap:18px;padding:22px;border-radius:28px;background:linear-gradient(135deg,#fff 0%,#fff7fa 52%,#f0f6ff 100%);border:1px solid rgba(231,206,218,.9);box-shadow:0 18px 50px rgba(24,48,74,.10)}
.student-story-hero::before{content:"";position:absolute;right:-30px;top:-44px;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle at 50% 50%,rgba(229,44,111,.16),rgba(229,44,111,0) 65%)}
.student-story-hero::after{content:"";position:absolute;left:-30px;bottom:-58px;width:280px;height:200px;background:url("logo.png") no-repeat left bottom/180px auto;opacity:.06;pointer-events:none;filter:grayscale(.15)}
.student-story-hero-copy,.student-story-hero-side{position:relative;z-index:1}
.student-story-brand{display:inline-flex;align-items:center;gap:8px;margin-bottom:10px;padding:8px 12px;border-radius:999px;background:#fff;color:#ab2458;font-size:11px;font-weight:900;letter-spacing:.09em;text-transform:uppercase;border:1px solid rgba(226,190,205,.92);box-shadow:0 8px 18px rgba(171,36,88,.08)}
.student-story-hero h3{margin:0 0 10px;font-size:clamp(22px,4vw,34px);line-height:1.08;color:#172f4d}
.student-story-hero p{margin:0;max-width:58ch;color:#42596e;line-height:1.5}
.student-story-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.student-story-pill{display:inline-flex;align-items:center;padding:8px 12px;border-radius:999px;background:#ffffff;border:1px solid rgba(203,217,230,.95);box-shadow:0 8px 18px rgba(20,43,69,.06);font-size:11px;font-weight:800;color:#30485f}
.student-story-hero-side{align-self:stretch;display:flex;flex-direction:column;justify-content:center;padding:18px;border-radius:22px;background:linear-gradient(135deg,#1d3655,#315f83);color:#fff;box-shadow:0 18px 32px rgba(23,49,79,.18)}
.student-story-next-label{font-size:11px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.7);margin-bottom:8px}
.student-story-next-time{font-size:24px;font-weight:900;line-height:1.08;margin-bottom:8px}
.student-story-next-group{font-size:14px;line-height:1.45;color:rgba(255,255,255,.92)}
.student-story-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.student-story-card{appearance:none;-webkit-appearance:none;border:0;padding:0;border-radius:26px;overflow:hidden;background:#fff;box-shadow:0 18px 36px rgba(21,45,72,.10);border:1px solid rgba(206,217,228,.9);cursor:pointer;text-align:left;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}
.student-story-card:hover{transform:translateY(-2px);box-shadow:0 22px 42px rgba(21,45,72,.14);border-color:#b9d0e2}
.student-story-cover{position:relative;min-height:158px;padding:14px 14px 12px;background:linear-gradient(135deg,#13273f,#1b3554 62%,#294c74 100%)}
.student-story-cover::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at top right,rgba(255,255,255,.14),rgba(255,255,255,0) 42%)}
.student-story-cover::after{content:"";position:absolute;right:10px;bottom:10px;width:124px;height:124px;background:url("logo.png") no-repeat center/contain;opacity:.15;filter:brightness(10);transform:rotate(-8deg)}
.student-story-chip{position:relative;z-index:1;display:inline-flex;align-items:center;padding:8px 12px;border-radius:14px;background:#0f1d2f;color:#fff;font-size:11px;font-weight:900;letter-spacing:.06em;box-shadow:0 10px 20px rgba(0,0,0,.20)}
.student-story-thumb,.student-story-meter,.student-story-mini-note,.student-story-profile-badge{position:absolute;left:14px;right:14px;bottom:14px;z-index:1}
.student-story-thumb{display:flex;align-items:center;justify-content:flex-start;min-height:50px;padding:12px 14px 12px 58px;border-radius:18px;background:linear-gradient(135deg,rgba(0,0,0,.88),rgba(56,18,18,.82));color:#fff;font-weight:900;box-shadow:0 12px 26px rgba(0,0,0,.25)}
.student-story-thumb::before{content:"▶";position:absolute;left:16px;top:50%;transform:translateY(-50%);width:30px;height:30px;border-radius:10px;background:#fff;color:#d32247;display:grid;place-items:center;font-size:14px;font-weight:900}
.student-story-thumb span{font-size:15px}
.student-story-meter{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:18px;background:rgba(255,255,255,.94);color:#17314f;box-shadow:0 12px 24px rgba(20,43,69,.16)}
.student-story-meter i{display:block;flex:1;height:10px;border-radius:999px;background:linear-gradient(90deg,#e62d6f,#ff7cab)}
.student-story-meter b{font-size:13px;white-space:nowrap}
.student-story-mini-note{display:inline-flex;align-items:center;justify-content:center;left:14px;right:auto;min-height:38px;padding:10px 12px;border-radius:14px;background:rgba(255,255,255,.94);color:#17314f;font-size:12px;font-weight:800;box-shadow:0 10px 22px rgba(20,43,69,.14)}
.student-story-profile-badge{left:auto;right:16px;bottom:16px;width:60px;height:60px;border-radius:18px;background:linear-gradient(135deg,#fff,#ffe4ef);color:#c42769;display:grid;place-items:center;font-size:30px;font-weight:900;box-shadow:0 12px 24px rgba(20,43,69,.16)}
.student-story-body{padding:16px 16px 18px}
.student-story-body h4{margin:0 0 6px;font-size:22px;line-height:1.06;color:#132742}
.student-story-body p{margin:0;color:#5a6d80;line-height:1.45;font-size:14px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.student-story-body p strong{color:#1d3554}
.student-story-card.card-video .student-story-cover{background:linear-gradient(135deg,#101215,#212733 60%,#4b0e16 100%)}
.student-story-card.card-progress .student-story-cover{background:linear-gradient(135deg,#fff1f7,#ffdce9 55%,#ffd4e3 100%)}
.student-story-card.card-progress .student-story-cover::after{filter:none;opacity:.13}
.student-story-card.card-progress .student-story-chip{background:#fff;color:#bf2d74;box-shadow:0 10px 20px rgba(191,45,116,.16)}
.student-story-card.card-classes .student-story-cover{background:linear-gradient(135deg,#f9efe6,#fff4ee 56%,#f0f6ff 100%)}
.student-story-card.card-classes .student-story-cover::after{filter:none;opacity:.11}
.student-story-card.card-classes .student-story-chip{background:#ffffff;color:#234467;box-shadow:0 10px 20px rgba(35,68,103,.12)}
.student-story-card.card-profile .student-story-cover{background:linear-gradient(135deg,#f7f8fb,#eef3fb 56%,#fff1f7 100%)}
.student-story-card.card-profile .student-story-cover::after{filter:none;opacity:.12}
.student-story-card.card-profile .student-story-chip{background:#fff;color:#203d5e;box-shadow:0 10px 20px rgba(32,61,94,.12)}
.student-story-card.card-progress .student-story-body h4,.student-story-card.card-classes .student-story-body h4,.student-story-card.card-profile .student-story-body h4{color:#18304d}
.student-story-card.card-video .student-story-body h4{color:#142843}
@media(max-width:900px){.student-story-hero{grid-template-columns:1fr}.student-story-card-grid{grid-template-columns:1fr 1fr}}
@media(max-width:680px){.student-story-card-grid{grid-template-columns:1fr}.student-story-cover{min-height:144px}.student-story-body h4{font-size:21px}.student-portal-home-mode .student-portal-topbar{position:sticky;top:0;z-index:8;padding:10px 0 8px;background:linear-gradient(180deg,#f4f8fb 72%,rgba(244,248,251,0));backdrop-filter:blur(6px)}}


/* v1.5.2 LOCAL · Fase 1.1 · Home Story compacta */
.student-portal-home-mode .student-portal-topbar{margin-bottom:8px;padding-bottom:2px}
.student-portal-home-mode .student-portal-topbar .hero-kicker{font-size:9px;opacity:.65}
.student-portal-home-mode .student-portal-topbar h2{font-size:clamp(26px,4.4vw,36px);margin:0 0 3px;line-height:1.04}
.student-portal-home-mode #studentPortalGroupLine{font-size:13px;margin:0}
.student-story-home-compact{gap:12px}
.student-story-hero-compact{display:block;padding:16px 17px 14px;border-radius:24px;min-height:0;background:linear-gradient(135deg,#fefefe 0%,#fff5f9 62%,#edf6ff 100%)}
.student-story-hero-compact::after{left:auto;right:-28px;bottom:-48px;width:190px;height:150px;background-size:142px auto;opacity:.07}
.student-story-hero-next{position:relative;z-index:1;padding:15px 16px;border-radius:19px;background:linear-gradient(135deg,#17314f,#315f83);color:#fff;box-shadow:0 13px 24px rgba(23,49,79,.17)}
.student-story-hero-next .student-story-next-label{display:block;margin:0 0 5px}
.student-story-hero-next .student-story-next-time{display:block;font-size:clamp(21px,4.4vw,28px);margin:0 0 4px}
.student-story-hero-next .student-story-next-group{display:block;font-size:13px;line-height:1.35;color:rgba(255,255,255,.88)}
.student-story-pills-compact{position:relative;z-index:1;margin-top:10px;gap:6px}
.student-story-pills-compact .student-story-pill{padding:6px 9px;font-size:10px;box-shadow:none;background:rgba(255,255,255,.84)}
.student-story-card-grid-compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.student-story-card-grid-compact .student-story-card{border-radius:21px;box-shadow:0 13px 28px rgba(21,45,72,.09)}
.student-story-wide-card{grid-column:1/-1;display:grid;grid-template-columns:42% 58%;min-height:126px}
.student-story-wide-card .student-story-cover{min-height:126px;height:100%}
.student-story-wide-card .student-story-body{display:flex;flex-direction:column;justify-content:center;padding:13px 14px}
.student-story-small-card .student-story-cover{min-height:116px;padding:11px}
.student-story-small-card .student-story-body{padding:11px 12px 13px;min-height:84px}
.student-story-card-grid-compact .student-story-chip{padding:6px 8px;border-radius:11px;font-size:9px;letter-spacing:.045em}
.student-story-card-grid-compact .student-story-thumb{left:10px;right:10px;bottom:10px;min-height:40px;padding:9px 9px 9px 45px;border-radius:14px;font-size:11px}
.student-story-card-grid-compact .student-story-thumb::before{left:10px;width:25px;height:25px;border-radius:8px;font-size:11px}
.student-story-card-grid-compact .student-story-meter{left:10px;right:10px;bottom:10px;padding:9px 10px;border-radius:14px;gap:7px}
.student-story-card-grid-compact .student-story-meter i{height:7px}
.student-story-card-grid-compact .student-story-meter b{font-size:11px}
.student-story-card-grid-compact .student-story-mini-note{left:10px;bottom:10px;min-height:31px;padding:7px 9px;border-radius:11px;font-size:10px}
.student-story-card-grid-compact .student-story-profile-badge{right:12px;bottom:12px;width:48px;height:48px;border-radius:15px;font-size:24px}
.student-story-card-grid-compact .student-story-body h4{font-size:18px;margin-bottom:4px}
.student-story-card-grid-compact .student-story-body p{font-size:12px;line-height:1.35;-webkit-line-clamp:2}
.student-story-card-grid-compact .student-story-cover::after{width:92px;height:92px;right:5px;bottom:3px}
@media(max-width:680px){
  .student-portal-home-mode .student-portal-topbar{position:static;padding:3px 0 5px;background:none;backdrop-filter:none}
  .student-portal-home-mode .student-portal-topbar h2{font-size:31px}
  .student-story-hero-compact{padding:13px;border-radius:22px}
  .student-story-hero-next{padding:13px 14px;border-radius:17px}
  .student-story-pills-compact{margin-top:8px}
  .student-story-card-grid-compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .student-story-wide-card{grid-column:1/-1;grid-template-columns:40% 60%;min-height:116px}
  .student-story-wide-card .student-story-cover{min-height:116px}
  .student-story-small-card .student-story-cover{min-height:106px}
  .student-story-small-card .student-story-body{min-height:78px;padding:10px}
  .student-story-card-grid-compact .student-story-body h4{font-size:16px}
  .student-story-card-grid-compact .student-story-body p{font-size:11px}
  .student-story-card-grid-compact .student-story-chip{font-size:8px;padding:6px 7px}
}
@media(max-width:370px){
  .student-story-pills-compact .student-story-pill{font-size:9px;padding:5px 7px}
  .student-story-wide-card{grid-template-columns:44% 56%}
  .student-story-card-grid-compact .student-story-body h4{font-size:15px}
}


/* v1.5.2 LOCAL · Fase 1.2 · Bailarines reales en la Home */
.student-story-cover{isolation:isolate;overflow:hidden}
.student-story-cover::after{display:none!important}
.student-story-cover::before{z-index:1;background:linear-gradient(120deg,rgba(12,25,42,.22),rgba(12,25,42,0) 58%)!important}
.student-story-dancer{position:absolute;z-index:0;display:block;pointer-events:none;user-select:none;object-fit:contain;filter:drop-shadow(0 12px 20px rgba(11,22,38,.20));transition:transform .18s ease,opacity .18s ease}
.student-story-card:hover .student-story-dancer{transform:translateY(-2px) scale(1.02)}
.student-story-chip,.student-story-thumb,.student-story-meter,.student-story-mini-note,.student-story-profile-badge{z-index:3}

/* Vídeos: pareja protagonista, fuerte y oscura */
.student-story-card.card-video .student-story-cover{background:linear-gradient(135deg,#0b111b 0%,#1b2030 46%,#4c1026 100%)}
.student-story-dancer-video{height:142%;width:auto;right:-20%;bottom:-42%;opacity:.92}
.student-story-card.card-video .student-story-cover::before{background:linear-gradient(90deg,rgba(8,14,24,.92) 0%,rgba(8,14,24,.58) 44%,rgba(8,14,24,.08) 72%)!important}

/* Evolución: bailarina azul sobre rosa suave */
.student-story-card.card-progress .student-story-cover{background:linear-gradient(135deg,#fff0f7 0%,#ffd7e9 55%,#f7e7ff 100%)}
.student-story-dancer-progress{height:122%;width:auto;right:-2%;bottom:-28%;opacity:.87;filter:drop-shadow(0 10px 18px rgba(137,42,88,.18))}
.student-story-card.card-progress .student-story-cover::before{background:linear-gradient(90deg,rgba(255,241,248,.94) 0%,rgba(255,241,248,.72) 48%,rgba(255,241,248,.10) 76%)!important}

/* Resúmenes: pareja de salsa, más discreta para no competir con el texto */
.student-story-card.card-classes .student-story-cover{background:linear-gradient(135deg,#fff6ed 0%,#fff1ee 48%,#eef5ff 100%)}
.student-story-dancer-classes{height:102%;width:auto;right:2%;bottom:-8%;opacity:.56;filter:drop-shadow(0 9px 16px rgba(77,35,53,.14))}
.student-story-card.card-classes .student-story-cover::before{background:linear-gradient(90deg,rgba(255,249,244,.96) 0%,rgba(255,249,244,.82) 52%,rgba(255,249,244,.18) 82%)!important}

/* Mi ficha: retrato rojo, elegante pero controlado */
.student-story-card.card-profile .student-story-cover{background:linear-gradient(135deg,#f8f9fc 0%,#eef3fb 48%,#fff0f6 100%)}
.student-story-dancer-profile{height:142%;width:auto;right:1%;bottom:-52%;opacity:.74;filter:drop-shadow(0 10px 20px rgba(117,38,77,.14))}
.student-story-card.card-profile .student-story-cover::before{background:linear-gradient(90deg,rgba(247,250,253,.98) 0%,rgba(247,250,253,.83) 48%,rgba(247,250,253,.12) 79%)!important}
.student-story-card.card-profile .student-story-profile-badge{background:rgba(255,255,255,.94);backdrop-filter:blur(4px)}

@media(max-width:680px){
  .student-story-dancer-video{height:145%;right:-34%;bottom:-45%}
  .student-story-dancer-progress{height:120%;right:1%;bottom:-20%}
  .student-story-dancer-classes{height:92%;right:4%;bottom:0%}
  .student-story-dancer-profile{height:138%;right:-2%;bottom:-49%}
}
@media(max-width:370px){
  .student-story-dancer-video{right:-42%}
  .student-story-dancer-progress{right:-2%}
  .student-story-dancer-classes{right:-6%}
}

/* v1.5.4 LOCAL · Retoque final Home alumno */
/* 1) Evitar que el saludo y el botón queden escondidos bajo la cabecera fija.
   2) Centrar mejor la bailarina de evolución.
   3) Dar un poco más de presencia a la pareja de resúmenes sin invadir el texto. */
.student-portal-view .student-portal-topbar{
  scroll-margin-top:88px;
}

@media(max-width:680px){
  .student-portal-view .student-portal-topbar{
    position:sticky;
    top:64px;
    z-index:9;
    padding:8px 0 10px;
    margin-top:-2px;
    background:linear-gradient(180deg,rgba(244,248,251,.98) 0%,rgba(244,248,251,.95) 76%,rgba(244,248,251,0) 100%);
    backdrop-filter:blur(10px);
  }
}

/* Mi evolución: un poco más centrada y limpia */
.student-story-dancer-progress{
  height:118%;
  right:5%;
  bottom:-18%;
  opacity:.89;
}

/* Resúmenes: algo más grande y mejor centrada */
.student-story-dancer-classes{
  height:110%;
  right:7%;
  bottom:-6%;
  opacity:.60;
}

@media(max-width:680px){
  .student-story-dancer-progress{
    height:118%;
    right:5%;
    bottom:-16%;
  }
  .student-story-dancer-classes{
    height:104%;
    right:6%;
    bottom:-2%;
    opacity:.62;
  }
}

@media(max-width:370px){
  .student-story-dancer-progress{
    right:3%;
  }
  .student-story-dancer-classes{
    right:3%;
    height:100%;
  }
}


/* v1.6.0 LOCAL · Fase 2 · Portal alumno completo */
.student-portal-section-mode .student-portal-topbar{margin-bottom:16px}
.student-v16{display:grid;gap:16px;padding-bottom:8px}
.student-v16 h3,.student-v16 h4,.student-v16 p{margin-top:0}
.student-v16-hero{position:relative;overflow:hidden;border:1px solid rgba(220,205,214,.92);border-radius:26px;background:linear-gradient(135deg,#fff8fb,#ffeef5 56%,#eef6ff);box-shadow:0 18px 42px rgba(21,45,72,.09);min-height:190px;padding:24px}
.student-v16-hero-copy{position:relative;z-index:2;max-width:62%}
.student-v16-hero-copy h3{font-size:clamp(22px,4vw,32px);line-height:1.12;color:#17314f;margin:5px 0 8px}
.student-v16-hero-copy p{color:#607286;margin:0}
.student-v16-dancer{position:absolute;z-index:1;pointer-events:none;user-select:none;object-fit:contain;filter:drop-shadow(0 14px 20px rgba(39,39,53,.14))}
.student-v16-dancer.profile{height:128%;right:1%;bottom:-30%}
.student-v16-dancer.progress{height:145%;right:0;bottom:-42%}
.student-v16-dancer.classes{height:132%;right:-2%;bottom:-38%}
.student-v16-avatar{position:absolute;z-index:3;left:22px;bottom:24px;width:76px;height:76px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#d9347d,#f26ca4);color:#fff;font-size:34px;font-weight:900;border:7px solid rgba(255,255,255,.92);box-shadow:0 10px 24px rgba(202,54,121,.18)}
.student-v16-profile-hero{min-height:235px;padding-left:118px;display:flex;align-items:center}
.student-v16-profile-hero .student-v16-hero-copy{max-width:48%}
.student-v16-profile-hero .student-v16-hero-copy p{font-family:Georgia,serif;font-style:italic;color:#d0347b;font-size:20px}
.student-v16-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:0 16px 34px rgba(21,45,72,.07);overflow:hidden}
.student-v16-stats>div{min-width:0;padding:16px 12px;text-align:center;border-right:1px solid #e8eef3;display:flex;flex-direction:column;align-items:center;gap:5px}
.student-v16-stats>div:last-child{border-right:0}
.student-v16-stats small{font-size:11px;color:#687b8d}
.student-v16-stats strong{color:#17314f;font-size:16px;line-height:1.25;overflow-wrap:anywhere}
.student-v16-stat-icon,.student-v16-section-icon,.student-v16-row-icon{display:grid;place-items:center;border-radius:12px;font-weight:900}
.student-v16-stat-icon{width:38px;height:38px;font-size:17px}
.student-v16-stat-icon.pink,.student-v16-section-icon.pink,.student-v16-row-icon.pink{background:#fff0f6;color:#d8377d;border:1px solid #f4c7dc}
.student-v16-stat-icon.rose,.student-v16-section-icon.rose,.student-v16-row-icon.rose{background:#fff1f5;color:#ca3b72;border:1px solid #f4c6d7}
.student-v16-stat-icon.mint,.student-v16-section-icon.mint,.student-v16-row-icon.mint{background:#eafaf5;color:#18846c;border:1px solid #bee8da}
.student-v16-stat-icon.lilac,.student-v16-section-icon.lilac,.student-v16-row-icon.lilac{background:#f0f1ff;color:#5966ce;border:1px solid #ced4ff}
.student-v16-section{background:#fff;border:1px solid var(--line);border-radius:24px;padding:18px;box-shadow:0 16px 34px rgba(21,45,72,.07)}
.student-v16-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;color:#738497}
.student-v16-section-title>div{display:flex;align-items:center;gap:10px;min-width:0}
.student-v16-section-title h3{margin:0;color:#17314f;font-size:21px}
.student-v16-section-icon{width:38px;height:38px;flex:0 0 38px}
.student-v16-list{display:grid;gap:10px}
.student-v16-list-row{display:flex;align-items:center;gap:12px;min-width:0;padding:13px;border:1px solid #e0e8ee;border-radius:16px;background:linear-gradient(180deg,#fff,#fbfdff)}
.student-v16-row-icon{width:38px;height:38px;flex:0 0 38px}
.student-v16-list-row strong,.student-v16-list-row small{display:block}
.student-v16-list-row strong{font-size:16px;color:#17314f}.student-v16-list-row small{margin-top:3px;color:#718397}
.student-v16-status{white-space:nowrap;border-radius:999px;padding:6px 11px;font-size:10px;font-weight:900}
.student-v16-status.active{background:#eaf9f2;color:#23815f;border:1px solid #bce8d5}
.student-v16-status.next{background:#eff1ff;color:#5264cd;border:1px solid #c4ccff}
.student-v16-payline{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.student-v16-payline>div{background:#f8fafc;border:1px solid #e1e8ee;border-radius:14px;padding:11px;text-align:center}.student-v16-payline small,.student-v16-payline strong{display:block}.student-v16-payline small{color:#718397;font-size:10px}.student-v16-payline strong{margin-top:3px;color:#17314f}
.student-v16-progressbar{display:flex;align-items:center;gap:12px;margin-top:22px;width:min(390px,100%);padding:8px 10px;border-radius:999px;background:rgba(255,255,255,.86);box-shadow:0 8px 18px rgba(22,45,70,.08)}
.student-v16-progressbar::before{content:"";flex:1;height:10px;border-radius:999px;background:#e6ebf0}
.student-v16-progressbar i{position:absolute;height:10px;border-radius:999px;background:linear-gradient(90deg,#e72f72,#fa6ca3);max-width:calc(100% - 58px)}
.student-v16-progressbar b{font-size:13px;color:#17314f;min-width:34px;text-align:right}
.student-v16-book-tabs{display:flex;gap:9px;overflow-x:auto;padding:2px 2px 8px;scrollbar-width:none}.student-v16-book-tabs::-webkit-scrollbar{display:none}
.student-v16-book-tab{flex:0 0 auto;min-width:124px;border:1px solid #dbe5ed;border-radius:18px;background:#fff;padding:10px 13px;color:#17314f;box-shadow:0 8px 18px rgba(21,45,72,.05);position:relative}.student-v16-book-tab b,.student-v16-book-tab small{display:block}.student-v16-book-tab small{margin-top:2px;color:#718397}.student-v16-book-tab.active{background:linear-gradient(135deg,#df347e,#f45f9d);border-color:#d72f76;color:#fff}.student-v16-book-tab.active small{color:rgba(255,255,255,.85)}.student-v16-book-tab.active span{position:absolute;left:9px;top:9px}.student-v16-book-tab.active b{padding-left:18px}
.student-v16-progress-stats>div:nth-child(3){align-items:center}
.student-v16-goal-list{display:grid}.student-v16-goal{display:flex;align-items:center;gap:10px;padding:11px 4px;border-bottom:1px solid #edf1f4}.student-v16-goal:last-child{border-bottom:0}.student-v16-goal-dot{width:22px;height:22px;border:2px solid #cad7e1;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:12px}.student-v16-goal.done .student-v16-goal-dot{background:#37a77f;border-color:#37a77f}.student-v16-goal strong,.student-v16-goal small{display:block}.student-v16-goal small{color:#6c7f91;margin-top:2px;font-size:10px}.student-v16-goal-status{color:#e43c83;font-size:11px}.student-v16-goal.done .student-v16-goal-status{color:#2e9072}.student-v16-goal>b{color:#607589;font-size:20px}
.student-v16-tip{display:flex;align-items:center;gap:12px;padding:15px 18px;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:0 12px 28px rgba(21,45,72,.06)}.student-v16-tip-icon{width:48px;height:48px;border-radius:16px;background:#fff0f6;color:#d9347d;display:grid;place-items:center;font-size:20px}.student-v16-tip strong{color:#17314f}.student-v16-tip p{margin:3px 0 0;color:#718397}
.student-v16-classes-hero{background:linear-gradient(135deg,#0f2945,#163b5f 60%,#24577d);border:0;min-height:265px;color:#fff}.student-v16-classes-hero .student-v16-hero-copy{max-width:58%}.student-v16-classes-hero .section-kicker,.student-v16-classes-hero h3,.student-v16-classes-hero p{color:#fff}.student-v16-classes-hero .section-kicker{color:#ff80ae}.student-v16-classes-hero h3{font-size:clamp(30px,5vw,44px)}.student-v16-classes-hero p{font-size:16px}.student-v16-hero-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}.student-v16-hero-chips span{padding:8px 11px;border-radius:999px;background:#fff;color:#17314f;font-size:10px;font-weight:900}
.student-v16-class-summary-list{display:grid;gap:10px}.student-v16-class-summary{padding:14px;border:1px solid #e1e8ee;border-radius:16px;background:#fbfdff}.student-v16-class-summary strong,.student-v16-class-summary small{display:block}.student-v16-class-summary strong{color:#17314f}.student-v16-class-summary small{margin-top:3px;color:#718397}.student-v16-class-summary p{margin:8px 0 0;color:#53697c}.student-v16-summary-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.student-v16-video-hero{position:relative;overflow:hidden;min-height:280px;border-radius:26px;background:linear-gradient(135deg,#4b2a31,#815064 58%,#d47199);box-shadow:0 18px 40px rgba(72,34,48,.16)}.student-v16-video-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(36,20,27,.74),rgba(36,20,27,.2) 56%,rgba(36,20,27,0))}.student-v16-dancer.video{height:126%;right:-2%;bottom:-32%;z-index:1}.student-v16-video-copy{position:relative;z-index:2;padding:28px;color:#fff;max-width:58%}.student-v16-video-copy>span{color:#ff7bae;font-weight:900}.student-v16-video-copy h3{font-size:clamp(27px,5vw,40px);line-height:1.08;margin:8px 0}.student-v16-video-copy p{color:rgba(255,255,255,.88)}.student-v16-play{margin-top:16px;width:58px;height:58px;border:0;border-radius:50%;background:#fff;color:#df347e;font-size:22px;box-shadow:0 10px 26px rgba(0,0,0,.18)}
.student-v16-video-filters{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.student-v16-video-filters::-webkit-scrollbar{display:none}.student-v16-video-filters button{flex:0 0 auto;border:1px solid #dce5ec;background:#fff;color:#17314f;border-radius:999px;padding:10px 15px;font-weight:800;box-shadow:0 8px 16px rgba(21,45,72,.05)}.student-v16-video-filters button.active{background:linear-gradient(135deg,#db347c,#f05b96);border-color:#db347c;color:#fff}
.student-v16-video-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.student-v16-video-card{display:grid;grid-template-columns:46% 54%;padding:0;border:1px solid #dfe7ee;border-radius:18px;background:#fff;overflow:hidden;text-align:left;min-height:132px;box-shadow:0 10px 22px rgba(21,45,72,.06)}.student-v16-video-thumb{position:relative;overflow:hidden;background:#f9dce8}.student-v16-video-thumb img{position:absolute;height:150%;width:auto;left:50%;top:50%;transform:translate(-48%,-47%)}.student-v16-thumb-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#fff;color:#17314f;box-shadow:0 8px 18px rgba(21,45,72,.18)}.student-v16-video-card-copy{padding:13px;min-width:0}.student-v16-video-card-copy>span{display:inline-block;padding:5px 8px;border-radius:999px;background:#fff0f6;color:#df347e;font-size:10px;font-weight:900}.student-v16-video-card-copy strong,.student-v16-video-card-copy small{display:block}.student-v16-video-card-copy strong{margin-top:8px;color:#17314f;font-size:16px;line-height:1.15}.student-v16-video-card-copy small{margin-top:7px;color:#718397;font-size:10px}.student-v16-video-empty{grid-column:1/-1}
@media(max-width:760px){.student-v16-profile-hero{min-height:205px;padding-left:92px}.student-v16-avatar{width:60px;height:60px;left:18px;bottom:22px;font-size:27px;border-width:5px}.student-v16-dancer.profile{height:122%;right:-7%;bottom:-26%}.student-v16-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.student-v16-stats>div:nth-child(2){border-right:0}.student-v16-stats>div:nth-child(-n+2){border-bottom:1px solid #e8eef3}.student-v16-progress-hero{min-height:185px}.student-v16-dancer.progress{height:130%;right:-8%;bottom:-30%}.student-v16-classes-hero{min-height:250px}.student-v16-dancer.classes{height:113%;right:-18%;bottom:-17%;opacity:.8}.student-v16-classes-hero .student-v16-hero-copy{max-width:64%}.student-v16-video-hero{min-height:250px}.student-v16-dancer.video{height:118%;right:-18%;bottom:-20%}.student-v16-video-copy{max-width:62%;padding:22px}.student-v16-video-grid{grid-template-columns:1fr}.student-v16-video-card{min-height:126px}}
@media(max-width:480px){.student-v16{gap:13px}.student-v16-section{padding:14px;border-radius:20px}.student-v16-profile-hero{min-height:186px;padding:18px 14px 18px 84px}.student-v16-profile-hero .student-v16-hero-copy{max-width:52%}.student-v16-dancer.profile{height:110%;right:-17%;bottom:-18%;opacity:.92}.student-v16-hero-copy h3{font-size:22px}.student-v16-progress-hero{min-height:170px;padding:18px}.student-v16-progress-hero .student-v16-hero-copy{max-width:62%}.student-v16-dancer.progress{height:118%;right:-13%;bottom:-22%}.student-v16-progressbar{margin-top:14px}.student-v16-book-tab{min-width:112px}.student-v16-classes-hero{padding:18px;min-height:228px}.student-v16-dancer.classes{height:104%;right:-31%;bottom:-8%;opacity:.72}.student-v16-classes-hero .student-v16-hero-copy{max-width:70%}.student-v16-classes-hero h3{font-size:30px}.student-v16-hero-chips{gap:6px;margin-top:15px}.student-v16-hero-chips span{padding:7px 8px}.student-v16-video-hero{min-height:220px}.student-v16-video-copy{max-width:67%;padding:19px}.student-v16-video-copy h3{font-size:28px}.student-v16-dancer.video{height:105%;right:-27%;bottom:-10%}.student-v16-play{width:48px;height:48px}.student-v16-list-row{padding:11px}.student-v16-list-row strong{font-size:15px}.student-v16-status{padding:5px 8px}.student-v16-goal-status{display:none}}


/* v1.6.2 LOCAL · Nombre corto + sexo + arte masculino */
.student-alias-line{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:3px 0 2px}
.student-alias,.student-gender-tag{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;font-size:10px;font-weight:800;line-height:1.1}
.student-alias{background:#fff0f6;color:#bc326e;border:1px solid #f2c5d8}
.student-alias.muted-alias{background:#f5f7f9;color:#7b8995;border-color:#e2e7eb}
.student-gender-tag.female{background:#fff0f6;color:#b93170;border:1px solid #f2c5d8}
.student-gender-tag.male{background:#edf5ff;color:#2b6495;border:1px solid #c9def4}
.student-gender-tag.unspecified{background:#f5f7f9;color:#7b8995;border:1px solid #e2e7eb}

/* Ajustes específicos de los dos recortes masculinos */
.student-story-dancer-progress.male{height:132%;right:-7%;bottom:-35%;opacity:.9}
.student-story-dancer-profile.male{height:146%;right:3%;bottom:-48%;opacity:.82}
.student-v16-dancer.progress.male{height:142%;right:2%;bottom:-42%}
.student-v16-dancer.profile.male{height:126%;right:3%;bottom:-29%}
@media(max-width:760px){
  .student-story-dancer-progress.male{height:125%;right:-5%;bottom:-29%}
  .student-story-dancer-profile.male{height:136%;right:-1%;bottom:-43%}
  .student-v16-dancer.progress.male{height:127%;right:-4%;bottom:-31%}
  .student-v16-dancer.profile.male{height:118%;right:-5%;bottom:-24%}
}
@media(max-width:480px){
  .student-story-dancer-progress.male{height:118%;right:-7%;bottom:-24%}
  .student-story-dancer-profile.male{height:128%;right:-4%;bottom:-39%}
  .student-v16-dancer.progress.male{height:115%;right:-8%;bottom:-20%}
  .student-v16-dancer.profile.male{height:107%;right:-12%;bottom:-16%}
}


/* v1.6.2 LOCAL · Cartilla Pasaporte · Fase 1 */
.student-passport{gap:14px}
.student-pass-hero{background:linear-gradient(135deg,#fff9fb 0%,#ffeef5 58%,#eef6ff 100%);min-height:210px}
.student-pass-hero .student-v16-hero-copy{max-width:58%}
.student-pass-book-tabs{padding-bottom:2px}
.student-pass-intro{display:flex;align-items:center;gap:12px;padding:15px 17px;border:1px solid #e2e9ef;border-radius:20px;background:linear-gradient(180deg,#fff,#fbfdff);box-shadow:0 12px 26px rgba(21,45,72,.06)}
.student-pass-intro h3,.student-pass-intro p{margin:0}.student-pass-intro h3{color:#17314f;font-size:19px}.student-pass-intro p{margin-top:3px;color:#718397;font-size:12px}
.student-pass-intro-icon{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,#e3357d,#f26da6);color:#fff;font-size:18px;box-shadow:0 10px 20px rgba(217,52,125,.17)}
.student-pass-count{padding:7px 10px;border-radius:999px;background:#fff0f6;color:#d53279;border:1px solid #f4c8dc;font-weight:900;font-size:11px}
.student-pass-blocks{display:grid;gap:12px}
.student-pass-block{padding:14px;border:1px solid #e0e8ee;border-radius:22px;background:#fff;box-shadow:0 14px 28px rgba(21,45,72,.06)}
.student-pass-block-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.student-pass-block-head>div{display:flex;align-items:center;gap:10px;min-width:0}.student-pass-block-head h3,.student-pass-block-head small{display:block;margin:0}.student-pass-block-head h3{font-size:17px;color:#17314f}.student-pass-block-head small{margin-top:2px;color:#718397;font-size:10px}
.student-pass-block-icon{width:36px;height:36px;flex:0 0 36px;border-radius:12px;display:grid;place-items:center;background:#fff0f6;color:#d83379;border:1px solid #f5c7db;font-size:18px;font-weight:900}
.student-pass-block-score{padding:6px 9px;border-radius:999px;background:#eaf9f3;color:#218362;font-size:10px;font-weight:900}
.student-pass-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.student-pass-tile{position:relative;min-width:0;min-height:118px;padding:12px 8px 10px;border:1px solid #e2e8ed;border-radius:16px;background:linear-gradient(180deg,#fff,#fbfcfd);color:#17314f;text-align:center;box-shadow:0 6px 14px rgba(21,45,72,.03);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px;transition:.15s ease}
.student-pass-tile:hover,.student-pass-tile.selected{transform:translateY(-1px);border-color:#ec9fc1;box-shadow:0 9px 20px rgba(216,52,122,.09)}
.student-pass-number{position:absolute;left:7px;top:7px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#f1f4f7;color:#718397;font-size:10px;font-weight:900}
.student-pass-symbol{margin-top:13px;height:34px;display:grid;place-items:center;color:#e43c83;font-size:27px;font-weight:500;line-height:1}
.student-pass-tile strong{display:block;width:100%;font-size:12px;line-height:1.12;overflow-wrap:anywhere}.student-pass-tile small{display:block;font-size:9px;line-height:1.15;color:#8b98a4;margin-top:auto}.student-pass-tile small.neutral{color:#a6afb7}
.student-pass-tile.done{border-color:#a9ddc4;background:linear-gradient(180deg,#fbfffd,#effaf5)}.student-pass-tile.done .student-pass-number{background:#39a777;color:#fff}.student-pass-tile.done .student-pass-symbol{color:#2c8b68}.student-pass-tile.done small{color:#2d8b69}
.student-pass-tile.next{border-color:#ee9fc1;background:linear-gradient(180deg,#fff,#fff2f7);box-shadow:0 7px 18px rgba(217,52,123,.09)}.student-pass-tile.next .student-pass-number{background:#f7d9e7;color:#d53279}.student-pass-tile.next small{color:#d53279;font-weight:900}
.student-pass-detail{display:grid;grid-template-columns:1.35fr .65fr;gap:16px;align-items:center;padding:18px;border:1px solid #f0c8da;border-radius:22px;background:linear-gradient(135deg,#fff9fb,#fff0f6 62%,#f3f8fd);box-shadow:0 14px 30px rgba(21,45,72,.07);scroll-margin-top:160px}
.student-pass-detail-copy h3{font-size:25px;color:#17314f;margin:4px 0 8px}.student-pass-detail-copy p{color:#667a8d;margin:10px 0}.student-pass-detail-state{display:inline-flex;padding:7px 10px;border-radius:999px;font-size:10px;font-weight:900}.student-pass-detail-state.done{background:#e9f8f1;color:#28805f}.student-pass-detail-state.next{background:#ffeaf3;color:#d32f77}.student-pass-detail-state.neutral{background:#f2f5f7;color:#6f7f8e}
.student-pass-detail-pills{display:flex;flex-wrap:wrap;gap:7px}.student-pass-detail-pills span{padding:6px 8px;border:1px solid #e0e7ed;border-radius:999px;background:#fff;color:#607487;font-size:9px;font-weight:800}
.student-pass-detail-visual{min-height:150px;border-radius:19px;background:rgba(255,255,255,.72);border:1px solid rgba(238,188,210,.75);display:grid;place-items:center;align-content:center;text-align:center;padding:14px}.student-pass-detail-visual>span{font-size:56px;line-height:1;color:#e0397e;display:inline-grid;place-items:center}.student-pass-detail-visual small{margin-top:8px;color:#17314f;font-weight:900}
.student-pass-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.student-pass-summary>div:nth-child(3){border-right:0}.student-pass-summary strong{font-size:18px}.student-pass-summary>div:nth-child(3) strong{font-size:13px}
@media(max-width:760px){.student-pass-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.student-pass-detail{grid-template-columns:1fr .55fr}.student-pass-detail-visual{min-height:135px}.student-pass-hero .student-v16-hero-copy{max-width:60%}}
@media(max-width:480px){.student-passport{gap:12px}.student-pass-hero{min-height:180px}.student-pass-hero .student-v16-hero-copy{max-width:58%}.student-pass-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.student-pass-block{padding:11px;border-radius:18px}.student-pass-block-head h3{font-size:15px}.student-pass-tile{min-height:104px;padding:10px 5px 8px;border-radius:14px}.student-pass-number{width:21px;height:21px;left:5px;top:5px;font-size:9px}.student-pass-symbol{margin-top:12px;font-size:23px;height:27px}.student-pass-tile strong{font-size:10px}.student-pass-tile small{font-size:8px}.student-pass-detail{grid-template-columns:1fr;gap:10px;padding:14px}.student-pass-detail-visual{min-height:100px;grid-template-columns:auto 1fr;gap:10px;text-align:left}.student-pass-detail-visual>span{font-size:43px}.student-pass-detail-visual .student-pass-svg-icon{width:48px;height:48px}.student-pass-detail-visual small{margin-top:0}.student-pass-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.student-pass-summary>div{padding:12px 5px}.student-pass-summary small{font-size:9px}.student-pass-summary strong{font-size:16px}.student-pass-summary>div:nth-child(3) strong{font-size:10px}.student-v16-book-tab{min-width:105px}}


/* v1.6.3 LOCAL · cartilla pasaporte por bloques */

.student-passport-v163{gap:14px}
.student-passport-v163 .student-pass-summary.top{margin-top:-2px}
.student-passport-v163 .student-pass-summary>div:nth-child(3) strong{font-size:12px;line-height:1.2}
.student-passport-v163 .student-pass-blocks{display:grid;gap:14px}
.student-passport-v163 .student-pass-block{padding:16px;border:1px solid #dfe8ef;border-radius:24px;background:linear-gradient(180deg,#fff,#fcfdff);box-shadow:0 16px 30px rgba(21,45,72,.06)}
.student-passport-v163 .student-pass-block.card-pink{background:linear-gradient(180deg,#fff,#fff7fb)}
.student-passport-v163 .student-pass-block.card-lilac{background:linear-gradient(180deg,#fff,#f8f7ff)}
.student-passport-v163 .student-pass-block.card-mint{background:linear-gradient(180deg,#fff,#f5fcf9)}
.student-passport-v163 .student-pass-block.card-gold{background:linear-gradient(180deg,#fff,#fffaf2)}
.student-passport-v163 .student-pass-block-top{display:grid;grid-template-columns:150px minmax(0,1fr);gap:14px;align-items:center;margin-bottom:14px}
.student-passport-v163 .student-pass-block-visual{position:relative;min-height:116px;border-radius:22px;padding:16px;display:flex;flex-direction:column;justify-content:space-between;border:1px solid rgba(255,255,255,.5);box-shadow:inset 0 1px 0 rgba(255,255,255,.35)}
.student-passport-v163 .student-pass-block-visual.accent-pink{background:radial-gradient(circle at top right,rgba(255,255,255,.75),transparent 35%),linear-gradient(135deg,#ffdceb 0%,#ffeef6 55%,#fff8fb 100%)}
.student-passport-v163 .student-pass-block-visual.accent-lilac{background:radial-gradient(circle at top right,rgba(255,255,255,.75),transparent 35%),linear-gradient(135deg,#e8e2ff 0%,#f0eeff 55%,#faf9ff 100%)}
.student-passport-v163 .student-pass-block-visual.accent-mint{background:radial-gradient(circle at top right,rgba(255,255,255,.75),transparent 35%),linear-gradient(135deg,#dff8ee 0%,#eefcf7 55%,#fbfefc 100%)}
.student-passport-v163 .student-pass-block-visual.accent-gold{background:radial-gradient(circle at top right,rgba(255,255,255,.75),transparent 35%),linear-gradient(135deg,#ffe9bf 0%,#fff4da 55%,#fffbf2 100%)}
.student-passport-v163 .student-pass-block-visual-icon{font-size:34px;line-height:1;color:#17314f}
.student-pass-svg-icon{display:block;width:40px;height:40px}
.student-pass-detail-visual .student-pass-svg-icon{width:62px;height:62px}
.student-pass-block-visual-icon>span,.student-pass-detail-visual>span{display:inline-grid;place-items:center}
.student-passport-v163 .student-pass-block-visual-tags{display:flex;flex-wrap:wrap;gap:6px}
.student-passport-v163 .student-pass-block-visual-tags span{padding:6px 8px;border-radius:999px;background:rgba(255,255,255,.82);border:1px solid rgba(224,232,239,.95);font-size:10px;font-weight:800;color:#4f6478}
.student-passport-v163 .student-pass-block-copy{min-width:0}
.student-passport-v163 .student-pass-block-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}
.student-passport-v163 .student-pass-block-head>div{display:block}
.student-passport-v163 .student-pass-block-head h3{margin:0;font-size:20px;color:#17314f}
.student-passport-v163 .student-pass-block-head small{display:block;margin-top:3px;color:#718397;font-size:12px}
.student-passport-v163 .student-pass-block-score{padding:8px 11px;border-radius:999px;background:#fff;color:#17314f;border:1px solid #d9e4ec;font-size:11px;font-weight:900;box-shadow:0 6px 12px rgba(21,45,72,.05)}
.student-passport-v163 .student-pass-block-progress{height:10px;border-radius:999px;background:#edf2f6;overflow:hidden;margin-bottom:8px}
.student-passport-v163 .student-pass-block-progress i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#e63d84,#f47cad)}
.student-passport-v163 .student-pass-block.card-lilac .student-pass-block-progress i{background:linear-gradient(90deg,#7c73eb,#b1abff)}
.student-passport-v163 .student-pass-block.card-mint .student-pass-block-progress i{background:linear-gradient(90deg,#2ea67c,#8ad9b9)}
.student-passport-v163 .student-pass-block.card-gold .student-pass-block-progress i{background:linear-gradient(90deg,#d1a139,#edca75)}
.student-passport-v163 .student-pass-block-meta{display:flex;flex-wrap:wrap;gap:8px}
.student-passport-v163 .student-pass-block-meta span{padding:6px 8px;border-radius:999px;background:#fff;border:1px solid #e1e8ee;color:#5f7387;font-size:10px;font-weight:800}
.student-passport-v163 .student-pass-block-meta span.next{background:#fff0f6;color:#d43379;border-color:#f1c3d8}
.student-passport-v163 .student-pass-block-meta span.done{background:#ecfaf3;color:#2a8b68;border-color:#c9eadb}
.student-passport-v163 .student-pass-row-list{display:grid;gap:8px}
.student-passport-v163 .student-pass-row{display:grid;grid-template-columns:42px minmax(0,1fr) 18px;align-items:center;gap:10px;padding:12px 12px;border:1px solid #e2e8ed;border-radius:16px;background:#fff;color:#17314f;text-align:left;box-shadow:0 6px 14px rgba(21,45,72,.03);transition:.16s ease;cursor:pointer}
.student-passport-v163 .student-pass-row:hover,.student-passport-v163 .student-pass-row.selected{transform:translateY(-1px);border-color:#e8a2c2;box-shadow:0 8px 18px rgba(217,52,123,.08)}
.student-passport-v163 .student-pass-row-lead{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#f3f6f8;color:#6c7f92;font-weight:900;font-size:12px}
.student-passport-v163 .student-pass-row-copy{min-width:0;display:block}
.student-passport-v163 .student-pass-row-copy strong{display:block;font-size:14px;line-height:1.2}
.student-passport-v163 .student-pass-row-copy small{display:block;margin-top:3px;font-size:11px;color:#8a99a7}
.student-passport-v163 .student-pass-row-tail{color:#8da0b2;font-size:18px}
.student-passport-v163 .student-pass-row.done{border-color:#b9e0cf;background:#fbfffd}
.student-passport-v163 .student-pass-row.done .student-pass-row-lead{background:#39a777;color:#fff}
.student-passport-v163 .student-pass-row.done .student-pass-row-copy small{color:#2e8a68}
.student-passport-v163 .student-pass-row.next{border-color:#eea2c1;background:#fff7fb}
.student-passport-v163 .student-pass-row.next .student-pass-row-lead{background:#fde1ee;color:#d6357a}
.student-passport-v163 .student-pass-row.next .student-pass-row-copy small{color:#d6357a;font-weight:900}
.student-passport-v163 .student-pass-detail{display:grid;grid-template-columns:1.2fr .8fr;gap:18px;align-items:stretch;padding:20px;border:1px solid #f0cadb;border-radius:24px;background:linear-gradient(135deg,#fffafc,#fff2f7 60%,#f4f8fd);box-shadow:0 16px 30px rgba(21,45,72,.07);scroll-margin-top:160px}
.student-passport-v163 .student-pass-detail.idle{border-color:#e0e7ee;background:linear-gradient(135deg,#fff,#f8fbfd 60%,#f3f7fb)}
.student-passport-v163 .student-pass-detail.done{border-color:#c8eadc;background:linear-gradient(135deg,#fbfffd,#eefaf5 65%,#f5fbf8)}
.student-passport-v163 .student-pass-detail-copy h3{font-size:28px;color:#17314f;margin:5px 0 10px}
.student-passport-v163 .student-pass-detail-copy p{color:#617487;margin:10px 0;line-height:1.45}
.student-passport-v163 .student-pass-detail-state{display:inline-flex;padding:8px 12px;border-radius:999px;font-size:11px;font-weight:900}
.student-passport-v163 .student-pass-detail-state.done{background:#e9f8f1;color:#28805f}
.student-passport-v163 .student-pass-detail-state.next{background:#ffeaf3;color:#d32f77}
.student-passport-v163 .student-pass-detail-state.idle{background:#f2f5f7;color:#6f7f8e}
.student-passport-v163 .student-pass-detail-pills{display:flex;flex-wrap:wrap;gap:8px}
.student-passport-v163 .student-pass-detail-pills span{padding:7px 9px;border:1px solid #e0e7ed;border-radius:999px;background:#fff;color:#607487;font-size:10px;font-weight:800}
.student-passport-v163 .student-pass-detail-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.student-passport-v163 .student-pass-detail-visual{min-height:190px;border-radius:22px;border:1px solid rgba(224,232,239,.8);display:grid;place-items:center;align-content:center;text-align:center;padding:18px;background:#fff}
.student-passport-v163 .student-pass-detail-visual.accent-pink{background:linear-gradient(135deg,#ffe5ef,#fff9fc)}
.student-passport-v163 .student-pass-detail-visual.accent-lilac{background:linear-gradient(135deg,#ece7ff,#faf9ff)}
.student-passport-v163 .student-pass-detail-visual.accent-mint{background:linear-gradient(135deg,#e2f9ef,#fbfefc)}
.student-passport-v163 .student-pass-detail-visual.accent-gold{background:linear-gradient(135deg,#fff0ca,#fffbf2)}
.student-passport-v163 .student-pass-detail-visual>span{font-size:62px;line-height:1;color:#17314f}
.student-passport-v163 .student-pass-detail-visual small{margin-top:10px;color:#17314f;font-weight:900;font-size:16px}
@media(max-width:760px){
  .student-passport-v163 .student-pass-block-top{grid-template-columns:1fr}
  .student-passport-v163 .student-pass-block-visual{min-height:104px}
  .student-passport-v163 .student-pass-detail{grid-template-columns:1fr}
  .student-passport-v163 .student-pass-detail-visual{min-height:120px}
}
@media(max-width:480px){
  .student-passport-v163{gap:12px}
  .student-passport-v163 .student-pass-block{padding:12px;border-radius:20px}
  .student-passport-v163 .student-pass-block-head h3{font-size:18px}
  .student-passport-v163 .student-pass-block-head small{font-size:11px}
  .student-passport-v163 .student-pass-block-top{gap:10px}
  .student-passport-v163 .student-pass-row{grid-template-columns:36px minmax(0,1fr) 15px;padding:10px}
  .student-passport-v163 .student-pass-row-lead{width:30px;height:30px;font-size:11px}
  .student-passport-v163 .student-pass-row-copy strong{font-size:13px}
  .student-passport-v163 .student-pass-row-copy small{font-size:10px}
  .student-passport-v163 .student-pass-detail{padding:14px;gap:12px}
  .student-passport-v163 .student-pass-detail-copy h3{font-size:23px}
  .student-passport-v163 .student-pass-detail-visual{min-height:100px}
  .student-passport-v163 .student-pass-detail-visual>span{font-size:46px}
}


/* v1.7.1 · acceso de producción */
.production-auth-gate{position:fixed;inset:0;z-index:100000;display:grid;place-items:center;padding:22px;background:linear-gradient(145deg,#eef4f8 0%,#fff7fb 55%,#edf8f5 100%)}
.production-auth-gate.hidden{display:none}
.production-auth-card{width:min(460px,100%);padding:28px;border-radius:30px;background:rgba(255,255,255,.96);border:1px solid #dfe7ee;box-shadow:0 30px 80px rgba(21,45,72,.16)}
.production-auth-logo{display:block;width:92px;height:auto;margin:0 auto 16px}
.production-auth-copy{text-align:center}.production-auth-copy h1{margin:4px 0 8px;color:#17314f;font-size:31px}.production-auth-copy p{margin:0 0 20px;color:#6f8192;line-height:1.4}
.production-auth-form{display:grid;gap:12px}.production-auth-form.hidden{display:none}.production-auth-form label{display:grid;gap:6px;color:#344b62;font-weight:800;font-size:12px}.production-auth-form label small{font-weight:500;color:#8393a3}.production-auth-form input{width:100%;box-sizing:border-box;padding:13px 14px;border:1px solid #d7e1e8;border-radius:14px;background:#fbfdff;color:#17314f;font:inherit;outline:none}.production-auth-form input:focus{border-color:#e05c95;box-shadow:0 0 0 3px rgba(224,92,149,.12)}
.production-student-access{display:grid;gap:8px}.production-passwordless-note{display:block;text-align:center;color:#728497;font-size:11px;line-height:1.4;padding:0 10px}.production-admin-toggle{justify-self:center;border:0;background:transparent;color:#526b82;font:inherit;font-size:11px;font-weight:800;text-decoration:underline;text-underline-offset:3px;padding:8px 12px;cursor:pointer}.production-admin-toggle:hover{color:#17314f}.production-admin-access{display:grid;gap:12px;padding-top:4px}.production-admin-access.hidden,.production-student-access.hidden{display:none}.production-auth-problem-logout{display:block;margin:10px auto 0;border:0;background:transparent;color:#526b82;font:inherit;font-size:11px;font-weight:800;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.production-auth-problem-logout.hidden{display:none}
.production-auth-divider{display:flex;align-items:center;gap:10px;color:#9aa8b4;font-size:11px}.production-auth-divider:before,.production-auth-divider:after{content:"";height:1px;background:#e2e8ee;flex:1}.production-auth-divider span{padding:0 4px}
.production-auth-status{min-height:20px;margin-top:13px;text-align:center;font-size:12px;line-height:1.4}.production-auth-status.error{color:#a5263b}.production-auth-status.warning{color:#9a6512}.production-auth-status.ok{color:#197456}
@media(max-width:520px){.production-auth-card{padding:22px 18px;border-radius:24px}.production-auth-copy h1{font-size:27px}}


/* v1.7.6 · Reencuadre de bailarines en portal del alumno */
.student-v16-dancer.profile{height:118%;right:2%;bottom:-18%}
.student-v16-dancer.classes{height:120%;right:0;bottom:-22%;opacity:.84}
.student-v16-dancer.video{height:116%;right:0;bottom:-18%}
@media(max-width:760px){
  .student-v16-dancer.profile{height:108%;right:1%;bottom:-8%;opacity:.94}
  .student-v16-dancer.profile.male{height:120%;right:2%;bottom:-8%}
  .student-v16-dancer.classes{height:102%;right:-2%;bottom:-4%;opacity:.84}
  .student-v16-dancer.video{height:104%;right:-2%;bottom:-4%}
}
@media(max-width:480px){
  .student-v16-profile-hero{padding-right:118px}
  .student-v16-profile-hero .student-v16-hero-copy{max-width:100%}
  .student-v16-dancer.profile{height:96%;right:0;bottom:-1%;opacity:.95}
  .student-v16-dancer.profile.male{height:124%;right:2%;bottom:-6%;opacity:.93}
  .student-v16-classes-hero .student-v16-hero-copy{max-width:66%}
  .student-v16-dancer.classes{height:94%;right:-1%;bottom:-1%;opacity:.86}
  .student-v16-video-copy{max-width:62%}
  .student-v16-dancer.video{height:96%;right:-1%;bottom:-1%;opacity:.96}
}


/* v1.8.0 · Nuevo estándar de Resumen de clase */
.class-internal-note{padding:14px;border:1px dashed #e7b9c7;border-radius:16px;background:#fff8fa}.internal-only-badge{display:inline-flex;margin-left:8px;padding:3px 7px;border-radius:999px;background:#ffe7ee;color:#a63f61;font-size:9px;font-weight:900;vertical-align:middle}.class-summary-v177 .class-detail p{white-space:pre-line}.class-summary-v177 .summary-worked{background:#fff8fb}.class-summary-v177 .summary-sequence{background:#f8f7ff}.class-summary-v177 .summary-tech{background:#fffaf0}.class-summary-v177 .summary-musicality{background:#f5fbff}.class-summary-v177 .summary-practice{background:#f4fbf7}.class-summary-v177 .internal-note-card{grid-column:1/-1;background:#fff5f7;border-color:#f0c4d0}.class-summary-v177 .internal-note-card span{color:#a74461}.student-summary-v177{padding:16px!important;background:linear-gradient(180deg,#fff,#fbfdff)!important}.student-summary-head{padding-bottom:10px;border-bottom:1px solid #e5ebf0}.student-summary-sections{display:grid;gap:9px;margin-top:11px}.student-summary-field{padding:10px 11px;border-radius:13px;border:1px solid #e3e9ee;background:#fff}.student-summary-field span{display:block;font-size:10px;font-weight:900;letter-spacing:.02em;color:#526a7f;text-transform:none}.student-summary-field p{margin:4px 0 0!important;color:#354f65!important;white-space:pre-line;line-height:1.45}.student-summary-field.worked{background:#fff7fb;border-color:#f1d5e2}.student-summary-field.sequence{background:#f8f7ff;border-color:#dedbf6}.student-summary-field.tech{background:#fffaf0;border-color:#f0dfba}.student-summary-field.musicality{background:#f5fbff;border-color:#d7eaf5}.student-summary-field.practice{background:#f3fbf7;border-color:#d2e9dc}.student-summary-field.song{background:#fffaf2;border-color:#ecdcbf}.student-summary-field.next{background:#f5f7ff;border-color:#d9dff4}.student-summary-v177 .student-v16-summary-actions{margin-top:12px}.student-summary-v177 .student-v16-summary-actions .btn{min-height:38px}
@media(max-width:520px){.student-summary-v177{padding:13px!important}.student-summary-field{padding:9px 10px}.class-summary-v177{grid-template-columns:1fr!important}}


/* v1.8.0 · Resúmenes compactos por fecha + visor */
.student-summary-history-hint{margin:-4px 0 12px;color:#8291a0;font-size:12px}
.student-v16-class-summary-list.compact{display:grid;gap:14px}
.student-summary-date-group{display:grid;gap:7px}
.student-summary-date-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 3px}
.student-summary-date-head span{font-size:13px;font-weight:900;color:#17314f;text-transform:none}
.student-summary-date-head b{font-size:10px;color:#8795a2;font-weight:800}
.student-summary-compact-list{display:grid;border:1px solid #e1e8ee;border-radius:18px;overflow:hidden;background:#fff}
.student-summary-compact-row{appearance:none;width:100%;border:0;border-bottom:1px solid #e7edf2;background:#fff;display:grid;grid-template-columns:42px minmax(0,1fr) 24px;align-items:center;gap:10px;padding:13px 14px;text-align:left;cursor:pointer;color:#17314f}
.student-summary-compact-row:last-child{border-bottom:0}.student-summary-compact-row:active{background:#f8fbfd}.student-summary-compact-row:hover{background:#fbfdff}
.student-summary-compact-icon{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;background:#f1efff;color:#5d64c9;font-weight:900;border:1px solid #d8d7f5}
.student-summary-compact-copy{min-width:0}.student-summary-compact-copy strong,.student-summary-compact-copy small{display:block}.student-summary-compact-copy strong{font-size:14px;color:#17314f}.student-summary-compact-copy small{margin-top:3px;color:#788999;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.student-summary-compact-arrow{font-size:28px;color:#9aa8b4;line-height:1;text-align:right}
body.student-summary-viewer-open{overflow:hidden}
.student-summary-viewer-backdrop{position:fixed;inset:0;z-index:99990;background:rgba(13,30,49,.58);backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center;padding:14px}
.student-summary-viewer{width:min(760px,100%);max-height:92dvh;border-radius:28px 28px 20px 20px;background:#fff;box-shadow:0 28px 80px rgba(9,25,43,.34);overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr);animation:studentSummaryUp .18s ease-out}
@keyframes studentSummaryUp{from{transform:translateY(18px);opacity:.5}to{transform:translateY(0);opacity:1}}
.student-summary-viewer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:20px 20px 15px;border-bottom:1px solid #e5ebf0;background:linear-gradient(135deg,#fff,#fff7fb)}
.student-summary-viewer-head h2{margin:4px 0 3px;color:#17314f;font-size:24px;line-height:1.15}.student-summary-viewer-head p{margin:0;color:#748698;font-size:12px}
.student-summary-viewer-close{width:42px;height:42px;flex:0 0 42px;border-radius:50%;border:1px solid #d8e2e9;background:#fff;color:#17314f;font-size:28px;line-height:1;cursor:pointer}
.student-summary-viewer-scroll{overflow:auto;padding:16px 18px 22px;-webkit-overflow-scrolling:touch}
.student-summary-viewer-sections{margin-top:0}.student-summary-viewer .student-v16-summary-actions{padding-top:4px;margin-top:12px}.student-summary-viewer .student-v16-summary-actions .btn{min-height:42px}
@media(max-width:520px){.student-summary-viewer-backdrop{padding:0;align-items:flex-end}.student-summary-viewer{max-height:94dvh;border-radius:24px 24px 0 0}.student-summary-viewer-head{padding:17px 17px 13px}.student-summary-viewer-head h2{font-size:20px}.student-summary-viewer-scroll{padding:13px 14px 20px}.student-summary-date-head span{font-size:12px}.student-summary-compact-row{padding:12px 11px;grid-template-columns:38px minmax(0,1fr) 20px;gap:9px}.student-summary-compact-icon{width:34px;height:34px;border-radius:11px}.student-summary-compact-copy strong{font-size:13px}.student-summary-compact-copy small{font-size:10px}}


/* v1.8.0 · Diferenciación Resumen / Vídeo / Resumen + vídeo */
.student-summary-compact-title{display:flex;align-items:center;gap:8px;min-width:0}
.student-summary-compact-title strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.student-summary-type-badge{display:inline-flex;align-items:center;flex:0 0 auto;padding:4px 7px;border-radius:999px;font-size:9px;font-style:normal;font-weight:900;line-height:1;border:1px solid transparent;letter-spacing:.01em}
.student-summary-type-badge.is-summary{background:#f1efff;color:#5d64c9;border-color:#d8d7f5}
.student-summary-type-badge.is-video{background:#fff0f6;color:#d53279;border-color:#f3c5d9}
.student-summary-type-badge.is-both{background:linear-gradient(135deg,#edf0ff,#fff0f6);color:#754eaa;border-color:#dfd3ed}
.student-summary-compact-icon.is-summary{background:#f1efff;color:#5d64c9;border-color:#d8d7f5}
.student-summary-compact-icon.is-video{background:#fff0f6;color:#d53279;border-color:#f3c5d9;font-size:16px}
.student-summary-compact-icon.is-both{background:linear-gradient(135deg,#f1efff,#fff0f6);color:#754eaa;border-color:#dfd3ed;font-size:11px;letter-spacing:-2px;padding-right:2px}
.student-summary-compact-row.is-video:active,.student-summary-compact-row.is-video:hover{background:#fffafd}
.student-summary-compact-row.is-both:active,.student-summary-compact-row.is-both:hover{background:#fcfaff}
@media(max-width:520px){.student-summary-compact-title{gap:6px}.student-summary-type-badge{font-size:8px;padding:4px 6px}.student-summary-compact-title strong{font-size:13px}}

/* v1.8.3 · ciclo de vida y acceso del alumno */
.student-access-tag{display:inline-flex;align-items:center;padding:4px 7px;border-radius:999px;font-size:9px;font-weight:900;border:1px solid #cfe9df;background:#effaf5;color:#23775a}.student-access-tag.revoked{border-color:#f0c9cf;background:#fff1f3;color:#a84353}.student-access-control{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:12px 0 16px;padding:13px 14px;border:1px solid #dde6ed;border-radius:16px;background:#f8fbfd}.student-access-control strong,.student-access-control small{display:block}.student-access-control strong{color:#17314f}.student-access-control small{margin-top:3px;color:#718397;font-size:11px;line-height:1.35}.student-access-control .btn{flex:0 0 auto}@media(max-width:560px){.student-access-control{align-items:flex-start;flex-direction:column}.student-access-control .btn{width:100%}}


/* =====================================================================
   v1.8.3 · Pulido de cabecera y aviso de actualización
   - Cabecera global realmente fija y de altura constante.
   - Sin compactación/expansión al hacer scroll.
   - El aviso de actualización queda anclado justo debajo de la cabecera.
   - Las cabeceras del portal del alumno dejan de transparentar contenido.
   ===================================================================== */
:root{
  --juntos-fixed-header-h:76px;
  --juntos-update-strip-h:58px;
}

#app{padding-top:var(--juntos-fixed-header-h)}
.app-header{
  position:fixed!important;
  inset:0 0 auto 0;
  top:0!important;
  z-index:60!important;
  height:var(--juntos-fixed-header-h)!important;
  min-height:var(--juntos-fixed-header-h)!important;
  max-height:var(--juntos-fixed-header-h)!important;
  padding:9px 24px!important;
  overflow:hidden;
  background:#fbfdff!important;
  border-bottom:1px solid rgba(180,200,216,.78)!important;
  box-shadow:0 7px 22px rgba(20,44,70,.08)!important;
  backdrop-filter:none!important;
  transition:none!important;
  transform:none!important;
}
.app-header.compact-mobile{
  height:var(--juntos-fixed-header-h)!important;
  min-height:var(--juntos-fixed-header-h)!important;
  max-height:var(--juntos-fixed-header-h)!important;
  padding:9px 24px!important;
}
.app-header .brand-logo,
.app-header.compact-mobile .brand-logo{
  width:82px!important;
  height:55px!important;
  flex:0 0 82px;
  transition:none!important;
}
.app-header .brand-copy h1,
.app-header.compact-mobile .brand-copy h1{
  font-size:18px!important;
  line-height:1.12;
  transition:none!important;
}
.app-header .brand-copy p{transition:none!important}
.app-header .header-actions{flex:0 0 auto;min-width:0}
.app-header .global-sync-pill,
.app-header.compact-mobile .global-sync-pill{
  width:146px;
  min-width:146px;
  max-width:146px;
  justify-content:center;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  transition:none!important;
}

.update-banner{
  position:fixed!important;
  top:var(--juntos-fixed-header-h)!important;
  left:0!important;
  right:0!important;
  z-index:59!important;
  width:100%!important;
  min-height:var(--juntos-update-strip-h);
  margin:0!important;
  padding:9px max(16px,env(safe-area-inset-right)) 9px max(16px,env(safe-area-inset-left))!important;
  border:0!important;
  border-bottom:1px solid #c7deeb!important;
  border-radius:0!important;
  background:#eff9ff!important;
  box-shadow:0 8px 18px rgba(15,35,59,.10)!important;
  backdrop-filter:none!important;
}
.update-banner>div{min-width:0}
.update-banner strong{white-space:nowrap}
.update-banner .btn{flex:0 0 auto}
body.has-app-update main{padding-top:calc(28px + var(--juntos-update-strip-h))!important}

/* La cabecera de cada vista del alumno se mantiene quieta y opaca al adherirse. */
@media(max-width:680px){
  :root{
    --juntos-fixed-header-h:64px;
    --juntos-update-strip-h:52px;
  }
  #app{padding-top:var(--juntos-fixed-header-h)}
  .app-header,
  .app-header.compact-mobile{
    height:var(--juntos-fixed-header-h)!important;
    min-height:var(--juntos-fixed-header-h)!important;
    max-height:var(--juntos-fixed-header-h)!important;
    padding:6px 12px!important;
    gap:8px!important;
  }
  .app-header .brand-logo,
  .app-header.compact-mobile .brand-logo{
    width:70px!important;
    height:46px!important;
    flex-basis:70px;
  }
  .app-header .brand-copy h1,
  .app-header.compact-mobile .brand-copy h1{font-size:16px!important}
  .app-header .brand-copy p{display:none!important}
  .app-header .global-sync-pill,
  .app-header.compact-mobile .global-sync-pill{
    width:124px;
    min-width:124px;
    max-width:124px;
    padding:5px 7px!important;
    font-size:9px!important;
  }
  .update-banner{
    top:var(--juntos-fixed-header-h)!important;
    min-height:var(--juntos-update-strip-h);
    padding:7px 10px!important;
    gap:8px!important;
  }
  .update-banner>div{display:block!important}
  .update-banner strong{display:block;font-size:12px;line-height:1.2}
  .update-banner span{display:none!important}
  .update-banner .btn{padding:7px 10px!important;font-size:10px!important;white-space:nowrap}
  body.has-app-update main{padding-top:calc(20px + var(--juntos-update-strip-h))!important}

  .student-portal-view .student-portal-topbar,
  .student-portal-home-mode .student-portal-topbar{
    position:sticky!important;
    top:var(--juntos-fixed-header-h)!important;
    z-index:45!important;
    padding:9px 0 10px!important;
    margin-top:0!important;
    margin-bottom:12px!important;
    background:#f4f8fb!important;
    box-shadow:0 7px 14px rgba(20,44,70,.05)!important;
    backdrop-filter:none!important;
    transition:none!important;
  }
  body.has-app-update .student-portal-view .student-portal-topbar,
  body.has-app-update .student-portal-home-mode .student-portal-topbar{
    top:calc(var(--juntos-fixed-header-h) + var(--juntos-update-strip-h))!important;
  }
  .subnav{top:var(--juntos-fixed-header-h)!important}
  body.has-app-update .subnav{top:calc(var(--juntos-fixed-header-h) + var(--juntos-update-strip-h))!important}
}

@media(min-width:1160px){
  .bottom-nav{top:calc(var(--juntos-fixed-header-h) + 22px)!important}
}

@media print{
  #app{padding-top:0!important}
  .app-header,.update-banner{display:none!important}
}


/* v1.8.4 · evita el gesto del navegador "arrastrar para refrescar".
   El scroll vertical normal de la app se mantiene intacto. */
html,body,#app{overscroll-behavior-y:none}
