:root{
 --bg:#f5f7fb;--card:#fff;--text:#182033;--muted:#697386;
 --line:#e4e8f0;--brand:#6950d8;--brand2:#8b72ee;
 --green:#0b875b;--red:#c33c3c;--orange:#b76c12;
 --shadow:0 8px 28px rgba(32,42,70,.07)
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text)}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
.hidden{display:none!important}
h1,h2,h3,p{margin-top:0}
p{color:var(--muted)}
input,select,textarea{
 width:100%;padding:11px 12px;border:1px solid #d8deea;border-radius:11px;
 background:white;outline:none
}
input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(105,80,216,.1)}
label{font-size:13px;font-weight:700;display:block;margin:12px 0 6px}
button{border:0;border-radius:10px;padding:10px 13px}
.primary{background:var(--brand);color:#fff;font-weight:700}
.danger{background:#fff0f0;color:var(--red)}
.secondary{background:#eef1f7}
.logo{
 width:55px;height:55px;border-radius:17px;display:grid;place-items:center;
 color:white;font-weight:900;font-size:26px;
 background:linear-gradient(135deg,var(--brand),var(--brand2))
}
.logo.small{width:40px;height:40px;border-radius:12px;font-size:19px}

.login-screen{min-height:100vh;display:grid;place-items:center;padding:20px}
.login-card{
 width:min(420px,100%);background:#fff;padding:32px;border-radius:24px;
 box-shadow:var(--shadow);border:1px solid var(--line)
}
.login-card .logo{margin-bottom:18px}
.login-card h1{margin-bottom:3px}
.login-card>button{width:100%;margin-top:20px}
.error{padding:10px;background:#fff0f0;color:var(--red);border-radius:10px;margin-bottom:12px}

.app{display:grid;grid-template-columns:245px 1fr;min-height:100vh}
aside{
 background:#161c2c;color:white;padding:20px 14px;position:sticky;top:0;height:100vh
}
.side-brand{display:flex;gap:10px;align-items:center;padding:3px 7px 22px}
.side-brand small{display:block;color:#aeb7ca;margin-top:2px}
nav{display:flex;flex-direction:column;gap:5px}
nav button{background:transparent;color:#c6cede;text-align:left;padding:11px 12px;font-weight:650}
nav button.active,nav button:not(:disabled):hover{background:#273047;color:white}
nav button:disabled{opacity:.5}
.side-user{position:absolute;bottom:17px;left:15px;right:15px;border-top:1px solid #303850;padding-top:13px}
.side-user strong,.side-user small{display:block}
.side-user small{color:#aab3c6;margin:3px 0 10px;word-break:break-word}
.side-user button{width:100%;background:#252d42;color:white}

main{min-width:0}
header{padding:22px 28px 10px;display:flex;gap:10px;align-items:center}
header h2{margin-bottom:3px}
header p{margin:0}
.mobile-menu{display:none}
.content{padding:14px 28px 40px}

.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}
.stats article,.card,.student-hero{
 background:white;border:1px solid var(--line);border-radius:18px;box-shadow:0 4px 18px rgba(30,40,70,.04)
}
.stats article{padding:18px}
.stats span{font-size:13px;color:var(--muted)}
.stats strong{display:block;font-size:30px;margin-top:7px}
.card{padding:20px;margin-top:18px}
.system-ok{padding:8px 0;color:var(--green)}

.card-head{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:16px}
.card-head h3{margin-bottom:3px}
.card-head p{margin:0}
.actions{display:flex;gap:9px;align-items:center}
.actions input{width:260px}

.student-list{display:grid;gap:8px}
.student-row{
 display:grid;grid-template-columns:1fr auto auto auto;gap:12px;align-items:center;
 padding:13px;border:1px solid #edf0f5;border-radius:13px;cursor:pointer
}
.student-row:hover{border-color:#cfc7f8;background:#faf9ff}
.student-name strong{display:block}
.student-name small{color:var(--muted)}
.badge{display:inline-flex;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800;background:#eef1f5}
.badge.purple{background:#eeeaff;color:#6246ca}
.badge.green{background:#e9f8f1;color:#087b50}
.badge.gray{color:#687284}

.group-row{
 display:grid;grid-template-columns:1fr 130px 100px;gap:12px;
 padding:13px 4px;border-bottom:1px solid #edf0f5;align-items:center
}

.back{background:transparent;padding-left:0;color:var(--brand);font-weight:750;margin-bottom:12px}
.student-hero{padding:19px;display:flex;gap:15px;align-items:center}
.student-hero h2{margin:0 0 4px}
.student-hero p{margin:0}
.avatar{
 width:58px;height:58px;min-width:58px;border-radius:16px;background:#eeeaff;
 color:#6246ca;font-size:21px;font-weight:900;display:grid;place-items:center
}
.hero-badges{margin-left:auto;display:flex;gap:7px}

.tabs{
 margin:16px 0;display:flex;overflow:auto;gap:5px;padding-bottom:4px
}
.tabs button{white-space:nowrap;background:white;border:1px solid var(--line);font-weight:650}
.tabs button.active{background:var(--brand);color:white;border-color:var(--brand)}

.grid2{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}
.info-box{background:white;border:1px solid var(--line);padding:17px;border-radius:15px}
.info-box h4{margin:0 0 12px}
.kv{display:flex;justify-content:space-between;gap:20px;padding:7px 0;border-bottom:1px solid #f0f2f6}
.kv:last-child{border:0}
.kv span{color:var(--muted)}
.kv strong{text-align:right}

.list-item{background:white;border:1px solid var(--line);padding:14px;border-radius:13px;margin-bottom:9px}
.list-item-head{display:flex;justify-content:space-between;gap:10px}
.list-item small{color:var(--muted)}
.inline-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}
.inline-actions button,.inline-actions a{
 text-decoration:none;background:#eef1f6;color:var(--text);border:0;border-radius:9px;padding:7px 9px;font-size:12px
}

.empty{padding:30px;text-align:center;color:var(--muted)}
.total-points{font-size:40px;font-weight:900;color:var(--brand)}
.level-card{text-align:center}
.level-card strong{font-size:30px;display:block;margin:7px}

.overlay{position:fixed;inset:0;background:rgba(8,14,28,.6);display:grid;place-items:center;padding:17px;z-index:1000}
.modal{width:min(650px,100%);max-height:92vh;overflow:auto;background:white;border-radius:20px}
.modal-head{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}
.modal-head h3{margin:0}
.modal-head button{background:#eef1f6}
#modalBody{padding:5px 20px 20px}
.modal-actions{padding:15px 20px 20px;display:flex;justify-content:flex-end;gap:8px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 13px}
.full{grid-column:1/-1}

.toast{
 position:fixed;bottom:18px;right:18px;max-width:360px;background:#182033;color:white;
 padding:13px 16px;border-radius:12px;z-index:2000;box-shadow:var(--shadow)
}

table{width:100%;border-collapse:collapse}
th,td{padding:10px;text-align:left;border-bottom:1px solid #edf0f5;font-size:13px}
th{font-size:11px;text-transform:uppercase;color:var(--muted)}

@media(max-width:950px){
 .stats{grid-template-columns:1fr 1fr}
 .grid3{grid-template-columns:1fr}
}
@media(max-width:760px){
 .app{display:block}
 aside{position:fixed;width:245px;left:-260px;z-index:900;transition:.2s}
 aside.open{left:0}
 .mobile-menu{display:block}
 header,.content{padding-left:15px;padding-right:15px}
 .grid2{grid-template-columns:1fr}
 .student-row{grid-template-columns:1fr auto}
 .student-row .desktop-secondary{display:none}
 .card-head{align-items:flex-start;flex-direction:column}
 .actions{width:100%}
 .actions input{width:100%}
 .hero-badges{margin-left:0}
 .student-hero{align-items:flex-start;flex-wrap:wrap}
}
@media(max-width:480px){
 .stats{grid-template-columns:1fr}
 .form-grid{grid-template-columns:1fr}
 .full{grid-column:auto}
}

/* ===== GALERÍA ===== */

.gallery-grid{
 display:grid;
 grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
 gap:14px;
 margin-top:18px
}

.gallery-card{
 background:#fff;
 border:1px solid var(--line);
 border-radius:15px;
 overflow:hidden
}

.gallery-preview{
 height:170px;
 background:#eef1f5;
 display:flex;
 align-items:center;
 justify-content:center;
 overflow:hidden
}

.gallery-preview img,
.gallery-preview video{
 width:100%;
 height:100%;
 object-fit:cover
}

.gallery-card-body{
 padding:12px
}

.gallery-card-body p{
 margin:5px 0;
 font-size:13px
}

.gallery-target{
 font-size:12px;
 color:var(--muted)
}

.gallery-trash{
 opacity:.65
}

.gallery-toolbar{
 display:flex;
 gap:8px;
 flex-wrap:wrap;
 margin-top:8px
}

.gallery-toolbar button{
 font-size:12px;
 padding:7px 9px
}

.gallery-summary{
 display:flex;
 gap:12px;
 flex-wrap:wrap;
 margin-top:5px
}

.gallery-summary span{
 padding:7px 10px;
 background:#f3f5f9;
 border-radius:10px;
 font-size:13px
}

@media(max-width:600px){
 .gallery-grid{grid-template-columns:1fr 1fr}
}

@media(max-width:420px){
 .gallery-grid{grid-template-columns:1fr}
}


/* EDU-AUTH-007 · acceso familiar */
.form-section{
 grid-column:1/-1;
 margin-top:8px;
 padding:16px;
 border:1px solid #e5e0fb;
 background:#faf9ff;
 border-radius:14px;
}
.form-section h4{margin:0 0 4px;color:var(--brand)}
.form-section>p{margin:0 0 13px;color:var(--muted);font-size:13px}
.access-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 13px}
.access-grid .full{grid-column:1/-1}
.access-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:16px;margin-bottom:12px}
.access-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.access-head h4{margin:0 0 4px}.access-head p{margin:0;color:var(--muted)}
.access-status{display:inline-flex;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800;background:#eef1f5;color:#687284}
.access-status.sent{background:#e9f8f1;color:#087b50}
.access-status.error{background:#fff0ed;color:#b84332}
.access-status.pending{background:#fff5dd;color:#a56c00}
.access-note{margin-top:10px;padding:10px 12px;border-radius:10px;background:#f7f8fb;font-size:13px}
.access-note.warn{background:#fff6e5;color:#8a5a00}
.access-note.error{background:#fff0ed;color:#9f3428}
.access-password{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:16px;background:#f3f4f8;padding:10px 12px;border-radius:10px;word-break:break-all}
.check-row{display:flex;align-items:center;gap:8px;margin-top:8px}.check-row input{width:auto}
@media(max-width:700px){.access-grid{grid-template-columns:1fr}.access-grid .full{grid-column:auto}}

/* =========================================================
   EDU-GAL-014 · uploader masivo
   ========================================================= */

.gallery-upload-help{
 display:block;
 margin-top:7px;
 line-height:1.4;
}

.gallery-upload-resume{
 margin:10px 0 18px;
 padding:14px;
 border:1px solid var(--line);
 border-radius:12px;
 background:#f8f9fb;
}

.gallery-upload-resume strong{
 display:block;
 margin-bottom:5px;
}

.gallery-upload-resume p{
 margin:0;
 line-height:1.45;
}

.gallery-upload-queue{
 margin-top:20px;
 border-top:1px solid var(--line);
 padding-top:18px;
}

.gallery-upload-summary{
 display:flex;
 justify-content:space-between;
 gap:15px;
 align-items:center;
 margin-bottom:10px;
}

.gallery-upload-summary small{
 display:block;
 margin-top:3px;
}

.gallery-upload-total-progress,
.gallery-upload-file-progress{
 width:100%;
 overflow:hidden;
 border-radius:999px;
 background:#e8ebf0;
}

.gallery-upload-total-progress{
 height:10px;
 margin-bottom:15px;
}

.gallery-upload-file-progress{
 grid-column:1 / -1;
 height:6px;
}

.gallery-upload-total-progress > div,
.gallery-upload-file-progress > div{
 height:100%;
 background:#25324a;
 transition:width .2s ease;
}

.gallery-upload-list{
 display:flex;
 flex-direction:column;
 gap:9px;
}

.gallery-upload-row{
 display:grid;
 grid-template-columns:minmax(0,1fr) auto;
 gap:8px 12px;
 padding:12px;
 border:1px solid var(--line);
 border-radius:12px;
}

.gallery-upload-file{
 min-width:0;
}

.gallery-upload-file strong{
 display:block;
 overflow:hidden;
 text-overflow:ellipsis;
 white-space:nowrap;
}

.gallery-upload-file small{
 display:block;
 margin-top:3px;
}

.gallery-upload-row-right{
 display:flex;
 align-items:flex-start;
 gap:7px;
 flex-wrap:wrap;
 justify-content:flex-end;
}

.gallery-upload-status{
 font-size:12px;
 font-weight:700;
 padding:5px 8px;
 border-radius:999px;
 background:#eef1f6;
 white-space:nowrap;
}

.gallery-upload-status.status-completed{
 background:#e9f6ee;
}

.gallery-upload-status.status-error{
 background:#fff0f0;
}

.gallery-upload-error{
 color:#a12626;
 line-height:1.35;
}

.gallery-upload-retry{
 padding:5px 9px;
 font-size:12px;
}

.gallery-upload-reselect{
 max-width:150px;
 text-align:right;
 line-height:1.3;
}

#closeModal:disabled,
#cancelModal:disabled{
 opacity:.45;
 cursor:not-allowed;
}

@media(max-width:620px){

 .gallery-upload-row{
  grid-template-columns:1fr;
 }

 .gallery-upload-row-right{
  justify-content:flex-start;
 }

 .gallery-upload-file-progress{
  grid-column:1;
 }
}

/* =========================================================
   EDU-GAL-016 · Organización visual de Galería
   ========================================================= */

.gallery-organizer{
 display:flex;
 flex-direction:column;
 gap:22px;
 margin-top:18px;
}

.gallery-organizer-controls{
 display:flex;
 justify-content:space-between;
 align-items:center;
 gap:12px;
 flex-wrap:wrap;
 margin:14px 0 4px;
}

.gallery-organizer-filters{
 display:flex;
 gap:7px;
 flex-wrap:wrap;
}

.gallery-organizer-filters button.active{
 font-weight:700;
 box-shadow:inset 0 0 0 2px currentColor;
}

.gallery-organizer-search{
 width:min(340px,100%);
 margin:0;
}

.gallery-organizer-section{
 border:1px solid var(--line);
 border-radius:16px;
 overflow:hidden;
 background:#fff;
}

.gallery-organizer-head{
 display:flex;
 align-items:center;
 justify-content:space-between;
 gap:14px;
 padding:15px 16px;
 background:#f8f9fb;
 border-bottom:1px solid var(--line);
}

.gallery-organizer-title{
 display:flex;
 align-items:center;
 gap:10px;
 min-width:0;
}

.gallery-organizer-title h4{
 margin:0 0 3px;
 font-size:17px;
}

.gallery-organizer-title small{
 display:block;
}

.gallery-collapse-btn{
 width:34px;
 min-width:34px;
 padding:7px;
 font-size:17px;
}

.gallery-section-actions{
 display:flex;
 align-items:center;
 justify-content:flex-end;
 gap:7px;
 flex-wrap:wrap;
}

.gallery-section-actions button{
 white-space:nowrap;
}

.gallery-section-grid{
 display:grid;
 grid-template-columns:
  repeat(
   auto-fill,
   minmax(210px,1fr)
  );
 gap:16px;
 padding:16px;
}

.gallery-card{
 position:relative;
}

.gallery-card-selector{
 display:flex;
 align-items:center;
 gap:6px;
 padding:8px 10px;
 background:#f8f9fb;
 border-bottom:1px solid var(--line);
 cursor:pointer;
 font-size:12px;
 font-weight:700;
}

.gallery-card-selector input{
 width:auto;
 margin:0;
}

.gallery-bulk-trash{
 font-weight:700;
}

@media(max-width:850px){

 .gallery-organizer-head{
  align-items:flex-start;
  flex-direction:column;
 }

 .gallery-section-actions{
  width:100%;
  justify-content:flex-start;
 }

 .gallery-organizer-search{
  width:100%;
 }
}

@media(max-width:620px){

 .gallery-section-grid{
  grid-template-columns:1fr;
  padding:12px;
 }

 .gallery-section-actions button{
  flex:1 1 auto;
 }

 .gallery-organizer-controls{
  align-items:stretch;
  flex-direction:column;
 }

 .gallery-organizer-filters{
  width:100%;
 }

 .gallery-organizer-filters button{
  flex:1;
 }
}


/* =========================================================
   EDU-GAL-017 · Vaciado masivo de papelera
   ========================================================= */

.gallery-empty-trash{
 margin-left:auto;
 font-weight:700;
}

.gallery-empty-trash:disabled{
 opacity:.6;
 cursor:wait;
}

@media(max-width:620px){

 .gallery-empty-trash{
  width:100%;
  margin-left:0;
 }
}

/* =========================================================
   EDUTECO ADMIN · DASHBOARD V2 / BRANDING
   ========================================================= */

.login-brand-logo{
  width:190px;height:132px;object-fit:contain;
  display:block;margin:0 auto 10px;
}

.side-brand-symbol{
  width:48px;height:48px;flex:0 0 48px;
  overflow:hidden;border-radius:14px;background:#fff;
  box-shadow:0 5px 18px rgba(0,0,0,.18);
}

.side-brand-symbol img{
  width:100%;height:100%;
  object-fit:cover;
  object-position:center 14%;
}

.dashboard-v2{
  max-width:1480px;
  margin:0 auto;
}

.dash-welcome{
  display:flex;align-items:center;justify-content:space-between;
  gap:24px;padding:25px 28px;
  border:1px solid #e8eaf2;border-radius:22px;
  background:linear-gradient(120deg,#fff 0%,#faf8ff 55%,#f1fbf9 100%);
  box-shadow:0 8px 30px rgba(29,38,65,.05);
}

.dash-welcome h2{font-size:25px;margin:4px 0 5px}
.dash-welcome p{margin:0;color:var(--muted)}
.dash-eyebrow,.dash-section-kicker{
  font-size:10px;font-weight:900;letter-spacing:.12em;
  color:#7856df;
}

.dash-top-actions{display:flex;gap:9px;flex-wrap:wrap}

.dash-kpis{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:15px;margin-top:17px;
}

.dash-kpi{
  border:1px solid #e7e9f1;background:#fff;border-radius:20px;
  padding:18px;text-align:left;display:grid;
  grid-template-columns:48px 1fr;gap:14px;align-items:center;
  cursor:pointer;transition:.18s ease;
  box-shadow:0 6px 24px rgba(29,38,65,.045);
  color:var(--text);
}

.dash-kpi:hover{
  transform:translateY(-2px);
  box-shadow:0 12px 30px rgba(29,38,65,.09);
}

.dash-kpi-icon{
  width:46px;height:46px;border-radius:14px;
  display:grid;place-items:center;font-size:20px;font-style:normal;
}

.dash-kpi-icon.purple{background:#f0ebff}
.dash-kpi-icon.blue{background:#e9f3ff}
.dash-kpi-icon.orange{background:#fff0e6;color:#e75f13;font-weight:900}
.dash-kpi-icon.mint{background:#e7f8f3;color:#0c9f88;font-weight:900}

.dash-kpi small{
  display:block;color:var(--muted);font-size:12px;font-weight:700;
}

.dash-kpi strong{
  display:block;font-size:30px;line-height:1.1;margin:3px 0;
}

.dash-kpi em{
  display:block;font-size:11px;color:#9aa3b5;font-style:normal;
}

.dash-main-grid,.dash-bottom-grid{
  display:grid;grid-template-columns:minmax(0,1.45fr) minmax(320px,.75fr);
  gap:17px;margin-top:17px;
}

.dash-bottom-grid{
  grid-template-columns:minmax(0,1.1fr) minmax(420px,.9fr);
}

.dash-panel{
  background:#fff;border:1px solid #e7e9f1;border-radius:20px;
  padding:21px;margin:0;
  box-shadow:0 6px 24px rgba(29,38,65,.045);
}

.dash-panel-head{
  display:flex;align-items:flex-start;justify-content:space-between;
  gap:15px;margin-bottom:16px;
}

.dash-panel-head h3{margin:3px 0 0;font-size:17px}

.dash-live,.dash-status-ok{
  font-size:11px;font-weight:800;padding:6px 10px;
  border-radius:999px;background:#f1f3f8;color:#70798d;
}

.dash-status-ok{background:#e5f8ef;color:#11815e}

.dash-attention,.dash-recent{display:grid;gap:9px}

.dash-attention-item,.dash-recent-item{
  border:1px solid #edf0f5;border-radius:14px;padding:12px 13px;
  display:flex;align-items:center;gap:12px;background:#fcfcfe;
}

button.dash-attention-item{
  width:100%;text-align:left;color:var(--text);cursor:pointer;
}

.dash-attention-item b,.dash-recent-item b{
  width:35px;height:35px;border-radius:11px;
  display:grid;place-items:center;background:#f2efff;flex:0 0 35px;
}

.dash-attention-item span,.dash-recent-item span{min-width:0;flex:1}
.dash-attention-item strong,.dash-recent-item strong{display:block;font-size:13px}
.dash-attention-item small,.dash-recent-item small{
  display:block;margin-top:2px;color:var(--muted);font-size:11px
}

.dash-empty{
  border:1px dashed #dbe7e3;background:#f7fcfa;color:#547068;
  border-radius:14px;padding:16px;
}

.dash-quick-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:10px;
}

.dash-quick-grid button{
  min-height:91px;border:1px solid #e7e9f1;border-radius:15px;
  background:#fafbfe;color:var(--text);cursor:pointer;
  display:flex;flex-direction:column;align-items:flex-start;
  justify-content:center;gap:7px;padding:14px;text-align:left;
  transition:.15s ease;
}

.dash-quick-grid button:hover{background:#f6f3ff;border-color:#d8cff8}
.dash-quick-grid b{font-size:19px}
.dash-quick-grid span{font-size:12px;font-weight:800}

.dash-system-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:10px;
}

.dash-system-grid>div{
  display:flex;align-items:center;gap:10px;
  padding:11px;border-radius:13px;background:#f8fafb;
}

.dash-system-grid i{
  width:28px;height:28px;border-radius:9px;
  background:#dcf6ec;color:#078661;font-style:normal;
  display:grid;place-items:center;font-weight:900;
}

.dash-system-grid span{font-size:11px;color:var(--muted)}
.dash-system-grid strong{display:block;color:var(--text);font-size:12px;margin-top:1px}

@media(max-width:1100px){
  .dash-kpis{grid-template-columns:1fr 1fr}
  .dash-main-grid,.dash-bottom-grid{grid-template-columns:1fr}
}

@media(max-width:700px){
  .dash-welcome{align-items:flex-start;flex-direction:column;padding:20px}
  .dash-top-actions{width:100%}
  .dash-top-actions button{flex:1}
  .dash-kpis{grid-template-columns:1fr}
  .dash-quick-grid,.dash-system-grid{grid-template-columns:1fr 1fr}
}

@media(max-width:430px){
  .dash-quick-grid,.dash-system-grid{grid-template-columns:1fr}
}


/* EDUTECO · ALUMNOS AGRUPADOS */
.student-group-block{
  background:#fff;
  border:1px solid #e6eaf1;
  border-radius:16px;
  overflow:hidden;
  margin-bottom:11px;
}

.student-group-head{
  list-style:none;
  cursor:pointer;
  min-height:62px;
  padding:13px 16px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:15px;
  background:#f8f9fc;
  user-select:none;
}

.student-group-head::-webkit-details-marker{
  display:none;
}

.student-group-head:hover{
  background:#f4f2fb;
}

.student-group-head>div{
  min-width:0;
}

.student-group-title{
  display:block;
  font-size:14px;
  font-weight:900;
  color:var(--text);
}

.student-group-head small{
  display:block;
  margin-top:3px;
  font-size:11px;
  color:var(--muted);
}

.student-group-chevron{
  width:30px;
  height:30px;
  border-radius:9px;
  display:grid;
  place-items:center;
  background:#fff;
  border:1px solid #e1e5ee;
  font-weight:900;
  transition:transform .16s ease;
}

.student-group-block[open] .student-group-chevron{
  transform:rotate(180deg);
}

.student-group-list{
  display:grid;
  gap:0;
  padding:5px 10px 10px;
}

.student-group-list .student-row{
  border-radius:11px;
  border-bottom:1px solid #edf0f5;
}

.student-group-list .student-row:last-child{
  border-bottom:0;
}

@media(max-width:700px){
  .student-group-head{
    padding:12px 13px;
  }

  .student-group-list{
    padding:4px 7px 8px;
  }
}

/* =========================================================
   EDU-PAY-GLOBAL-001
   ========================================================= */

.payment-header-card{
  margin-bottom:0;
}

.payment-toolbar{
  display:grid;
  grid-template-columns:
    minmax(140px,.8fr)
    minmax(140px,.8fr)
    minmax(160px,1fr)
    minmax(180px,1fr)
    minmax(200px,1.25fr);
  gap:12px;
}

.payment-toolbar label{
  display:block;
  margin-bottom:6px;
  font-size:11px;
  font-weight:800;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.04em;
}

.payment-toolbar input,
.payment-toolbar select{
  width:100%;
}

.payment-kpis{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
  margin-top:17px;
}

.payment-kpi{
  text-align:left;
  background:#fff;
  color:var(--text);
  border:1px solid var(--line);
  border-radius:17px;
  padding:17px;
  cursor:pointer;
  box-shadow:0 5px 20px rgba(29,38,65,.04);
}

.payment-kpi:hover{
  transform:translateY(-1px);
}

.payment-kpi small{
  display:block;
  color:var(--muted);
  font-size:12px;
  font-weight:800;
}

.payment-kpi strong{
  display:block;
  font-size:30px;
  margin:4px 0;
}

.payment-kpi span{
  display:block;
  color:var(--muted);
  font-size:11px;
}

.payment-kpi-paid{
  border-color:#ccebdd;
}

.payment-kpi-pending{
  border-color:#f1d7c3;
}

.payment-kpi-exempt{
  border-color:#d7e4f6;
}

.payment-table-wrap{
  width:100%;
  overflow-x:auto;
}

.payment-table{
  min-width:900px;
}

.payment-table td{
  vertical-align:middle;
}

.payment-table td:nth-child(3) strong{
  display:block;
}

.payment-subline{
  display:block;
  color:var(--muted);
  margin-top:2px;
  font-size:11px;
}

.badge.orange{
  background:#fff0e6;
  color:#bd571c;
}

.badge.blue{
  background:#e9f3ff;
  color:#2864a5;
}

.payment-open-student{
  white-space:nowrap;
}

@media(max-width:1100px){

  .payment-toolbar{
    grid-template-columns:1fr 1fr 1fr;
  }

  .payment-kpis{
    grid-template-columns:1fr 1fr;
  }
}

@media(max-width:700px){

  .payment-toolbar{
    grid-template-columns:1fr;
  }

  .payment-kpis{
    grid-template-columns:1fr 1fr;
  }
}

@media(max-width:470px){

  .payment-kpis{
    grid-template-columns:1fr;
  }
}



/* =========================================================
   EDU-POINT-BULK-ADMIN-001
   ========================================================= */

.point-scope-tabs{
 display:flex;
 gap:9px;
 flex-wrap:wrap;
}

.point-admin-grid{
 display:grid;
 grid-template-columns:1fr 1fr;
 gap:18px;
}

.point-admin-grid>.card{
 margin-top:18px;
}

.point-help{
 color:var(--muted);
 font-size:13px;
}

.point-picker-tools{
 display:grid;
 grid-template-columns:1fr 1fr;
 gap:10px;
 margin:14px 0 6px;
}

.point-student-list{
 margin-top:12px;
 max-height:430px;
 overflow:auto;
 border:1px solid var(--line);
 border-radius:13px;
}

.point-student-row{
 display:flex;
 align-items:center;
 gap:11px;
 padding:11px 13px;
 border-bottom:1px solid var(--line);
 cursor:pointer;
}

.point-student-row:last-child{
 border-bottom:0;
}

.point-student-row:hover{
 background:#faf9ff;
}

.point-student-row input{
 width:auto;
 margin:0;
}

.point-student-row strong{
 display:block;
}

.point-student-row small{
 display:block;
 margin-top:2px;
 color:var(--muted);
}

.point-preview{
 margin-top:17px;
 padding:14px;
 border:1px solid var(--line);
 border-radius:13px;
 background:#fafbfc;
}

.point-preview-head{
 display:flex;
 justify-content:space-between;
 align-items:center;
 gap:12px;
 margin-bottom:10px;
}

.point-preview-names{
 display:flex;
 flex-wrap:wrap;
 gap:6px;
}

.point-preview-names span{
 background:#fff;
 border:1px solid var(--line);
 border-radius:999px;
 padding:5px 8px;
 font-size:12px;
}

.point-preview-empty{
 color:var(--muted);
 font-size:13px;
}

.point-apply-button{
 width:100%;
 margin-top:14px;
}

.point-history-row{
 display:flex;
 justify-content:space-between;
 gap:16px;
 padding:13px 0;
 border-bottom:1px solid var(--line);
}

.point-history-row:last-child{
 border-bottom:0;
}

.point-history-title{
 display:flex;
 align-items:center;
 gap:8px;
 flex-wrap:wrap;
}

.point-history-main p{
 margin:5px 0;
}

.point-history-main small{
 color:var(--muted);
}

.point-history-date{
 color:var(--muted);
 font-size:12px;
 white-space:nowrap;
}

@media(max-width:900px){

 .point-admin-grid{
  grid-template-columns:1fr;
 }

 .point-picker-tools{
  grid-template-columns:1fr;
 }
}

@media(max-width:600px){

 .point-history-row{
  flex-direction:column;
  gap:6px;
 }

 .point-history-date{
  white-space:normal;
 }
}

