.portal-body{background:linear-gradient(135deg,#13220f,#314a25 55%,#1d3017);min-height:100vh;color:var(--ems-cream)}
.portal-layout{display:grid;grid-template-columns:280px 1fr;min-height:100vh}
.portal-sidebar{background:linear-gradient(180deg,#162611,#314a25);border-right:1px solid rgba(249,196,84,.25);padding:24px;position:sticky;top:0;height:100vh;overflow:auto}
.portal-logo{display:flex;align-items:center;gap:12px;margin-bottom:30px}
.portal-logo img{width:52px;height:52px;object-fit:contain;border-radius:50%;background:var(--ems-gold-soft);padding:4px}
.portal-logo strong{display:block;color:var(--ems-gold-soft)}
.portal-logo span{display:block;font-size:.8rem;color:rgba(255,242,207,.72)}
.portal-menu{display:grid;gap:10px}
.portal-menu button,.portal-menu a{width:100%;text-align:left;padding:12px 14px;border-radius:15px;background:rgba(255,242,207,.08);color:rgba(255,242,207,.9);border:1px solid rgba(249,196,84,.16);font-weight:800}
.portal-menu button.active,.portal-menu a.active,.portal-menu button:hover,.portal-menu a:hover{background:linear-gradient(135deg,var(--ems-gold),var(--ems-gold-deep));color:#1f3416}
.portal-main{padding:24px 28px 54px;min-width:0}
.portal-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:26px;padding:18px 20px;border-radius:24px;background:rgba(255,242,207,.12);border:1px solid rgba(249,196,84,.24);box-shadow:var(--ems-shadow)}
.portal-header h1{margin:0;color:var(--ems-gold-soft);font-size:1.6rem}
.portal-header p{margin:4px 0 0;color:rgba(255,242,207,.72)}
.portal-card{padding:22px;border-radius:24px;background:linear-gradient(145deg,rgba(255,242,207,.14),rgba(249,196,84,.08));border:1px solid rgba(249,196,84,.24);box-shadow:var(--ems-shadow)}
.portal-card h3{margin:0 0 10px;color:var(--ems-gold-soft)}
.portal-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:22px}
.portal-stat{padding:20px}.portal-stat strong{display:block;color:var(--ems-gold);font-size:2rem}.portal-stat span{color:rgba(255,242,207,.75)}
.portal-panel{display:none}.portal-panel.active{display:block}
.role-select-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:18px}
.role-card{padding:24px;min-height:190px;display:flex;flex-direction:column;justify-content:space-between;text-align:left}
.role-card .role-icon{font-size:2rem}.role-card h3{color:var(--ems-gold-soft);margin:14px 0 8px}.role-card p{color:rgba(255,242,207,.75);line-height:1.55;margin:0}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:40px 20px}
.login-card{width:min(520px,94vw);padding:30px}.login-card h1{color:var(--ems-gold-soft);margin:0 0 8px}.login-note{color:rgba(255,242,207,.7);line-height:1.6;margin-bottom:22px}
@media (max-width:1050px){.portal-layout{grid-template-columns:1fr}.portal-sidebar{position:relative;height:auto}.portal-stats,.role-select-grid{grid-template-columns:1fr 1fr}.portal-header{align-items:flex-start;flex-direction:column}}
@media (max-width:650px){.portal-stats,.role-select-grid{grid-template-columns:1fr}.portal-main{padding:18px}.portal-sidebar{padding:18px}}
.portal-toast{position:fixed;right:20px;bottom:20px;background:linear-gradient(135deg,#fff1bf,#f9c454);color:#1f3416;font-weight:900;border-radius:18px;padding:16px 18px;box-shadow:0 20px 50px rgba(0,0,0,.34);z-index:9999;width:min(420px,calc(100vw - 40px))}


/* Phase 2A Website Admin additions */
.login-brand-mark{width:78px;height:78px;border-radius:50%;margin:0 auto 14px;background:rgba(249,196,84,.12);display:flex;align-items:center;justify-content:center;border:1px solid rgba(249,196,84,.36)}
.login-brand-mark img{width:62px;height:62px;object-fit:contain;border-radius:50%}
.webadmin-layout .portal-main{min-width:0}.webadmin-hero{display:flex;align-items:center;justify-content:space-between;gap:22px;background:linear-gradient(135deg,rgba(249,196,84,.18),rgba(49,74,37,.72))}.webadmin-hero h2{margin:0 0 8px;font-size:clamp(28px,4vw,44px)}.webadmin-hero p{max-width:760px;color:rgba(255,242,207,.82);line-height:1.7}.admin-id-card{min-width:220px;border:1px solid rgba(249,196,84,.32);border-radius:22px;padding:20px;background:rgba(0,0,0,.18);text-align:center}.admin-id-card span{display:block;color:rgba(255,242,207,.7);margin-bottom:6px}.admin-id-card strong{font-size:24px;color:#f9c454}.admin-identity-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.admin-identity-grid div{border:1px solid rgba(249,196,84,.22);border-radius:16px;padding:14px;background:rgba(0,0,0,.12)}.admin-identity-grid span{display:block;color:rgba(255,242,207,.66);font-size:13px}.admin-identity-grid strong{display:block;margin-top:4px;color:#fff2cf}.module-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.module-header h3{margin:4px 0 8px;font-size:24px}.module-header p{margin:0;color:rgba(255,242,207,.72);line-height:1.6}.module-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.admin-toolbar{display:flex;gap:10px;align-items:center;margin:12px 0 18px}.admin-toolbar .ems-input{max-width:420px}.admin-table-wrap{overflow:auto;border-radius:18px;border:1px solid rgba(249,196,84,.18)}.admin-table{width:100%;border-collapse:collapse;min-width:780px}.admin-table th,.admin-table td{padding:12px 14px;border-bottom:1px solid rgba(249,196,84,.14);text-align:left;vertical-align:top}.admin-table th{background:rgba(249,196,84,.12);color:#f9c454;font-size:13px;text-transform:uppercase;letter-spacing:.04em}.admin-table td{color:rgba(255,242,207,.82);font-size:14px}.admin-pill{display:inline-flex;border:1px solid rgba(249,196,84,.28);border-radius:999px;padding:4px 10px;color:#f9c454;background:rgba(249,196,84,.08);font-size:12px}.ems-btn-mini{padding:7px 11px!important;font-size:12px!important;border-radius:999px!important}.ems-btn-danger{background:linear-gradient(135deg,#7a2f2f,#b84646)!important;color:#fff!important;border:1px solid rgba(255,255,255,.15)!important}.admin-error{color:#ffb1a8!important}.admin-modal{max-width:980px;width:min(94vw,980px);max-height:86vh;overflow:auto}.admin-edit-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.admin-edit-form .ems-field:has(textarea),.admin-modal-actions{grid-column:1/-1}.admin-edit-form textarea{min-height:130px}.admin-modal-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.admin-detail-view{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.admin-detail-view div{border:1px solid rgba(249,196,84,.18);border-radius:14px;padding:12px;background:rgba(0,0,0,.12);overflow:auto}.admin-detail-view span{display:block;color:#f9c454;font-size:12px;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.admin-detail-view strong{display:block;color:#fff2cf;white-space:pre-wrap;word-break:break-word;font-weight:500}@media(max-width:900px){.webadmin-hero,.module-header,.admin-toolbar{flex-direction:column;align-items:stretch}.admin-identity-grid,.admin-edit-form,.admin-detail-view{grid-template-columns:1fr}.admin-id-card{min-width:0}.portal-sidebar{position:relative;width:100%}.portal-layout{grid-template-columns:1fr}.portal-menu{max-height:320px;overflow:auto}}


/* ============================================================
   Phase 2A-R Website Admin UI/UX Refinement
   ============================================================ */

.webadmin-layout{
  grid-template-columns:300px minmax(0,1fr);
  background:
    radial-gradient(circle at 22% 10%, rgba(249,196,84,.12), transparent 30%),
    radial-gradient(circle at 92% 0%, rgba(255,242,207,.07), transparent 24%),
    linear-gradient(135deg,#101f0d,#203b18 42%,#314a25);
}
.webadmin-sidebar{
  padding:22px 20px;
  overflow-y:auto;
  scrollbar-width:thin;
  scrollbar-color:rgba(249,196,84,.45) rgba(255,242,207,.06);
}
.webadmin-sidebar::-webkit-scrollbar{width:8px}
.webadmin-sidebar::-webkit-scrollbar-track{background:rgba(255,242,207,.06);border-radius:999px}
.webadmin-sidebar::-webkit-scrollbar-thumb{background:rgba(249,196,84,.45);border-radius:999px}
.webadmin-menu{gap:16px}
.portal-menu-group{
  display:grid;
  gap:8px;
  padding:10px;
  border-radius:20px;
  background:rgba(255,242,207,.035);
  border:1px solid rgba(249,196,84,.09);
}
.portal-menu-group > span{
  color:rgba(249,196,84,.78);
  font-size:.72rem;
  text-transform:uppercase;
  letter-spacing:.11em;
  font-weight:1000;
  padding:0 6px 2px;
}
.portal-menu-footer{margin-top:4px}
.webadmin-main{
  padding:30px clamp(24px,3vw,42px) 64px;
}
.webadmin-topbar{
  margin-bottom:28px;
  position:sticky;
  top:18px;
  z-index:50;
  backdrop-filter:blur(14px);
}
.webadmin-topbar h1{font-size:clamp(1.55rem,2.2vw,2.2rem)}
.webadmin-hero{
  margin-bottom:22px;
  padding:clamp(24px,3vw,36px);
}
.webadmin-hero h2{
  color:#fff1bf;
  text-wrap:balance;
}
.webadmin-stats{
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:20px;
  margin:22px 0;
}
.webadmin-stats .portal-stat{
  min-height:118px;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.dashboard-grid{
  display:grid;
  grid-template-columns:1.25fr 1fr;
  gap:22px;
  align-items:start;
}
.dashboard-span-2{grid-column:1 / -1}
.dashboard-card{min-height:170px}
.dashboard-card-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  margin-bottom:18px;
}
.dashboard-card h3{font-size:1.35rem}
.dashboard-live-list{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}
.dashboard-live-list > div,
.dashboard-recent-list > div{
  border:1px solid rgba(249,196,84,.18);
  background:rgba(0,0,0,.13);
  border-radius:18px;
  padding:15px 16px;
}
.dashboard-live-list span,
.dashboard-recent-list span{
  display:block;
  color:rgba(255,242,207,.66);
  font-weight:800;
  font-size:.83rem;
  margin-bottom:6px;
}
.dashboard-live-list strong,
.dashboard-recent-list strong{
  color:#fff1bf;
  line-height:1.45;
}
.dashboard-recent-list{
  display:grid;
  gap:10px;
}
.dashboard-recent-list small{
  display:block;
  margin-top:4px;
  color:rgba(255,242,207,.6);
}
.quick-action-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
  margin-top:18px;
}
.quick-action-grid .ems-btn{text-align:center;justify-content:center}
.admin-identity-grid.compact{
  grid-template-columns:1fr;
  gap:10px;
}
.admin-identity-grid.compact div{padding:13px 14px}
.admin-module-card{
  padding:clamp(20px,2.4vw,30px);
  margin-bottom:26px;
}
.module-header{
  gap:24px;
  padding-bottom:18px;
  margin-bottom:18px;
  border-bottom:1px solid rgba(249,196,84,.12);
}
.module-header h3{
  color:#fff1bf;
  font-size:clamp(1.55rem,2.3vw,2.1rem);
}
.module-actions{
  align-items:center;
}
.module-actions .ems-btn{
  white-space:nowrap;
}
.module-live-summary{
  margin:0 0 18px;
}
.summary-strip{
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
}
.summary-strip span,
.live-summary-card{
  border:1px solid rgba(249,196,84,.2);
  background:rgba(0,0,0,.12);
  border-radius:16px;
  padding:11px 14px;
  color:rgba(255,242,207,.76);
  font-weight:800;
}
.summary-strip strong,
.live-summary-card strong{
  color:#f9c454;
}
.live-summary-card{
  display:grid;
  gap:4px;
}
.live-summary-card.warning{
  border-color:rgba(255,180,120,.35);
  color:#ffd8a0;
}
.admin-toolbar{
  background:rgba(0,0,0,.09);
  border:1px solid rgba(249,196,84,.12);
  padding:12px;
  border-radius:18px;
}
.admin-table-wrap{
  background:rgba(0,0,0,.12);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03);
}
.admin-table td{
  line-height:1.55;
}
.admin-table tr:hover td{
  background:rgba(249,196,84,.045);
}
.admin-link{
  color:#ffe19a;
  text-decoration:underline;
  text-underline-offset:3px;
}
.muted{color:rgba(255,242,207,.5)}
.admin-empty-state{
  display:grid;
  gap:5px;
  padding:18px 16px;
  border:1px dashed rgba(249,196,84,.24);
  border-radius:16px;
  background:rgba(0,0,0,.09);
}
.admin-empty-state strong{color:#fff1bf}
.admin-empty-state span{color:rgba(255,242,207,.68)}
.admin-loading{color:#ffe19a!important;font-weight:900}
.admin-pill{
  font-weight:900;
}
.admin-pill-published,
.admin-pill-active,
.admin-pill-public{
  border-color:rgba(107,222,141,.35);
  background:rgba(107,222,141,.12);
  color:#b9ffca;
}
.admin-pill-draft{
  border-color:rgba(249,196,84,.36);
  background:rgba(249,196,84,.1);
  color:#f9c454;
}
.admin-pill-expired,
.admin-pill-inactive,
.admin-pill-rejected{
  border-color:rgba(255,146,146,.35);
  background:rgba(255,146,146,.1);
  color:#ffb6b6;
}
.admin-pill-new,
.admin-pill-follow-up,
.admin-pill-under-review{
  border-color:rgba(161,199,255,.34);
  background:rgba(161,199,255,.1);
  color:#c7dcff;
}

/* True Website Admin modal overlay */
body.ems-admin-modal-open{overflow:hidden}
.admin-modal-overlay{
  position:fixed;
  inset:0;
  width:100vw;
  height:100vh;
  z-index:15000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:clamp(16px,3vw,36px);
  background:rgba(3,14,5,.78);
  backdrop-filter:blur(9px);
}
.admin-modal-window{
  width:min(1120px,calc(100vw - 34px));
  max-height:90vh;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  border-radius:30px;
  background:
    radial-gradient(circle at top left, rgba(249,196,84,.17), transparent 34%),
    linear-gradient(145deg,#1d3817,#10240f);
  border:1px solid rgba(249,196,84,.42);
  box-shadow:0 42px 130px rgba(0,0,0,.68);
}
.admin-modal-head{
  flex:0 0 auto;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:20px;
  padding:24px 28px 20px;
  border-bottom:1px solid rgba(249,196,84,.2);
}
.admin-modal-head h2{
  margin:4px 0 0;
  color:#fff1bf;
  font-size:clamp(1.45rem,2.4vw,2.35rem);
  line-height:1.1;
}
.admin-modal-close{
  width:44px;
  height:44px;
  flex:0 0 44px;
  border-radius:50%;
  border:1px solid rgba(249,196,84,.36);
  background:rgba(249,196,84,.14);
  color:#fff1bf;
  font-size:1.5rem;
  font-weight:1000;
  cursor:pointer;
}
.admin-modal-close:hover{background:#f9c454;color:#1c3414}
.admin-modal-body{
  flex:1 1 auto;
  min-height:0;
  overflow:auto;
  padding:26px 28px 28px;
}
.admin-edit-form,
.admin-followup-form{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px;
}
.admin-edit-form .field-wide,
.admin-followup-form .field-wide,
.admin-modal-actions{
  grid-column:1 / -1;
}
.admin-edit-form textarea,
.admin-followup-form textarea{
  min-height:140px;
  resize:vertical;
}
.admin-check-field{
  display:flex;
  align-items:center;
  gap:12px;
  min-height:58px;
  padding:12px 14px;
  border-radius:16px;
  border:1px solid rgba(249,196,84,.14);
  background:rgba(0,0,0,.08);
}
.admin-check-field label{margin:0;order:2}
.admin-check-field input{width:18px;height:18px;order:1}
.field-help{
  display:block;
  margin-top:7px;
  color:rgba(255,242,207,.58);
  font-size:.82rem;
}
.admin-modal-actions{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  justify-content:flex-end;
  margin-top:10px;
}
.admin-detail-shell{
  display:grid;
  gap:22px;
}
.admin-detail-view{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.admin-detail-view div{
  border:1px solid rgba(249,196,84,.17);
  border-radius:16px;
  padding:14px;
  background:rgba(0,0,0,.13);
  max-height:220px;
  overflow:auto;
}
.admin-detail-view span{
  display:block;
  color:#f9c454;
  font-size:.78rem;
  text-transform:uppercase;
  letter-spacing:.05em;
  font-weight:1000;
  margin-bottom:5px;
}
.admin-detail-view strong{
  display:block;
  color:#fff1bf;
  white-space:pre-wrap;
  word-break:break-word;
  font-weight:600;
  line-height:1.5;
}
.confirm-box{
  display:grid;
  gap:12px;
}
.confirm-box h3{color:#fff1bf;margin:0;font-size:1.55rem}
.confirm-box p{color:rgba(255,242,207,.74);line-height:1.7;margin:0}

@media(max-width:1100px){
  .webadmin-layout{grid-template-columns:1fr}
  .webadmin-sidebar{position:relative;height:auto}
  .dashboard-grid{grid-template-columns:1fr}
  .dashboard-live-list{grid-template-columns:1fr}
  .webadmin-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .webadmin-main{padding:18px}
  .webadmin-topbar{position:relative;top:auto}
  .dashboard-card-head,.module-header,.admin-toolbar{flex-direction:column;align-items:stretch}
  .webadmin-stats,.quick-action-grid,.admin-edit-form,.admin-followup-form,.admin-detail-view{grid-template-columns:1fr}
  .admin-modal-overlay{padding:10px}
  .admin-modal-window{width:calc(100vw - 18px);max-height:94vh;border-radius:24px}
  .admin-modal-head{padding:18px 20px}
  .admin-modal-body{padding:20px}
}

/* Correction: keep Website Admin sticky title card visually solid while content scrolls */
.webadmin-main{
  position:relative;
  overflow:visible;
}
.webadmin-topbar{
  top:0;
  z-index:250;
  isolation:isolate;
  background:
    radial-gradient(circle at 86% 0%, rgba(249,196,84,.20), transparent 30%),
    linear-gradient(135deg,#52643b,#314a25 64%,#223719) !important;
  border-color:rgba(249,196,84,.42) !important;
  box-shadow:0 22px 70px rgba(0,0,0,.48), 0 0 0 1px rgba(255,242,207,.04) inset !important;
  backdrop-filter:none;
}
.webadmin-topbar::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:-18px;
  height:18px;
  pointer-events:none;
  background:linear-gradient(to bottom,rgba(16,31,13,.74),transparent);
  z-index:-1;
}
.webadmin-topbar + .portal-panel,
.webadmin-topbar ~ .portal-panel{
  position:relative;
  z-index:1;
}
@media(max-width:760px){
  .webadmin-topbar{position:relative;top:auto}
  .webadmin-topbar::after{display:none}
}

/* Gallery bulk upload controls */
.gallery-bulk-upload{
  display:grid;
  gap:14px;
  padding:18px;
  border:1px solid rgba(249,196,84,.30);
  border-radius:22px;
  background:linear-gradient(135deg,rgba(249,196,84,.10),rgba(49,74,37,.34));
  box-shadow:0 18px 40px rgba(0,0,0,.18) inset;
}
.gallery-bulk-head{
  display:flex;
  justify-content:space-between;
  gap:14px;
  align-items:flex-start;
}
.gallery-bulk-head h4{
  margin:0 0 6px;
  color:#fff1bf;
  font-size:1.05rem;
}
.gallery-bulk-head p{
  margin:0;
  color:rgba(255,242,207,.74);
  line-height:1.55;
}
.gallery-bulk-controls{
  display:flex;
  gap:12px;
  align-items:center;
  flex-wrap:wrap;
}
.gallery-bulk-controls input[type="file"]{
  min-width:260px;
  max-width:100%;
}
.gallery-replace-toggle{
  display:inline-flex;
  gap:8px;
  align-items:center;
  color:#fff1bf;
  font-weight:800;
  font-size:.88rem;
}
.gallery-bulk-progress{
  min-height:42px;
  padding:11px 13px;
  border-radius:16px;
  border:1px solid rgba(255,242,207,.16);
  background:rgba(13,31,13,.42);
  color:rgba(255,242,207,.80);
  font-weight:700;
  line-height:1.45;
}
@media(max-width:760px){
  .gallery-bulk-head,.gallery-bulk-controls{flex-direction:column;align-items:stretch}
  .gallery-bulk-controls input[type="file"]{min-width:0;width:100%}
}

/* ============================================================
   Phase 3B Management Admin Dashboard + Academic Master UI
   ============================================================ */
.management-layout{
  grid-template-columns:310px minmax(0,1fr);
  background:
    radial-gradient(circle at 18% 8%, rgba(249,196,84,.14), transparent 30%),
    radial-gradient(circle at 94% 0%, rgba(255,242,207,.08), transparent 25%),
    linear-gradient(135deg,#0f1d0b,#203b18 48%,#314a25);
}
.management-sidebar{border-right-color:rgba(249,196,84,.22)}
.management-main{min-width:0}
.management-topbar{z-index:70}
.management-hero h2{font-size:clamp(1.9rem,3vw,3rem)}
.management-hero p{max-width:880px}
.management-stats .portal-stat strong{font-size:clamp(1.35rem,2.3vw,2rem);line-height:1.15}
.management-dashboard-grid{grid-template-columns:1.2fr .8fr}
.management-module-card{position:relative;overflow:visible}
.management-checklist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.management-check{display:flex;gap:12px;align-items:flex-start;border:1px solid rgba(249,196,84,.18);border-radius:18px;background:rgba(0,0,0,.13);padding:14px 15px}
.management-check > span{width:28px;height:28px;display:inline-grid;place-items:center;border-radius:50%;font-weight:1000;flex:0 0 28px}
.management-check.ok > span{background:rgba(107,222,141,.17);color:#b9ffca;border:1px solid rgba(107,222,141,.34)}
.management-check.pending > span{background:rgba(249,196,84,.14);color:#ffe19a;border:1px solid rgba(249,196,84,.34)}
.management-check strong{display:block;color:#fff1bf;line-height:1.35}
.management-check small{display:block;color:rgba(255,242,207,.68);line-height:1.5;margin-top:3px}
.management-row-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.management-placeholder-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.management-placeholder-grid div{border:1px solid rgba(249,196,84,.18);border-radius:18px;padding:16px;background:rgba(0,0,0,.12)}
.management-placeholder-grid strong{display:block;color:#fff1bf;margin-bottom:6px}
.management-placeholder-grid span{display:block;color:rgba(255,242,207,.72);line-height:1.55}
.management-edit-form .admin-check-field{align-self:end}
.management-edit-form .ems-field label{display:block;color:#fff0bb;font-weight:1000;margin-bottom:8px}
.management-edit-form .ems-input{width:100%}
.management-edit-form input[type="checkbox"]{accent-color:#f9c454}
.management-module-card .admin-table{min-width:860px}
.management-module-card .admin-table td:first-child strong{color:#fff1bf}
@media(max-width:1100px){.management-dashboard-grid,.management-checklist,.management-placeholder-grid{grid-template-columns:1fr}.management-layout{grid-template-columns:1fr}.management-sidebar{position:relative;height:auto}.management-topbar{position:relative;top:auto}}
@media(max-width:680px){.management-row-actions{display:grid;grid-template-columns:1fr}.management-row-actions .ems-btn{justify-content:center}.management-module-card .admin-table{min-width:760px}}

/* ============================================================
   EMS Phase 3C - Teacher Management Clean Rebuild
   ============================================================ */
.teacher-toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.teacher-toolbar .ems-input{min-width:220px}.teacher-stats{margin:16px 0}.teacher-safe-note{margin:14px 0 0;padding:12px 14px;border-radius:16px;background:rgba(249,196,84,.12);border:1px solid rgba(249,196,84,.28);color:rgba(255,242,207,.88);line-height:1.55}.teacher-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}.teacher-detail-grid>div,.credential-box>div{padding:12px 14px;border-radius:16px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12)}.teacher-detail-grid span,.credential-box span{display:block;font-size:.78rem;color:rgba(255,242,207,.68);margin-bottom:4px}.teacher-detail-grid strong,.credential-box strong{color:#fff2cf}.teacher-modal-section{margin-top:18px;padding:14px;border-radius:18px;background:rgba(0,0,0,.12);border:1px solid rgba(255,255,255,.1)}.teacher-modal-section h3{margin:0 0 8px;color:#f9c454}.teacher-row-actions{display:flex;flex-wrap:wrap;gap:6px}.teacher-assignment-layout{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}.teacher-assignment-block,.teacher-document-upload-card{padding:16px;border-radius:20px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);margin-top:18px}.teacher-assignment-block h3,.teacher-document-upload-card h3{margin:0 0 10px;color:#f9c454}.teacher-inline-form,.compact-upload-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;align-items:end}.teacher-assignment-list,.teacher-document-list{display:grid;gap:10px}.teacher-assignment-list>div,.teacher-document-list>div{padding:12px 14px;border-radius:16px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1)}.teacher-assignment-list strong,.teacher-document-list strong{display:block;color:#fff2cf}.teacher-assignment-list span,.teacher-document-list span{display:block;color:rgba(255,242,207,.72);font-size:.9rem;margin-top:4px}.teacher-portal-grid{display:grid;grid-template-columns:1.35fr .9fr;gap:18px;margin-top:18px}.teacher-self-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.teacher-self-form .admin-modal-actions{grid-column:1/-1}.credential-box{display:grid;gap:10px}.credential-password{font-size:1.35rem;letter-spacing:.08em;color:#f9c454!important}@media(max-width:820px){.teacher-portal-grid{grid-template-columns:1fr}.teacher-toolbar{display:grid}.teacher-toolbar .ems-input{width:100%;min-width:0}}

/* Phase 3C-R3 Teacher document checklist + verification review polish */
.teacher-document-hint{
  margin:0 0 14px;
  color:rgba(255,242,207,.72);
  line-height:1.55;
}
.teacher-doc-checklist{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:10px;
}
.teacher-doc-checklist.compact{
  grid-template-columns:1fr;
}
.teacher-doc-check-item{
  padding:12px 14px;
  border-radius:16px;
  border:1px solid rgba(249,196,84,.18);
  background:rgba(0,0,0,.11);
}
.teacher-doc-check-item strong{
  display:block;
  color:#fff2cf;
  line-height:1.35;
}
.teacher-doc-check-item span{
  display:block;
  margin-top:4px;
  color:rgba(255,242,207,.7);
  font-size:.88rem;
}
.teacher-doc-check-item.complete{
  border-color:rgba(107,222,141,.35);
  background:rgba(107,222,141,.09);
}
.teacher-doc-check-item.missing{
  border-color:rgba(255,193,84,.36);
  background:rgba(249,196,84,.09);
}
.teacher-missing-text{
  color:#ffd98a!important;
  font-weight:800;
  line-height:1.45;
}
.teacher-submit-card{
  margin-top:18px;
  padding:16px;
  border-radius:20px;
  border:1px solid rgba(249,196,84,.24);
  background:linear-gradient(135deg,rgba(249,196,84,.13),rgba(255,255,255,.05));
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  flex-wrap:wrap;
}
.teacher-submit-card h3{
  margin:0 0 6px;
  color:#f9c454;
}
.teacher-submit-card p{
  margin:0 0 6px;
  color:rgba(255,242,207,.78);
  line-height:1.45;
}
.teacher-review-layout{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:18px;
  align-items:start;
}
.teacher-review-column{
  min-width:0;
}
.teacher-review-column>h3{
  margin:0 0 12px;
  color:#f9c454;
}
.teacher-doc-review-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 0;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.teacher-doc-review-row:last-child{border-bottom:0}
.teacher-doc-review-row strong{
  color:#fff2cf;
  display:block;
}
.teacher-doc-review-row span{
  color:rgba(255,242,207,.68);
  display:block;
  margin-top:4px;
  font-size:.88rem;
}
.teacher-detail-grid strong,
.teacher-document-list strong,
.teacher-assignment-list strong{
  overflow-wrap:anywhere;
}
.ems-file-input{
  padding-top:10px;
}
@media(max-width:980px){
  .teacher-review-layout{grid-template-columns:1fr}
  .teacher-submit-card{align-items:stretch}
  .teacher-submit-card .ems-btn{width:100%;justify-content:center}
}

/* ============================================================
   Phase 3D Student + Parent Management UI
   ============================================================ */
.student-admin-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0 20px;position:sticky;top:0;z-index:4;background:rgba(14,28,18,.92);padding:12px;border-radius:18px;border:1px solid rgba(249,196,84,.14);backdrop-filter:blur(10px)}
.student-subpanel{display:none}.student-subpanel.active{display:block}.student-two-column,.student-review-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);gap:18px;align-items:start}.student-import-preview{margin-top:18px}.readonly-chip{display:inline-flex;align-items:center;min-height:42px;padding:10px 14px;border-radius:14px;background:rgba(255,255,255,.06);border:1px solid rgba(249,196,84,.18);color:rgba(255,242,207,.92);font-weight:800}.student-section-title{grid-column:1/-1;display:flex;justify-content:space-between;gap:12px;align-items:flex-end;margin-top:8px;padding:12px 0 6px;border-bottom:1px solid rgba(249,196,84,.18)}.student-section-title h3{margin:0;color:var(--ems-gold-soft)}.student-section-title span{color:rgba(255,242,207,.66);font-size:.86rem}.doc-check-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:16px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.045)}.doc-check-item span{font-size:.84rem;color:rgba(255,242,207,.7)}.doc-check-item.ok{border-color:rgba(74,222,128,.32);background:rgba(74,222,128,.08)}.doc-check-item.pending{border-color:rgba(249,196,84,.26)}.student-review-column{padding:16px;border-radius:20px;background:rgba(255,255,255,.045);border:1px solid rgba(249,196,84,.14)}.student-review-column h3{margin-top:0;color:var(--ems-gold-soft)}.teacher-safe-note.success{border-color:rgba(74,222,128,.36);background:rgba(74,222,128,.09)}.teacher-safe-note.danger{border-color:rgba(248,113,113,.36);background:rgba(248,113,113,.09)}.ems-check{display:flex;align-items:center;gap:8px;color:rgba(255,242,207,.88);font-weight:700}.ems-check input{width:18px;height:18px;accent-color:#f9c454}
@media(max-width:900px){.student-two-column,.student-review-layout{grid-template-columns:1fr}.student-admin-tabs{position:static}}

/* Phase 3D-R2: Student/Parent credential filter + manual popup polish */
.student-two-column .teacher-self-form .admin-modal-actions{
  grid-column:1/-1;
  width:100%;
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-start;
  align-items:center;
}
.student-two-column .teacher-self-form .admin-modal-actions .ems-btn{
  max-width:100%;
  white-space:normal;
}
.student-review-column .admin-modal-actions{
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
  justify-content:stretch;
  width:100%;
}
.student-review-column .admin-modal-actions .ems-btn{
  width:100%;
  white-space:normal;
  line-height:1.25;
}
.credential-toolbar{
  display:grid;
  grid-template-columns:minmax(220px,1fr) minmax(160px,.55fr) minmax(160px,.55fr) auto;
  gap:10px;
  align-items:end;
  margin:14px 0 18px;
}
.credential-toolbar .ems-input{
  max-width:none;
  width:100%;
}
.credential-table-wrap{
  margin-top:12px;
}
.credential-history-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin:18px 0 8px;
  color:rgba(255,242,207,.86);
}
.credential-history-header h4{
  margin:0;
  color:var(--ems-gold-soft);
}
.credential-history-header span{
  font-size:.9rem;
  color:rgba(255,242,207,.68);
}
@media(max-width:920px){
  .credential-toolbar{
    grid-template-columns:1fr;
  }
  .credential-toolbar .ems-btn{
    width:100%;
  }
}

/* Phase 3E Attendance Management */
.attendance-management-card .student-admin-tabs,
.attendance-subpanel .admin-toolbar,
#teacher-panel-attendance .teacher-self-form,
#student-panel-attendance .admin-toolbar,
#parent-panel-attendance .admin-toolbar{
  margin-top: 14px;
}
.attendance-metric-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(130px,1fr));
  gap:12px;
  margin:14px 0;
}
.attendance-metric-grid > div{
  border:1px solid rgba(49,74,37,.14);
  border-radius:16px;
  background:rgba(255,255,255,.74);
  padding:14px;
  box-shadow:0 8px 22px rgba(49,74,37,.06);
}
.attendance-metric-grid.compact > div{padding:10px 12px;}
.attendance-metric-grid strong{display:block;font-size:1.45rem;color:var(--ems-green,#314a25);line-height:1;}
.attendance-metric-grid span{display:block;margin-top:6px;font-size:.82rem;color:#64705e;}
.attendance-report-grid{
  display:grid;
  grid-template-columns:minmax(220px,330px) 1fr;
  gap:18px;
  margin:16px 0;
}
.attendance-chart-card{
  border:1px solid rgba(49,74,37,.14);
  border-radius:20px;
  background:linear-gradient(135deg,rgba(255,255,255,.96),rgba(249,196,84,.12));
  padding:18px;
  box-shadow:0 12px 30px rgba(49,74,37,.08);
}
.attendance-chart-card h3{margin:0 0 10px;color:var(--ems-green,#314a25);}
.attendance-chart-card p{margin:10px 0 0;color:#64705e;font-size:.92rem;}
.attendance-pie{
  --p:0;
  width:150px;height:150px;border-radius:50%;
  display:grid;place-items:center;
  background:conic-gradient(var(--ems-green,#314a25) calc(var(--p)*1%), rgba(49,74,37,.12) 0);
  margin:12px auto;
  position:relative;
}
.attendance-pie::after{content:"";position:absolute;inset:18px;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 1px rgba(49,74,37,.08);}
.attendance-pie span{position:relative;z-index:1;font-size:1.45rem;font-weight:800;color:var(--ems-green,#314a25);}
.attendance-bars{display:grid;gap:10px;}
.attendance-bars div{
  display:flex;align-items:center;justify-content:space-between;
  border-radius:14px;background:rgba(49,74,37,.06);padding:11px 12px;
}
.attendance-bars span{color:#5f6d58;font-size:.9rem;}
.attendance-bars strong{color:var(--ems-green,#314a25);font-size:1.1rem;}
.status-pill.ok{background:rgba(49,128,65,.12);color:#1f7135;}
.status-pill.pending{background:rgba(249,196,84,.22);color:#7a5700;}
#teacher-attendance-root .admin-table select.ems-input{min-width:128px;}
#teacher-attendance-root .admin-table input.ems-input{min-width:160px;}
@media (max-width: 860px){
  .attendance-report-grid{grid-template-columns:1fr;}
  .attendance-pie{width:128px;height:128px;}
}

/* ============================================================
   Phase 3F - Exam Dates + Syllabus
   ============================================================ */
.exam-management-card .compact-upload-form .form-span-2,
#teacher-syllabus-form .form-span-2 {
  grid-column: 1 / -1;
}
.exam-syllabus-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 14px;
  margin-top: 14px;
}
.exam-syllabus-card {
  border: 1px solid rgba(49, 74, 37, 0.14);
  border-radius: 18px;
  background: rgba(255,255,255,0.86);
  padding: 16px;
  box-shadow: 0 14px 34px rgba(49,74,37,0.08);
}
.exam-syllabus-card h4 {
  margin: 4px 0 10px;
  color: #314a25;
}
.exam-syllabus-card p {
  margin: 0 0 10px;
  line-height: 1.55;
}
.empty-note {
  color: rgba(31,44,27,0.68);
  margin: 10px 0;
}
.exam-upload-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}
.exam-upload-preview {
  margin-top: 14px;
}
.exam-preview-error td {
  background: rgba(170, 38, 38, 0.06);
}
.table-action-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}
.exam-edit-form .compact-upload-form .form-span-2 {
  grid-column: 1 / -1;
}
@media (max-width: 760px) {
  .exam-upload-actions {
    justify-content: stretch;
  }
  .exam-upload-actions .ems-btn,
  .table-action-row .ems-btn {
    width: 100%;
  }
}

/* Phase 3G - Portal Notice Management */
.notice-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;}
.notice-form-grid .form-span-2{grid-column:1/-1;}
.notice-review-list,.notice-card-list{display:grid;gap:14px;margin-top:14px;}
.notice-review-card,.notice-row-card{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding:16px;border:1px solid rgba(249,196,84,.22);border-radius:18px;background:rgba(10,34,18,.34);box-shadow:0 10px 26px rgba(0,0,0,.12);}
.notice-row-card h3,.notice-review-card h3{margin:0 0 8px;color:var(--ems-gold,#f9c454);}
.notice-row-card p,.notice-review-card p{margin:0 0 8px;line-height:1.55;}
.notice-row-card span{display:block;opacity:.82;font-size:.92rem;}
.notice-actions{display:flex;gap:8px;align-items:flex-end;flex-direction:column;min-width:112px;}
.notice-unread{border-color:rgba(249,196,84,.42);}
.notice-read{opacity:.86;}
.ems-text-link{color:var(--ems-gold,#f9c454);font-weight:700;text-decoration:none;}
.ems-text-link:hover{text-decoration:underline;}
@media(max-width:820px){.notice-form-grid{grid-template-columns:1fr}.notice-review-card,.notice-row-card{flex-direction:column}.notice-actions{align-items:flex-start;min-width:0}}

/* Phase 3H Fee Management */
.fee-management-card .student-admin-tabs{margin-top:16px;}
.fee-structure-grid,.fee-summary-grid,.fee-action-grid,.fee-history-grid{display:grid;gap:16px;}
.fee-structure-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;}
.fee-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:16px;}
.fee-action-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:18px;}
.fee-history-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:18px;}
.fee-structure-box,.fee-account-card,.fee-inline-form{background:rgba(255,255,255,.92);border:1px solid rgba(49,74,37,.14);border-radius:18px;padding:16px;box-shadow:0 12px 30px rgba(49,74,37,.07);}
.fee-structure-box h4,.fee-account-card h4,.fee-inline-form h4{margin:0 0 8px;color:#314a25;}
.fee-head-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px;}
.fee-total-line,.fee-stat-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid rgba(49,74,37,.12);}
.fee-total-line:first-of-type{margin-top:10px;}
.fee-total-line span,.fee-stat-row span{color:#57624f;font-size:.9rem;}
.fee-total-line strong,.fee-stat-row strong{color:#314a25;font-size:1rem;}
.fee-ledger-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;background:linear-gradient(135deg,rgba(249,196,84,.16),rgba(49,74,37,.08));border:1px solid rgba(49,74,37,.12);border-radius:18px;padding:14px 16px;margin-top:14px;}
.fee-ledger-head h4{margin:0;color:#314a25;}
.fee-ledger-head span{display:block;color:#5d6657;font-size:.92rem;margin-top:4px;}
.admin-table.compact{font-size:.88rem;margin-top:12px;}
.admin-table.compact td{padding:6px 8px;}
@media (max-width: 900px){.fee-structure-grid,.fee-summary-grid,.fee-action-grid,.fee-history-grid{grid-template-columns:1fr;}.fee-head-grid{grid-template-columns:1fr;}.fee-ledger-head{flex-direction:column;}}

/* ============================================================
   Phase 3H-R3 Fee Management EMS visual branding fix
   Keeps the working Fee logic untouched; only restores EMS dark/gold cards.
   ============================================================ */
.fee-management-card .teacher-document-upload-card{
  background:linear-gradient(145deg,rgba(255,242,207,.08),rgba(0,0,0,.14));
  border:1px solid rgba(249,196,84,.22);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 18px 44px rgba(0,0,0,.16);
}
.fee-management-card .admin-toolbar.teacher-toolbar{
  background:rgba(0,0,0,.14);
  border:1px solid rgba(249,196,84,.18);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.fee-management-card .ems-input,
.fee-management-card select.ems-input,
.fee-management-card textarea.ems-input{
  background:linear-gradient(180deg,rgba(18,32,14,.78),rgba(25,43,18,.72));
  border:1px solid rgba(249,196,84,.42);
  color:#fff2cf;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
.fee-management-card .ems-input::placeholder{color:rgba(255,242,207,.42)}
.fee-management-card select.ems-input option{background:#1d3017;color:#fff2cf}
.fee-management-card .ems-field label,
.fee-management-card .fee-head-grid label{
  color:#fff0bb;
  font-weight:1000;
  letter-spacing:.01em;
}
.fee-structure-box,
.fee-account-card,
.fee-inline-form{
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(circle at 12% 0%,rgba(249,196,84,.14),transparent 34%),
    linear-gradient(145deg,rgba(49,74,37,.92),rgba(18,32,14,.82));
  border:1px solid rgba(249,196,84,.28);
  border-radius:22px;
  padding:18px;
  box-shadow:0 18px 45px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.05);
  color:#fff2cf;
}
.fee-structure-box::before,
.fee-account-card::before,
.fee-inline-form::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:4px;
  background:linear-gradient(90deg,rgba(249,196,84,.95),rgba(255,242,207,.18));
  pointer-events:none;
}
.fee-structure-box h4,
.fee-account-card h4,
.fee-inline-form h4,
.fee-history-grid h4{
  color:#fff1bf;
  font-weight:1000;
}
.fee-management-card .empty-note,
.fee-structure-box p,
.fee-account-card p,
.fee-inline-form p{
  color:rgba(255,242,207,.74);
}
.fee-total-line,
.fee-stat-row{
  border-top:1px solid rgba(249,196,84,.18);
  background:rgba(0,0,0,.08);
  margin-top:8px;
  padding:11px 12px;
  border-radius:14px;
}
.fee-total-line span,
.fee-stat-row span{
  color:rgba(255,242,207,.72);
  font-weight:800;
}
.fee-total-line strong,
.fee-stat-row strong{
  color:#f9c454;
  font-weight:1000;
}
.fee-ledger-head{
  background:linear-gradient(135deg,rgba(249,196,84,.18),rgba(0,0,0,.12));
  border:1px solid rgba(249,196,84,.25);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
.fee-ledger-head h4{color:#fff1bf;font-weight:1000}
.fee-ledger-head span{color:rgba(255,242,207,.7)}
.fee-history-grid > div{
  padding:16px;
  border-radius:22px;
  background:linear-gradient(145deg,rgba(255,242,207,.06),rgba(0,0,0,.12));
  border:1px solid rgba(249,196,84,.17);
}
.fee-management-card .admin-table-wrap,
.fee-management-card .admin-table{
  background:rgba(0,0,0,.12);
}
.fee-management-card .admin-table th{
  background:rgba(249,196,84,.13);
  color:#f9c454;
}
.fee-management-card .admin-table td{
  color:rgba(255,242,207,.84);
}
.fee-management-card .admin-table td strong{color:#fff1bf}
.fee-management-card .admin-table td span{display:block;color:rgba(255,242,207,.62);font-size:.85rem;margin-top:3px}
.fee-management-card .admin-modal-actions{align-items:center}
.fee-management-card .fee-inline-form .admin-modal-actions .ems-btn{min-width:170px;justify-content:center}
@media (max-width:900px){
  .fee-management-card .admin-toolbar.teacher-toolbar{display:grid;grid-template-columns:1fr;align-items:stretch}
  .fee-management-card .admin-toolbar.teacher-toolbar .ems-btn{width:100%;justify-content:center}
}

/* ============================================================
   Phase 3H-R4 Fee Management single-page layout, school fees only
   ============================================================ */
.fee-single-page-card .student-admin-tabs,
.fee-single-page-card .fee-subpanel,
.fee-single-page-card #book-material-heads,
.fee-single-page-card [data-books-fee-total]{display:none!important;}
.fee-three-column-layout{
  display:grid;
  grid-template-columns:minmax(260px,.95fr) minmax(360px,1.35fr) minmax(320px,1.05fr);
  gap:18px;
  align-items:start;
  margin-top:18px;
}
.fee-column-card{
  min-width:0;
  height:fit-content;
}
.fee-collapse-summary{
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  padding:0;
}
.fee-collapse-summary::-webkit-details-marker{display:none;}
.fee-collapse-summary h3{margin:0;color:#fff1bf;}
.fee-collapse-summary p{margin:4px 0 0;color:rgba(255,242,207,.72);}
.fee-setup-collapse:not([open]){padding-bottom:18px;}
.fee-setup-body{margin-top:14px;}
.fee-structure-grid-single,
.fee-summary-grid-single{grid-template-columns:1fr!important;}
.fee-head-grid-single{grid-template-columns:1fr!important;}
.fee-structure-actions{
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
  margin-top:14px;
}
.fee-structure-actions .ems-btn{width:100%;justify-content:center;}
.fee-ledger-toolbar,
.fee-report-toolbar,
.fee-setup-toolbar{grid-template-columns:1fr!important;}
.fee-action-grid{grid-template-columns:1fr!important;}
.fee-inline-form{display:grid;grid-template-columns:1fr;gap:12px;}
.fee-inline-form .form-span-2{grid-column:1/-1;}
.fee-history-grid{grid-template-columns:1fr!important;}
.fee-report-column .admin-table-wrap{max-height:560px;overflow:auto;border-radius:18px;}
.fee-ledger-column #fee-ledger-root{margin-top:14px;}
.fee-single-page-card .module-live-summary{margin-top:14px;}
@media (max-width:1300px){
  .fee-three-column-layout{grid-template-columns:1fr;}
}


/* ============================================================
   Fee student/parent view: breakup + summary two-column layout
   ============================================================ */
.fee-public-fee-grid{
  grid-template-columns:1fr!important;
}
.fee-public-account-card{
  display:grid;
  grid-template-columns:minmax(0,1.35fr) minmax(280px,.85fr);
  gap:18px;
  align-items:start;
  width:100%;
}
.fee-breakup-card,
.fee-summary-card{
  background:linear-gradient(145deg,rgba(19,39,17,.94),rgba(49,74,37,.88));
  border:1px solid rgba(249,196,84,.28);
  border-radius:18px;
  padding:16px;
  box-shadow:0 14px 34px rgba(0,0,0,.18);
  color:#fff3cf;
  min-width:0;
}
.fee-breakup-card h4,
.fee-summary-card h4{
  margin:0 0 12px;
  color:#fff1bf;
  font-weight:900;
}
.fee-breakup-table{
  width:100%;
  border-collapse:collapse;
  font-size:.92rem;
}
.fee-breakup-table td{
  padding:10px 8px;
  border-bottom:1px solid rgba(249,196,84,.14);
  color:rgba(255,246,220,.86);
}
.fee-breakup-table td:last-child{
  text-align:right;
  color:#f9c454;
  font-weight:900;
}
.fee-breakup-table .fee-breakup-total td{
  border-top:1px solid rgba(249,196,84,.4);
  border-bottom:0;
  padding-top:13px;
  color:#fff1bf;
  font-weight:900;
}
.fee-summary-card .fee-stat-row{
  background:rgba(0,0,0,.12);
  border:1px solid rgba(249,196,84,.10);
  border-radius:12px;
  margin-bottom:8px;
  padding:10px 12px;
}
.fee-summary-card .fee-stat-row:first-of-type{
  border-top:1px solid rgba(249,196,84,.10);
}
.fee-summary-card .fee-stat-row span{
  color:rgba(255,246,220,.82);
}
.fee-summary-card .fee-stat-row strong{
  color:#f9c454;
}
.fee-summary-card .admin-pill{
  margin-top:4px;
}
@media (max-width:900px){
  .fee-public-account-card{
    grid-template-columns:1fr;
  }
}

/* ============================================================
   Phase 3H-R9 Fee Management stacked layout + Reports tab
   ============================================================ */
.fee-page-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin:18px 0 0;
  padding:8px;
  border:1px solid rgba(249,196,84,.22);
  background:rgba(19,39,17,.26);
  border-radius:18px;
}
.fee-page-tab{
  border:1px solid rgba(249,196,84,.22);
  background:rgba(255,255,255,.08);
  color:#fff3cf;
  border-radius:999px;
  padding:10px 16px;
  font-weight:900;
  cursor:pointer;
  transition:transform .18s ease,background .18s ease,border-color .18s ease;
}
.fee-page-tab:hover{transform:translateY(-1px);border-color:rgba(249,196,84,.55);}
.fee-page-tab.active{
  background:linear-gradient(135deg,#f9c454,#ffe39a);
  border-color:#f9c454;
  color:#1d2f16;
  box-shadow:0 10px 24px rgba(249,196,84,.22);
}
.fee-tab-panel{display:none;margin-top:18px;}
.fee-tab-panel.active{display:block;}
.fee-stacked-layout{
  display:grid;
  grid-template-columns:1fr;
  gap:18px;
  align-items:start;
}
.fee-top-card,
.fee-bottom-card,
.fee-report-tab-card{
  width:100%;
  min-width:0;
}
.fee-stacked-layout .fee-setup-toolbar{
  grid-template-columns:minmax(260px,360px) auto!important;
  justify-content:start;
}
.fee-stacked-layout .fee-ledger-toolbar{
  grid-template-columns:minmax(220px,300px) minmax(280px,1fr) auto!important;
}
.fee-stacked-layout .fee-report-toolbar,
.fee-tab-panel .fee-report-toolbar{
  grid-template-columns:minmax(260px,360px)!important;
}
.fee-stacked-layout .fee-head-grid-single{
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr))!important;
}
.fee-stacked-layout .fee-structure-actions{
  grid-template-columns:repeat(4,minmax(150px,1fr));
}
.fee-stacked-layout .fee-action-grid{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
}
.fee-admin-page-card .fee-stacked-layout .fee-action-grid{
  grid-template-columns:minmax(260px,520px)!important;
}
.fee-stacked-layout .fee-history-grid{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
}
.fee-report-tab-card .admin-table-wrap{
  max-height:620px;
  overflow:auto;
  border-radius:18px;
}
@media (max-width:980px){
  .fee-stacked-layout .fee-setup-toolbar,
  .fee-stacked-layout .fee-ledger-toolbar,
  .fee-stacked-layout .fee-report-toolbar,
  .fee-tab-panel .fee-report-toolbar,
  .fee-stacked-layout .fee-structure-actions,
  .fee-stacked-layout .fee-action-grid,
  .fee-stacked-layout .fee-history-grid,
  .fee-admin-page-card .fee-stacked-layout .fee-action-grid{
    grid-template-columns:1fr!important;
  }
}


/* ============================================================
   Phase 3H-R10 Fee history readability fix
   Payment and concession history are stacked full-width cards.
   ============================================================ */
.fee-history-stack,
.fee-stacked-layout .fee-history-grid,
.fee-admin-page-card .fee-history-grid{
  grid-template-columns:1fr!important;
}
.fee-history-grid > div{
  min-width:0;
  overflow:hidden;
}
.fee-history-table-wrap{
  width:100%;
  overflow-x:auto;
  border-radius:16px;
  border:1px solid rgba(249,196,84,.14);
  background:rgba(0,0,0,.10);
  margin-top:10px;
}
.fee-management-card .fee-history-table,
.fee-history-table{
  min-width:720px;
  margin:0;
  background:transparent;
}
.fee-history-table th,
.fee-history-table td{
  white-space:nowrap;
}
.fee-history-table .fee-history-note{
  white-space:normal;
  min-width:240px;
  max-width:520px;
  line-height:1.45;
}
.fee-history-grid h4{
  margin:0 0 8px;
}

/* ============================================================
   Phase 3H-R11 Fee closure: receipt, correction, approval, audit
   ============================================================ */
.fee-report-toolbar{grid-template-columns:minmax(220px,1fr) minmax(180px,.55fr)!important;}
.fee-report-summary-grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(120px,1fr));
  gap:10px;
  margin:0 0 16px;
}
.fee-report-summary-grid>div{
  background:linear-gradient(145deg,rgba(19,39,17,.86),rgba(49,74,37,.78));
  border:1px solid rgba(249,196,84,.22);
  border-radius:14px;
  padding:12px;
}
.fee-report-summary-grid span{display:block;color:rgba(255,246,220,.76);font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;}
.fee-report-summary-grid strong{display:block;color:#f9c454;font-size:1.05rem;margin-top:4px;}
.fee-history-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.ems-btn-danger{
  border-color:rgba(173,55,55,.55)!important;
  background:linear-gradient(135deg,#7d2f2f,#4b1e1e)!important;
  color:#fff!important;
}
.fee-cancelled-row{opacity:.68;}
.fee-cancelled-row td{text-decoration:none;color:rgba(255,246,220,.55)!important;}
.fee-history-table td .ems-btn-small{min-height:30px;padding:6px 10px;font-size:.76rem;}
.fee-audit-column .admin-table-wrap,
.fee-report-tab-card .admin-table-wrap{max-height:620px;overflow:auto;}
.fee-report-table th,
.fee-report-table td{white-space:nowrap;}
.fee-history-note{white-space:normal;min-width:160px;}
@media (max-width:1100px){.fee-report-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.fee-report-toolbar{grid-template-columns:1fr!important;}}
@media (max-width:650px){.fee-report-summary-grid{grid-template-columns:1fr;}}


/* ============================================================
   Fee receipt numbering and public record-only history
   ============================================================ */
.fee-receipt-series-card{
  border-color:rgba(249,196,84,.28)!important;
}
.fee-receipt-preview-box{
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:4px;
  padding:12px 14px;
  border-radius:16px;
  background:rgba(249,196,84,.12);
  border:1px solid rgba(249,196,84,.28);
}
.fee-receipt-preview-box span{
  color:rgba(255,242,207,.76);
  font-size:.82rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.fee-receipt-preview-box strong{
  color:#f9c454;
  font-size:1.08rem;
  letter-spacing:.03em;
}
.fee-public-record-note{
  margin:6px 0 12px;
  padding:10px 12px;
  border-radius:14px;
  background:rgba(249,196,84,.10);
  border:1px solid rgba(249,196,84,.24);
  color:rgba(255,242,207,.86);
  line-height:1.45;
}


/* ============================================================
   Phase 3I Result / Report Card Management foundation
   ============================================================ */
.result-management-card .result-tabs{margin-top:14px;}
.result-subpanel{margin-top:16px;}
.result-setup-card .module-live-summary{margin:14px 0;}
.result-trait-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:12px;
}
.result-trait-grid div{
  border:1px solid rgba(249,196,84,.22);
  background:linear-gradient(145deg,rgba(19,39,17,.78),rgba(49,74,37,.68));
  border-radius:16px;
  padding:14px;
  box-shadow:0 10px 24px rgba(0,0,0,.12);
}
.result-trait-grid strong{display:block;color:#fff1bf;margin-bottom:4px;}
.result-trait-grid span{color:rgba(255,242,207,.68);font-size:.85rem;}
.result-template-layout{
  display:grid;
  grid-template-columns:minmax(260px,360px) 1fr;
  gap:18px;
  align-items:start;
}
.result-template-layout img{
  width:100%;
  display:block;
  border-radius:18px;
  border:1px solid rgba(249,196,84,.28);
  box-shadow:0 18px 42px rgba(0,0,0,.24);
  background:#fff;
}
.result-print-plan{grid-template-columns:repeat(2,minmax(0,1fr));}
@media (max-width:900px){
  .result-template-layout{grid-template-columns:1fr;}
  .result-print-plan{grid-template-columns:1fr;}
}

/* ============================================================
   Phase 3I-R2 Teacher Marks Entry
   ============================================================ */
.result-teacher-card .result-teacher-toolbar{margin-top:14px;}
.result-teacher-actions{margin-top:16px;justify-content:flex-end;gap:12px;}
.result-setup-actions{margin:14px 0;gap:10px;flex-wrap:wrap;justify-content:flex-start;}
.result-marks-table input[type="number"]{min-width:96px;}
.result-marks-table .result-remark-input{min-width:190px;}
.result-absent-check{display:inline-flex;align-items:center;gap:7px;color:rgba(255,242,207,.9);font-weight:800;white-space:nowrap;}
.result-teacher-help{margin-top:18px;}
@media (max-width:900px){
  .result-marks-table{min-width:860px;}
}


/* ============================================================
   Result Management R3 review / approval / publish
   ============================================================ */
.result-review-card,
.result-summary-card{
  margin-top:18px;
}
.result-review-table td,
.result-summary-table td{
  vertical-align:top;
}
.result-action-row{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.result-approval-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  justify-content:flex-start;
  margin-bottom:14px;
}
.result-summary-table input.ems-input{
  min-width:220px;
  margin-bottom:8px;
}
.result-summary-table td:last-child{
  min-width:260px;
}
.result-review-table .empty-note{
  margin:3px 0 0;
  font-size:.78rem;
}
@media (max-width:900px){
  .result-action-row,
  .result-approval-actions{
    flex-direction:column;
    align-items:stretch;
  }
  .result-summary-table input.ems-input{
    min-width:180px;
  }
}

/* ============================================================
   Result Management R4 student / parent published view
   ============================================================ */
.result-public-card-root .admin-toolbar{
  margin:16px 0;
}
.result-public-header-card{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:18px;
  border-radius:20px;
  background:linear-gradient(135deg,rgba(19,39,17,.95),rgba(49,74,37,.88));
  border:1px solid rgba(249,196,84,.26);
  box-shadow:0 16px 38px rgba(0,0,0,.18);
  margin-bottom:18px;
}
.result-public-header-card h3{
  margin:0;
  color:#fff1bf;
}
.result-public-header-card p{
  margin:6px 0 0;
  color:rgba(255,242,207,.76);
}
.result-overall-badge{
  min-width:130px;
  text-align:center;
  border-radius:18px;
  padding:14px 18px;
  background:rgba(249,196,84,.14);
  border:1px solid rgba(249,196,84,.32);
}
.result-overall-badge span{
  display:block;
  color:rgba(255,242,207,.72);
  font-size:.78rem;
  text-transform:uppercase;
  letter-spacing:.06em;
  font-weight:900;
}
.result-overall-badge strong{
  display:block;
  color:#f9c454;
  font-size:2rem;
  line-height:1;
  margin-top:6px;
}
.result-public-grid{
  display:grid;
  grid-template-columns:minmax(0,1.35fr) minmax(320px,.9fr);
  gap:18px;
  align-items:start;
}
.result-public-card{
  min-width:0;
  padding:18px;
  border-radius:20px;
  background:rgba(255,255,255,.94);
  border:1px solid rgba(49,74,37,.16);
  box-shadow:0 14px 34px rgba(49,74,37,.08);
  color:#26351f;
}
.result-public-card h4{
  margin:0 0 14px;
  color:#314a25;
}
.result-marks-card{
  grid-row:span 3;
}
.result-public-table th,
.result-public-table td{
  vertical-align:top;
}
.result-summary-lines{
  display:grid;
  gap:10px;
}
.result-summary-lines div{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:11px 12px;
  border-radius:14px;
  background:rgba(49,74,37,.06);
  border:1px solid rgba(49,74,37,.10);
}
.result-summary-lines span{
  color:#57624f;
  font-size:.9rem;
  font-weight:800;
}
.result-summary-lines strong{
  color:#314a25;
}
.result-attendance-layout{
  display:grid;
  grid-template-columns:150px 1fr;
  gap:16px;
  align-items:center;
}
.result-pie{
  width:136px;
  height:136px;
  border-radius:50%;
  background:conic-gradient(#314a25 0deg var(--present), #d36d5d var(--present) 360deg);
  border:10px solid rgba(249,196,84,.28);
  box-shadow:inset 0 0 0 10px rgba(255,255,255,.88),0 10px 26px rgba(49,74,37,.16);
  display:grid;
  place-items:center;
}
.result-pie span{
  width:82px;
  height:82px;
  border-radius:50%;
  background:#fffdf8;
  color:#314a25;
  display:grid;
  place-items:center;
  text-align:center;
  font-weight:900;
  font-size:.92rem;
  padding:6px;
}
.result-remark-box{
  padding:12px;
  border-radius:14px;
  background:rgba(249,196,84,.10);
  border:1px solid rgba(249,196,84,.22);
  margin-bottom:10px;
}
.result-remark-box strong{
  color:#314a25;
}
.result-remark-box p{
  margin:6px 0 0;
  color:#47533f;
  line-height:1.5;
}
@media (max-width:1050px){
  .result-public-grid{grid-template-columns:1fr;}
  .result-marks-card{grid-row:auto;}
}
@media (max-width:680px){
  .result-public-header-card{flex-direction:column;align-items:stretch;}
  .result-attendance-layout{grid-template-columns:1fr;justify-items:center;}
}


/* ============================================================
   Result Management R5 official printable report card controls
   ============================================================ */
.result-summary-table th:last-child,
.result-summary-table td:last-child{
  min-width:150px;
}
.result-summary-table [data-result-print-card]{
  white-space:nowrap;
}


/* ============================================================
   Result Management R5A visible workflow controls
   ============================================================ */
.result-workflow-control-panel{
  width:100%;
  border:1px solid rgba(249,196,84,.26);
  border-radius:18px;
  padding:14px;
  background:linear-gradient(135deg,rgba(49,74,37,.12),rgba(249,196,84,.10));
}
.result-workflow-control-panel strong{
  display:block;
  color:#f9c454;
  font-size:1rem;
  margin-bottom:3px;
}
.result-workflow-control-panel span{
  display:block;
  color:rgba(255,242,207,.82);
  line-height:1.45;
  margin-bottom:12px;
}
.result-workflow-button-row{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  align-items:center;
}
.result-workflow-button-row .ems-btn{
  min-width:150px;
  justify-content:center;
}
.result-workflow-control-panel .empty-note{
  margin:12px 0 0;
  color:rgba(255,242,207,.78);
}
@media (max-width:760px){
  .result-workflow-button-row{flex-direction:column;align-items:stretch;}
  .result-workflow-button-row .ems-btn{width:100%;}
}

/* ============================================================
   Phase 3J Certificate Management Module
   ============================================================ */
.certificate-management-card .teacher-safe-note{margin-bottom:18px}
.certificate-stats{margin:18px 0 20px!important}
.certificate-page-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  padding:12px;
  border-radius:20px;
  background:rgba(0,0,0,.12);
  border:1px solid rgba(249,196,84,.14);
  margin:18px 0;
}
.certificate-page-tab{
  border:1px solid rgba(249,196,84,.24);
  background:rgba(255,242,207,.06);
  color:#fff2cf;
  padding:11px 16px;
  border-radius:999px;
  font-weight:1000;
  cursor:pointer;
  transition:.2s ease;
}
.certificate-page-tab:hover{transform:translateY(-1px);border-color:rgba(249,196,84,.55)}
.certificate-page-tab.active{
  background:linear-gradient(135deg,#f9c454,#fff1bf);
  color:#1f3416;
  border-color:rgba(255,255,255,.42);
  box-shadow:0 12px 30px rgba(249,196,84,.18);
}
.certificate-tab-panel{display:none}
.certificate-tab-panel.active{display:block}
.certificate-work-grid{
  display:grid;
  grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);
  gap:18px;
  align-items:start;
}
.certificate-form-card,
.certificate-register-card,
.certificate-guidance-card{margin-top:0!important}
.certificate-form,
.certificate-lc-form{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
  align-items:end;
}
.certificate-form .form-span-2,
.certificate-lc-form .form-span-2{grid-column:1/-1}
.certificate-form textarea,
.certificate-lc-form textarea{min-height:96px;resize:vertical}
.certificate-student-preview{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  padding:14px;
  border-radius:18px;
  border:1px solid rgba(249,196,84,.18);
  background:rgba(0,0,0,.12);
  color:rgba(255,242,207,.72);
}
.certificate-student-preview div{
  padding:10px 12px;
  border-radius:14px;
  background:rgba(255,255,255,.055);
  border:1px solid rgba(255,255,255,.08);
}
.certificate-student-preview span,
.certificate-number-preview span{
  display:block;
  color:rgba(255,242,207,.62);
  font-size:.78rem;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.04em;
  margin-bottom:4px;
}
.certificate-student-preview strong,
.certificate-number-preview strong{color:#fff1bf;word-break:break-word}
.certificate-section-title{
  margin-top:12px;
  padding:10px 14px;
  border-radius:14px;
  background:rgba(249,196,84,.13);
  border:1px solid rgba(249,196,84,.22);
  color:#f9c454;
  font-weight:1000;
  text-transform:uppercase;
  letter-spacing:.06em;
  font-size:.82rem;
}
.certificate-number-preview{
  padding:15px 16px;
  border-radius:18px;
  background:rgba(249,196,84,.12);
  border:1px solid rgba(249,196,84,.28);
}
.certificate-number-preview strong{font-size:1.18rem;color:#f9c454}
.certificate-register-toolbar{
  display:grid!important;
  grid-template-columns:repeat(6,minmax(130px,1fr));
  align-items:end;
}
.certificate-register-toolbar .ems-input{min-width:0!important;width:100%}
.certificate-action-cell{display:flex;gap:6px;flex-wrap:wrap;min-width:220px}
.certificate-error-note code{
  display:inline-block;
  margin-top:4px;
  padding:3px 6px;
  border-radius:8px;
  background:rgba(0,0,0,.22);
  color:#fff1bf;
}
@media(max-width:1100px){
  .certificate-work-grid{grid-template-columns:1fr}
  .certificate-student-preview{grid-template-columns:repeat(2,minmax(0,1fr))}
  .certificate-register-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:720px){
  .certificate-form,
  .certificate-lc-form{grid-template-columns:1fr}
  .certificate-student-preview,
  .certificate-register-toolbar{grid-template-columns:1fr}
  .certificate-page-tabs{display:grid}
  .certificate-page-tab{width:100%;text-align:center}
}

/* Phase 3K Attendance Reports + Result Attendance Linking */
.ems-check-field{
  display:flex;
  align-items:center;
  gap:10px;
  padding:12px 14px;
  border:1px solid rgba(49,74,37,.16);
  border-radius:14px;
  background:#fffaf0;
  color:var(--ems-green,#314a25);
  font-weight:700;
}
.ems-check-field input{width:18px;height:18px;accent-color:var(--ems-green,#314a25)}
.result-attendance-link-card{border-left:4px solid var(--ems-gold,#f9c454)}
#attendance-completion-output .admin-pill,
#attendance-defaulter-output .admin-pill{white-space:nowrap}
#attendance-student-card-output .attendance-report-grid,
#attendance-yearly-output .attendance-report-grid{margin-top:12px}
.attendance-management-card .module-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.attendance-management-card input[type="number"].ems-input{max-width:180px}
@media(max-width:760px){
  .attendance-management-card .module-actions{justify-content:flex-start}
  .attendance-management-card input[type="number"].ems-input{max-width:100%}
}

/* ============================================================
   Phase 3L Reports & Year-End Export
   ============================================================ */
.report-management-card .teacher-safe-note{margin:14px 0 18px;}
.report-stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));margin:18px 0 20px!important;}
.report-control-form{margin:14px 0 10px;align-items:end;}
.report-action-pack > div{display:flex;gap:8px;flex-wrap:wrap;}
.report-page-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  padding:12px;
  border-radius:20px;
  background:rgba(0,0,0,.12);
  border:1px solid rgba(249,196,84,.14);
  margin:18px 0;
}
.report-page-tab{
  border:1px solid rgba(249,196,84,.24);
  background:rgba(255,242,207,.06);
  color:#fff2cf;
  padding:11px 16px;
  border-radius:999px;
  font-weight:1000;
  cursor:pointer;
  transition:.2s ease;
}
.report-page-tab:hover{transform:translateY(-1px);border-color:rgba(249,196,84,.55)}
.report-page-tab.active{
  background:linear-gradient(135deg,#f9c454,#fff1bf);
  color:#1f3416;
  border-color:#f9c454;
  box-shadow:0 12px 28px rgba(249,196,84,.18);
}
.report-tab-panel{display:none;margin-top:18px;}
.report-tab-panel.active{display:block;}
.report-output-card{
  margin-top:18px;
  border:1px solid rgba(49,74,37,.12);
  background:#fff;
  border-radius:22px;
  padding:18px;
  box-shadow:0 14px 32px rgba(21,35,17,.08);
}
.report-output-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  margin-bottom:14px;
}
.report-output-head h3{margin:0 0 4px;color:var(--ems-green,#314a25);}
.report-output-head p{margin:0;color:#65715f;font-weight:700;}
.report-table-wrap{
  max-height:520px;
  overflow:auto;
  border-radius:16px;
  border:1px solid rgba(49,74,37,.14);
  background:#fffdf7;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.7);
}
.report-table-wrap .admin-table{
  min-width:980px;
  background:#fffdf7;
}
.report-table-wrap .admin-table th{
  position:sticky;
  top:0;
  z-index:2;
  background:linear-gradient(180deg,#fff3cf,#f5e4b4);
  color:#314a25;
  border-bottom:1px solid rgba(49,74,37,.18);
  font-weight:1000;
}
.report-table-wrap .admin-table td{
  color:#203518;
  background:#fffdf7;
  border-bottom:1px solid rgba(49,74,37,.10);
  font-weight:700;
}
.report-table-wrap .admin-table tbody tr:nth-child(even) td{
  background:#fbf6e7;
}
.report-table-wrap .admin-table tbody tr:hover td{
  background:#fff0bf;
}
.report-preview-note{
  margin-top:6px!important;
  color:#58664f!important;
  font-size:13px;
  font-weight:800!important;
}
.report-export-history-card{margin-top:18px;}
.report-yearend-grid{margin:12px 0 16px;}
.compact-form{margin:10px 0 14px;}
@media(max-width:800px){
  .report-output-head{display:block;}
  .report-control-form{grid-template-columns:1fr!important;}
  .report-page-tabs{display:grid;grid-template-columns:1fr;}
  .report-action-pack > div{display:grid;grid-template-columns:1fr;}
}


/* ============================================================
   Phase 3M: Promotion / Academic Year Closing
   ============================================================ */
.promotion-admin-shell .promotion-rule-banner{
  margin:16px 0 18px;
}
.promotion-stat-grid{
  grid-template-columns:repeat(6,minmax(0,1fr));
}
.promotion-filter-row{
  align-items:end;
  margin-bottom:18px;
}
.promotion-safety-card{
  margin:0 0 18px;
}
.ems-check{
  display:flex;
  align-items:flex-start;
  gap:10px;
  color:var(--ems-cream);
  font-weight:800;
  line-height:1.35;
  margin:8px 0 14px;
}
.ems-check input{
  width:18px;
  height:18px;
  margin-top:1px;
  accent-color:var(--ems-gold);
}
.promotion-check-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
  margin:12px 0 18px;
}
.promotion-check{
  display:flex;
  gap:12px;
  align-items:flex-start;
  padding:16px;
  border-radius:18px;
  border:1px solid rgba(249,196,84,.22);
  background:rgba(255,242,207,.08);
  color:var(--ems-cream);
}
.promotion-check strong{
  display:grid;
  place-items:center;
  width:30px;
  height:30px;
  border-radius:50%;
  flex:0 0 auto;
  color:#1f3416;
  background:var(--ems-gold);
}
.promotion-check.warn strong{
  background:#ffdd82;
}
.promotion-check.ok{
  border-color:rgba(249,196,84,.35);
}
.promotion-check span{
  display:block;
  font-weight:900;
}
.promotion-check small{
  display:block;
  margin-top:4px;
  font-weight:700;
  color:rgba(255,242,207,.76);
}
.promotion-note{
  padding:14px 16px;
  border-radius:16px;
  background:rgba(249,196,84,.13);
  border:1px solid rgba(249,196,84,.28);
  color:var(--ems-cream);
}
.promotion-table-wrap{
  background:#fffaf0;
  color:#203116;
  border-radius:22px;
  padding:14px;
  border:1px solid rgba(249,196,84,.55);
}
.promotion-table{
  min-width:1180px;
}
.promotion-table th{
  color:#314a25;
  background:#f8e9c7;
}
.promotion-table td{
  color:#203116;
  vertical-align:top;
}
.promotion-table .ems-input{
  min-width:120px;
  background:#fff;
  color:#203116;
  border-color:#d8c798;
}
.promotion-tag{
  display:inline-block;
  margin-top:6px;
  padding:3px 8px;
  border-radius:999px;
  font-size:.72rem;
  font-weight:900;
  background:#f7d4d4;
  color:#8a2020;
}
.promotion-closing-card{
  padding:18px;
  border-radius:22px;
  border:1px solid rgba(249,196,84,.28);
  background:rgba(255,242,207,.08);
}
.promotion-closing-card h3{
  margin:0 0 10px;
  color:var(--ems-gold-soft);
}
#promotion-batch-history,
#promotion-closing-history{
  background:#fffaf0;
  border-radius:18px;
  padding:10px;
  color:#203116;
}
#promotion-batch-history .admin-table th,
#promotion-closing-history .admin-table th{
  color:#314a25;
  background:#f8e9c7;
}
#promotion-batch-history .admin-table td,
#promotion-closing-history .admin-table td{
  color:#203116;
}
@media (max-width:1100px){
  .promotion-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .promotion-check-grid{grid-template-columns:1fr;}
}


/* ============================================================
   Phase 3N: Full Security Center
   ============================================================ */
.security-admin-shell .security-rule-banner{
  margin:16px 0 18px;
}
.security-stat-grid{
  grid-template-columns:repeat(6,minmax(0,1fr));
}
.security-action-card{
  margin:0 0 18px;
}
.security-check-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
  margin:12px 0 18px;
}
.security-check{
  display:flex;
  gap:12px;
  align-items:flex-start;
  padding:16px;
  border-radius:18px;
  border:1px solid rgba(249,196,84,.22);
  background:rgba(255,242,207,.08);
  color:var(--ems-cream);
}
.security-check strong{
  display:grid;
  place-items:center;
  width:30px;
  height:30px;
  border-radius:50%;
  flex:0 0 auto;
  color:#1f3416;
  background:var(--ems-gold);
}
.security-check.warn strong{
  background:#ffdd82;
}
.security-check span{
  display:block;
  font-weight:900;
}
.security-check small{
  display:block;
  margin-top:4px;
  font-weight:700;
  color:rgba(255,242,207,.76);
}
.security-note{
  padding:14px 16px;
  border-radius:16px;
  background:rgba(249,196,84,.13);
  border:1px solid rgba(249,196,84,.28);
  color:var(--ems-cream);
}
.security-sensitive-grid{
  display:grid;
  grid-template-columns:1fr 1.35fr;
  gap:18px;
}
.security-policy-card{
  padding:18px;
  border-radius:22px;
  border:1px solid rgba(249,196,84,.28);
  background:rgba(255,242,207,.08);
  color:var(--ems-cream);
}
.security-policy-card h3{
  margin:0 0 12px;
  color:var(--ems-gold-soft);
}
.security-policy-card code{
  display:block;
  max-width:520px;
  white-space:pre-wrap;
  word-break:break-word;
  color:#314a25;
  background:#fff6df;
  padding:6px 8px;
  border-radius:8px;
}
.security-table-wrap,
#security-events-root,
#security-rls-root,
#security-settings-root,
#security-sensitive-root .admin-table-wrap{
  background:#fffaf0;
  color:#203116;
  border-radius:22px;
  padding:14px;
  border:1px solid rgba(249,196,84,.55);
}
.security-table-wrap .admin-table th,
#security-events-root .admin-table th,
#security-rls-root .admin-table th,
#security-settings-root .admin-table th,
#security-sensitive-root .admin-table th{
  color:#314a25;
  background:#f8e9c7;
}
.security-table-wrap .admin-table td,
#security-events-root .admin-table td,
#security-rls-root .admin-table td,
#security-settings-root .admin-table td,
#security-sensitive-root .admin-table td{
  color:#203116;
}
.security-row-warn td{
  background:#fff2d6!important;
}
html[data-ems-insecure-origin] .portal-header::after{
  content:"HTTPS required for production";
  color:#1f3416;
  background:#ffdd82;
  border-radius:999px;
  padding:8px 12px;
  font-weight:900;
}
@media (max-width:1100px){
  .security-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .security-check-grid,
  .security-sensitive-grid{grid-template-columns:1fr;}
}


/* ============================================================
   Phase 3P-A/B: EMS UI Consistency + Tab Stability Refinement
   ============================================================ */
:root{
  --ems-field-bg:rgba(255,242,207,.09);
  --ems-field-bg-strong:rgba(255,242,207,.14);
  --ems-field-border:rgba(249,196,84,.32);
  --ems-field-border-focus:rgba(249,196,84,.78);
  --ems-danger:#b84646;
  --ems-danger-dark:#7a2f2f;
}

.portal-body .ems-input,
.portal-body input.ems-input,
.portal-body select.ems-input,
.portal-body textarea.ems-input,
.portal-body .teacher-self-form input,
.portal-body .teacher-self-form select,
.portal-body .teacher-self-form textarea{
  width:100%;
  min-height:46px;
  border-radius:16px;
  border:1px solid var(--ems-field-border)!important;
  background:var(--ems-field-bg)!important;
  color:var(--ems-cream,#fff2cf)!important;
  padding:11px 14px;
  font-weight:800;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
  transition:border-color .18s ease, box-shadow .18s ease, background .18s ease, transform .18s ease;
}
.portal-body .ems-input:focus,
.portal-body input.ems-input:focus,
.portal-body select.ems-input:focus,
.portal-body textarea.ems-input:focus{
  outline:none;
  border-color:var(--ems-field-border-focus)!important;
  box-shadow:0 0 0 4px rgba(249,196,84,.14), inset 0 1px 0 rgba(255,255,255,.08);
  background:var(--ems-field-bg-strong)!important;
}
.portal-body .ems-input::placeholder{color:rgba(255,242,207,.46)!important;font-weight:700}
.portal-body select.ems-input,
.portal-body .teacher-self-form select{
  appearance:none;
  -webkit-appearance:none;
  padding-right:44px!important;
  background-image:
    linear-gradient(45deg, transparent 50%, #f9c454 50%),
    linear-gradient(135deg, #f9c454 50%, transparent 50%),
    linear-gradient(135deg, rgba(249,196,84,.20), rgba(249,196,84,.08))!important;
  background-position:
    calc(100% - 22px) calc(50% - 3px),
    calc(100% - 15px) calc(50% - 3px),
    calc(100% - 42px) 50%!important;
  background-size:7px 7px, 7px 7px, 1px 62%!important;
  background-repeat:no-repeat!important;
}
.portal-body select.ems-input option{
  background:#1d3017;
  color:#fff2cf;
  font-weight:800;
}
.portal-body input[type="file"].ems-input,
.portal-body input[type="file"],
.portal-body .ems-file-input{
  padding:8px 12px!important;
  min-height:50px;
  cursor:pointer;
}
.portal-body input[type="file"]::file-selector-button{
  margin-right:14px;
  border:0;
  border-radius:999px;
  padding:10px 16px;
  background:linear-gradient(135deg,var(--ems-gold,#f9c454),var(--ems-gold-deep,#e5a928));
  color:#1f3416;
  font-weight:1000;
  cursor:pointer;
  box-shadow:0 10px 22px rgba(249,196,84,.20);
}
.portal-body input[type="file"]::-webkit-file-upload-button{
  margin-right:14px;
  border:0;
  border-radius:999px;
  padding:10px 16px;
  background:linear-gradient(135deg,var(--ems-gold,#f9c454),var(--ems-gold-deep,#e5a928));
  color:#1f3416;
  font-weight:1000;
  cursor:pointer;
}

.portal-body .ems-btn,
.portal-body button.ems-btn,
.portal-body a.ems-btn{
  border-radius:999px;
  font-weight:1000;
  letter-spacing:.01em;
  border:1px solid rgba(249,196,84,.26);
  box-shadow:0 12px 26px rgba(0,0,0,.16);
}
.portal-body .ems-btn:hover{transform:translateY(-1px)}
.portal-body .ems-btn-danger,
.portal-body button.ems-btn-danger{
  background:linear-gradient(135deg,var(--ems-danger-dark),var(--ems-danger))!important;
  color:#fff!important;
  border-color:rgba(255,255,255,.18)!important;
}

/* Consistent tab bars across modules */
.teacher-toolbar,
.admin-toolbar,
.fee-page-tabs,
.certificate-page-tabs,
.report-page-tabs,
.report-tabs,
.promotion-tabs,
.security-tabs{
  gap:10px!important;
  flex-wrap:wrap;
}
.report-tabs,
.promotion-tabs,
.security-tabs{
  display:flex;
  padding:12px;
  border-radius:20px;
  background:rgba(0,0,0,.14);
  border:1px solid rgba(249,196,84,.18);
  margin:18px 0;
}
.report-tabs button,
.promotion-tabs button,
.security-tabs button,
.fee-page-tab,
.certificate-page-tab,
.report-page-tab{
  border:1px solid rgba(249,196,84,.26);
  background:rgba(255,242,207,.07);
  color:#fff2cf;
  padding:11px 16px;
  border-radius:999px;
  font-weight:1000;
  cursor:pointer;
}
.report-tabs button.active,
.promotion-tabs button.active,
.security-tabs button.active,
.fee-page-tab.active,
.certificate-page-tab.active,
.report-page-tab.active{
  background:linear-gradient(135deg,#f9c454,#fff1bf)!important;
  color:#1f3416!important;
  border-color:#f9c454!important;
  box-shadow:0 12px 28px rgba(249,196,84,.20);
}

/* Portal panels and subpanels */
.portal-panel{animation:emsPanelIn .16s ease-out;}
@keyframes emsPanelIn{from{opacity:.35;transform:translateY(4px)}to{opacity:1;transform:none}}
.student-subpanel.active,
.attendance-subpanel.active,
.exam-subpanel.active,
.notice-subpanel.active,
.result-subpanel.active,
.teacher-notice-subpanel.active,
.teacher-exam-subpanel.active{
  display:block!important;
}
.student-subpanel:not(.active),
.attendance-subpanel:not(.active),
.exam-subpanel:not(.active),
.notice-subpanel:not(.active),
.result-subpanel:not(.active),
.teacher-notice-subpanel:not(.active),
.teacher-exam-subpanel:not(.active){
  display:none!important;
}

/* Report-like hero/stat cards used by Reports, Promotion and Security */
.management-section-shell{
  display:grid;
  gap:18px;
}
.report-hero,
.promotion-hero,
.security-hero{
  padding:22px;
  border-radius:26px;
  background:linear-gradient(135deg,rgba(249,196,84,.18),rgba(255,242,207,.10) 36%,rgba(49,74,37,.42));
  border:1px solid rgba(249,196,84,.28);
  box-shadow:0 20px 46px rgba(0,0,0,.20);
}
.report-rule-banner,
.promotion-rule-banner,
.security-rule-banner{
  padding:15px 18px;
  border-radius:18px;
  background:rgba(249,196,84,.14);
  border:1px solid rgba(249,196,84,.32);
  color:#fff2cf;
  line-height:1.55;
}
.report-stat-grid{
  display:grid!important;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:14px;
  margin:0 0 4px;
}
.promotion-stat-grid,
.security-stat-grid{
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr))!important;
}
.report-stat-card{
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:7px;
  min-height:102px;
  padding:18px;
  border-radius:22px;
  background:linear-gradient(145deg,rgba(255,242,207,.14),rgba(249,196,84,.08));
  border:1px solid rgba(249,196,84,.28);
  box-shadow:0 16px 32px rgba(0,0,0,.16);
}
.report-stat-card strong{
  display:block;
  font-size:clamp(1.55rem,2.6vw,2.35rem);
  line-height:1;
  color:#f9c454;
  letter-spacing:-.03em;
}
.report-stat-card span{
  display:block;
  font-size:.88rem;
  line-height:1.3;
  color:rgba(255,242,207,.78);
  font-weight:900;
}

/* Better cards, tables and empty states after data reset */
.management-empty,
.empty-state,
.teacher-document-list:empty::before,
.notice-card-list:empty::before{
  display:block;
  padding:18px;
  border-radius:18px;
  background:rgba(255,242,207,.08);
  border:1px dashed rgba(249,196,84,.36);
  color:rgba(255,242,207,.78);
  font-weight:800;
}
.teacher-document-list:empty::before{content:'No records found yet. Start setup from Academic Master or add a new record.';}
.notice-card-list:empty::before{content:'No notices found yet.';}
.admin-table-wrap{
  background:rgba(15,29,12,.18);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
.admin-table th{
  position:sticky;
  top:0;
  z-index:1;
}
.admin-table tbody tr:hover td{
  background:rgba(249,196,84,.055);
}
.module-header,
.dashboard-card-head{
  gap:18px;
}
.teacher-document-upload-card,
.teacher-assignment-block,
.portal-card{
  overflow:hidden;
}
.teacher-safe-note,
.security-note,
.promotion-note{
  line-height:1.65;
}

/* Light report tables must stay readable */
.report-table-wrap .admin-table td,
.report-table-wrap .admin-table th,
.promotion-table-wrap .admin-table td,
.promotion-table-wrap .admin-table th,
.security-table-wrap .admin-table td,
.security-table-wrap .admin-table th{
  color:#203116;
}
.report-table-wrap .admin-table th,
.promotion-table-wrap .admin-table th,
.security-table-wrap .admin-table th{
  background:#f8e9c7;
}

@media(max-width:900px){
  .report-tabs,.promotion-tabs,.security-tabs,.fee-page-tabs,.certificate-page-tabs,.report-page-tabs{display:grid;grid-template-columns:1fr;}
  .report-stat-grid,.promotion-stat-grid,.security-stat-grid{grid-template-columns:1fr 1fr!important;}
  .report-hero,.promotion-hero,.security-hero{padding:18px;}
}
@media(max-width:620px){
  .report-stat-grid,.promotion-stat-grid,.security-stat-grid{grid-template-columns:1fr!important;}
}

/* ============================================================
   Phase 3P-C: Professional portal text, placeholders and scroll polish
   ============================================================ */
.portal-main{
  position:relative;
  isolation:isolate;
}
.portal-header{
  position:sticky;
  top:18px;
  z-index:90;
  overflow:visible;
  isolation:isolate;
  background:linear-gradient(135deg,rgba(49,74,37,.92),rgba(31,52,22,.86) 58%,rgba(77,96,44,.82));
  border-color:rgba(249,196,84,.34);
  box-shadow:0 18px 44px rgba(0,0,0,.32),0 34px 46px rgba(15,29,12,.46);
  backdrop-filter:blur(18px) saturate(120%);
  -webkit-backdrop-filter:blur(18px) saturate(120%);
}
.portal-header::before{
  content:"";
  position:absolute;
  inset:-22px -18px -34px;
  z-index:-1;
  pointer-events:none;
  border-radius:32px;
  background:linear-gradient(to bottom,rgba(15,29,12,.76),rgba(15,29,12,.40) 58%,rgba(15,29,12,0));
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
}
.portal-header h1,
.portal-header p,
.portal-header .ems-btn{
  position:relative;
  z-index:1;
}
.portal-panel,
.portal-card,
.admin-module-card,
.management-module-card{
  scroll-margin-top:126px;
}
.portal-panel{
  position:relative;
  z-index:1;
}
.ems-input::placeholder,
input::placeholder,
textarea::placeholder{
  color:rgba(255,242,207,.54)!important;
  font-weight:650;
}
.form-field input::placeholder,
.form-field textarea::placeholder{
  color:rgba(37,53,25,.48)!important;
}
.login-note{
  line-height:1.7;
}
.management-empty,
.empty-state{
  line-height:1.65;
}
.module-kicker,
.ems-eyebrow{
  letter-spacing:.08em;
}
@media(max-width:1050px){
  .portal-header{
    top:10px;
    border-radius:22px;
  }
  .portal-header::before{
    inset:-12px -10px -24px;
  }
}
@media(max-width:650px){
  .portal-header{
    top:0;
    border-radius:18px;
  }
  .portal-panel,
  .portal-card,
  .admin-module-card,
  .management-module-card{
    scroll-margin-top:96px;
  }
}

/* ============================================================
   Phase 3P-D: Delete Button System
   ============================================================ */
.ems-delete-btn{
  box-shadow:0 10px 22px rgba(122,47,47,.22)!important;
}
.management-row-actions .ems-delete-btn,
.teacher-row-actions .ems-delete-btn{
  margin-left:2px;
}
.confirm-box p{
  color:rgba(255,242,207,.82);
  line-height:1.7;
}


/* ============================================================
   Phase 3P-F: Direct URL / Protected Page Access Lock
   ============================================================ */
body.portal-body.ems-auth-pending{
  overflow:hidden;
}
body.portal-body.ems-auth-pending .portal-layout,
body.portal-body.ems-auth-pending .login-shell{
  opacity:0;
  pointer-events:none;
  filter:blur(10px);
}
body.portal-body.ems-auth-pending::before{
  content:"Verifying secure portal access";
  position:fixed;
  z-index:99990;
  inset:0;
  display:grid;
  place-items:center;
  background:
    radial-gradient(circle at top, rgba(249,196,84,.16), transparent 38%),
    linear-gradient(135deg, rgba(16,45,28,.96), rgba(31,77,46,.98));
  color:#fff2cf;
  font-size:clamp(1.05rem,2.2vw,1.55rem);
  font-weight:900;
  letter-spacing:.02em;
  text-align:center;
}
body.portal-body.ems-auth-pending::after{
  content:"Please wait while EMS confirms your login, role and access rights.";
  position:fixed;
  z-index:99991;
  left:50%;
  top:calc(50% + 44px);
  transform:translateX(-50%);
  width:min(540px, calc(100vw - 42px));
  color:rgba(255,242,207,.78);
  text-align:center;
  font-weight:700;
  line-height:1.55;
}
body.portal-body.ems-auth-denied::before{
  content:"Access is being redirected securely";
}
body.portal-body.ems-auth-verified .portal-layout{
  animation:emsPortalVerifiedIn .22s ease both;
}
@keyframes emsPortalVerifiedIn{
  from{opacity:.2;}
  to{opacity:1;}
}


/* ============================================================
   Phase 3P-G: Dashboard Final Polish + Clean Setup Guidance
   ============================================================ */
.management-setup-stats{
  grid-template-columns:repeat(6,minmax(0,1fr));
}
.dashboard-help-text{
  margin:6px 0 0;
  color:rgba(255,242,207,.78);
  font-weight:700;
  line-height:1.55;
}
.setup-guidance-card{
  overflow:hidden;
}
.setup-roadmap{
  display:grid;
  gap:16px;
}
.setup-progress-strip{
  display:grid;
  grid-template-columns:minmax(120px,180px) 1fr;
  gap:18px;
  align-items:center;
  padding:16px;
  border-radius:20px;
  background:linear-gradient(135deg, rgba(249,196,84,.18), rgba(255,242,207,.06));
  border:1px solid rgba(249,196,84,.28);
}
.setup-progress-strip strong{
  display:block;
  color:var(--ems-gold-soft);
  font-size:clamp(1.8rem,3.2vw,2.8rem);
  line-height:1;
}
.setup-progress-strip span{
  display:block;
  color:rgba(255,242,207,.78);
  font-weight:800;
  margin-top:5px;
}
.setup-progress-bar{
  height:14px;
  border-radius:999px;
  background:rgba(255,242,207,.16);
  overflow:hidden;
  box-shadow:inset 0 0 0 1px rgba(255,242,207,.12);
}
.setup-progress-bar i{
  display:block;
  height:100%;
  border-radius:999px;
  background:linear-gradient(90deg, var(--ems-gold), var(--ems-gold-soft));
  transition:width .25s ease;
}
.setup-step-list{
  display:grid;
  gap:10px;
}
.setup-step{
  display:grid;
  grid-template-columns:42px 34px minmax(0,1fr) auto;
  gap:12px;
  align-items:center;
  padding:13px 14px;
  border-radius:18px;
  border:1px solid rgba(249,196,84,.22);
  background:rgba(255,242,207,.07);
}
.setup-step b{
  color:rgba(255,242,207,.68);
  font-size:.82rem;
  letter-spacing:.08em;
}
.setup-step > span{
  width:30px;
  height:30px;
  display:grid;
  place-items:center;
  border-radius:999px;
  background:#ffdd82;
  color:#203116;
  font-weight:900;
}
.setup-step.complete > span{
  background:var(--ems-gold);
}
.setup-step strong{
  display:block;
  color:#fff6dc;
  font-weight:900;
}
.setup-step small{
  display:block;
  color:rgba(255,242,207,.72);
  font-weight:700;
  line-height:1.45;
  margin-top:2px;
}
.setup-step.pending{
  background:rgba(255,242,207,.1);
}
.operational-status-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
}
.operational-status-card{
  padding:14px;
  border-radius:18px;
  border:1px solid rgba(249,196,84,.22);
  background:rgba(255,242,207,.08);
}
.operational-status-card strong{
  display:block;
  color:var(--ems-gold-soft);
  font-size:1.55rem;
  line-height:1;
}
.operational-status-card span{
  display:block;
  color:#fff6dc;
  font-weight:900;
  margin-top:7px;
}
.operational-status-card small{
  display:block;
  color:rgba(255,242,207,.72);
  font-weight:700;
  line-height:1.45;
  margin-top:4px;
}
.operational-status-card.pending{
  border-color:rgba(255,221,130,.26);
}
.operational-status-card.ok{
  border-color:rgba(249,196,84,.42);
  background:rgba(249,196,84,.12);
}
@media (max-width:1180px){
  .management-setup-stats,
  .operational-status-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .setup-step{
    grid-template-columns:36px 30px minmax(0,1fr);
  }
  .setup-step .ems-btn{
    grid-column:3;
    justify-self:start;
  }
}
@media (max-width:720px){
  .management-setup-stats,
  .operational-status-grid,
  .setup-progress-strip{
    grid-template-columns:1fr;
  }
}


/* ============================================================
   Phase 3P-H: Final QA / Launch Checklist
   ============================================================ */
.launch-qa-stat-grid{
  grid-template-columns:repeat(6,minmax(0,1fr));
}
.launch-qa-readiness-grid{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:12px;
}
.launch-qa-readiness-card{
  padding:14px;
  border-radius:18px;
  border:1px solid rgba(249,196,84,.22);
  background:rgba(255,242,207,.08);
}
.launch-qa-readiness-card strong{
  display:block;
  color:var(--ems-gold-soft);
  font-size:1.45rem;
  line-height:1.1;
}
.launch-qa-readiness-card span{
  display:block;
  color:#fff6dc;
  font-weight:900;
  margin-top:7px;
}
.launch-qa-readiness-card small{
  display:block;
  color:rgba(255,242,207,.72);
  font-weight:700;
  line-height:1.45;
  margin-top:4px;
}
.launch-qa-readiness-card.ok{
  background:rgba(249,196,84,.13);
  border-color:rgba(249,196,84,.4);
}
.launch-qa-list{
  display:grid;
  gap:12px;
}
.launch-qa-item{
  display:grid;
  grid-template-columns:44px minmax(0,1fr);
  gap:14px;
  align-items:start;
  padding:16px;
  border-radius:18px;
  border:1px solid rgba(249,196,84,.22);
  background:rgba(255,242,207,.08);
  color:#fff6dc;
}
.launch-qa-item.checked{
  background:rgba(249,196,84,.14);
  border-color:rgba(249,196,84,.42);
}
.launch-qa-item label{
  display:grid;
  place-items:center;
  cursor:pointer;
}
.launch-qa-item input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.launch-qa-item label span{
  width:32px;
  height:32px;
  border-radius:50%;
  display:grid;
  place-items:center;
  border:2px solid rgba(249,196,84,.62);
  background:rgba(255,242,207,.08);
}
.launch-qa-item label span::after{
  content:"";
  width:12px;
  height:7px;
  border-left:3px solid #203116;
  border-bottom:3px solid #203116;
  transform:rotate(-45deg) scale(0);
  transition:.18s ease;
}
.launch-qa-item input:checked + span{
  background:var(--ems-gold);
  border-color:var(--ems-gold);
}
.launch-qa-item input:checked + span::after{
  transform:rotate(-45deg) scale(1);
}
.launch-qa-item strong{
  display:block;
  font-size:1rem;
  color:#fff6dc;
  font-weight:900;
}
.launch-qa-item p{
  margin:6px 0 0;
  color:rgba(255,242,207,.78);
  line-height:1.55;
  font-weight:700;
}
.launch-qa-item small{
  display:inline-flex;
  margin-top:10px;
  padding:5px 9px;
  border-radius:999px;
  background:rgba(249,196,84,.15);
  color:var(--ems-gold-soft);
  font-weight:900;
  font-size:.78rem;
}
@media (max-width:1180px){
  .launch-qa-stat-grid,
  .launch-qa-readiness-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media (max-width:720px){
  .launch-qa-stat-grid,
  .launch-qa-readiness-grid{
    grid-template-columns:1fr;
  }
}


/* ============================================================
   Phase 3Q: Portal Mobile / Smartphone Responsiveness Refinement
   ============================================================ */
.portal-mobile-menu-toggle,
.portal-mobile-backdrop{
  display:none;
}
@media(max-width:920px){
  html{scroll-padding-top:78px;}
  body.portal-body{
    min-width:0;
    overflow-x:hidden;
  }
  html.ems-mobile-nav-open,
  body.portal-body.ems-mobile-nav-open{
    overflow:hidden;
    overscroll-behavior:none;
  }
  .portal-layout,
  .webadmin-layout,
  .management-layout,
  .teacher-layout,
  .student-layout,
  .parent-layout{
    display:block!important;
    grid-template-columns:1fr!important;
    min-width:0;
  }
  .portal-sidebar,
  .webadmin-sidebar,
  .management-sidebar{
    position:fixed!important;
    top:0!important;
    left:0!important;
    bottom:0!important;
    width:min(86vw,350px)!important;
    max-width:350px;
    height:100dvh!important;
    z-index:10020;
    transform:translateX(-108%);
    transition:transform .24s ease, box-shadow .24s ease;
    overflow-y:auto;
    overflow-x:hidden;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    touch-action:pan-y;
    padding:20px 16px 28px;
    border-right:1px solid rgba(249,196,84,.35);
    box-shadow:none;
  }
  body.ems-mobile-nav-open .portal-sidebar,
  body.ems-mobile-nav-open .webadmin-sidebar,
  body.ems-mobile-nav-open .management-sidebar{
    transform:translateX(0);
    box-shadow:24px 0 80px rgba(0,0,0,.42);
  }
  .portal-mobile-backdrop{
    position:fixed;
    inset:0;
    z-index:10010;
    background:rgba(6,18,8,.58);
    backdrop-filter:blur(8px);
    opacity:0;
    pointer-events:none;
    transition:opacity .22s ease;
  }
  body.ems-mobile-nav-open .portal-mobile-backdrop{
    display:block;
    opacity:1;
    pointer-events:auto;
  }
  .portal-mobile-menu-toggle{
    position:fixed;
    top:12px;
    left:12px;
    z-index:10030;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:9px;
    min-height:46px;
    padding:9px 15px;
    border-radius:999px;
    border:1px solid rgba(255,242,207,.28);
    background:linear-gradient(135deg,var(--ems-gold),var(--ems-gold-deep));
    color:#1f3416;
    box-shadow:0 16px 42px rgba(0,0,0,.28);
    font-weight:950;
  }
  .portal-mobile-menu-icon{
    width:20px;
    height:15px;
    flex:0 0 20px;
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    position:relative;
  }
  .portal-mobile-menu-icon span{
    width:20px;
    height:2px;
    display:block;
    border-radius:99px;
    background:#1f3416;
    transform-origin:center;
    transition:transform .18s ease,opacity .18s ease;
  }
  .portal-mobile-menu-toggle b{
    margin:0;
    font-size:.82rem;
    line-height:1;
  }
  body.ems-mobile-nav-open .portal-mobile-menu-icon span:nth-child(1){
    transform:translateY(6.5px) rotate(45deg);
  }
  body.ems-mobile-nav-open .portal-mobile-menu-icon span:nth-child(2){
    opacity:0;
  }
  body.ems-mobile-nav-open .portal-mobile-menu-icon span:nth-child(3){
    transform:translateY(-6.5px) rotate(-45deg);
  }
  .portal-main,
  .webadmin-main,
  .management-main{
    padding:70px 12px 32px!important;
    width:100%;
    max-width:100vw;
    min-width:0;
  }
  .portal-header,
  .webadmin-topbar,
  .management-topbar{
    position:sticky!important;
    top:8px!important;
    z-index:70;
    display:grid!important;
    grid-template-columns:1fr;
    align-items:start;
    gap:12px;
    padding:15px!important;
    margin-bottom:16px!important;
    border-radius:20px!important;
  }
  .portal-header .ems-btn,
  .webadmin-topbar .ems-btn,
  .management-topbar .ems-btn{
    width:100%;
    justify-content:center;
  }
  .portal-header h1{
    font-size:1.25rem!important;
    padding-left:64px;
  }
  .portal-header p{
    font-size:.88rem;
    line-height:1.45;
  }
  .portal-card,
  .admin-module-card,
  .management-module-card,
  .teacher-document-upload-card,
  .fee-management-card{
    padding:15px!important;
    border-radius:20px!important;
  }
  .portal-stats,
  .webadmin-stats,
  .management-stats,
  .report-stat-grid,
  .promotion-stat-grid,
  .security-stat-grid,
  .launch-qa-stat-grid,
  .fee-summary-grid,
  .fee-report-summary-grid,
  .result-public-grid,
  .certificate-public-grid{
    grid-template-columns:1fr!important;
    gap:12px!important;
  }
  .portal-stat strong,
  .report-stat-card strong,
  .promotion-stat-card strong,
  .security-stat-card strong{
    font-size:1.55rem!important;
  }
  .module-header,
  .dashboard-card-head,
  .report-hero,
  .promotion-hero,
  .security-hero{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:12px!important;
    align-items:start!important;
  }
  .module-actions,
  .report-hero-actions,
  .promotion-actions,
  .security-actions,
  .admin-toolbar,
  .teacher-toolbar,
  .fee-toolbar,
  .quick-action-grid,
  .report-action-row,
  .result-action-row,
  .exam-upload-actions,
  .notice-actions,
  .certificate-actions{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
    align-items:stretch!important;
  }
  .module-actions .ems-btn,
  .report-hero-actions .ems-btn,
  .promotion-actions .ems-btn,
  .security-actions .ems-btn,
  .admin-toolbar .ems-btn,
  .teacher-toolbar .ems-btn,
  .quick-action-grid .ems-btn,
  .report-action-row .ems-btn,
  .result-action-row .ems-btn,
  .exam-upload-actions .ems-btn,
  .notice-actions .ems-btn,
  .certificate-actions .ems-btn{
    width:100%;
    min-height:46px;
    justify-content:center;
  }
  .ems-input,
  .ems-select,
  .ems-textarea,
  select.ems-input,
  input[type="file"]{
    width:100%!important;
    min-height:46px;
    font-size:16px!important; /* prevents iOS zoom */
  }
  .form-grid,
  .compact-form,
  .teacher-self-form,
  .teacher-modal-grid,
  .student-form-grid,
  .student-two-column,
  .student-review-layout,
  .notice-form-grid,
  .fee-structure-grid,
  .fee-action-grid,
  .certificate-form,
  .certificate-lc-form,
  .result-template-layout,
  .attendance-report-grid,
  .setup-step,
  .operational-status-grid,
  .launch-qa-readiness-grid{
    grid-template-columns:1fr!important;
  }
  .admin-table-wrap,
  .report-output-card,
  .fee-table-wrap,
  .teacher-table-wrap{
    width:100%;
    max-width:100%;
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch;
    border-radius:18px;
  }
  .admin-table,
  .result-marks-table,
  .attendance-table,
  .fee-ledger-table,
  .report-table{
    min-width:760px;
  }
  .admin-table th,
  .admin-table td{
    padding:10px 11px!important;
    white-space:nowrap;
  }
  .management-row-actions,
  .admin-row-actions,
  .teacher-row-actions,
  .student-row-actions,
  .fee-row-actions{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
    min-width:128px;
  }
  .management-row-actions .ems-btn,
  .admin-row-actions .ems-btn,
  .teacher-row-actions .ems-btn,
  .student-row-actions .ems-btn,
  .fee-row-actions .ems-btn{
    width:100%;
    justify-content:center;
  }
  .report-tabs,
  .promotion-tabs,
  .security-tabs,
  .fee-page-tabs,
  .certificate-page-tabs,
  .report-page-tabs,
  .student-admin-tabs,
  .teacher-tabs,
  .launch-qa-tabs{
    overflow-x:auto!important;
    display:flex!important;
    flex-wrap:nowrap!important;
    gap:8px;
    padding-bottom:6px;
    -webkit-overflow-scrolling:touch;
  }
  .report-tabs button,
  .promotion-tabs button,
  .security-tabs button,
  .fee-page-tabs button,
  .certificate-page-tabs button,
  .report-page-tabs button,
  .student-admin-tabs button,
  .teacher-tabs button,
  .launch-qa-tabs button{
    flex:0 0 auto;
    min-height:44px;
    white-space:nowrap;
  }
  .admin-modal-overlay{
    padding:10px!important;
    align-items:flex-start!important;
    overflow:auto!important;
  }
  .admin-modal-window{
    width:100%!important;
    max-width:calc(100vw - 20px)!important;
    max-height:calc(100dvh - 20px)!important;
    overflow:auto!important;
    border-radius:22px!important;
  }
  .admin-modal-head{
    position:sticky;
    top:0;
    z-index:3;
    background:linear-gradient(135deg,#183114,#29481f);
    border-radius:20px 20px 0 0;
  }
  .admin-modal-body{
    max-height:none!important;
    overflow:visible!important;
  }
  .portal-menu button,
  .portal-menu a{
    min-height:46px;
    padding:12px 13px;
  }
  .portal-logo{
    margin-bottom:18px;
  }
}
@media(max-width:520px){
  .portal-main,
  .webadmin-main,
  .management-main{
    padding-inline:10px!important;
  }
  .portal-header h1{
    font-size:1.12rem!important;
  }
  .portal-header p{
    font-size:.82rem;
  }
  .portal-card,
  .admin-module-card,
  .management-module-card,
  .teacher-document-upload-card{
    padding:13px!important;
    border-radius:18px!important;
  }
  .admin-table,
  .result-marks-table,
  .attendance-table,
  .fee-ledger-table,
  .report-table{
    min-width:680px;
  }
  .launch-qa-item{
    grid-template-columns:36px 1fr;
    padding:13px;
  }
}
@media(hover:none){
  .ems-btn,
  .portal-menu button,
  .portal-menu a,
  .nav-link,
  .dropdown-button{
    min-height:44px;
  }
}


body.portal-body.ems-auth-pending .portal-mobile-menu-toggle,
body.portal-body.ems-auth-pending .portal-mobile-backdrop{
  display:none!important;
}


/* ============================================================
   Phase 3Q-A: Role Entry Separation / Admin Visibility Fix
   ============================================================ */
.role-entry-shell .ems-container{
  width:min(94vw,1120px);
}
.role-entry-head{
  text-align:center;
  margin-bottom:28px;
}
.role-entry-head .ems-title{
  margin-bottom:12px;
}
.role-entry-head .ems-subtitle{
  margin:0 auto;
  max-width:820px;
}
.role-select-public{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.role-select-admin{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.role-entry-note,
.admin-access-warning{
  margin:24px auto 0;
  width:min(860px,100%);
  display:grid;
  gap:5px;
  padding:16px 18px;
  border-radius:20px;
  border:1px solid rgba(249,196,84,.26);
  background:rgba(255,242,207,.09);
  text-align:center;
}
.role-entry-note strong,
.admin-access-warning strong{
  color:var(--ems-gold-soft);
  font-weight:950;
}
.role-entry-note span,
.admin-access-warning span{
  color:rgba(255,242,207,.76);
  font-weight:750;
  line-height:1.5;
}
.admin-entry-container{
  width:min(94vw,1080px)!important;
}
.admin-entry-head .ems-title{
  color:var(--ems-gold-soft);
}
.admin-access-warning{
  margin-bottom:22px;
  background:linear-gradient(135deg,rgba(249,196,84,.16),rgba(255,242,207,.06));
}
.admin-role-card{
  border-color:rgba(249,196,84,.34);
}
.role-entry-actions{
  display:flex;
  justify-content:center;
  gap:12px;
  flex-wrap:wrap;
  margin-top:28px;
}
@media(max-width:920px){
  .role-select-public,
  .role-select-admin{
    grid-template-columns:1fr!important;
  }
  .role-entry-actions .ems-btn{
    width:100%;
    justify-content:center;
  }
}


/* Phase 3V-B/C/D: Generated Documents Register */
.generated-documents-filter-row{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.generated-doc-stats{
  margin-top:16px;
}
.generated-documents-table-wrap{
  max-height:560px;
  overflow:auto;
}
.generated-documents-table td span{
  display:block;
  margin-top:3px;
  color:#64705d;
  font-size:.78rem;
  font-weight:700;
  word-break:break-all;
}
.generated-documents-table td strong{
  color:#20351a;
}
@media(max-width:900px){
  .generated-documents-filter-row{
    grid-template-columns:1fr;
  }
  .generated-documents-table{
    min-width:980px;
  }
}


/* Phase 3V-E: Generated document retry action */
.ems-btn-warning,
button.ems-btn-warning{
  background:#f3b433;
  color:#2f2100;
  border-color:#c38717;
}
.ems-btn-warning:hover,
button.ems-btn-warning:hover{
  filter:brightness(.96);
}


/* Phase 3W: Google Drive archive action */
.ems-btn-success,
button.ems-btn-success{
  background:#1f7a3a;
  color:#fff;
  border-color:#17602d;
}
.ems-btn-success:hover,
button.ems-btn-success:hover{
  filter:brightness(.96);
}


/* Phase 3W-D: Google OAuth My Drive settings */
.google-drive-oauth-card{
  margin:16px 0;
  border:1px solid rgba(43,78,34,.18);
  background:linear-gradient(135deg,rgba(255,255,255,.98),rgba(243,248,240,.96));
}
.generated-documents-drive-config{
  grid-template-columns:1.2fr 1fr;
}
.oauth-ok{
  color:#1f7a3a;
}
@media(max-width:900px){
  .generated-documents-drive-config{
    grid-template-columns:1fr;
  }
}


/* Phase 3X: System Health Check & Production Readiness */
.system-health-stats .portal-stat strong{
  letter-spacing:-.02em;
}
.system-health-layout{
  display:grid;
  grid-template-columns:1.45fr .95fr;
  gap:16px;
  align-items:start;
  margin-top:16px;
}
.system-health-card,
.production-readiness-card{
  border:1px solid rgba(43,78,34,.14);
  background:linear-gradient(135deg,rgba(255,255,255,.98),rgba(248,250,246,.96));
}
.system-health-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.system-health-item{
  border:1px solid rgba(44,62,80,.14);
  border-radius:16px;
  padding:14px;
  background:#fff;
  box-shadow:0 8px 22px rgba(20,32,18,.06);
}
.system-health-top{
  display:flex;
  justify-content:space-between;
  gap:10px;
  align-items:center;
  font-size:.78rem;
  color:var(--ems-muted,#607064);
  text-transform:uppercase;
  letter-spacing:.04em;
}
.system-health-top strong{
  border-radius:999px;
  padding:4px 9px;
  font-size:.72rem;
}
.system-health-item h4{
  margin:8px 0 5px;
  font-size:.98rem;
  color:var(--ems-green,#264d2c);
}
.system-health-item p{
  margin:0;
  color:#53605a;
  font-size:.88rem;
  line-height:1.45;
}
.system-health-item small{
  display:block;
  margin-top:8px;
  color:#7a6752;
}
.system-health-item.health-pass{
  border-color:rgba(31,122,58,.26);
}
.system-health-item.health-pass .system-health-top strong{
  background:rgba(31,122,58,.12);
  color:#1f7a3a;
}
.system-health-item.health-warn{
  border-color:rgba(181,127,36,.30);
}
.system-health-item.health-warn .system-health-top strong{
  background:rgba(181,127,36,.14);
  color:#8a5d14;
}
.system-health-item.health-fail{
  border-color:rgba(175,45,45,.28);
}
.system-health-item.health-fail .system-health-top strong{
  background:rgba(175,45,45,.12);
  color:#a32828;
}
.production-readiness-list{
  display:grid;
  gap:10px;
}
.production-check-item{
  display:flex;
  gap:10px;
  align-items:flex-start;
  padding:12px;
  border:1px solid rgba(43,78,34,.14);
  border-radius:14px;
  background:#fff;
  cursor:pointer;
}
.production-check-item input{
  margin-top:4px;
  accent-color:var(--ems-green,#2b5c34);
}
.production-check-item strong{
  display:block;
  color:var(--ems-green,#264d2c);
  font-size:.92rem;
}
.production-check-item small{
  display:block;
  color:#637167;
  font-size:.8rem;
  line-height:1.4;
  margin-top:3px;
}
.production-check-item.done{
  background:rgba(31,122,58,.06);
  border-color:rgba(31,122,58,.24);
}
@media(max-width:1100px){
  .system-health-layout,
  .system-health-grid{
    grid-template-columns:1fr;
  }
}


/* Phase 3Z: Backup / Restore Readiness / Production Lock */
.backup-production-lock-card{
  border:1px solid rgba(249,196,84,.22);
}
.backup-lock-layout{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
  align-items:start;
}
.backup-lock-span{
  grid-column:1/-1;
}
.production-lock-state{
  display:flex;
  justify-content:space-between;
  gap:16px;
  align-items:center;
  padding:16px;
  border-radius:18px;
  border:1px solid rgba(249,196,84,.18);
  background:rgba(255,242,207,.06);
}
.production-lock-state strong{
  display:block;
  font-size:1.1rem;
  color:#fff2cf;
}
.production-lock-state span,
.production-lock-state small{
  display:block;
  color:#d8cda9;
  margin-top:4px;
}
.production-lock-state.production-lock-on{
  border-color:rgba(249,196,84,.45);
  background:linear-gradient(135deg,rgba(249,196,84,.16),rgba(0,0,0,.16));
}
.production-lock-state.production-lock-off{
  border-color:rgba(91,178,103,.25);
  background:linear-gradient(135deg,rgba(91,178,103,.12),rgba(0,0,0,.14));
}
.backup-export-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin:12px 0;
}
.production-db-checklist{
  display:grid;
  gap:10px;
}
.production-db-check{
  display:grid;
  grid-template-columns:minmax(240px,1fr) minmax(220px,1fr) auto;
  gap:10px;
  align-items:center;
  padding:12px;
  border-radius:16px;
  border:1px solid rgba(249,196,84,.16);
  background:rgba(255,242,207,.06);
}
.production-db-check.done{
  border-color:rgba(91,178,103,.32);
  background:rgba(91,178,103,.10);
}
.production-db-check label{
  display:flex;
  gap:10px;
  align-items:center;
  margin:0;
}
.production-db-check strong{
  color:#fff2cf;
  display:block;
}
.production-db-check small{
  color:#d8cda9;
  display:block;
  margin-top:3px;
}
.restore-request-form{
  grid-template-columns:1fr 1fr;
}
.restore-reason-field{
  grid-column:1/-1;
}
@media(max-width:1050px){
  .backup-lock-layout,
  .restore-request-form{
    grid-template-columns:1fr;
  }
}
@media(max-width:760px){
  .production-lock-state,
  .production-db-check,
  .backup-export-grid{
    grid-template-columns:1fr;
    display:grid;
  }
}


/* Phase 3S: Security Lockdown & Leakage Audit */
.security-lockdown-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
  align-items:start;
}
.security-lockdown-span{
  grid-column:1/-1;
}
.security-lock-summary{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:12px;
  margin:16px 0;
}
.security-lock-summary > div{
  padding:14px;
  border-radius:16px;
  border:1px solid rgba(249,196,84,.20);
  background:rgba(255,242,207,.06);
}
.security-lock-summary strong{
  display:block;
  color:#fff2cf;
  font-size:1.1rem;
}
.security-lock-summary span{
  color:#d8cda9;
  display:block;
  margin-top:3px;
  font-size:.82rem;
}
.security-lock-summary.ok > div{
  border-color:rgba(96,210,126,.28);
}
.security-lock-summary.warn > div{
  border-color:rgba(249,196,84,.32);
}
.security-lock-summary.fail > div{
  border-color:rgba(255,129,116,.34);
}
.security-lock-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:4px 8px;
  border-radius:999px;
  font-size:.72rem;
  font-weight:900;
  letter-spacing:.04em;
  margin-right:8px;
}
.security-lock-pass{
  background:rgba(96,210,126,.15);
  color:#aaf0bd;
  border:1px solid rgba(96,210,126,.30);
}
.security-lock-warn{
  background:rgba(249,196,84,.16);
  color:#ffe2a0;
  border:1px solid rgba(249,196,84,.34);
}
.security-lock-fail{
  background:rgba(175,45,45,.18);
  color:#ffbbb3;
  border:1px solid rgba(255,129,116,.34);
}
.security-row-pass{
  background:rgba(96,210,126,.04);
}
.security-row-warn{
  background:rgba(249,196,84,.06);
}
.security-row-fail{
  background:rgba(175,45,45,.08);
}
.security-lock-grid{
  display:grid;
  gap:10px;
}
.security-lock-card{
  border-radius:16px;
  padding:12px;
  border:1px solid rgba(249,196,84,.18);
  background:rgba(255,242,207,.06);
}
.security-lock-card > div{
  display:flex;
  align-items:center;
  gap:6px;
  flex-wrap:wrap;
}
.security-lock-card strong{
  color:#fff2cf;
}
.security-lock-card span,
.security-lock-card small{
  color:#d8cda9;
  display:block;
  margin-top:5px;
}
.security-lock-card.ok{
  border-color:rgba(96,210,126,.26);
}
.security-lock-card.warn{
  border-color:rgba(249,196,84,.32);
}
.security-lock-card.fail{
  border-color:rgba(255,129,116,.34);
}
.security-lock-recommendations{
  display:grid;
  gap:8px;
  color:#fff2cf;
}
.security-lock-recommendations div{
  padding:10px 12px;
  border-radius:12px;
  background:rgba(249,196,84,.08);
  border:1px solid rgba(249,196,84,.16);
}
@media(max-width:1050px){
  .security-lockdown-grid,
  .security-lock-summary{
    grid-template-columns:1fr;
  }
}


/* Phase 3T: Class-Section Wise Subject Mapping */
.subject-mapping-workbench{
  display:grid;
  grid-template-columns:minmax(280px,.85fr) minmax(360px,1.15fr);
  gap:16px;
  align-items:start;
}
.subject-mapping-span{
  grid-column:1/-1;
}
.subject-mapping-filter-form{
  grid-template-columns:1fr;
}
.subject-checkbox-list{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:10px;
}
.subject-check-item{
  display:flex;
  gap:10px;
  align-items:flex-start;
  padding:12px;
  border-radius:16px;
  border:1px solid rgba(249,196,84,.18);
  background:rgba(255,242,207,.06);
  cursor:pointer;
  transition:.18s ease;
}
.subject-check-item:hover{
  transform:translateY(-1px);
  border-color:rgba(249,196,84,.34);
}
.subject-check-item.checked{
  border-color:rgba(249,196,84,.45);
  background:rgba(249,196,84,.12);
}
.subject-check-item input{
  margin-top:3px;
}
.subject-check-item strong{
  color:#fff2cf;
  display:block;
}
.subject-check-item small{
  color:#d8cda9;
  display:block;
  margin-top:3px;
}
.subject-mapping-view-toolbar{
  margin-bottom:12px;
}
@media(max-width:1050px){
  .subject-mapping-workbench{
    grid-template-columns:1fr;
  }
}


/* Phase 3U: Student Bulk Import Safety */
.student-import-preview .teacher-safe-note.danger{
  border-color:rgba(255,129,116,.38);
  background:rgba(175,45,45,.16);
  color:#ffddd9;
}
.student-import-preview .teacher-safe-note.success{
  border-color:rgba(96,210,126,.32);
  background:rgba(96,210,126,.12);
  color:#d9ffe1;
}


/* Phase 3U-A: True Preview Import + Expanded Excel Preview */
.student-import-preview-table{
  max-height:520px;
  overflow:auto;
}
.student-import-preview-table .admin-table{
  min-width:1200px;
}
.student-import-preview-table th,
.student-import-preview-table td{
  white-space:nowrap;
  max-width:240px;
  overflow:hidden;
  text-overflow:ellipsis;
}
.student-import-preview-table td:hover{
  white-space:normal;
  overflow:visible;
}


/* Phase 3U-C: Final Student Import Workflow */
.student-import-workflow-note{
  margin-top:10px;
}
.student-import-preview-table{
  max-height:520px;
  overflow:auto;
}
.student-import-preview-table .admin-table{
  min-width:980px;
}
.student-import-preview-table th,
.student-import-preview-table td{
  white-space:nowrap;
}


/* Phase 3V: Restore Student Photo Management UI */
.student-photo-management-card{
  overflow:hidden;
}
.student-photo-layout{
  display:grid;
  grid-template-columns:minmax(320px,.9fr) minmax(420px,1.1fr);
  gap:16px;
  align-items:start;
}
.student-photo-action-row{
  margin-top:12px;
  flex-wrap:wrap;
}
.student-photo-match-preview{
  margin-top:14px;
}
.student-photo-match-summary{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  padding:12px;
  border-radius:16px;
  background:rgba(255,242,207,.08);
  border:1px solid rgba(249,196,84,.18);
  margin-bottom:12px;
}
.student-photo-match-summary strong,
.student-photo-match-summary span{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 10px;
  border-radius:999px;
  background:rgba(0,0,0,.18);
  color:#fff2cf;
}
.student-photo-match-list{
  display:grid;
  gap:8px;
  max-height:360px;
  overflow:auto;
  padding-right:4px;
}
.student-photo-match-item{
  display:grid;
  grid-template-columns:1fr auto;
  gap:4px 10px;
  padding:10px 12px;
  border-radius:14px;
  border:1px solid rgba(255,242,207,.14);
  background:rgba(255,255,255,.04);
}
.student-photo-match-item strong{
  color:#fff2cf;
}
.student-photo-match-item span{
  color:#d9cfac;
}
.student-photo-match-item em{
  grid-column:2;
  grid-row:1 / span 2;
  align-self:center;
  font-style:normal;
  font-size:.75rem;
  text-transform:capitalize;
  padding:5px 8px;
  border-radius:999px;
  color:#0c271f;
  background:#f9c454;
}
.student-photo-match-item.unmatched em,
.student-photo-match-item.duplicate em{
  background:#ffb4a8;
}
.student-photo-match-item.skipped_existing em{
  background:#d9cfac;
}
.student-photo-roster-list{
  display:grid;
  gap:10px;
  max-height:650px;
  overflow:auto;
  padding-right:4px;
}
.student-photo-row{
  display:grid;
  grid-template-columns:58px 1fr auto;
  gap:12px;
  align-items:center;
  padding:12px;
  border-radius:18px;
  border:1px solid rgba(249,196,84,.16);
  background:rgba(255,242,207,.06);
}
.student-photo-avatar{
  width:54px;
  height:54px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  border:2px solid rgba(249,196,84,.38);
  background:linear-gradient(145deg,#0c3b2e,#06221b);
  color:#fff2cf;
  font-weight:800;
  letter-spacing:.04em;
}
.student-photo-avatar img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.student-photo-info strong{
  display:block;
  color:#fff2cf;
}
.student-photo-info span,
.student-photo-info small{
  display:block;
  color:#d8cda9;
}
.student-photo-file-label{
  position:relative;
  overflow:hidden;
  cursor:pointer;
}
.student-photo-file-label input{
  position:absolute;
  inset:0;
  opacity:0;
  cursor:pointer;
}
@media(max-width:1050px){
  .student-photo-layout{
    grid-template-columns:1fr;
  }
  .student-photo-row{
    grid-template-columns:54px 1fr;
  }
  .student-photo-file-label{
    grid-column:1/-1;
    justify-self:start;
  }
}



@media(max-width:920px){
  /* Mobile drawer must escape any ancestor stacking context.
     The verified-entry opacity animation uses animation-fill-mode:both and
     can retain a stacking context in mobile browsers even after it finishes. */
  body.portal-body.ems-auth-verified .portal-layout{
    animation:none!important;
    opacity:1!important;
    transform:none!important;
    filter:none!important;
  }

  .portal-layout,
  .webadmin-layout,
  .management-layout,
  .teacher-layout,
  .student-layout,
  .parent-layout{
    position:relative;
    z-index:auto!important;
    isolation:auto!important;
  }

  .portal-sidebar,
  .webadmin-sidebar,
  .management-sidebar{
    visibility:hidden;
    opacity:0;
    pointer-events:none;
    will-change:transform;
  }

  body.ems-mobile-nav-open .portal-sidebar,
  body.ems-mobile-nav-open .webadmin-sidebar,
  body.ems-mobile-nav-open .management-sidebar{
    visibility:visible!important;
    opacity:1!important;
    pointer-events:auto!important;
    transform:translateX(0)!important;
  }

  body.ems-mobile-nav-open .portal-mobile-backdrop{
    z-index:10010!important;
  }

  body.ems-mobile-nav-open .portal-sidebar,
  body.ems-mobile-nav-open .webadmin-sidebar,
  body.ems-mobile-nav-open .management-sidebar{
    z-index:10020!important;
  }

  .portal-mobile-menu-toggle{
    z-index:10030!important;
  }
}

/* Phase 4A-LC: Leaving Certificate Exit Rule */
.lc-exit-rule-note{
  margin:12px 0 16px;
}


/* Phase 4B - Admission Management */
.admission-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.admission-tab-panels .admission-subpanel{display:none}.admission-tab-panels .admission-subpanel.active{display:block}.admission-filter-grid{display:grid;grid-template-columns:180px 180px minmax(240px,1fr);gap:12px;margin:0 0 16px}.admission-form-section{border:1px solid rgba(249,196,84,.16);border-radius:18px;padding:16px;margin-top:16px;background:rgba(0,0,0,.08)}.admission-form-section .module-header{margin-bottom:12px}.admission-form-section .module-header h3{font-size:19px;margin:0 0 4px}.admission-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.admission-field-wide{grid-column:1/-1}.admission-form-actions{margin-top:18px;justify-content:flex-end}.admission-conversion-form input[readonly],.admission-conversion-form textarea[readonly]{opacity:.82;background:rgba(255,255,255,.04)}
@media(max-width:1000px){.admission-filter-grid,.admission-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admission-field-wide{grid-column:1/-1}}
@media(max-width:680px){.admission-filter-grid,.admission-form-grid{grid-template-columns:1fr}.admission-field-wide{grid-column:auto}.admission-form-actions{justify-content:stretch}.admission-form-actions .ems-btn{width:100%}}


/* ============================================================
   EMS cPanel Mobile Refinement — final portal pass
   ============================================================ */
@media(max-width:920px){
  body.portal-body{overflow-x:hidden;}
  .portal-layout,.portal-main,.portal-card,.admin-module-card,.management-module-card{min-width:0;max-width:100%;}
  .portal-main,.webadmin-main,.management-main{padding-left:max(12px,env(safe-area-inset-left))!important;padding-right:max(12px,env(safe-area-inset-right))!important;}
  .portal-mobile-menu-toggle{top:max(12px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));}
  .portal-sidebar,.webadmin-sidebar,.management-sidebar{padding-top:max(20px,env(safe-area-inset-top))!important;padding-bottom:max(28px,env(safe-area-inset-bottom))!important;}
  .portal-header h1,.webadmin-topbar h1,.management-topbar h1{overflow-wrap:anywhere;}
  .admin-table-wrap,.fee-table-wrap,.teacher-table-wrap,.report-output-card{overscroll-behavior-x:contain;scrollbar-width:thin;}
  .admin-modal-window{margin-bottom:max(10px,env(safe-area-inset-bottom));}
  .ems-btn,.portal-menu button,.portal-menu a{min-height:44px;}
  .portal-card p,.admin-module-card p,.management-module-card p,.ems-field label{overflow-wrap:anywhere;}
}
@media(max-width:600px){
  .login-shell{padding:18px 12px;align-items:center;}
  .login-card{width:100%;padding:22px!important;border-radius:22px!important;}
  .login-brand-mark{width:68px;height:68px;}
  .login-brand-mark img{width:54px;height:54px;}
  .role-select-grid{gap:12px!important;}
  .portal-main,.webadmin-main,.management-main{padding-top:68px!important;}
  .portal-header,.webadmin-topbar,.management-topbar{padding:13px!important;border-radius:18px!important;}
  .portal-header h1{padding-left:58px;font-size:1.08rem!important;}
  .admin-table,.result-marks-table,.attendance-table,.fee-ledger-table,.report-table{min-width:640px!important;}
  .admin-table th,.admin-table td{padding:9px 10px!important;font-size:.82rem;}
  .portal-mobile-menu-toggle b{font-size:.78rem;}
}
@media(max-width:390px){
  .portal-main,.webadmin-main,.management-main{padding-inline:8px!important;}
  .portal-card,.admin-module-card,.management-module-card{padding:12px!important;}
  .login-card{padding:18px!important;}
}

/* ============================================================
   EMS Portal Mobile Layout Refinement — shared role shell
   Applies only to phone/tablet widths. Desktop remains unchanged.
   ============================================================ */

@media(max-width:920px){

  /* ----- Stable mobile app bar ----- */
  body.portal-body.ems-auth-verified::before{
    content:"";
    position:fixed;
    inset:0 0 auto 0;
    height:66px;
    z-index:10000;
    pointer-events:none;
    background:linear-gradient(180deg,rgba(16,35,13,.98),rgba(24,50,18,.94));
    border-bottom:1px solid rgba(249,196,84,.22);
    box-shadow:0 10px 30px rgba(0,0,0,.18);
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
  }

  .portal-mobile-menu-toggle{
    top:max(9px,env(safe-area-inset-top))!important;
    left:max(10px,env(safe-area-inset-left))!important;
    min-height:46px!important;
    padding:8px 13px!important;
    gap:8px!important;
    box-shadow:0 8px 24px rgba(0,0,0,.24)!important;
  }

  .portal-mobile-menu-icon{
    width:19px!important;
    height:14px!important;
    flex-basis:19px!important;
  }

  .portal-mobile-menu-icon span{
    width:19px!important;
  }

  .portal-mobile-menu-toggle b{
    font-size:.79rem!important;
  }

  /* ----- Main page spacing ----- */
  .portal-main,
  .webadmin-main,
  .management-main{
    padding-top:78px!important;
    padding-bottom:28px!important;
  }

  /* The fixed menu button is now in its own app bar,
     so the role header no longer needs to become sticky. */
  .portal-header,
  .webadmin-topbar,
  .management-topbar{
    position:relative!important;
    top:auto!important;
    z-index:1!important;
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    gap:7px 10px!important;
    align-items:start!important;
    padding:12px 13px!important;
    margin-bottom:12px!important;
    border-radius:18px!important;
    box-shadow:0 10px 28px rgba(0,0,0,.16)!important;
    backdrop-filter:none!important;
  }

  .portal-header > div,
  .webadmin-topbar > div,
  .management-topbar > div{
    display:contents!important;
  }

  .portal-header h1,
  .webadmin-topbar h1,
  .management-topbar h1{
    grid-column:1;
    grid-row:1;
    align-self:center;
    margin:0!important;
    padding-left:0!important;
    font-size:1.06rem!important;
    line-height:1.2!important;
  }

  .portal-header p,
  .webadmin-topbar p,
  .management-topbar p{
    grid-column:1 / -1;
    grid-row:2;
    margin:0!important;
    font-size:.79rem!important;
    line-height:1.4!important;
    color:rgba(255,242,207,.72)!important;
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
    overflow:hidden;
  }

  .portal-header .ems-btn,
  .webadmin-topbar .ems-btn,
  .management-topbar .ems-btn{
    grid-column:2;
    grid-row:1;
    width:auto!important;
    min-height:38px!important;
    align-self:center!important;
    padding:8px 11px!important;
    font-size:.75rem!important;
    white-space:nowrap;
  }

  /* ----- Shared cards / typography ----- */
  .portal-card,
  .admin-module-card,
  .management-module-card,
  .teacher-document-upload-card,
  .fee-management-card{
    padding:14px!important;
    border-radius:18px!important;
  }

  .dashboard-card{
    min-height:0!important;
  }

  .dashboard-grid,
  .management-dashboard-grid,
  .teacher-portal-grid{
    gap:12px!important;
  }

  .ems-eyebrow{
    font-size:.68rem!important;
    letter-spacing:.095em!important;
    margin-bottom:5px!important;
  }

  .dashboard-card h3,
  .module-header h3,
  .portal-card h3,
  .teacher-document-upload-card h3{
    font-size:1.04rem!important;
    line-height:1.25!important;
    margin-bottom:7px!important;
  }

  .portal-card p,
  .admin-module-card p,
  .management-module-card p,
  .dashboard-help-text{
    font-size:.84rem!important;
    line-height:1.48!important;
  }

  /* ----- Shared role hero ----- */
  .webadmin-hero,
  .management-hero{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:11px!important;
    padding:15px!important;
    margin-bottom:12px!important;
    border-radius:19px!important;
  }

  .webadmin-hero h2,
  .management-hero h2{
    margin:0 0 6px!important;
    font-size:clamp(1.42rem,6.8vw,1.9rem)!important;
    line-height:1.08!important;
    letter-spacing:-.025em;
  }

  .webadmin-hero p,
  .management-hero p{
    margin:0!important;
    font-size:.84rem!important;
    line-height:1.45!important;
  }

  .admin-id-card{
    min-width:0!important;
    width:100%!important;
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:12px!important;
    padding:10px 12px!important;
    border-radius:15px!important;
    text-align:left!important;
  }

  .admin-id-card span{
    margin:0!important;
    font-size:.75rem!important;
  }

  .admin-id-card strong{
    margin:0!important;
    font-size:1.08rem!important;
    line-height:1.15!important;
    overflow-wrap:anywhere;
    text-align:right;
  }

  /* ----- Stats become compact 2-column tiles ----- */
  .portal-stats,
  .webadmin-stats,
  .management-stats,
  .management-setup-stats,
  .report-stat-grid,
  .promotion-stat-grid,
  .security-stat-grid,
  .launch-qa-stat-grid,
  .fee-summary-grid,
  .fee-report-summary-grid,
  .result-public-grid,
  .certificate-public-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:9px!important;
    margin:12px 0!important;
  }

  .portal-stat,
  .webadmin-stats .portal-stat,
  .management-stats .portal-stat{
    min-height:78px!important;
    padding:12px!important;
    display:flex!important;
    flex-direction:column!important;
    justify-content:center!important;
  }

  .portal-stat strong,
  .management-stats .portal-stat strong,
  .report-stat-card strong,
  .promotion-stat-card strong,
  .security-stat-card strong{
    font-size:1.12rem!important;
    line-height:1.12!important;
    overflow-wrap:anywhere;
  }

  .portal-stat span{
    margin-top:4px;
    font-size:.73rem!important;
    line-height:1.25!important;
  }

  /* ----- Buttons / actions ----- */
  .ems-btn{
    min-height:44px;
    padding:10px 14px;
    font-size:.84rem;
  }

  .quick-action-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:8px!important;
  }

  .quick-action-grid .ems-btn{
    width:100%!important;
    min-height:44px!important;
    padding:9px 10px!important;
    font-size:.76rem!important;
    line-height:1.18!important;
    white-space:normal!important;
  }

  .module-header,
  .dashboard-card-head{
    gap:9px!important;
    margin-bottom:11px!important;
  }

  .module-actions,
  .report-hero-actions,
  .promotion-actions,
  .security-actions,
  .admin-toolbar,
  .teacher-toolbar,
  .fee-toolbar,
  .report-action-row,
  .result-action-row,
  .exam-upload-actions,
  .notice-actions,
  .certificate-actions{
    gap:8px!important;
  }

  /* ----- Management setup roadmap ----- */
  .setup-roadmap{
    gap:10px!important;
  }

  .setup-progress-strip{
    grid-template-columns:100px minmax(0,1fr)!important;
    gap:11px!important;
    padding:11px 12px!important;
    border-radius:15px!important;
  }

  .setup-progress-strip strong{
    font-size:1.35rem!important;
  }

  .setup-progress-strip span{
    font-size:.72rem!important;
    margin-top:3px!important;
  }

  .setup-progress-bar{
    height:10px!important;
  }

  .setup-step-list{
    gap:8px!important;
  }

  .setup-step{
    grid-template-columns:30px 28px minmax(0,1fr)!important;
    gap:8px!important;
    padding:10px 11px!important;
    border-radius:15px!important;
    align-items:center!important;
  }

  .setup-step b{
    font-size:.72rem!important;
  }

  .setup-step > span{
    width:26px!important;
    height:26px!important;
    font-size:.78rem!important;
  }

  .setup-step strong{
    font-size:.86rem!important;
    line-height:1.3!important;
  }

  .setup-step small{
    font-size:.73rem!important;
    line-height:1.35!important;
  }

  .setup-step .ems-btn{
    grid-column:3!important;
    width:auto!important;
    justify-self:start!important;
    min-height:38px!important;
    padding:8px 11px!important;
    font-size:.72rem!important;
  }

  .operational-status-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:9px!important;
  }

  .operational-status-card{
    padding:11px!important;
    border-radius:15px!important;
  }

  .operational-status-card strong{
    font-size:1.08rem!important;
  }

  .operational-status-card span{
    font-size:.8rem!important;
    margin-top:5px!important;
  }

  .operational-status-card small{
    font-size:.71rem!important;
    line-height:1.35!important;
  }

  /* ----- Forms / detail cards ----- */
  .teacher-self-form,
  .teacher-inline-form,
  .compact-upload-form,
  .admin-edit-form,
  .admin-detail-view{
    gap:10px!important;
  }

  .ems-field label{
    margin-bottom:5px!important;
    font-size:.79rem!important;
  }

  .ems-input,
  .ems-select,
  .ems-textarea,
  select.ems-input,
  input[type="file"]{
    min-height:44px!important;
  }

  .teacher-detail-grid,
  .admin-identity-grid{
    gap:8px!important;
  }

  .teacher-detail-grid > div,
  .credential-box > div,
  .admin-identity-grid div,
  .teacher-assignment-list > div,
  .teacher-document-list > div{
    padding:10px 11px!important;
    border-radius:14px!important;
  }

  /* ----- Mobile drawer: one scroll surface, no nested menu scroll ----- */
  .portal-sidebar,
  .webadmin-sidebar,
  .management-sidebar{
    width:min(88vw,330px)!important;
    max-width:330px!important;
    padding:
      calc(74px + env(safe-area-inset-top))
      12px
      max(22px,env(safe-area-inset-bottom))
      !important;
    scroll-padding-top:12px;
  }

  .portal-logo{
    gap:10px!important;
    margin-bottom:14px!important;
  }

  .portal-logo img{
    width:44px!important;
    height:44px!important;
  }

  .portal-logo strong{
    font-size:.9rem!important;
    line-height:1.15!important;
  }

  .portal-logo span{
    font-size:.7rem!important;
  }

  .portal-menu{
    max-height:none!important;
    overflow:visible!important;
    gap:8px!important;
  }

  .portal-menu-group{
    gap:5px!important;
    padding:8px!important;
    border-radius:16px!important;
  }

  .portal-menu-group > span{
    padding:0 4px 1px!important;
    font-size:.64rem!important;
    letter-spacing:.095em!important;
  }

  .portal-menu button,
  .portal-menu a{
    min-height:42px!important;
    padding:9px 11px!important;
    border-radius:12px!important;
    font-size:.79rem!important;
    line-height:1.2!important;
  }

  /* Horizontal data remains scrollable instead of crushing desktop tables. */
  .admin-table-wrap,
  .report-output-card,
  .fee-table-wrap,
  .teacher-table-wrap{
    border-radius:14px!important;
  }
}

@media(max-width:600px){

  .portal-main,
  .webadmin-main,
  .management-main{
    padding-left:10px!important;
    padding-right:10px!important;
  }

  .portal-header,
  .webadmin-topbar,
  .management-topbar{
    padding:11px 12px!important;
  }

  .portal-header h1,
  .webadmin-topbar h1,
  .management-topbar h1{
    font-size:1rem!important;
  }

  .portal-header .ems-btn,
  .webadmin-topbar .ems-btn,
  .management-topbar .ems-btn{
    min-height:36px!important;
    padding:7px 10px!important;
    font-size:.7rem!important;
  }

  .portal-card,
  .admin-module-card,
  .management-module-card,
  .teacher-document-upload-card,
  .fee-management-card{
    padding:12px!important;
    border-radius:17px!important;
  }

  .webadmin-hero,
  .management-hero{
    padding:13px!important;
  }

  .webadmin-hero h2,
  .management-hero h2{
    font-size:clamp(1.32rem,6.5vw,1.72rem)!important;
  }

  .portal-stats,
  .webadmin-stats,
  .management-stats,
  .management-setup-stats{
    gap:8px!important;
  }

  .portal-stat,
  .webadmin-stats .portal-stat,
  .management-stats .portal-stat{
    min-height:72px!important;
    padding:10px!important;
  }

  .portal-stat strong,
  .management-stats .portal-stat strong{
    font-size:1.02rem!important;
  }

  .quick-action-grid{
    gap:7px!important;
  }

  .setup-progress-strip{
    grid-template-columns:88px minmax(0,1fr)!important;
  }
}

@media(max-width:380px){

  .portal-mobile-menu-toggle{
    width:48px!important;
    min-width:48px!important;
    padding:0!important;
  }

  .portal-mobile-menu-toggle b{
    position:absolute!important;
    width:1px!important;
    height:1px!important;
    overflow:hidden!important;
    clip:rect(0 0 0 0)!important;
    clip-path:inset(50%)!important;
    white-space:nowrap!important;
  }

  .portal-header,
  .webadmin-topbar,
  .management-topbar{
    grid-template-columns:minmax(0,1fr) auto!important;
  }

  .portal-header h1,
  .webadmin-topbar h1,
  .management-topbar h1{
    font-size:.95rem!important;
  }

  .portal-header .ems-btn,
  .webadmin-topbar .ems-btn,
  .management-topbar .ems-btn{
    max-width:112px;
    white-space:normal;
    line-height:1.1!important;
  }

  .quick-action-grid{
    grid-template-columns:1fr!important;
  }

  .setup-progress-strip{
    grid-template-columns:1fr!important;
  }

  .operational-status-grid{
    grid-template-columns:1fr!important;
  }
}

/* ============================================================
   Student Portal — official profile photo display
   Uses the existing private student-photos bucket and photo_path.
   ============================================================ */
.student-hero-identity{
  min-width:0;
  display:flex;
  align-items:center;
  gap:18px;
}
.student-hero-identity>div:last-child{
  min-width:0;
}
.student-portal-photo{
  width:92px;
  height:92px;
  flex:0 0 92px;
  border-width:3px;
  box-shadow:0 12px 30px rgba(0,0,0,.24);
  font-size:1.45rem;
}
.student-profile-photo-card{
  display:flex;
  align-items:center;
  gap:16px;
  margin:0 0 18px;
  padding:14px 16px;
  border:1px solid rgba(249,196,84,.18);
  border-radius:18px;
  background:rgba(255,242,207,.055);
}
.student-profile-photo{
  width:78px;
  height:78px;
  flex-basis:78px;
  font-size:1.2rem;
}
.student-profile-photo-copy{
  min-width:0;
  display:grid;
  gap:3px;
}
.student-profile-photo-copy>span{
  color:var(--ems-gold);
  font-size:.72rem;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.student-profile-photo-copy strong{
  color:#fff2cf;
  font-size:1.08rem;
  line-height:1.2;
  overflow-wrap:anywhere;
}
.student-profile-photo-copy small{
  color:#d8cda9;
  font-size:.8rem;
  line-height:1.35;
}

@media(max-width:920px){
  .student-hero-identity{
    gap:13px;
  }
  .student-portal-photo{
    width:76px;
    height:76px;
    flex-basis:76px;
    font-size:1.18rem;
  }
  .student-dashboard-hero .admin-id-card{
    margin-top:0!important;
  }
  .student-profile-photo-card{
    gap:12px;
    margin-bottom:14px;
    padding:11px 12px;
    border-radius:15px;
  }
  .student-profile-photo{
    width:66px;
    height:66px;
    flex-basis:66px;
    font-size:1rem;
  }
  .student-profile-photo-copy strong{
    font-size:.98rem;
  }
  .student-profile-photo-copy small{
    font-size:.74rem;
  }
}

@media(max-width:430px){
  .student-hero-identity{
    align-items:flex-start;
  }
  .student-portal-photo{
    width:68px;
    height:68px;
    flex-basis:68px;
  }
  .student-hero-identity h2{
    margin-top:1px!important;
  }
  .student-profile-photo-card{
    align-items:center;
  }
}

@media(max-width:360px){
  .student-portal-photo{
    width:60px;
    height:60px;
    flex-basis:60px;
    font-size:.9rem;
  }
  .student-profile-photo-copy>span{
    font-size:.64rem;
  }
  .student-profile-photo-copy strong{
    font-size:.9rem;
  }
}

/* ============================================================
   Template Control Centre — governance only
   Visual certificate positioning lives in Certificate Layout Setup.
   ============================================================ */
.template-control-centre-card{min-width:0;}
.template-centre-heading{align-items:flex-start;}
.template-centre-guide{margin:12px 0 14px;line-height:1.55;}
.template-centre-stats{grid-template-columns:repeat(3,minmax(0,1fr))!important;max-width:760px;}
.template-stat-help{min-height:88px!important;}
.template-stat-help small{display:block;margin-top:5px;color:#d8cda9;font-size:.72rem;line-height:1.3;}
.template-centre-filter-row{margin:14px 0;grid-template-columns:280px minmax(0,1fr);}
.template-mobile-steps{display:none;}
.template-list-card,.template-governance-summary,.template-rules-card,.template-testing-card{border:1px solid rgba(249,196,84,.16);background:linear-gradient(155deg,rgba(255,242,207,.06),rgba(0,0,0,.09));border-radius:18px;}
.template-master-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:9px;}
.template-master-card{width:100%;min-width:0;text-align:left;border:1px solid rgba(249,196,84,.16);background:rgba(0,0,0,.13);color:inherit;border-radius:14px;padding:12px;cursor:pointer;transition:.18s ease;}
.template-master-card:hover,.template-master-card.active{border-color:rgba(249,196,84,.58);background:rgba(249,196,84,.075);transform:translateY(-1px);}
.template-master-title strong{display:block;color:#fff2cf;font-size:.92rem;line-height:1.25;}
.template-master-title span,.template-master-card small{display:block;color:#d8cda9;font-size:.73rem;line-height:1.35;margin-top:4px;}
.template-master-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px;}
.template-advanced-zone{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(310px,.72fr);gap:14px;margin-top:14px;align-items:start;}
.template-testing-card{grid-column:1;grid-row:1;}.template-rules-card{grid-column:2;grid-row:1;}
.template-rules-card,.template-testing-card{padding:0!important;overflow:hidden;margin-top:0!important;}
.template-rules-card>summary,.template-testing-card>summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 13px;border-bottom:1px solid rgba(249,196,84,.14);background:rgba(0,0,0,.09);color:#fff2cf;font-weight:800;font-size:.84rem;}
.template-rules-card>summary::-webkit-details-marker,.template-testing-card>summary::-webkit-details-marker{display:none;}
.template-rules-card>summary::after,.template-testing-card>summary::after{content:'+';font-size:1.2rem;color:var(--ems-gold);}.template-rules-card[open]>summary::after,.template-testing-card[open]>summary::after{content:'−';}
.template-rules-card>summary>span,.template-testing-card>summary>span{display:block;color:#d8cda9;font-weight:500;font-size:.73rem;line-height:1.35;max-width:52ch;}
.template-details-body{padding:13px;}.template-rules-form{grid-template-columns:1fr 1fr;}.template-editor-notes{grid-column:1/-1;}
.template-check-toggle{display:flex;align-items:center;gap:8px;padding:10px 11px;border:1px solid rgba(249,196,84,.14);border-radius:11px;background:rgba(0,0,0,.09);color:#e9dfbe;font-size:.76rem;}.template-check-toggle input{accent-color:var(--ems-gold,#f9c454);}
.template-testing-list{display:grid;gap:8px;}.template-test-row{display:grid;grid-template-columns:minmax(180px,1fr) 135px minmax(160px,1fr) auto;gap:8px;align-items:center;border:1px solid rgba(249,196,84,.14);border-radius:12px;padding:10px;background:rgba(0,0,0,.09);}.template-test-row strong{display:block;color:#fff2cf;font-size:.8rem;}.template-test-row small{display:block;color:#d8cda9;font-size:.68rem;margin-top:3px;}
@media(max-width:1120px){.template-advanced-zone{grid-template-columns:1fr;}.template-testing-card,.template-rules-card{grid-column:1;grid-row:auto;}.template-testing-card{order:1;}.template-rules-card{order:2;}}
@media(max-width:920px){.template-centre-stats{grid-template-columns:repeat(3,minmax(0,1fr))!important;max-width:none;}.template-stat-help{min-height:76px!important;}.template-stat-help small{display:none;}.template-mobile-steps{display:flex;gap:6px;overflow-x:auto;padding:4px 0 10px;scrollbar-width:none;-webkit-overflow-scrolling:touch;}.template-mobile-steps::-webkit-scrollbar{display:none;}.template-mobile-steps button{flex:0 0 auto;min-height:42px;border:1px solid rgba(249,196,84,.16);background:rgba(0,0,0,.11);color:#d8cda9;border-radius:12px;padding:8px 11px;font-weight:800;font-size:.72rem;}.template-mobile-steps button.active{background:var(--ems-gold,#f9c454);border-color:var(--ems-gold,#f9c454);color:#182719;}.template-centre-filter-row{grid-template-columns:1fr!important;}.template-pane{display:none!important;}.template-pane.template-mobile-active{display:block!important;}.template-master-list{grid-template-columns:1fr;}.template-advanced-zone.template-mobile-active{display:grid!important;grid-template-columns:1fr;gap:10px;margin-top:0;}.template-rules-form{grid-template-columns:1fr!important;}.template-test-row{grid-template-columns:1fr;}.template-test-row .ems-btn{width:100%;}}
@media(max-width:600px){.template-centre-heading .module-actions{display:grid!important;grid-template-columns:1fr 1fr!important;width:100%;}.template-centre-stats{gap:7px!important;}.template-stat-help{min-height:68px!important;padding:9px!important;}.template-stat-help strong{font-size:1rem!important;}.template-stat-help span{font-size:.68rem!important;}.template-rules-card>summary,.template-testing-card>summary{display:grid;grid-template-columns:1fr auto;font-size:.78rem;padding:10px 11px;}.template-rules-card>summary>span,.template-testing-card>summary>span{grid-column:1/-1;}}

/* ============================================================
   EMS Certificate Layout Setup — connected live print designer
   ============================================================ */
.certificate-layout-shell{
  display:grid;
  grid-template-columns:minmax(340px,.82fr) minmax(520px,1.28fr);
  gap:18px;
  align-items:start;
}
.certificate-layout-controls-card,
.certificate-layout-preview-card{margin-top:0!important;min-width:0;}
.certificate-layout-preview-card{position:sticky;top:84px;}
.certificate-layout-note{margin-bottom:14px!important;}

.certificate-layout-sync-card{display:grid;gap:4px;margin:0 0 14px;padding:12px 13px;border:1px solid rgba(249,196,84,.20);border-radius:14px;background:rgba(249,196,84,.075);}
.certificate-layout-sync-card strong{color:#f9c454;font-size:.88rem;}
.certificate-layout-sync-card span{color:rgba(255,242,207,.74);font-size:.78rem;line-height:1.45;}

.certificate-layout-type-select{max-width:420px;margin-bottom:14px;}
.certificate-layout-settings{display:grid;gap:12px;}
.certificate-layout-section{
  border:1px solid rgba(249,196,84,.16);
  background:rgba(0,0,0,.10);
  border-radius:16px;
  padding:13px;
}
.certificate-layout-section-head{display:grid;gap:3px;margin-bottom:11px;}
.certificate-layout-section-head strong{color:#fff1bf;font-size:1rem;}
.certificate-layout-section-head span{color:rgba(255,242,207,.68);font-size:.84rem;line-height:1.45;}
.certificate-layout-control-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
}
.certificate-layout-actions,
.certificate-layout-global-actions{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap;}
.certificate-layout-global-actions{padding-top:12px;border-top:1px solid rgba(249,196,84,.15);}
.certificate-layout-storage-note{margin:9px 0 0;color:rgba(255,242,207,.62);font-size:.78rem;line-height:1.45;}
.certificate-layout-preview-frame-wrap{
  min-height:850px;
  height:min(850px,78vh);
  overflow:hidden;
  border-radius:16px;
  border:1px solid rgba(249,196,84,.20);
  background:#161d13;
}
.certificate-layout-preview-frame-wrap iframe{display:block;width:100%;height:100%;border:0;background:#f4f0df;}

/* Template Control Centre now governs checks + archive rules only. */
.template-governance-workspace{
  display:grid;
  grid-template-columns:minmax(250px,.78fr) minmax(0,1.22fr);
  gap:14px;
  align-items:start;
}
.template-governance-summary{margin-top:0!important;}
.template-governance-status{
  display:grid;
  gap:5px;
  padding:16px;
  border-radius:16px;
  border:1px solid rgba(249,196,84,.18);
  background:rgba(249,196,84,.07);
}
.template-governance-status strong{color:#f9c454;font-size:1.05rem;}
.template-governance-status span{color:rgba(255,242,207,.72);line-height:1.55;}

@media(max-width:1180px){
  .certificate-layout-shell{grid-template-columns:1fr;}
  .certificate-layout-preview-card{position:relative;top:auto;}
  .certificate-layout-preview-frame-wrap{height:720px;min-height:720px;}
}
@media(max-width:920px){
  .template-governance-workspace{grid-template-columns:1fr;}
  .template-governance-workspace .template-pane{display:none;}
  .template-governance-workspace .template-pane.template-mobile-active{display:block;}
  .certificate-layout-control-grid{grid-template-columns:1fr 1fr;}
  .certificate-layout-preview-frame-wrap{height:660px;min-height:660px;}
}
@media(max-width:620px){
  .certificate-layout-control-grid{grid-template-columns:1fr;}
  .certificate-layout-section{padding:11px;}
  .certificate-layout-global-actions,.certificate-layout-actions{display:grid;grid-template-columns:1fr;}
  .certificate-layout-global-actions .ems-btn,.certificate-layout-actions .ems-btn{width:100%;}
  .certificate-layout-preview-frame-wrap{height:590px;min-height:590px;border-radius:13px;}
  .certificate-layout-type-select{max-width:none;}
}
@media(max-width:390px){
  .certificate-layout-preview-frame-wrap{height:540px;min-height:540px;}
}


/* EMS privileged-admin MFA */
.ems-mfa-window{width:min(650px,calc(100vw - 28px));}
.ems-mfa-message{margin-top:0;line-height:1.55;}
.ems-mfa-enrol-grid{
  display:grid;
  grid-template-columns:190px minmax(0,1fr);
  gap:16px;
  align-items:center;
  padding:14px;
  margin:12px 0 16px;
  border:1px solid rgba(249,196,84,.2);
  border-radius:16px;
  background:rgba(0,0,0,.12);
}
.ems-mfa-qr{
  display:flex;
  justify-content:center;
  align-items:center;
  min-height:180px;
  background:#fff;
  border-radius:12px;
  padding:10px;
}
.ems-mfa-qr img{display:block;width:160px;height:160px;max-width:100%;object-fit:contain;}
.ems-mfa-secret{min-width:0;}
.ems-mfa-secret code{
  display:block;
  margin:8px 0;
  padding:10px;
  border-radius:10px;
  overflow-wrap:anywhere;
  word-break:break-all;
  background:rgba(0,0,0,.2);
}
.ems-mfa-secret p,.ems-mfa-recovery-note{font-size:.86rem;line-height:1.5;opacity:.8;}
.ems-mfa-factor-list{display:grid;gap:9px;margin:14px 0;}
.ems-mfa-factor-choice{justify-content:flex-start;width:100%;}
.ems-mfa-manager-list{display:grid;gap:9px;margin:14px 0;}
.ems-mfa-manager-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px;
  border:1px solid rgba(249,196,84,.16);
  border-radius:13px;
  background:rgba(0,0,0,.1);
}
.ems-mfa-manager-row>div{display:grid;gap:3px;min-width:0;}
.ems-mfa-manager-row span{font-size:.8rem;opacity:.72;}
@media(max-width:600px){
  .ems-mfa-enrol-grid{grid-template-columns:1fr;}
  .ems-mfa-qr{min-height:160px;}
  .ems-mfa-manager-row{align-items:flex-start;flex-direction:column;}
  .ems-mfa-manager-row .ems-btn{width:100%;}
}


/* ============================================================
   P3 Academic Bulk Data Import
   ============================================================ */
.bulk-academic-import-card{min-width:0;}
.bulk-import-tabs{margin:14px 0;display:flex;gap:8px;flex-wrap:wrap;}
.bulk-import-panel{display:none;}
.bulk-import-panel.active{display:block;}
.bulk-import-stats{grid-template-columns:repeat(4,minmax(0,1fr));}
.bulk-import-work-card,.bulk-import-history-card{margin-top:0!important;}
.bulk-import-step-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin:0 0 14px;}
.bulk-import-step-strip span{display:flex;align-items:center;gap:7px;min-height:48px;padding:8px 10px;border:1px solid rgba(249,196,84,.15);border-radius:12px;background:rgba(0,0,0,.10);font-size:.74rem;line-height:1.25;color:#e9dfbe;}
.bulk-import-step-strip strong{display:grid;place-items:center;flex:0 0 25px;width:25px;height:25px;border-radius:50%;background:rgba(249,196,84,.14);color:var(--ems-gold,#f9c454);}
.bulk-import-setup-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;}
.bulk-import-setup-grid .form-span-2{grid-column:span 2;}
.bulk-import-actions{display:flex!important;flex-wrap:wrap;gap:8px;justify-content:flex-start!important;}
.bulk-import-preview{margin-top:14px;display:grid;gap:12px;min-width:0;}
.bulk-import-summary-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;}
.bulk-import-summary-grid>div{display:grid;gap:2px;text-align:center;padding:11px 8px;border-radius:13px;border:1px solid rgba(249,196,84,.14);background:rgba(0,0,0,.10);}
.bulk-import-summary-grid strong{font-size:1.05rem;color:#fff2cf;}
.bulk-import-summary-grid span{font-size:.7rem;color:#d8cda9;}
.bulk-import-summary-grid .bulk-import-bad{border-color:rgba(220,80,80,.48);background:rgba(120,25,25,.13);}
.bulk-import-summary-grid .bulk-import-bad strong{color:#ffb5b5;}
.bulk-import-issues{display:grid;gap:7px;}
.bulk-import-issues h4{margin:0;color:#fff2cf;}
.bulk-import-issue{display:grid;gap:3px;padding:9px 11px;border-radius:11px;border:1px solid rgba(249,196,84,.13);background:rgba(0,0,0,.08);}
.bulk-import-issue strong{font-size:.73rem;color:#f9c454;}
.bulk-import-issue span{font-size:.75rem;line-height:1.4;color:#e8dfc1;}
.bulk-import-issue.error{border-color:rgba(220,80,80,.35);background:rgba(120,25,25,.10);}
.bulk-import-issue.error strong{color:#ffabab;}
.bulk-import-preview-table{max-height:520px;overflow:auto;}
.bulk-import-preview-table .admin-table{min-width:920px;}
.bulk-import-row-error{background:rgba(140,30,30,.08);}
.bulk-import-install-note{margin-top:10px!important;}
.bulk-import-busy{cursor:progress;}

@media(max-width:1120px){
  .bulk-import-setup-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .bulk-import-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
  .bulk-import-step-strip{grid-template-columns:repeat(5,minmax(140px,1fr));overflow-x:auto;padding-bottom:5px;}
}
@media(max-width:720px){
  .bulk-import-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
  .bulk-import-tabs{display:grid;grid-template-columns:1fr;}
  .bulk-import-tabs .ems-btn{width:100%;}
  .bulk-import-setup-grid{grid-template-columns:1fr;}
  .bulk-import-setup-grid .form-span-2{grid-column:1;}
  .bulk-import-actions{display:grid!important;grid-template-columns:1fr!important;width:100%;}
  .bulk-import-actions .ems-btn{width:100%;}
  .bulk-import-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .bulk-import-step-strip{display:flex;overflow-x:auto;scroll-snap-type:x proximity;}
  .bulk-import-step-strip span{min-width:150px;scroll-snap-align:start;}
  .bulk-import-preview-table{max-height:440px;}
}


/* ============================================================
   P4: Central QA / Release Gate + non-production environment guard
   ============================================================ */
.ems-environment-banner{
  position:relative;
  z-index:10000;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  width:100%;
  padding:8px 14px;
  background:#6f1d1b;
  color:#fff;
  font-size:.78rem;
  font-weight:900;
  letter-spacing:.03em;
  text-align:center;
}
.ems-environment-banner strong{
  padding:3px 7px;
  border-radius:999px;
  background:#fff;
  color:#6f1d1b;
  font-size:.7rem;
  letter-spacing:.08em;
}
.launch-qa-run-toolbar{
  display:grid;
  grid-template-columns:minmax(220px,.85fr) minmax(220px,1fr) auto auto auto;
  gap:10px;
  align-items:end;
  margin:14px 0;
}
.launch-qa-run-card,
.launch-qa-automated-card,
.launch-qa-history-card,
.system-health-qa-gate{
  border:1px solid rgba(249,196,84,.2);
  border-radius:18px;
  background:rgba(255,242,207,.07);
  padding:14px;
}
.launch-qa-run-meta{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin-top:10px;
}
.launch-qa-run-meta div{
  padding:10px 11px;
  border-radius:12px;
  border:1px solid rgba(249,196,84,.14);
  background:rgba(0,0,0,.1);
}
.launch-qa-run-meta span{display:block;color:rgba(255,242,207,.62);font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;font-weight:900;}
.launch-qa-run-meta strong{display:block;color:#fff4d0;margin-top:4px;font-size:.82rem;overflow-wrap:anywhere;}
.launch-qa-item{
  grid-template-columns:minmax(0,1.2fr) minmax(170px,.42fr) minmax(190px,.7fr) auto!important;
  align-items:center!important;
}
.launch-qa-item-copy strong{display:block;}
.launch-qa-item-copy p{margin:5px 0 0;}
.launch-qa-status-select{min-width:145px;}
.launch-qa-note-input{
  min-width:0;
  position:static!important;
  opacity:1!important;
  pointer-events:auto!important;
  width:100%;
  height:auto;
  border-radius:14px;
}
.launch-qa-item.qa-pass{border-color:rgba(80,180,110,.42);background:rgba(80,180,110,.08);}
.launch-qa-item.qa-fail{border-color:rgba(220,82,82,.5);background:rgba(220,82,82,.08);}
.launch-qa-item.qa-na{opacity:.76;}
.launch-qa-automated-list{display:grid;gap:9px;margin-top:10px;}
.launch-qa-automated-row{
  display:grid;
  grid-template-columns:110px minmax(180px,.5fr) minmax(0,1fr);
  gap:10px;
  padding:10px 11px;
  border-radius:12px;
  border:1px solid rgba(249,196,84,.14);
  background:rgba(0,0,0,.09);
}
.launch-qa-auto-status{font-weight:900;text-transform:uppercase;font-size:.72rem;}
.launch-qa-auto-status.pass{color:#8fe2a7;}
.launch-qa-auto-status.warn{color:#ffd27a;}
.launch-qa-auto-status.fail{color:#ff9b9b;}
.launch-qa-history-table{min-width:780px;}
.launch-qa-gate-banner{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  padding:13px 14px;
  margin:12px 0;
  border-radius:14px;
  border:1px solid rgba(249,196,84,.2);
  background:rgba(0,0,0,.1);
}
.launch-qa-gate-banner.ready{border-color:rgba(80,180,110,.45);background:rgba(80,180,110,.08);}
.launch-qa-gate-banner.blocked{border-color:rgba(220,82,82,.45);background:rgba(220,82,82,.08);}
.launch-qa-gate-banner strong{display:block;color:#fff4d0;}
.launch-qa-gate-banner span{display:block;margin-top:3px;color:rgba(255,242,207,.72);font-size:.78rem;line-height:1.4;}
.system-health-qa-gate strong{display:block;color:#fff4d0;font-size:1rem;}
.system-health-qa-gate p{margin:5px 0;color:rgba(255,242,207,.75);line-height:1.5;}
.system-health-qa-gate small{color:rgba(255,242,207,.58);}
@media(max-width:1180px){
  .launch-qa-run-toolbar{grid-template-columns:1fr 1fr;}
  .launch-qa-run-meta{grid-template-columns:1fr 1fr;}
  .launch-qa-item{grid-template-columns:minmax(0,1fr) 150px!important;}
  .launch-qa-note-input,.launch-qa-item .ems-btn{grid-column:1/-1;}
}
@media(max-width:720px){
  .ems-environment-banner{align-items:flex-start;gap:7px;font-size:.68rem;line-height:1.35;}
  .launch-qa-run-toolbar,.launch-qa-run-meta{grid-template-columns:1fr;}
  .launch-qa-item{grid-template-columns:1fr!important;}
  .launch-qa-status-select,.launch-qa-note-input,.launch-qa-item .ems-btn{width:100%;grid-column:auto;}
  .launch-qa-automated-row{grid-template-columns:1fr;}
  .launch-qa-gate-banner{display:grid;}
}

/* EMS P5.5.3-R7 — Template Artwork & Version Manager */
.template-artwork-manager{margin-top:18px;padding-top:18px;border-top:1px solid rgba(249,196,84,.16)}
.template-artwork-current{display:grid;grid-template-columns:minmax(220px,.9fr) minmax(0,1.1fr);gap:18px;align-items:start;margin:14px 0 18px}
.template-artwork-preview{min-height:250px;border:1px solid rgba(249,196,84,.18);border-radius:16px;background:rgba(0,0,0,.14);overflow:hidden;display:grid;place-items:center;padding:10px}
.template-artwork-preview img{display:block;max-width:100%;max-height:420px;object-fit:contain;background:#fff;border-radius:8px;box-shadow:0 12px 28px rgba(0,0,0,.25)}
.template-artwork-preview iframe{width:100%;height:420px;border:0;border-radius:8px;background:#fff}
.template-artwork-meta{display:grid;gap:9px}
.template-artwork-meta>div{display:grid;grid-template-columns:minmax(130px,.45fr) minmax(0,1fr);gap:12px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.08)}
.template-artwork-meta span{color:rgba(255,242,207,.64);font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
.template-artwork-meta strong{color:#fff2cf;overflow-wrap:anywhere}
.template-upload-form{margin-top:8px}
.template-runtime-note{margin-top:14px}
.template-version-history{margin-top:18px}
.template-version-list{display:grid;gap:0;border-top:1px solid rgba(249,196,84,.14)}
.template-version-row{display:grid;grid-template-columns:minmax(160px,1.15fr) minmax(90px,.55fr) minmax(120px,.75fr) auto;gap:12px;align-items:center;padding:11px 2px;border-bottom:1px solid rgba(249,196,84,.12)}
.template-version-row>button.template-version-select{appearance:none;border:0;background:transparent;color:inherit;text-align:left;padding:0;cursor:pointer;min-width:0}
.template-version-row>button.template-version-select strong{display:block;color:#fff2cf;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.template-version-row>button.template-version-select small{display:block;color:rgba(255,242,207,.62);margin-top:3px}
.template-version-row.active{background:rgba(249,196,84,.05)}
.template-version-state{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:920px){
  .template-artwork-current{grid-template-columns:1fr}
  .template-artwork-preview{min-height:220px}
  .template-version-row{grid-template-columns:1fr auto}
  .template-version-row>.template-version-date,.template-version-row>.template-version-format{display:none}
}
@media(max-width:560px){
  .template-artwork-preview iframe{height:340px}
  .template-artwork-meta>div{grid-template-columns:1fr;gap:3px}
  .template-version-row{grid-template-columns:1fr}
  .template-version-state{justify-content:flex-start}
}
