/* ============================================================
   EMS P5.5 — Portal UI Architecture & Responsive Stabilization
   Final normalization layer. Loaded after portal.css + readability.
   Goals: one sticky hierarchy, earlier drawer breakpoint, container-
   aware module layouts, readable operational UI, stable mobile flow.
   ============================================================ */

:root{
  --ems-portal-header-offset:12px;
  --ems-portal-header-height:82px;
  --ems-ui-radius:18px;
  --ems-ui-gap:14px;
  --ems-ui-border:rgba(249,196,84,.18);
  --ems-ui-surface:rgba(255,242,207,.065);
  --ems-ui-surface-strong:rgba(15,29,12,.28);
  --ems-ui-text:#fff3cf;
  --ems-ui-muted:rgba(255,242,207,.74);
}

/* ---------- Shell + stacking discipline ---------- */
.portal-main,
.webadmin-main,
.management-main{
  min-width:0;
  container-type:inline-size;
  container-name:ems-portal-main;
}

.portal-header,
.webadmin-topbar,
.management-topbar{
  position:sticky;
  top:var(--ems-portal-header-offset);
  z-index:80;
  padding:14px 18px;
  margin-bottom:18px;
  border-radius:18px;
  background:linear-gradient(135deg,rgba(43,72,32,.96),rgba(27,49,22,.94));
  border-color:rgba(249,196,84,.26);
  box-shadow:0 12px 28px rgba(0,0,0,.24);
  backdrop-filter:blur(14px) saturate(112%);
  -webkit-backdrop-filter:blur(14px) saturate(112%);
}

.portal-header::before,
.webadmin-topbar::before,
.management-topbar::before{
  content:none!important;
  display:none!important;
}

.portal-header h1{
  font-size:clamp(1.28rem,1.55vw,1.55rem);
  line-height:1.12;
}
.portal-header p{
  max-width:88ch;
  margin-top:4px;
  font-size:.86rem;
  line-height:1.45;
}
.portal-header .ems-btn{white-space:nowrap;}

.portal-panel,
.portal-card,
.admin-module-card,
.management-module-card{
  scroll-margin-top:104px;
}

/* Sub-navigation must never compete with the global sticky header. */
.student-admin-tabs,
.result-tabs,
.bulk-import-tabs{
  position:static!important;
  top:auto!important;
  z-index:auto!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  background:rgba(12,27,16,.72);
  border-color:rgba(249,196,84,.16);
  box-shadow:none;
}

/* ---------- Surface hierarchy ---------- */
.admin-module-card,
.management-module-card{
  border-radius:20px;
}
.teacher-document-upload-card,
.teacher-assignment-block,
.fee-management-card,
.launch-qa-run-card,
.launch-qa-automated-card,
.launch-qa-history-card,
.system-health-qa-gate{
  background:var(--ems-ui-surface);
  border-color:var(--ems-ui-border);
  box-shadow:none;
}
.module-header{
  gap:16px;
  padding-bottom:14px;
  margin-bottom:14px;
}
.module-header h3{
  font-size:clamp(1.32rem,1.8vw,1.75rem);
  line-height:1.15;
}
.module-header p{
  color:var(--ems-ui-muted);
  line-height:1.5;
}

/* ---------- Forms / controls ---------- */
.ems-check-field{
  min-height:48px;
  display:flex;
  align-items:center;
  gap:10px;
  padding:12px 14px;
  border:1px solid rgba(249,196,84,.22)!important;
  border-radius:14px;
  background:rgba(0,0,0,.13)!important;
  color:var(--ems-ui-text)!important;
  font-weight:800;
}
.ems-check-field input{
  width:18px;
  height:18px;
  flex:0 0 18px;
  accent-color:var(--ems-gold,#f9c454)!important;
}

/* Paper/document previews intentionally remain light. Ordinary portal controls do not. */
.result-template-layout img,
.certificate-layout-preview-frame-wrap,
.certificate-preview-page,
.report-card-print-preview,
.fee-receipt-preview{
  color:#1d2d17;
}

/* ---------- Result Setup normalization ---------- */
#result-setup-summary{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:10px;
}
#result-setup-summary > div{
  min-width:0;
  min-height:72px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:5px;
  padding:11px 12px;
  border:1px solid rgba(249,196,84,.16);
  border-radius:14px;
  background:rgba(0,0,0,.10);
}
#result-setup-summary > div > strong{
  display:block;
  color:rgba(255,242,207,.66);
  font-size:.76rem;
  line-height:1.25;
  text-transform:uppercase;
  letter-spacing:.045em;
}
#result-setup-summary > div > span{
  display:block;
  min-width:0;
  color:#fff3cf;
  font-weight:900;
  overflow-wrap:anywhere;
}
.result-attendance-link-card .teacher-self-form{
  grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(260px,1.25fr);
}

/* ---------- QA / release gate ---------- */
.launch-qa-run-toolbar{
  grid-template-columns:minmax(190px,1fr) minmax(190px,1fr) minmax(150px,.62fr) minmax(190px,1fr) auto;
  gap:10px;
}
.launch-qa-stat-grid{
  grid-template-columns:repeat(auto-fit,minmax(145px,1fr));
}
.launch-qa-readiness-grid{
  grid-template-columns:repeat(auto-fit,minmax(185px,1fr));
}
.launch-qa-run-meta span{
  font-size:.75rem;
}
.launch-qa-run-meta strong{
  font-size:.88rem;
}
.launch-qa-item{
  grid-template-columns:minmax(280px,1.2fr) minmax(145px,.35fr) minmax(230px,.75fr) auto!important;
  gap:10px!important;
  padding:13px 14px!important;
  align-items:center!important;
}
.launch-qa-item-copy strong{font-size:.94rem;line-height:1.3;}
.launch-qa-item-copy p{font-size:.82rem;line-height:1.45;}
.launch-qa-item small{font-size:.74rem;}
.launch-qa-status-select{min-width:0;}
.launch-qa-auto-status{font-size:.76rem;}
.launch-qa-gate-banner span{font-size:.82rem;}
.launch-qa-tabs{
  scrollbar-width:thin;
}

/* ---------- Tables ---------- */
.admin-table-wrap,
.report-output-card,
.fee-table-wrap,
.teacher-table-wrap{
  max-width:100%;
  overflow:auto;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
}
.admin-table th{
  top:0;
  z-index:2;
}

/* ---------- Container-aware module reflow ---------- */
@container ems-portal-main (max-width:1100px){
  .student-two-column,
  .student-review-layout,
  .teacher-portal-grid,
  .system-health-layout,
  .certificate-layout-shell{
    grid-template-columns:1fr!important;
  }
  .certificate-layout-preview-card{
    position:static!important;
    top:auto!important;
  }
  #result-setup-summary{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  .result-attendance-link-card .teacher-self-form{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .result-attendance-link-card .ems-check-field{
    grid-column:1/-1;
  }
  .launch-qa-run-toolbar,
  .launch-qa-run-meta{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .launch-qa-run-toolbar > .ems-btn{
    width:100%;
    justify-content:center;
  }
  .launch-qa-item{
    grid-template-columns:minmax(0,1fr) minmax(145px,180px)!important;
  }
  .launch-qa-note-input,
  .launch-qa-item > .ems-btn{
    grid-column:1/-1!important;
  }
}

@container ems-portal-main (max-width:760px){
  #result-setup-summary{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .result-attendance-link-card .teacher-self-form{
    grid-template-columns:1fr;
  }
  .launch-qa-run-toolbar,
  .launch-qa-run-meta,
  .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!important;
  }
}

@container ems-portal-main (max-width:520px){
  #result-setup-summary{grid-template-columns:1fr;}
}

/* ---------- Compact desktop / tablet shell ----------
   Sidebar becomes the existing drawer before it steals too much workspace.
   The same DOM and same mobile navigation are used; no parallel UI exists.
   --------------------------------------------------- */
@media(max-width:1240px){
  html{scroll-padding-top:82px;}
  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!important;
    height:100dvh!important;
    z-index:10020!important;
    transform:translateX(-108%);
    transition:transform .24s ease,box-shadow .24s ease;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    touch-action:pan-y;
    padding:20px 16px 28px!important;
    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;
    display:block;
    background:rgba(6,18,8,.58);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transition:opacity .22s ease,visibility .22s ease;
  }
  body.ems-mobile-nav-open .portal-mobile-backdrop{
    opacity:1;
    visibility:visible;
    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 12px 30px rgba(0,0,0,.26);
    font-weight:950;
  }
  .portal-mobile-menu-icon{
    width:20px;
    height:15px;
    flex:0 0 20px;
    display:flex;
    flex-direction:column;
    justify-content:space-between;
  }
  .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;
  }
  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{
    width:100%!important;
    max-width:100vw!important;
    padding:72px 18px 40px!important;
  }
  .portal-header,
  .webadmin-topbar,
  .management-topbar{
    top:8px!important;
    margin-bottom:16px!important;
  }
  .portal-header h1{
    padding-left:0!important;
  }
  .portal-header p{
    display:none;
  }
  .portal-header .ems-btn{
    width:auto;
  }
  .student-admin-tabs,
  .report-tabs,
  .promotion-tabs,
  .security-tabs,
  .fee-page-tabs,
  .certificate-page-tabs,
  .report-page-tabs,
  .teacher-tabs,
  .launch-qa-tabs{
    max-width:100%;
    overflow-x:auto!important;
    display:flex!important;
    flex-wrap:nowrap!important;
    gap:8px;
    scrollbar-width:thin;
    -webkit-overflow-scrolling:touch;
  }
  .student-admin-tabs button,
  .report-tabs button,
  .promotion-tabs button,
  .security-tabs button,
  .fee-page-tabs button,
  .certificate-page-tabs button,
  .report-page-tabs button,
  .teacher-tabs button,
  .launch-qa-tabs button{
    flex:0 0 auto;
    white-space:nowrap;
  }
}

/* Tablet: keep operational summary cards compact instead of one very long column. */
@media(min-width:601px) and (max-width:920px){
  .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:repeat(2,minmax(0,1fr))!important;
  }
}

/* Phone refinements preserve the same component tree. */
@media(max-width:600px){
  .portal-main,
  .webadmin-main,
  .management-main{
    padding:68px 10px 30px!important;
  }
  .portal-header,
  .webadmin-topbar,
  .management-topbar{
    padding:12px 13px!important;
    border-radius:16px!important;
  }
  .portal-header h1{font-size:1.12rem!important;}
  .portal-header .ems-btn{width:100%;justify-content:center;}
  .module-header h3{font-size:1.24rem;}
  .portal-card,
  .admin-module-card,
  .management-module-card,
  .teacher-document-upload-card,
  .fee-management-card{
    border-radius:16px!important;
  }
  .launch-qa-readiness-grid,
  .launch-qa-stat-grid{
    grid-template-columns:1fr!important;
  }
  .admin-table,
  .result-marks-table,
  .attendance-table,
  .fee-ledger-table,
  .report-table{
    min-width:640px!important;
  }
}

@media(prefers-reduced-motion:reduce){
  .portal-sidebar,
  .portal-mobile-backdrop,
  .portal-mobile-menu-icon span{
    transition:none!important;
  }
}


/* ============================================================
   EMS P5.5.1 — PORTAL-WIDE UI CONSISTENCY SYSTEM
   Canonical visual layer for Management Admin, Website Admin,
   Fee Admin, Teacher, Student, Parent, portal selector and login.
   ============================================================ */
:root{
  --ems-ui-canvas:#13240f;--ems-ui-canvas-2:#203a18;
  --ems-ui-surface-1:linear-gradient(145deg,rgba(49,74,37,.94),rgba(16,31,13,.94));
  --ems-ui-surface-2:rgba(255,242,207,.065);--ems-ui-surface-3:rgba(0,0,0,.16);
  --ems-ui-hover:rgba(249,196,84,.085);
  --ems-ui-border-strong:rgba(249,196,84,.30);--ems-ui-border:rgba(249,196,84,.20);--ems-ui-border-soft:rgba(249,196,84,.12);
  --ems-ui-text:#fff6dc;--ems-ui-text-soft:#e5d9b8;--ems-ui-muted:#c7bc9c;
  --ems-ui-gold:#f9c454;--ems-ui-gold-soft:#fff1bf;--ems-ui-success:#8ce4a4;--ems-ui-warning:#ffd889;--ems-ui-danger:#ffb0aa;
  --ems-radius-control:12px;--ems-radius-inner:14px;--ems-radius-card:20px;--ems-radius-shell:22px;--ems-radius-pill:999px;
  --ems-shadow-card:0 16px 38px rgba(0,0,0,.20);--ems-shadow-float:0 24px 58px rgba(0,0,0,.34);
  --ems-z-base:1;--ems-z-dropdown:200;--ems-z-drawer:10020;--ems-z-modal:15000;--ems-z-toast:18000;
}
html,body.portal-body{background:radial-gradient(circle at 20% 0%,rgba(249,196,84,.08),transparent 30%),radial-gradient(circle at 100% 18%,rgba(255,242,207,.04),transparent 26%),linear-gradient(135deg,var(--ems-ui-canvas),var(--ems-ui-canvas-2) 58%,#162b12)!important}
body.portal-body{color:var(--ems-ui-text);overflow-x:hidden}
.portal-layout{min-width:0}
/* Role headers are deliberately normal-flow: content never travels behind a floating top card. */
.portal-header,.webadmin-topbar,.management-topbar{position:relative!important;top:auto!important;z-index:var(--ems-z-base)!important;overflow:clip!important;margin-bottom:18px!important;padding:15px 18px!important;border-radius:var(--ems-radius-card)!important;background:linear-gradient(135deg,#294b22,#1a3316)!important;border:1px solid var(--ems-ui-border-strong)!important;box-shadow:0 12px 30px rgba(0,0,0,.18)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.portal-header::before,.portal-header::after,.webadmin-topbar::before,.webadmin-topbar::after,.management-topbar::before,.management-topbar::after{content:none!important;display:none!important}
.portal-header h1,.webadmin-topbar h1,.management-topbar h1{color:var(--ems-ui-gold-soft)!important;margin:0!important}
.portal-header p,.webadmin-topbar p,.management-topbar p{color:rgba(255,246,220,.72)!important;max-width:88ch}
/* Layout wrappers never paint a square layer behind rounded cards. */
.portal-panel,.student-subpanel,.attendance-subpanel,.exam-subpanel,.notice-subpanel,.result-subpanel,.teacher-notice-subpanel,.teacher-exam-subpanel,.report-tab-panel,.fee-tab-panel,.certificate-tab-panel,.bulk-import-panel{background:transparent!important;border:0!important;box-shadow:none!important;border-radius:0!important;padding-left:0!important;padding-right:0!important;overflow:visible!important}
.portal-panel,.portal-card,.admin-module-card,.management-module-card{scroll-margin-top:24px!important}
/* Three-level surface hierarchy. */
.portal-card,.admin-module-card,.management-module-card{border-radius:var(--ems-radius-card)!important}
.portal-main>.portal-panel>.portal-card,.portal-main>.portal-panel>.admin-module-card,.portal-main>.portal-panel>.management-module-card,.portal-main>.portal-panel>.webadmin-hero,.admin-module-card,.management-module-card,.fee-management-card,.template-control-centre-card,.report-management-card,.result-management-card,.attendance-management-card{overflow:clip!important;background:var(--ems-ui-surface-1)!important;border:1px solid var(--ems-ui-border-strong)!important;box-shadow:var(--ems-shadow-card)!important}
.teacher-document-upload-card,.teacher-assignment-block,.teacher-profile-card,.fee-structure-box,.fee-account-card,.fee-inline-form,.fee-summary-card,.fee-breakup-card,.result-review-card,.result-summary-card,.result-setup-card,.result-attendance-link-card,.report-stat-card,.system-health-item,.production-check-item,.launch-qa-run-card,.launch-qa-automated-card,.launch-qa-history-card,.system-health-qa-gate,.template-list-card,.template-editor-card,.template-rules-card,.template-fields-card,.template-testing-card,.production-db-check,.production-lock-state,.security-lock-card,.security-lock-summary>div,.subject-check-item,.student-photo-row,.student-photo-match-item,.student-photo-match-summary,.management-placeholder-grid>div,.admin-detail-view>div,.teacher-detail-grid>div,.credential-box>div{border-radius:var(--ems-radius-inner)!important;background:var(--ems-ui-surface-2)!important;border:1px solid var(--ems-ui-border-soft)!important;box-shadow:none!important}
/* Typography hierarchy. */
.portal-body .portal-main{color:var(--ems-ui-text)}
.portal-body .portal-main h1,.portal-body .portal-main h2,.portal-body .portal-main h3,.portal-body .portal-main h4{color:var(--ems-ui-gold-soft)!important}
.portal-body .portal-main p,.portal-body .portal-main li{color:var(--ems-ui-text-soft)}
.ems-eyebrow{color:var(--ems-ui-gold)!important;font-size:.72rem!important;line-height:1.25!important;letter-spacing:.085em!important;font-weight:900!important}
.module-header{align-items:flex-start!important;gap:18px!important;padding-bottom:14px!important;margin-bottom:18px!important;border-bottom:1px solid var(--ems-ui-border-soft)!important}
.module-header h3{margin:3px 0 6px!important;font-size:clamp(1.28rem,1.8vw,1.72rem)!important;line-height:1.18!important}
.module-header p{margin:0!important;max-width:82ch;color:var(--ems-ui-muted)!important;font-size:.91rem!important;line-height:1.52!important}
.field-help,.teacher-document-hint,.report-preview-note{color:var(--ems-ui-muted)!important;line-height:1.48!important}
/* Buttons are rounded rectangles; pills are reserved for statuses. */
.portal-body .ems-btn,.portal-body button.ems-btn,.portal-body a.ems-btn{min-height:42px;border-radius:var(--ems-radius-control)!important;padding:10px 15px!important;font-weight:900!important;line-height:1.15;box-shadow:none!important;transition:transform .14s ease,background .14s ease,border-color .14s ease,box-shadow .14s ease!important}
.portal-body .ems-btn:hover{transform:translateY(-1px)}
.portal-body .ems-btn:focus-visible,.portal-body button:focus-visible,.portal-body a:focus-visible{outline:3px solid rgba(249,196,84,.32)!important;outline-offset:2px!important}
.portal-body .ems-btn-primary{background:linear-gradient(135deg,#f9c454,#eeb541)!important;color:#203417!important;border-color:rgba(255,244,205,.44)!important;box-shadow:0 8px 18px rgba(249,196,84,.12)!important}
.portal-body .ems-btn-secondary{background:rgba(255,242,207,.07)!important;color:var(--ems-ui-gold-soft)!important;border-color:var(--ems-ui-border)!important}
.portal-body .ems-btn-secondary:hover{background:rgba(249,196,84,.12)!important;border-color:rgba(249,196,84,.38)!important}
.portal-body .ems-btn-small{min-height:38px!important;padding:8px 12px!important;border-radius:10px!important;font-size:.82rem!important}
.portal-body .ems-btn-mini{min-height:34px!important;padding:7px 10px!important;border-radius:9px!important}
.portal-body .ems-btn-danger{background:linear-gradient(135deg,#7f3030,#b04444)!important;color:#fff!important;border-color:rgba(255,180,175,.28)!important}
.portal-body .ems-btn-warning{background:linear-gradient(135deg,#f1b847,#d7951d)!important;color:#2d2107!important}
.portal-body .ems-btn-success{background:linear-gradient(135deg,#31864b,#226a3a)!important;color:#fff!important}
.module-actions,.admin-modal-actions,.management-row-actions,.result-action-row,.result-approval-actions,.bulk-import-actions{gap:8px!important}
/* Forms. */
.portal-body .portal-main .ems-field{min-width:0}
.portal-body .portal-main .ems-field label,.portal-body .portal-main label{display:block;margin-bottom:6px;color:var(--ems-ui-gold)!important;font-size:.80rem!important;line-height:1.3;font-weight:900!important}
.portal-body .portal-main .ems-input,.portal-body .portal-main input.ems-input,.portal-body .portal-main select.ems-input,.portal-body .portal-main textarea.ems-input,.portal-body .portal-main input[type=text],.portal-body .portal-main input[type=email],.portal-body .portal-main input[type=tel],.portal-body .portal-main input[type=number],.portal-body .portal-main input[type=date],.portal-body .portal-main input[type=month],.portal-body .portal-main input[type=password],.portal-body .portal-main select,.portal-body .portal-main textarea{min-height:44px;border-radius:var(--ems-radius-control)!important;background:linear-gradient(180deg,rgba(11,26,10,.92),rgba(26,45,20,.92))!important;border:1px solid rgba(249,196,84,.28)!important;color:var(--ems-ui-text)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.025)!important}
.portal-body .portal-main textarea{min-height:110px}
.portal-body .portal-main .ems-input:focus,.portal-body .portal-main input:focus,.portal-body .portal-main select:focus,.portal-body .portal-main textarea:focus{border-color:rgba(249,196,84,.72)!important;outline:3px solid rgba(249,196,84,.17)!important;outline-offset:0!important}
.portal-body .portal-main .ems-input:disabled,.portal-body .portal-main input:disabled,.portal-body .portal-main select:disabled,.portal-body .portal-main textarea:disabled{opacity:.68;cursor:not-allowed;background:rgba(255,242,207,.045)!important}
.readonly-chip,.portal-body .portal-main [readonly].ems-input{border-radius:var(--ems-radius-control)!important;background:rgba(255,242,207,.055)!important;border:1px dashed rgba(249,196,84,.24)!important;color:var(--ems-ui-text-soft)!important}
.ems-check-field,.admin-check-field,.template-check-toggle{min-height:48px!important;border-radius:var(--ems-radius-control)!important;background:rgba(0,0,0,.13)!important;border:1px solid var(--ems-ui-border)!important;color:var(--ems-ui-text)!important}
.ems-check-field input,.admin-check-field input,.template-check-toggle input,.portal-body input[type=checkbox],.portal-body input[type=radio]{width:18px;height:18px;accent-color:var(--ems-ui-gold)!important}
.report-tab-panel .compact-form,.fee-tab-panel .compact-form,.certificate-tab-panel .compact-form{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(220px,320px))!important;justify-content:start!important;align-items:end!important;gap:12px!important}
/* Toolbars. */
.admin-toolbar,.teacher-toolbar,.table-action-row,.result-action-row,.report-action-row{display:flex;align-items:center;gap:10px!important;flex-wrap:wrap;padding:10px 12px!important;border-radius:var(--ems-radius-inner)!important;background:rgba(0,0,0,.12)!important;border:1px solid var(--ems-ui-border-soft)!important;box-shadow:none!important}
.admin-toolbar .ems-input,.teacher-toolbar .ems-input{width:min(100%,360px);max-width:360px!important}
/* Tabs look like navigation, not like action buttons. */
.student-admin-tabs,.result-tabs,.bulk-import-tabs,.report-page-tabs,.report-tabs,.promotion-tabs,.security-tabs,.fee-page-tabs,.certificate-page-tabs,.launch-qa-tabs,.admission-tabs{display:flex!important;gap:7px!important;flex-wrap:wrap!important;padding:7px!important;margin:16px 0 18px!important;border-radius:var(--ems-radius-inner)!important;background:rgba(0,0,0,.12)!important;border:1px solid var(--ems-ui-border-soft)!important;box-shadow:none!important}
.student-admin-tabs .ems-btn,.result-tabs .ems-btn,.bulk-import-tabs .ems-btn,.report-page-tab,.report-tabs button,.promotion-tabs button,.security-tabs button,.fee-page-tab,.certificate-page-tab,.launch-qa-tabs button,.admission-tabs button{min-height:38px!important;border-radius:10px!important;padding:8px 12px!important;background:transparent!important;color:var(--ems-ui-text-soft)!important;border:1px solid transparent!important;box-shadow:none!important}
.student-admin-tabs .ems-btn-primary,.result-tabs .ems-btn-primary,.bulk-import-tabs .ems-btn-primary,.report-page-tab.active,.report-tabs button.active,.promotion-tabs button.active,.security-tabs button.active,.fee-page-tab.active,.certificate-page-tab.active,.launch-qa-tabs button.active,.admission-tabs button.active{background:rgba(249,196,84,.16)!important;color:var(--ems-ui-gold-soft)!important;border-color:rgba(249,196,84,.42)!important;box-shadow:inset 0 -2px 0 rgba(249,196,84,.55)!important}
.student-admin-tabs .ems-btn:hover,.result-tabs .ems-btn:hover,.bulk-import-tabs .ems-btn:hover,.report-page-tab:hover,.report-tabs button:hover,.promotion-tabs button:hover,.security-tabs button:hover,.fee-page-tab:hover,.certificate-page-tab:hover,.launch-qa-tabs button:hover,.admission-tabs button:hover{background:rgba(249,196,84,.09)!important;color:var(--ems-ui-gold-soft)!important;transform:none!important}
/* Flatter sidebar. */
.portal-sidebar,.webadmin-sidebar,.management-sidebar{background:linear-gradient(180deg,#14270f,#1d3816 64%,#183012)!important;border-right:1px solid rgba(249,196,84,.16)!important;box-shadow:none!important}
.portal-menu{gap:14px!important}.portal-menu-group{gap:4px!important;padding:4px 0 8px!important;border:0!important;border-radius:0!important;background:transparent!important}.portal-menu-group>span{padding:4px 10px!important;color:rgba(249,196,84,.66)!important;font-size:.68rem!important;letter-spacing:.10em!important}
.portal-menu button,.portal-menu a,.webadmin-menu button,.webadmin-menu a,.management-menu button,.management-menu a{min-height:42px;padding:10px 12px!important;border-radius:11px!important;border:1px solid transparent!important;background:transparent!important;color:rgba(255,246,220,.80)!important;box-shadow:none!important;font-weight:800!important}
.portal-menu button:hover,.portal-menu a:hover,.webadmin-menu button:hover,.webadmin-menu a:hover,.management-menu button:hover,.management-menu a:hover{background:rgba(249,196,84,.07)!important;border-color:rgba(249,196,84,.12)!important;color:var(--ems-ui-gold-soft)!important}
.portal-menu button.active,.portal-menu a.active,.webadmin-menu button.active,.webadmin-menu a.active,.management-menu button.active,.management-menu a.active{background:rgba(249,196,84,.13)!important;border-color:rgba(249,196,84,.30)!important;color:var(--ems-ui-gold-soft)!important;box-shadow:inset 3px 0 0 var(--ems-ui-gold)!important}.portal-logo{margin-bottom:22px!important}
/* Metrics. */
.portal-stats,.webadmin-stats,.management-stats,.report-stat-grid,.promotion-stat-grid,.security-stat-grid,.launch-qa-stat-grid{gap:12px!important}
.portal-stat,.report-stat-card,.promotion-stat-card,.security-stat-card{min-height:94px;padding:15px 16px!important;border-radius:var(--ems-radius-inner)!important;background:rgba(255,242,207,.065)!important;border:1px solid var(--ems-ui-border-soft)!important;box-shadow:none!important}
.portal-stat strong,.report-stat-card strong{color:var(--ems-ui-gold)!important;font-size:clamp(1.45rem,2vw,2rem)!important;line-height:1.05!important}.portal-stat span,.report-stat-card span{color:var(--ems-ui-muted)!important;font-size:.82rem!important;line-height:1.3!important;font-weight:800!important}
/* Operational tables stay dark. This explicitly fixes cream text on light report rows. */
.admin-table-wrap,.report-table-wrap,.fee-table-wrap,.teacher-table-wrap,.generated-documents-table-wrap,.bulk-import-preview-table{max-width:100%;overflow:auto!important;overscroll-behavior-inline:contain;border-radius:var(--ems-radius-inner)!important;border:1px solid var(--ems-ui-border)!important;background:#10220f!important;box-shadow:none!important;scrollbar-gutter:stable both-edges}
.report-output-card{margin-top:16px!important;padding:16px!important;border-radius:var(--ems-radius-card)!important;background:rgba(255,242,207,.055)!important;border:1px solid var(--ems-ui-border)!important;box-shadow:none!important;color:var(--ems-ui-text)!important;overflow:clip!important}.report-output-head{margin-bottom:12px!important}.report-output-head h3{color:var(--ems-ui-gold-soft)!important}.report-output-head p,.report-preview-note{color:var(--ems-ui-muted)!important}
.portal-body .portal-main .admin-table,.portal-body .portal-main .report-table,.portal-body .portal-main .fee-report-table,.portal-body .portal-main .attendance-table,.portal-body .portal-main .result-marks-table{background:#10220f!important;border-collapse:separate;border-spacing:0}
.portal-body .portal-main .admin-table th,.portal-body .portal-main .report-table th,.portal-body .portal-main .fee-report-table th,.portal-body .portal-main .attendance-table th,.portal-body .portal-main .result-marks-table th{position:sticky;top:0;z-index:2;padding:11px 13px!important;background:linear-gradient(180deg,#274520,#1e3919)!important;color:var(--ems-ui-gold)!important;border-bottom:1px solid rgba(249,196,84,.28)!important;font-size:.76rem!important;line-height:1.28!important;letter-spacing:.035em!important;text-transform:uppercase;white-space:nowrap}
.portal-body .portal-main .admin-table td,.portal-body .portal-main .report-table td,.portal-body .portal-main .fee-report-table td,.portal-body .portal-main .attendance-table td,.portal-body .portal-main .result-marks-table td,.report-table-wrap .admin-table td{padding:11px 13px!important;background:#132712!important;color:var(--ems-ui-text-soft)!important;border-bottom:1px solid rgba(249,196,84,.09)!important;font-size:.84rem!important;line-height:1.45!important;font-weight:650!important}
.portal-body .portal-main .admin-table tbody tr:nth-child(even) td,.portal-body .portal-main .report-table tbody tr:nth-child(even) td,.report-table-wrap .admin-table tbody tr:nth-child(even) td{background:#172d15!important}.portal-body .portal-main .admin-table tbody tr:hover td,.portal-body .portal-main .report-table tbody tr:hover td,.report-table-wrap .admin-table tbody tr:hover td{background:#20391b!important}.portal-body .portal-main .admin-table td strong,.portal-body .portal-main .report-table td strong{color:var(--ems-ui-gold-soft)!important}.report-table-wrap{max-height:min(62vh,720px)!important}
/* Status chips. */
.admin-pill,.status-chip,.badge,.pill{display:inline-flex;align-items:center;width:max-content;min-height:26px;padding:4px 9px!important;border-radius:var(--ems-radius-pill)!important;font-size:.72rem!important;line-height:1.1;font-weight:900!important;letter-spacing:.01em}.admin-pill-active,.admin-pill-published,.admin-pill-public{background:rgba(67,169,96,.14)!important;border-color:rgba(91,212,125,.32)!important;color:var(--ems-ui-success)!important}.admin-pill-draft,.admin-pill-new,.admin-pill-follow-up,.admin-pill-under-review{background:rgba(249,196,84,.10)!important;border-color:rgba(249,196,84,.28)!important;color:var(--ems-ui-warning)!important}.admin-pill-expired,.admin-pill-inactive,.admin-pill-rejected{background:rgba(175,45,45,.15)!important;border-color:rgba(255,128,120,.28)!important;color:var(--ems-ui-danger)!important}
/* Notes / empty states. */
.teacher-safe-note,.student-safe-note,.admin-note,.report-rule-banner,.promotion-rule-banner,.security-rule-banner,.lc-exit-rule-note{border-radius:var(--ems-radius-inner)!important;background:rgba(249,196,84,.075)!important;border:1px solid rgba(249,196,84,.20)!important;color:var(--ems-ui-text-soft)!important;box-shadow:none!important}.admin-empty-state,.management-empty,.empty-state,.teacher-document-list:empty::before,.notice-card-list:empty::before{border-radius:var(--ems-radius-inner)!important;background:rgba(255,242,207,.04)!important;border:1px dashed rgba(249,196,84,.22)!important;color:var(--ems-ui-muted)!important;box-shadow:none!important}
/* Modals. */
.admin-modal-overlay{z-index:var(--ems-z-modal)!important;background:rgba(3,14,5,.82)!important;backdrop-filter:blur(8px)}.admin-modal-window{border-radius:var(--ems-radius-shell)!important;overflow:clip!important;background:linear-gradient(145deg,#203b19,#10230f)!important;border:1px solid var(--ems-ui-border-strong)!important;box-shadow:var(--ems-shadow-float)!important}.admin-modal-head{background:rgba(0,0,0,.09)}.admin-modal-body{scrollbar-gutter:stable}
/* Paper/document previews intentionally remain light. */
.result-template-layout img,.certificate-layout-preview-frame-wrap,.certificate-preview-page,.report-card-print-preview,.fee-receipt-preview,.fee-receipt-preview-box,.ems-mfa-qr{background:#fff!important;color:#203518!important}.result-public-card{background:#fffdf7!important;color:#26351f!important;border-color:rgba(49,74,37,.14)!important}.result-public-card h4,.result-public-card strong,.result-public-card p,.result-public-card span{color:inherit}
/* Scrollbars. */
.portal-body .portal-main *,.portal-sidebar{scrollbar-width:thin;scrollbar-color:rgba(249,196,84,.48) rgba(255,242,207,.045)}.portal-body .portal-main *::-webkit-scrollbar,.portal-sidebar::-webkit-scrollbar{width:8px;height:8px}.portal-body .portal-main *::-webkit-scrollbar-track,.portal-sidebar::-webkit-scrollbar-track{background:rgba(255,242,207,.045)}.portal-body .portal-main *::-webkit-scrollbar-thumb,.portal-sidebar::-webkit-scrollbar-thumb{background:rgba(249,196,84,.46);border-radius:999px;border:2px solid transparent;background-clip:padding-box}
/* QA / Result setup details. */
.launch-qa-item{border-radius:var(--ems-radius-inner)!important;border:1px solid var(--ems-ui-border-soft)!important;background:rgba(0,0,0,.11)!important}.launch-qa-run-meta div{border-radius:var(--ems-radius-control)!important;background:rgba(0,0,0,.10)!important;border:1px solid var(--ems-ui-border-soft)!important}#result-setup-summary>div{border-radius:var(--ems-radius-inner)!important;background:rgba(0,0,0,.10)!important;border-color:var(--ems-ui-border-soft)!important}
.portal-mobile-menu-toggle{border-radius:var(--ems-radius-control)!important;box-shadow:0 10px 24px rgba(0,0,0,.22)!important}.portal-mobile-backdrop{backdrop-filter:blur(3px)}
@media(max-width:1240px){.portal-main,.webadmin-main,.management-main{padding-top:72px!important}.portal-header,.webadmin-topbar,.management-topbar{margin-bottom:14px!important}.student-admin-tabs,.result-tabs,.bulk-import-tabs,.report-page-tabs,.report-tabs,.promotion-tabs,.security-tabs,.fee-page-tabs,.certificate-page-tabs,.launch-qa-tabs,.admission-tabs{max-width:100%;overflow-x:auto!important;flex-wrap:nowrap!important;scroll-snap-type:x proximity;padding-bottom:8px!important}.student-admin-tabs>*,.result-tabs>*,.bulk-import-tabs>*,.report-page-tabs>*,.report-tabs>*,.promotion-tabs>*,.security-tabs>*,.fee-page-tabs>*,.certificate-page-tabs>*,.launch-qa-tabs>*,.admission-tabs>*{flex:0 0 auto;white-space:nowrap;scroll-snap-align:start}}
@media(max-width:920px){.module-header{flex-direction:column!important;align-items:stretch!important}.module-actions{justify-content:flex-start!important}.admin-toolbar,.teacher-toolbar{align-items:stretch!important}.admin-toolbar .ems-input,.teacher-toolbar .ems-input{width:100%!important;max-width:none!important}.report-tab-panel .compact-form,.fee-tab-panel .compact-form,.certificate-tab-panel .compact-form{grid-template-columns:repeat(2,minmax(0,1fr))!important}.portal-stats,.webadmin-stats,.management-stats,.report-stat-grid,.promotion-stat-grid,.security-stat-grid,.launch-qa-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:600px){.portal-main,.webadmin-main,.management-main{padding:68px 10px 28px!important}.portal-header,.webadmin-topbar,.management-topbar{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:8px!important;padding:12px 13px!important;border-radius:16px!important}.portal-header p,.webadmin-topbar p,.management-topbar p{display:block!important;font-size:.78rem!important;line-height:1.42!important;-webkit-line-clamp:unset!important}.portal-header .ems-btn,.webadmin-topbar .ems-btn,.management-topbar .ems-btn{width:100%!important;justify-content:center!important}.portal-card,.admin-module-card,.management-module-card{border-radius:16px!important;padding:13px!important}.teacher-document-upload-card,.teacher-assignment-block,.report-stat-card,.portal-stat,.launch-qa-item{border-radius:13px!important}.report-tab-panel .compact-form,.fee-tab-panel .compact-form,.certificate-tab-panel .compact-form,.portal-stats,.webadmin-stats,.management-stats,.report-stat-grid,.promotion-stat-grid,.security-stat-grid,.launch-qa-stat-grid{grid-template-columns:1fr!important}.module-actions,.admin-modal-actions,.bulk-import-actions{display:grid!important;grid-template-columns:1fr!important;width:100%}.module-actions .ems-btn,.admin-modal-actions .ems-btn,.bulk-import-actions .ems-btn{width:100%!important;justify-content:center!important}.admin-table,.report-table,.attendance-table,.fee-ledger-table,.result-marks-table{min-width:640px!important}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important}}
/* ============================================================
   EMS P5.5.2 — FINAL PORTAL UI CONVERGENCE
   Final visual normalization before production packaging.

   Scope: every portal role and every shared operational component.
   The rules below deliberately converge legacy modules onto the same
   surface, table, toolbar, tab, metric, long-list and responsive system.
   ============================================================ */

/* Final shell sizing guard. */
.portal-main,.webadmin-main,.management-main{box-sizing:border-box!important;min-width:0!important;max-width:100%!important}

/* ---------- Final module composition ---------- */
.management-section-shell.report-admin-shell,
.management-section-shell.promotion-admin-shell,
.management-section-shell.security-admin-shell,
.management-section-shell.launch-qa-shell{
  display:grid!important;
  gap:16px!important;
  padding:20px!important;
  border-radius:var(--ems-radius-card)!important;
  background:var(--ems-ui-surface-1)!important;
  border:1px solid var(--ems-ui-border-strong)!important;
  box-shadow:var(--ems-shadow-card)!important;
  overflow:clip!important;
}

.report-admin-shell > .report-hero,
.promotion-admin-shell > .promotion-hero,
.security-admin-shell > .security-hero,
.launch-qa-shell > .launch-qa-hero{
  padding:0 0 14px!important;
  margin:0!important;
  border:0!important;
  border-bottom:1px solid var(--ems-ui-border-soft)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

.report-hero-actions,
.promotion-actions,
.security-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  justify-content:flex-end;
}

/* Rule banners are explanatory strips, not another card. */
.report-rule-banner,
.promotion-rule-banner,
.security-rule-banner,
.launch-qa-rule-banner{
  margin:0!important;
  padding:10px 2px 11px!important;
  border:0!important;
  border-top:1px solid rgba(249,196,84,.11)!important;
  border-bottom:1px solid rgba(249,196,84,.15)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:var(--ems-ui-text-soft)!important;
}

/* ---------- Flat metric strips for dense operational modules ---------- */
.report-stat-grid,
.promotion-stat-grid,
.security-stat-grid,
.launch-qa-stat-grid,
.attendance-metric-grid{
  display:grid!important;
  grid-template-columns:repeat(auto-fit,minmax(120px,1fr))!important;
  gap:0!important;
  margin:2px 0 4px!important;
  overflow:hidden!important;
  border-radius:var(--ems-radius-inner)!important;
  border:1px solid var(--ems-ui-border-soft)!important;
  background:rgba(0,0,0,.11)!important;
  box-shadow:none!important;
}

.report-stat-grid > .report-stat-card,
.promotion-stat-grid > .report-stat-card,
.security-stat-grid > .report-stat-card,
.launch-qa-stat-grid > .report-stat-card,
.attendance-metric-grid > div{
  min-width:0!important;
  min-height:78px!important;
  margin:0!important;
  padding:13px 14px!important;
  border:0!important;
  border-right:1px solid var(--ems-ui-border-soft)!important;
  border-bottom:1px solid var(--ems-ui-border-soft)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

.report-stat-grid > .report-stat-card:last-child,
.promotion-stat-grid > .report-stat-card:last-child,
.security-stat-grid > .report-stat-card:last-child,
.launch-qa-stat-grid > .report-stat-card:last-child,
.attendance-metric-grid > div:last-child{
  border-right-color:transparent!important;
}

.attendance-metric-grid strong{
  color:var(--ems-ui-gold)!important;
  font-size:1.35rem!important;
}
.attendance-metric-grid span{
  color:var(--ems-ui-muted)!important;
  font-size:.78rem!important;
  font-weight:800!important;
}

/* ---------- Toolbars are layout, not cards ---------- */
.admin-toolbar,
.teacher-toolbar,
.table-action-row,
.result-action-row,
.report-action-row,
.credential-toolbar{
  padding:0!important;
  margin:14px 0 18px!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

.admin-toolbar .ems-input,
.teacher-toolbar .ems-input{
  flex:0 1 360px;
}

/* ---------- Tabs: one-line navigation, no boxed tab tray ---------- */
.student-admin-tabs,
.result-tabs,
.bulk-import-tabs,
.report-page-tabs,
.report-tabs,
.promotion-tabs,
.security-tabs,
.fee-page-tabs,
.certificate-page-tabs,
.launch-qa-tabs,
.admission-tabs,
.teacher-tabs{
  display:flex!important;
  flex-wrap:nowrap!important;
  gap:2px!important;
  max-width:100%;
  margin:14px 0 18px!important;
  padding:0 0 5px!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  border:0!important;
  border-bottom:1px solid var(--ems-ui-border-soft)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  scrollbar-width:thin;
  scroll-snap-type:x proximity;
}

.student-admin-tabs > *,
.result-tabs > *,
.bulk-import-tabs > *,
.report-page-tabs > *,
.report-tabs > *,
.promotion-tabs > *,
.security-tabs > *,
.fee-page-tabs > *,
.certificate-page-tabs > *,
.launch-qa-tabs > *,
.admission-tabs > *,
.teacher-tabs > *{
  flex:0 0 auto!important;
  white-space:nowrap!important;
  scroll-snap-align:start;
}

.student-admin-tabs .ems-btn,
.result-tabs .ems-btn,
.bulk-import-tabs .ems-btn,
.report-page-tab,
.report-tabs button,
.promotion-tabs button,
.security-tabs button,
.fee-page-tab,
.certificate-page-tab,
.launch-qa-tabs button,
.admission-tabs button,
.teacher-tabs button{
  min-height:38px!important;
  padding:8px 11px!important;
  border:0!important;
  border-bottom:2px solid transparent!important;
  border-radius:8px 8px 0 0!important;
  background:transparent!important;
  color:var(--ems-ui-muted)!important;
  box-shadow:none!important;
}

.student-admin-tabs .ems-btn-primary,
.result-tabs .ems-btn-primary,
.bulk-import-tabs .ems-btn-primary,
.report-page-tab.active,
.report-tabs button.active,
.promotion-tabs button.active,
.security-tabs button.active,
.fee-page-tab.active,
.certificate-page-tab.active,
.launch-qa-tabs button.active,
.admission-tabs button.active,
.teacher-tabs button.active{
  background:rgba(249,196,84,.075)!important;
  color:var(--ems-ui-gold-soft)!important;
  border-bottom-color:var(--ems-ui-gold)!important;
  box-shadow:none!important;
}

/* ---------- Operational tables: one dark visual language ---------- */
.security-table-wrap,
#security-events-root,
#security-rls-root,
#security-settings-root,
#security-sensitive-root .admin-table-wrap,
.promotion-table-wrap,
#promotion-batch-history,
#promotion-closing-history{
  max-width:100%!important;
  padding:0!important;
  overflow:auto!important;
  border-radius:var(--ems-radius-inner)!important;
  border:1px solid var(--ems-ui-border)!important;
  background:#10220f!important;
  color:var(--ems-ui-text-soft)!important;
  box-shadow:none!important;
  scrollbar-gutter:stable both-edges;
}

.security-table-wrap .admin-table,
#security-events-root .admin-table,
#security-rls-root .admin-table,
#security-settings-root .admin-table,
#security-sensitive-root .admin-table,
.promotion-table-wrap .admin-table,
#promotion-batch-history .admin-table,
#promotion-closing-history .admin-table{
  background:#10220f!important;
}

.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,
.promotion-table-wrap .admin-table th,
#promotion-batch-history .admin-table th,
#promotion-closing-history .admin-table th{
  background:linear-gradient(180deg,#274520,#1e3919)!important;
  color:var(--ems-ui-gold)!important;
}

.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,
.promotion-table-wrap .admin-table td,
#promotion-batch-history .admin-table td,
#promotion-closing-history .admin-table td{
  background:#132712!important;
  color:var(--ems-ui-text-soft)!important;
}

.security-table-wrap .admin-table tbody tr:nth-child(even) td,
#security-events-root .admin-table tbody tr:nth-child(even) td,
#security-rls-root .admin-table tbody tr:nth-child(even) td,
#security-settings-root .admin-table tbody tr:nth-child(even) td,
#security-sensitive-root .admin-table tbody tr:nth-child(even) td,
.promotion-table-wrap .admin-table tbody tr:nth-child(even) td,
#promotion-batch-history .admin-table tbody tr:nth-child(even) td,
#promotion-closing-history .admin-table tbody tr:nth-child(even) td{
  background:#172d15!important;
}

.security-row-warn td{
  background:rgba(197,139,38,.13)!important;
  color:var(--ems-ui-warning)!important;
}

.promotion-table .ems-input{
  min-width:118px;
  background:linear-gradient(180deg,rgba(11,26,10,.96),rgba(26,45,20,.96))!important;
  color:var(--ems-ui-text)!important;
  border-color:rgba(249,196,84,.28)!important;
}

/* Any dynamically rendered table with >=16 rows becomes an internal data viewport.
   This prevents Security, Promotion, Teacher, Student, Audit and other long lists
   from stretching the entire portal page for thousands of pixels. */
@media screen{
  .admin-table-wrap:has(table tbody tr:nth-child(16)),
  .report-table-wrap:has(table tbody tr:nth-child(16)),
  .fee-table-wrap:has(table tbody tr:nth-child(16)),
  .teacher-table-wrap:has(table tbody tr:nth-child(16)),
  .generated-documents-table-wrap:has(table tbody tr:nth-child(16)),
  #security-events-root:has(table tbody tr:nth-child(16)),
  #security-rls-root:has(table tbody tr:nth-child(16)),
  #security-settings-root:has(table tbody tr:nth-child(16)),
  #promotion-batch-history:has(table tbody tr:nth-child(16)),
  #promotion-closing-history:has(table tbody tr:nth-child(16)),
  .promotion-table-wrap:has(table tbody tr:nth-child(16)){
    max-height:min(70vh,780px)!important;
    overflow:auto!important;
    overscroll-behavior:contain;
  }
}

/* ---------- Attendance: remove remaining light dashboard tiles ---------- */
.attendance-chart-card{
  border:1px solid var(--ems-ui-border-soft)!important;
  border-radius:var(--ems-radius-inner)!important;
  background:rgba(0,0,0,.11)!important;
  color:var(--ems-ui-text-soft)!important;
  box-shadow:none!important;
}
.attendance-chart-card h3{color:var(--ems-ui-gold-soft)!important}
.attendance-chart-card p{color:var(--ems-ui-muted)!important}
.attendance-pie{
  background:conic-gradient(var(--ems-ui-gold) calc(var(--p)*1%),rgba(249,196,84,.12) 0)!important;
}
.attendance-pie::after{
  background:#132712!important;
  box-shadow:inset 0 0 0 1px var(--ems-ui-border-soft)!important;
}
.attendance-pie span{color:var(--ems-ui-gold-soft)!important}
.attendance-bars div{
  background:rgba(255,242,207,.045)!important;
  border:1px solid var(--ems-ui-border-soft)!important;
  color:var(--ems-ui-text-soft)!important;
}

/* ---------- Fee operational surfaces ---------- */
.fee-ledger-head,
.fee-structure-box,
.fee-account-card,
.fee-inline-form{
  background:rgba(255,242,207,.055)!important;
  border-color:var(--ems-ui-border-soft)!important;
  box-shadow:none!important;
  color:var(--ems-ui-text-soft)!important;
}
.fee-ledger-head h4,
.fee-structure-box h4,
.fee-account-card h4,
.fee-inline-form h4,
.fee-total-line strong,
.fee-stat-row strong{color:var(--ems-ui-gold-soft)!important}
.fee-ledger-head span,
.fee-total-line span,
.fee-stat-row span{color:var(--ems-ui-muted)!important}

/* ---------- System Health / Production readiness ---------- */
.system-health-card,
.production-readiness-card{
  background:var(--ems-ui-surface-1)!important;
  border:1px solid var(--ems-ui-border-strong)!important;
  color:var(--ems-ui-text-soft)!important;
  box-shadow:none!important;
}
.system-health-item,
.production-check-item{
  background:rgba(0,0,0,.10)!important;
  border-color:var(--ems-ui-border-soft)!important;
  box-shadow:none!important;
  color:var(--ems-ui-text-soft)!important;
}
.system-health-top{color:var(--ems-ui-muted)!important}
.system-health-item h4,
.production-check-item strong{color:var(--ems-ui-gold-soft)!important}
.system-health-item p,
.system-health-item small,
.production-check-item small{color:var(--ems-ui-muted)!important}
.production-check-item.done{
  background:rgba(67,169,96,.075)!important;
  border-color:rgba(91,212,125,.20)!important;
}

/* ---------- Security and promotion checks: one grouped surface ---------- */
.security-check-grid,
.promotion-check-grid{
  display:grid!important;
  grid-template-columns:repeat(auto-fit,minmax(230px,1fr))!important;
  gap:0!important;
  overflow:hidden;
  border:1px solid var(--ems-ui-border-soft)!important;
  border-radius:var(--ems-radius-inner)!important;
  background:rgba(0,0,0,.10)!important;
}
.security-check,
.promotion-check{
  margin:0!important;
  padding:13px 14px!important;
  border:0!important;
  border-right:1px solid var(--ems-ui-border-soft)!important;
  border-bottom:1px solid var(--ems-ui-border-soft)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.security-policy-card code{
  background:rgba(0,0,0,.18)!important;
  color:var(--ems-ui-gold-soft)!important;
  border:1px solid var(--ems-ui-border-soft)!important;
}

.security-action-card,
.promotion-safety-card{
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.security-action-card .module-header,
.promotion-safety-card .module-header{
  margin-bottom:10px!important;
}
.security-action-card .admin-toolbar,
.promotion-safety-card .admin-toolbar{
  margin:0!important;
}

/* ---------- QA: flatten the nested-card architecture ---------- */
.launch-qa-run-card,
.launch-qa-readiness-card,
.launch-qa-automated-card,
.launch-qa-history-card{
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

.launch-qa-run-card > h3,
.launch-qa-readiness-card > h3{
  margin:0 0 4px!important;
  color:var(--ems-ui-gold-soft)!important;
}

.launch-qa-run-meta{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:0!important;
  margin:12px 0 0!important;
  padding:10px 0!important;
  border-top:1px solid var(--ems-ui-border-soft)!important;
  border-bottom:1px solid var(--ems-ui-border-soft)!important;
}
.launch-qa-run-meta div{
  min-width:0;
  padding:2px 12px!important;
  border:0!important;
  border-right:1px solid var(--ems-ui-border-soft)!important;
  border-radius:0!important;
  background:transparent!important;
}
.launch-qa-run-meta div:last-child{border-right:0!important}

.launch-qa-readiness-grid{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:0!important;
  border-top:1px solid var(--ems-ui-border-soft)!important;
  border-bottom:1px solid var(--ems-ui-border-soft)!important;
}
.launch-qa-readiness-card{
  display:grid!important;
  grid-template-columns:minmax(100px,.42fr) 1fr!important;
  column-gap:10px!important;
  align-items:center!important;
  padding:10px 12px!important;
  border-right:1px solid var(--ems-ui-border-soft)!important;
  border-bottom:1px solid var(--ems-ui-border-soft)!important;
}
.launch-qa-readiness-card strong{
  grid-row:1/3;
  font-size:1.05rem!important;
  color:var(--ems-ui-gold-soft)!important;
}
.launch-qa-readiness-card span{margin:0!important;font-size:.82rem!important}
.launch-qa-readiness-card small{margin:2px 0 0!important;font-size:.72rem!important;color:var(--ems-ui-muted)!important}
.launch-qa-readiness-card.ok,
.launch-qa-readiness-card.pending{background:transparent!important}

.launch-qa-list{
  display:block!important;
}
.launch-qa-item{
  display:grid!important;
  grid-template-columns:minmax(240px,1fr) 150px minmax(200px,.72fr) auto!important;
  gap:10px 12px!important;
  align-items:center!important;
  margin:0!important;
  padding:13px 0!important;
  border:0!important;
  border-bottom:1px solid var(--ems-ui-border-soft)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.launch-qa-item.qa-pass,
.launch-qa-item.qa-fail,
.launch-qa-item.qa-na{background:transparent!important}
.launch-qa-item.qa-pass{box-shadow:inset 3px 0 0 rgba(91,212,125,.48)!important;padding-left:10px!important}
.launch-qa-item.qa-fail{box-shadow:inset 3px 0 0 rgba(255,128,120,.56)!important;padding-left:10px!important}
.launch-qa-item.qa-na{opacity:.76}

.launch-qa-automated-list{display:block!important;margin-top:8px!important}
.launch-qa-automated-row{
  display:grid!important;
  grid-template-columns:72px minmax(180px,.62fr) minmax(240px,1fr)!important;
  gap:12px!important;
  padding:11px 0!important;
  border:0!important;
  border-bottom:1px solid var(--ems-ui-border-soft)!important;
  border-radius:0!important;
  background:transparent!important;
}
.launch-qa-history-card .module-header,
.launch-qa-automated-card .module-header{
  padding-bottom:10px!important;
  margin-bottom:8px!important;
}

/* Release gate remains the one intentionally prominent QA state. */
.launch-qa-gate-banner{
  border-radius:var(--ems-radius-inner)!important;
  box-shadow:none!important;
}

/* ---------- Teacher Management: simplify high-frequency row actions ---------- */
#table-teachers th:nth-child(1){min-width:150px}
#table-teachers th:nth-child(2){min-width:190px}
#table-teachers th:nth-child(3){min-width:270px}
#table-teachers th:nth-child(4){min-width:250px}
#table-teachers th:nth-child(5){min-width:220px}
#table-teachers td{
  vertical-align:top!important;
  line-height:1.45!important;
}
#table-teachers td small{
  display:inline-block;
  margin-top:2px;
  color:var(--ems-ui-muted)!important;
  line-height:1.4!important;
}
.teacher-row-actions{
  display:flex!important;
  align-items:flex-start!important;
  flex-wrap:wrap!important;
  gap:6px!important;
}
.row-action-more{
  position:relative;
  z-index:4;
}
.row-action-more > summary{
  list-style:none;
  cursor:pointer;
  user-select:none;
}
.row-action-more > summary::-webkit-details-marker{display:none}
.row-action-more[open] > summary{
  border-color:rgba(249,196,84,.45)!important;
  color:var(--ems-ui-gold-soft)!important;
}
.row-action-menu{
  position:absolute;
  top:calc(100% + 6px);
  right:0;
  z-index:var(--ems-z-dropdown);
  display:grid;
  gap:6px;
  width:max-content;
  min-width:190px;
  padding:8px;
  border-radius:var(--ems-radius-control);
  border:1px solid var(--ems-ui-border-strong);
  background:#142711;
  box-shadow:0 18px 40px rgba(0,0,0,.34);
}
.row-action-menu .ems-btn{
  width:100%;
  justify-content:flex-start!important;
  text-align:left;
}

/* Destructive hierarchy: Delete stays strongest; reversible danger is quieter. */
.portal-body .ems-btn-danger{
  background:rgba(176,68,68,.16)!important;
  color:#ffc2bc!important;
  border-color:rgba(255,128,120,.34)!important;
  box-shadow:none!important;
}
.portal-body .ems-btn-danger:hover{background:rgba(176,68,68,.26)!important}
.portal-body .ems-delete-btn{
  background:linear-gradient(135deg,#8b3333,#b74747)!important;
  color:#fff!important;
  border-color:rgba(255,190,184,.35)!important;
}

/* ---------- Shared rows / search / summaries ---------- */
.module-live-summary{
  display:flex!important;
  align-items:center!important;
  gap:7px!important;
  flex-wrap:wrap!important;
  margin:8px 0 2px!important;
}
.module-live-summary .admin-pill{
  background:transparent!important;
  border-color:var(--ems-ui-border-soft)!important;
  color:var(--ems-ui-muted)!important;
}

/* ---------- Sidebar polish ---------- */
.portal-sidebar,
.webadmin-sidebar,
.management-sidebar{
  scrollbar-color:rgba(249,196,84,.28) transparent!important;
}
.portal-sidebar::-webkit-scrollbar-thumb,
.webadmin-sidebar::-webkit-scrollbar-thumb,
.management-sidebar::-webkit-scrollbar-thumb{
  background:rgba(249,196,84,.28)!important;
}

/* ---------- Responsive convergence ---------- */
@media(max-width:1180px){
  .launch-qa-item{
    grid-template-columns:minmax(220px,1fr) 145px!important;
  }
  .launch-qa-note-input,
  .launch-qa-item > .ems-btn{
    grid-column:1/-1;
  }
  .row-action-menu{
    right:auto;
    left:0;
  }
}

@media(max-width:920px){
  .management-section-shell.report-admin-shell,
  .management-section-shell.promotion-admin-shell,
  .management-section-shell.security-admin-shell,
  .management-section-shell.launch-qa-shell{
    padding:15px!important;
  }
  .report-stat-grid,
  .promotion-stat-grid,
  .security-stat-grid,
  .launch-qa-stat-grid,
  .attendance-metric-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .launch-qa-run-meta,
  .launch-qa-readiness-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .launch-qa-automated-row{
    grid-template-columns:70px 1fr!important;
  }
  .launch-qa-automated-row > span:last-child{
    grid-column:1/-1;
  }
  .row-action-more{position:static}
  .row-action-menu{
    position:static;
    width:100%;
    margin-top:6px;
  }
}

@media(max-width:600px){
  .management-section-shell.report-admin-shell,
  .management-section-shell.promotion-admin-shell,
  .management-section-shell.security-admin-shell,
  .management-section-shell.launch-qa-shell{
    padding:12px!important;
    border-radius:16px!important;
  }
  .report-stat-grid,
  .promotion-stat-grid,
  .security-stat-grid,
  .launch-qa-stat-grid,
  .attendance-metric-grid,
  .launch-qa-run-meta,
  .launch-qa-readiness-grid{
    grid-template-columns:1fr!important;
  }
  .report-stat-grid > .report-stat-card,
  .promotion-stat-grid > .report-stat-card,
  .security-stat-grid > .report-stat-card,
  .launch-qa-stat-grid > .report-stat-card,
  .attendance-metric-grid > div,
  .launch-qa-run-meta div,
  .launch-qa-readiness-card{
    border-right:0!important;
  }
  .launch-qa-item{
    grid-template-columns:1fr!important;
    gap:8px!important;
  }
  .launch-qa-status-select,
  .launch-qa-note-input,
  .launch-qa-item > .ems-btn{
    width:100%!important;
    grid-column:auto!important;
  }
  .launch-qa-automated-row{
    grid-template-columns:1fr!important;
  }
  .launch-qa-automated-row > span:last-child{grid-column:auto}
  .teacher-row-actions > .ems-btn,
  .teacher-row-actions > .row-action-more{
    width:100%;
  }
  .row-action-more > summary{width:100%;text-align:center}
  .row-action-menu{min-width:0}
}

/* ============================================================
   EMS P5.5.3-R2 — STRUCTURAL PORTAL UI ARCHITECTURE
   Explicit shared primitives replace class-name guessing.

   Architecture:
   Canvas -> Role Header -> ONE Module Surface -> Sections -> Data.

   .ems-module-surface  : the single painted operational module owner
   .ems-section         : ordinary workflow section; no card treatment
   .ems-tab-panel       : transparent active/inactive tab content wrapper
   .ems-tabs            : navigation strip only
   .ems-metric-strip    : one joined metric boundary
   .ems-toolbar-row     : layout-only filters/actions
   .ems-form-layout     : layout-only form
   .ems-workflow-list   : guidance/workflow rows, never tiles
   .ems-data-shell      : the one explicit operational table boundary
   .ems-data-card       : analytical/data visualization exception
   .ems-annotation      : semantic rule/note strip
   ============================================================ */

:root{
  --ems-r2-section-gap:22px;
  --ems-r2-section-divider:rgba(249,196,84,.15);
  --ems-r2-data-inset:10px;
  --ems-r2-data-radius:13px;
  --ems-r2-data-bg:rgba(2,16,7,.42);
  --ems-r2-data-table:#10220f;
  --ems-r2-data-max-height:min(60vh,660px);
  --ems-r4-table-header-body-gap:8px;
  --ems-r2-soft-fill:rgba(255,242,207,.035);
}

/* ---------- A. Shell ownership ---------- */
.portal-body .portal-main,
.portal-body .webadmin-main,
.portal-body .management-main{
  min-width:0!important;
  overflow:visible!important;
  container-type:inline-size;
}

.portal-body .portal-header,
.portal-body .webadmin-topbar,
.portal-body .management-topbar{
  position:relative!important;
  inset:auto!important;
  z-index:2!important;
  overflow:clip!important;
}

@media(min-width:1241px){
  .portal-body .portal-sidebar,
  .portal-body .webadmin-sidebar,
  .portal-body .management-sidebar{
    position:sticky!important;
    top:0!important;
    height:100dvh!important;
    max-height:100dvh!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    overscroll-behavior:contain!important;
    align-self:start!important;
    z-index:10!important;
  }
}

/* ---------- B. One painted owner per operational module ---------- */
.portal-body .portal-main .ems-module-surface,
.portal-body .webadmin-main .ems-module-surface,
.portal-body .management-main .ems-module-surface{
  min-width:0!important;
  max-width:100%!important;
  overflow:clip!important;
  border:1px solid var(--ems-ui-border-strong)!important;
  border-radius:var(--ems-radius-card)!important;
  background:var(--ems-ui-surface-1)!important;
  box-shadow:var(--ems-shadow-card)!important;
}

/* A legacy card that lives inside the explicit module owner can never become
   a second module surface. Explicit primitive wins over old readability CSS. */
.portal-body .portal-main .ems-module-surface .ems-section,
.portal-body .webadmin-main .ems-module-surface .ems-section,
.portal-body .management-main .ems-module-surface .ems-section{
  position:relative!important;
  min-width:0!important;
  max-width:100%!important;
  margin:0!important;
  padding:var(--ems-r2-section-gap) 0 0!important;
  border:0!important;
  border-top:1px solid var(--ems-r2-section-divider)!important;
  border-radius:0!important;
  outline:0!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
}

/* First section of a tab/stack starts clean; following sections receive the divider. */
.portal-body .portal-main .ems-tab-panel > .ems-section:first-child,
.portal-body .portal-main .ems-section-stack > .ems-section:first-child,
.portal-body .webadmin-main .ems-tab-panel > .ems-section:first-child,
.portal-body .management-main .ems-tab-panel > .ems-section:first-child{
  padding-top:0!important;
  border-top:0!important;
}

/* Nested sections are still sections, never cards. */
.portal-body .portal-main .ems-section .ems-section,
.portal-body .management-main .ems-section .ems-section{
  margin-top:var(--ems-r2-section-gap)!important;
  padding-top:var(--ems-r2-section-gap)!important;
  border-top:1px solid var(--ems-r2-section-divider)!important;
}

/* ---------- C. Heading hierarchy ---------- */
.portal-body .portal-main .ems-heading-row,
.portal-body .webadmin-main .ems-heading-row,
.portal-body .management-main .ems-heading-row{
  min-width:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

.portal-body .portal-main .ems-section > .ems-heading-row,
.portal-body .management-main .ems-section > .ems-heading-row{
  margin:0 0 14px!important;
  padding:0 0 12px!important;
  border:0!important;
  border-bottom:1px solid rgba(249,196,84,.10)!important;
  border-radius:0!important;
}

.portal-body .portal-main .ems-section > h3:first-child,
.portal-body .management-main .ems-section > h3:first-child{
  margin-top:0!important;
  margin-bottom:8px!important;
}

/* ---------- D. Tabs are navigation, not a card ---------- */
.portal-body .portal-main .ems-tabs,
.portal-body .webadmin-main .ems-tabs,
.portal-body .management-main .ems-tabs{
  position:static!important;
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  flex-wrap:wrap!important;
  margin:16px 0 18px!important;
  padding:0 0 10px!important;
  border:0!important;
  border-bottom:1px solid var(--ems-r2-section-divider)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  overflow-x:auto!important;
  scrollbar-width:thin;
}

.portal-body .portal-main .ems-tab-panel,
.portal-body .webadmin-main .ems-tab-panel,
.portal-body .management-main .ems-tab-panel{
  min-width:0!important;
  max-width:100%!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  outline:0!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
}

/* ---------- E. Notes/rules are annotations, not rectangles ---------- */
.portal-body .portal-main .ems-annotation,
.portal-body .webadmin-main .ems-annotation,
.portal-body .management-main .ems-annotation{
  margin:12px 0 14px!important;
  padding:9px 12px!important;
  border:0!important;
  border-left:3px solid rgba(249,196,84,.72)!important;
  border-radius:0!important;
  background:linear-gradient(90deg,rgba(249,196,84,.09),rgba(249,196,84,.025) 72%,transparent)!important;
  box-shadow:none!important;
  color:rgba(255,242,207,.87)!important;
}
.portal-body .portal-main .ems-annotation.success{border-left-color:rgba(74,222,128,.76)!important;background:linear-gradient(90deg,rgba(74,222,128,.08),transparent)!important}
.portal-body .portal-main .ems-annotation.danger{border-left-color:rgba(248,113,113,.82)!important;background:linear-gradient(90deg,rgba(248,113,113,.08),transparent)!important}

/* ---------- F. Controls/form/toolbars are layout only ---------- */
.portal-body .portal-main .ems-toolbar-row,
.portal-body .webadmin-main .ems-toolbar-row,
.portal-body .management-main .ems-toolbar-row{
  min-width:0!important;
  max-width:100%!important;
  margin:12px 0 16px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

.portal-body .portal-main .ems-form-layout,
.portal-body .webadmin-main .ems-form-layout,
.portal-body .management-main .ems-form-layout{
  min-width:0!important;
  max-width:100%!important;
  background:transparent!important;
  box-shadow:none!important;
}

.portal-body .portal-main .ems-plain-form,
.portal-body .portal-main .ems-plain-group,
.portal-body .management-main .ems-plain-form,
.portal-body .management-main .ems-plain-group{
  position:relative!important;
  overflow:visible!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  outline:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.portal-body .portal-main .ems-plain-form::before,
.portal-body .portal-main .ems-plain-group::before,
.portal-body .management-main .ems-plain-form::before,
.portal-body .management-main .ems-plain-group::before{
  content:none!important;
  display:none!important;
}

/* Search/filter controls should not stretch into empty full-width trays. */
.portal-body .portal-main .ems-toolbar-row > :is(input,select,.ems-input,.ems-field),
.portal-body .management-main .ems-toolbar-row > :is(input,select,.ems-input,.ems-field){
  flex:0 1 420px!important;
  width:auto!important;
  max-width:min(100%,420px)!important;
}

/* ---------- G. Joined metrics ---------- */
.portal-body .portal-main .ems-metric-strip,
.portal-body .webadmin-main .ems-metric-strip,
.portal-body .management-main .ems-metric-strip{
  display:grid!important;
  grid-template-columns:repeat(auto-fit,minmax(120px,1fr))!important;
  gap:0!important;
  margin:14px 0 16px!important;
  padding:0!important;
  overflow:hidden!important;
  border:1px solid var(--ems-ui-border-soft)!important;
  border-radius:var(--ems-radius-inner)!important;
  background:rgba(0,0,0,.10)!important;
  box-shadow:none!important;
}
.portal-body .portal-main .ems-metric-strip > *,
.portal-body .webadmin-main .ems-metric-strip > *,
.portal-body .management-main .ems-metric-strip > *{
  min-width:0!important;
  min-height:0!important;
  margin:0!important;
  padding:13px 14px!important;
  border:0!important;
  border-right:1px solid var(--ems-r2-section-divider)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.portal-body .portal-main .ems-metric-strip > *:last-child,
.portal-body .management-main .ems-metric-strip > *:last-child{border-right:0!important}

/* ---------- H. Split workspaces use dividers, not cards ---------- */
.portal-body .portal-main .ems-split-layout,
.portal-body .management-main .ems-split-layout{
  min-width:0!important;
  gap:24px!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
.portal-body .portal-main .ems-split-layout > .ems-section,
.portal-body .management-main .ems-split-layout > .ems-section{
  padding-top:0!important;
  border-top:0!important;
}

@media(min-width:921px){
  .portal-body .portal-main .student-photo-layout > .ems-section + .ems-section,
  .portal-body .portal-main .certificate-work-grid > .ems-section + .ems-section,
  .portal-body .portal-main .student-two-column > .ems-section,
  .portal-body .management-main .student-photo-layout > .ems-section + .ems-section,
  .portal-body .management-main .certificate-work-grid > .ems-section + .ems-section,
  .portal-body .management-main .student-two-column > .ems-section{
    padding-left:24px!important;
    border-left:1px solid var(--ems-r2-section-divider)!important;
  }
  .portal-body .portal-main .fee-action-grid > .ems-plain-form + .ems-plain-form,
  .portal-body .management-main .fee-action-grid > .ems-plain-form + .ems-plain-form{
    padding-left:24px!important;
    border-left:1px solid var(--ems-r2-section-divider)!important;
  }
}

/* ---------- I. Workflow/guidance is a row list, never a tile dashboard ---------- */
.portal-body .portal-main .ems-workflow-list,
.portal-body .webadmin-main .ems-workflow-list,
.portal-body .management-main .ems-workflow-list{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:0!important;
  margin:8px 0 0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.portal-body .portal-main .ems-workflow-list > *,
.portal-body .webadmin-main .ems-workflow-list > *,
.portal-body .management-main .ems-workflow-list > *{
  display:grid!important;
  gap:4px!important;
  min-width:0!important;
  margin:0!important;
  padding:12px 0!important;
  border:0!important;
  border-bottom:1px solid var(--ems-r2-section-divider)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.portal-body .portal-main .ems-workflow-list > *:last-child,
.portal-body .management-main .ems-workflow-list > *:last-child{border-bottom:0!important}
.portal-body .portal-main .ems-workflow-list > * > strong,
.portal-body .management-main .ems-workflow-list > * > strong{color:var(--ems-ui-gold-soft)!important}
.portal-body .portal-main .ems-workflow-list > * > span,
.portal-body .management-main .ems-workflow-list > * > span{color:var(--ems-ui-muted)!important;line-height:1.5!important}

/* ---------- J. ONE operational data/table boundary ---------- */
.portal-body .portal-main .ems-data-shell,
.portal-body .webadmin-main .ems-data-shell,
.portal-body .management-main .ems-data-shell{
  box-sizing:border-box!important;
  width:100%!important;
  max-width:100%!important;
  max-height:var(--ems-r2-data-max-height)!important;
  margin:14px 0 0!important;
  padding:var(--ems-r2-data-inset)!important;
  overflow:auto!important;
  overscroll-behavior:contain!important;
  -webkit-overflow-scrolling:touch!important;
  scrollbar-gutter:stable both-edges;
  border:1px solid var(--ems-ui-border-soft)!important;
  border-radius:var(--ems-r2-data-radius)!important;
  outline:0!important;
  background:var(--ems-r2-data-bg)!important;
  box-shadow:none!important;
  scroll-padding-top:var(--ems-r2-data-inset);
}

.portal-body .portal-main .ems-data-shell > table,
.portal-body .webadmin-main .ems-data-shell > table,
.portal-body .management-main .ems-data-shell > table{
  width:max-content!important;
  min-width:100%!important;
  max-width:none!important;
  table-layout:auto!important;
  margin:0!important;
  border:0!important;
  outline:0!important;
  border-radius:calc(var(--ems-r2-data-radius) - 3px)!important;
  border-collapse:separate!important;
  border-spacing:0!important;
  background:var(--ems-r2-data-table)!important;
  box-shadow:none!important;
  overflow:hidden!important;
}

.portal-body .portal-main .ems-data-shell > table thead th,
.portal-body .webadmin-main .ems-data-shell > table thead th,
.portal-body .management-main .ems-data-shell > table thead th{
  position:sticky!important;
  top:var(--ems-r2-data-inset)!important;
  z-index:3!important;
}
.portal-body .portal-main .ems-data-shell > table thead th:first-child,
.portal-body .management-main .ems-data-shell > table thead th:first-child{border-top-left-radius:calc(var(--ems-r2-data-radius) - 3px)!important}
.portal-body .portal-main .ems-data-shell > table thead th:last-child,
.portal-body .management-main .ems-data-shell > table thead th:last-child{border-top-right-radius:calc(var(--ems-r2-data-radius) - 3px)!important}

/* EMS P5.5.3-R3 — bounded data viewport
   Every operational table owns its scrolling. Short tables stay natural;
   long/wide tables scroll inside the data shell instead of stretching the page. */
.portal-body .portal-main .ems-data-shell,
.portal-body .webadmin-main .ems-data-shell,
.portal-body .management-main .ems-data-shell{
  scrollbar-width:thin;
  scrollbar-color:rgba(249,196,84,.42) rgba(3,18,7,.38);
}
.portal-body .portal-main .ems-data-shell::-webkit-scrollbar,
.portal-body .webadmin-main .ems-data-shell::-webkit-scrollbar,
.portal-body .management-main .ems-data-shell::-webkit-scrollbar{width:10px;height:10px}
.portal-body .portal-main .ems-data-shell::-webkit-scrollbar-track,
.portal-body .webadmin-main .ems-data-shell::-webkit-scrollbar-track,
.portal-body .management-main .ems-data-shell::-webkit-scrollbar-track{background:rgba(3,18,7,.38)}
.portal-body .portal-main .ems-data-shell::-webkit-scrollbar-thumb,
.portal-body .webadmin-main .ems-data-shell::-webkit-scrollbar-thumb,
.portal-body .management-main .ems-data-shell::-webkit-scrollbar-thumb{
  background:rgba(249,196,84,.34);
  border:2px solid rgba(3,18,7,.38);
  border-radius:999px;
}

/* Report header -> table: preserve a visible breathing gap. */
.portal-body .portal-main .report-output-head + .ems-data-shell,
.portal-body .management-main .report-output-head + .ems-data-shell{margin-top:16px!important}

/* Data summaries may have one controlled boundary, but never card-on-card shadows. */
.portal-body .portal-main .ems-data-summary,
.portal-body .management-main .ems-data-summary{
  margin:12px 0!important;
  padding:14px 0!important;
  border:0!important;
  border-top:1px solid var(--ems-r2-section-divider)!important;
  border-bottom:1px solid var(--ems-r2-section-divider)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

/* Analytical visualization cards are the intentional data exception. */
.portal-body .portal-main .ems-data-card,
.portal-body .management-main .ems-data-card{
  border:1px solid var(--ems-ui-border-soft)!important;
  border-radius:var(--ems-radius-inner)!important;
  background:rgba(0,0,0,.10)!important;
  box-shadow:none!important;
}

/* ---------- K. Fee architecture: sections + dividers, no boxed forms ---------- */
.portal-body .portal-main .fee-stacked-layout.ems-section-stack,
.portal-body .management-main .fee-stacked-layout.ems-section-stack{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:0!important;
}
.portal-body .portal-main .fee-setup-body,
.portal-body .management-main .fee-setup-body{
  padding:0!important;
  border:0!important;
  background:transparent!important;
}
.portal-body .portal-main .fee-structure-grid,
.portal-body .management-main .fee-structure-grid{gap:0!important}
.portal-body .portal-main .fee-structure-actions,
.portal-body .management-main .fee-structure-actions{
  margin-top:14px!important;
  padding-top:14px!important;
  border-top:1px solid rgba(249,196,84,.10)!important;
}
.portal-body .portal-main .fee-action-grid.ems-split-layout,
.portal-body .management-main .fee-action-grid.ems-split-layout{
  margin-top:18px!important;
  padding-top:18px!important;
  border-top:1px solid var(--ems-r2-section-divider)!important;
}
.portal-body .portal-main .ems-inline-preview,
.portal-body .management-main .ems-inline-preview{
  min-width:0!important;
  margin:4px 0!important;
  padding:10px 0!important;
  border:0!important;
  border-top:1px solid rgba(249,196,84,.10)!important;
  border-bottom:1px solid rgba(249,196,84,.10)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

/* ---------- L. Result setup summary becomes metadata strip ---------- */
.portal-body .portal-main #result-setup-summary,
.portal-body .management-main #result-setup-summary{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  gap:0!important;
  margin:16px 0 0!important;
  padding:0!important;
  overflow:hidden!important;
  border:1px solid var(--ems-ui-border-soft)!important;
  border-radius:var(--ems-radius-inner)!important;
  background:rgba(0,0,0,.08)!important;
}
.portal-body .portal-main #result-setup-summary > div,
.portal-body .management-main #result-setup-summary > div{
  min-height:0!important;
  margin:0!important;
  padding:12px 13px!important;
  border:0!important;
  border-right:1px solid var(--ems-r2-section-divider)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.portal-body .portal-main #result-setup-summary > div:last-child,
.portal-body .management-main #result-setup-summary > div:last-child{border-right:0!important}
.portal-body .portal-main .ems-check-field,
.portal-body .management-main .ems-check-field{
  padding:10px 0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
}

/* ---------- M. Photo, certificate, student workflow closure ---------- */
.portal-body .portal-main .student-photo-match-summary,
.portal-body .management-main .student-photo-match-summary{
  padding:10px 0!important;
  border:0!important;
  border-top:1px solid var(--ems-r2-section-divider)!important;
  border-bottom:1px solid var(--ems-r2-section-divider)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

/* Keep document/paper previews intentionally distinct. */
.portal-body .portal-main :is(.certificate-layout-preview-card,.certificate-layout-preview-frame-wrap,.certificate-preview-page,.result-template-layout img,.fee-receipt-preview,.report-card-print-preview),
.portal-body .management-main :is(.certificate-layout-preview-card,.certificate-layout-preview-frame-wrap,.certificate-preview-page,.result-template-layout img,.fee-receipt-preview,.report-card-print-preview){
  isolation:isolate;
}

/* Release/safety gates remain deliberate semantic surfaces. */
.portal-body .portal-main :is(.launch-qa-gate-banner,.security-lockdown-card,.backup-production-lock-card,.production-lock-card,.production-readiness-card,.restore-readiness-card),
.portal-body .management-main :is(.launch-qa-gate-banner,.security-lockdown-card,.backup-production-lock-card,.production-lock-card,.production-readiness-card,.restore-readiness-card){
  isolation:isolate;
}


/* ---------- O. Repeated operational items are rows, not mini-cards ---------- */
.portal-body .portal-main :is(.ems-list-row,.ems-status-row,.ems-choice-row),
.portal-body .webadmin-main :is(.ems-list-row,.ems-status-row,.ems-choice-row),
.portal-body .management-main :is(.ems-list-row,.ems-status-row,.ems-choice-row){
  min-width:0!important;
  margin:0!important;
  padding:11px 0!important;
  border:0!important;
  border-bottom:1px solid var(--ems-r2-section-divider)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  transform:none!important;
}
.portal-body .portal-main :is(.ems-list-row,.ems-status-row,.ems-choice-row):last-child,
.portal-body .management-main :is(.ems-list-row,.ems-status-row,.ems-choice-row):last-child{border-bottom:0!important}
.portal-body .portal-main .ems-choice-row{cursor:pointer!important}
.portal-body .portal-main .ems-choice-row.checked{
  padding-left:10px!important;
  border-left:3px solid rgba(249,196,84,.72)!important;
  background:linear-gradient(90deg,rgba(249,196,84,.07),transparent)!important;
}

/* ---------- N. Responsive convergence ---------- */
@media(max-width:920px){
  :root{--ems-r2-data-max-height:min(58dvh,560px)}
  .portal-body .portal-main .ems-metric-strip,
  .portal-body .management-main .ems-metric-strip{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .portal-body .portal-main #result-setup-summary,
  .portal-body .management-main #result-setup-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .portal-body .portal-main .ems-split-layout > .ems-section,
  .portal-body .management-main .ems-split-layout > .ems-section,
  .portal-body .portal-main .fee-action-grid > .ems-plain-form,
  .portal-body .management-main .fee-action-grid > .ems-plain-form{
    padding-left:0!important;
    border-left:0!important;
  }
  .portal-body .portal-main .ems-split-layout > .ems-section + .ems-section,
  .portal-body .management-main .ems-split-layout > .ems-section + .ems-section,
  .portal-body .portal-main .fee-action-grid > .ems-plain-form + .ems-plain-form,
  .portal-body .management-main .fee-action-grid > .ems-plain-form + .ems-plain-form{
    padding-top:var(--ems-r2-section-gap)!important;
    border-top:1px solid var(--ems-r2-section-divider)!important;
  }
  .portal-body .portal-main .ems-toolbar-row > :is(input,select,.ems-input,.ems-field),
  .portal-body .management-main .ems-toolbar-row > :is(input,select,.ems-input,.ems-field){
    flex:1 1 100%!important;
    width:100%!important;
    max-width:none!important;
  }
}

@media(max-width:600px){
  :root{--ems-r2-data-inset:6px;--ems-r2-section-gap:18px;--ems-r2-data-max-height:min(56dvh,480px)}
  .portal-body .portal-main .ems-metric-strip,
  .portal-body .management-main .ems-metric-strip,
  .portal-body .portal-main #result-setup-summary,
  .portal-body .management-main #result-setup-summary{grid-template-columns:1fr!important}
  .portal-body .portal-main .ems-metric-strip > *,
  .portal-body .management-main .ems-metric-strip > *,
  .portal-body .portal-main #result-setup-summary > div,
  .portal-body .management-main #result-setup-summary > div{
    border-right:0!important;
    border-bottom:1px solid var(--ems-r2-section-divider)!important;
  }
  .portal-body .portal-main .ems-metric-strip > *:last-child,
  .portal-body .management-main .ems-metric-strip > *:last-child,
  .portal-body .portal-main #result-setup-summary > div:last-child,
  .portal-body .management-main #result-setup-summary > div:last-child{border-bottom:0!important}
  .portal-body .portal-main .ems-tabs,
  .portal-body .management-main .ems-tabs{flex-wrap:nowrap!important}
  .portal-body .portal-main .ems-tabs > *,
  .portal-body .management-main .ems-tabs > *{flex:0 0 auto!important}
}



/* EMS P5.5.3-R4 — global table header/body rhythm
   Keep sticky column headings visually separated from the first data row.
   The gap is part of the sticky header boundary, so it remains visible while
   the table body scrolls inside the shared ems-data-shell. */
.portal-body .portal-main .ems-data-shell > table thead th,
.portal-body .webadmin-main .ems-data-shell > table thead th,
.portal-body .management-main .ems-data-shell > table thead th{
  border-bottom:var(--ems-r4-table-header-body-gap) solid var(--ems-r2-data-bg)!important;
  background-clip:padding-box!important;
  box-shadow:inset 0 -1px 0 rgba(249,196,84,.22)!important;
}

/* The first data row starts cleanly after the header breathing gap. */
.portal-body .portal-main .ems-data-shell > table tbody tr:first-child > td,
.portal-body .webadmin-main .ems-data-shell > table tbody tr:first-child > td,
.portal-body .management-main .ems-data-shell > table tbody tr:first-child > td{
  border-top:0!important;
}

@media(max-width:600px){
  :root{--ems-r4-table-header-body-gap:6px}
}

/* ============================================================
   EMS P5.5.3-R5 — TEACHER LIST FIT-TO-WORKSPACE
   Teacher Management keeps vertical scrolling, but never needs a
   horizontal scrollbar. Long cell detail is disclosed on demand.
   ============================================================ */

/* Teacher list owns only the Y-axis. The five columns always fit the card. */
.portal-body .management-main .teacher-table-wrap.ems-data-shell{
  overflow-y:auto!important;
  overflow-x:hidden!important;
  scrollbar-gutter:stable!important;
}
.portal-body .management-main #table-teachers{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  table-layout:fixed!important;
}
.portal-body .management-main #table-teachers th,
.portal-body .management-main #table-teachers td{
  min-width:0!important;
  max-width:none!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  word-break:normal!important;
  vertical-align:top!important;
}
.portal-body .management-main #table-teachers th:nth-child(1),
.portal-body .management-main #table-teachers td:nth-child(1){width:15%!important}
.portal-body .management-main #table-teachers th:nth-child(2),
.portal-body .management-main #table-teachers td:nth-child(2){width:20%!important}
.portal-body .management-main #table-teachers th:nth-child(3),
.portal-body .management-main #table-teachers td:nth-child(3){width:27%!important}
.portal-body .management-main #table-teachers th:nth-child(4),
.portal-body .management-main #table-teachers td:nth-child(4){width:23%!important}
.portal-body .management-main #table-teachers th:nth-child(5),
.portal-body .management-main #table-teachers td:nth-child(5){width:15%!important}

.portal-body .management-main #table-teachers td{
  padding:12px 11px!important;
  line-height:1.38!important;
}
.portal-body .management-main #table-teachers td > strong,
.portal-body .management-main #table-teachers td > small,
.portal-body .management-main #table-teachers td > .admin-pill{
  display:block;
  max-width:100%;
}
.portal-body .management-main #table-teachers td > .admin-pill{
  width:max-content;
  margin-top:5px;
}
.portal-body .management-main #table-teachers .teacher-email{
  overflow-wrap:anywhere!important;
  word-break:break-word!important;
}
.portal-body .management-main #table-teachers .teacher-cell-preview{
  display:-webkit-box!important;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden!important;
  margin-top:4px!important;
}

/* Long role / verification detail is available without making the row enormous. */
.portal-body .management-main .teacher-cell-more{
  margin-top:6px;
  max-width:100%;
}
.portal-body .management-main .teacher-cell-more > summary{
  display:inline-flex;
  align-items:center;
  gap:5px;
  list-style:none;
  cursor:pointer;
  user-select:none;
  color:var(--ems-ui-gold-soft)!important;
  font-size:.72rem!important;
  font-weight:800!important;
  line-height:1.2;
}
.portal-body .management-main .teacher-cell-more > summary::-webkit-details-marker{display:none}
.portal-body .management-main .teacher-cell-more > summary::after{content:'▾';font-size:.72em;opacity:.8}
.portal-body .management-main .teacher-cell-more[open] > summary::after{content:'▴'}
.portal-body .management-main .teacher-cell-more-body{
  display:grid;
  gap:7px;
  margin-top:7px;
  padding-top:7px;
  border-top:1px solid var(--ems-r2-section-divider);
}
.portal-body .management-main .teacher-cell-more-body > div{
  display:grid;
  gap:2px;
  min-width:0;
}
.portal-body .management-main .teacher-cell-more-body strong{
  color:var(--ems-ui-gold-soft)!important;
  font-size:.68rem!important;
  text-transform:uppercase;
  letter-spacing:.035em;
}
.portal-body .management-main .teacher-cell-more-body span{
  color:var(--ems-ui-muted)!important;
  font-size:.74rem!important;
  line-height:1.4;
  overflow-wrap:anywhere;
}

/* Keep the action column compact: View + Edit + More. */
.portal-body .management-main #table-teachers .teacher-row-actions{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:6px!important;
  min-width:0!important;
}
.portal-body .management-main #table-teachers .teacher-row-actions > .row-action-more{
  grid-column:1/-1;
  width:100%;
}
.portal-body .management-main #table-teachers .teacher-row-actions > .ems-btn,
.portal-body .management-main #table-teachers .row-action-more > summary{
  width:100%!important;
  min-width:0!important;
  justify-content:center!important;
  padding-inline:7px!important;
}

/* Compact desktop/tablet: keep all information visible with no X-scroll,
   while giving the densest columns slightly more space. */
@media(max-width:1180px) and (min-width:761px){
  .portal-body .management-main #table-teachers th,
  .portal-body .management-main #table-teachers td{font-size:.76rem!important;padding-left:8px!important;padding-right:8px!important}
  .portal-body .management-main #table-teachers th:nth-child(1),
  .portal-body .management-main #table-teachers td:nth-child(1){width:15%!important}
  .portal-body .management-main #table-teachers th:nth-child(2),
  .portal-body .management-main #table-teachers td:nth-child(2){width:20%!important}
  .portal-body .management-main #table-teachers th:nth-child(3),
  .portal-body .management-main #table-teachers td:nth-child(3){width:26%!important}
  .portal-body .management-main #table-teachers th:nth-child(4),
  .portal-body .management-main #table-teachers td:nth-child(4){width:24%!important}
  .portal-body .management-main #table-teachers th:nth-child(5),
  .portal-body .management-main #table-teachers td:nth-child(5){width:15%!important}
}

/* Narrow screens: a labelled teacher record is more readable than five crushed
   columns. Still no horizontal scrolling and all data remains on-screen. */
@media(max-width:760px){
  .portal-body .management-main .teacher-table-wrap.ems-data-shell{padding:8px!important}
  .portal-body .management-main #table-teachers,
  .portal-body .management-main #table-teachers tbody,
  .portal-body .management-main #table-teachers tr,
  .portal-body .management-main #table-teachers td{display:block!important;width:100%!important;max-width:100%!important}
  .portal-body .management-main #table-teachers thead{display:none!important}
  .portal-body .management-main #table-teachers tbody{display:grid!important;gap:10px!important}
  .portal-body .management-main #table-teachers tr{
    overflow:hidden;
    border:1px solid var(--ems-ui-border-soft)!important;
    border-radius:12px!important;
    background:rgba(0,0,0,.08)!important;
  }
  .portal-body .management-main #table-teachers td{
    position:relative;
    padding:10px 11px 10px 116px!important;
    border-bottom:1px solid var(--ems-r2-section-divider)!important;
    min-height:42px;
  }
  .portal-body .management-main #table-teachers td:last-child{border-bottom:0!important}
  .portal-body .management-main #table-teachers td::before{
    content:attr(data-label);
    position:absolute;
    left:11px;
    top:11px;
    width:96px;
    color:var(--ems-ui-gold-soft);
    font-size:.66rem;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.04em;
  }
  .portal-body .management-main #table-teachers .teacher-row-actions{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .portal-body .management-main #table-teachers .teacher-row-actions > .row-action-more{grid-column:auto}
}

@media(max-width:460px){
  .portal-body .management-main #table-teachers td{padding-left:11px!important;padding-top:30px!important}
  .portal-body .management-main #table-teachers td::before{width:auto;right:11px;top:9px}
  .portal-body .management-main #table-teachers .teacher-row-actions{grid-template-columns:1fr!important}
}

/* === EMS P5.5.3-R6 — Official Student Documents === */
.admission-document-workspace{align-items:start;gap:clamp(18px,2vw,30px)}
.admission-document-selector{margin-bottom:14px}
.admission-request-checks .ems-check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;padding-top:6px}
.admission-request-checks .ems-check-grid label{display:flex;align-items:flex-start;gap:8px;min-width:0}
.admission-document-layout-section{margin-top:22px;padding-top:20px;border-top:1px solid var(--ems-border-subtle,rgba(192,171,102,.26))}
[data-admission-layout-key="fieldMap"]{min-height:118px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.82rem;line-height:1.45}
@media(max-width:760px){.admission-request-checks .ems-check-grid{grid-template-columns:1fr}}

/* ============================================================
   EMS P5.5.3-R8 — Certificate readiness + admission intake cues
   ============================================================ */
.certificate-readiness-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  margin:14px 0 18px;
}
.certificate-readiness-item{
  min-width:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:12px 14px;
  border:1px solid rgba(49,74,37,.16);
  border-radius:14px;
  background:rgba(255,255,255,.54);
}
.certificate-readiness-item>div{min-width:0;display:grid;gap:3px}
.certificate-readiness-item strong{font-size:.9rem;color:var(--ems-ink,#17321f)}
.certificate-readiness-item span{font-size:.78rem;line-height:1.35;color:var(--ems-muted,#647268)}
.certificate-readiness-item em{
  flex:0 0 auto;
  min-width:72px;
  padding:5px 9px;
  border-radius:999px;
  text-align:center;
  font-size:.72rem;
  font-style:normal;
  font-weight:800;
  letter-spacing:.02em;
  background:rgba(130,112,42,.12);
  color:#6f5e19;
}
.certificate-readiness-item.is-ready{border-color:rgba(34,111,63,.22);background:rgba(236,248,239,.72)}
.certificate-readiness-item.is-ready em{background:rgba(34,111,63,.12);color:#185d32}
.certificate-readiness-item.is-blocked{border-color:rgba(154,55,55,.22);background:rgba(255,242,242,.72)}
.certificate-readiness-item.is-blocked em{background:rgba(154,55,55,.10);color:#8d3030}
.certificate-readiness-item.is-warning{border-color:rgba(151,113,24,.22);background:rgba(255,249,230,.72)}
.certificate-readiness-item.is-warning em{background:rgba(151,113,24,.11);color:#795b15}

@media(max-width:900px){
  .certificate-readiness-grid{grid-template-columns:1fr}
}

/* ============================================================
   EMS P5.5.3-R9 — Admission workflow + document generation polish
   ============================================================ */

/* Conversion is a vertical workflow. The form itself must never distribute
   the four major sections across the same horizontal grid row. */
.portal-body .management-main .admission-conversion-form{
  display:block!important;
  width:100%!important;
  max-width:none!important;
}
.portal-body .management-main .admission-conversion-form > .admission-form-section{
  width:100%!important;
  margin:0!important;
  padding:20px 0!important;
  border:0!important;
  border-top:1px solid var(--ems-r2-section-divider)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.portal-body .management-main .admission-conversion-form > .admission-form-section:first-of-type{
  border-top:0!important;
  padding-top:14px!important;
}
.portal-body .management-main .admission-conversion-form .admission-form-grid{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:15px 18px!important;
}
.portal-body .management-main .admission-conversion-form .admission-form-actions{
  display:flex!important;
  justify-content:flex-end!important;
  align-items:center!important;
  gap:10px!important;
  margin:10px 0 0!important;
  padding-top:18px!important;
  border-top:1px solid var(--ems-r2-section-divider)!important;
}

/* Admission-document forms use intentional grids instead of auto-fit so
   long labels/values do not create detached controls and unused columns. */
.portal-body .management-main #admission-document-form{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:14px 16px!important;
}
.portal-body .management-main #admission-document-form > .form-span-2{
  grid-column:span 2!important;
}
.portal-body .management-main #admission-document-form > .admin-modal-actions{
  grid-column:1/-1!important;
}
.portal-body .management-main #admission-records-letter-form{
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:14px 16px!important;
  align-items:start!important;
}
.portal-body .management-main #admission-records-letter-form > .form-span-2{
  grid-column:span 2!important;
}
.portal-body .management-main #admission-records-letter-form > .admission-request-checks{
  grid-column:1/-1!important;
}
.portal-body .management-main #admission-records-letter-form .admission-request-checks .ems-check-grid{
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:10px 18px!important;
}
.portal-body .management-main #admission-records-letter-form > .admin-modal-actions{
  grid-column:1/-1!important;
  justify-content:flex-end!important;
}
.portal-body .management-main #admission-records-letter-form .ems-field,
.portal-body .management-main #admission-document-form .ems-field{
  min-width:0!important;
}
.portal-body .management-main #admission-records-letter-form label,
.portal-body .management-main #admission-document-form label{
  overflow-wrap:normal!important;
}

@media(max-width:1180px){
  .portal-body .management-main .admission-conversion-form .admission-form-grid,
  .portal-body .management-main #admission-document-form,
  .portal-body .management-main #admission-records-letter-form{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .portal-body .management-main #admission-records-letter-form .admission-request-checks .ems-check-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media(max-width:700px){
  .portal-body .management-main .admission-conversion-form .admission-form-grid,
  .portal-body .management-main #admission-document-form,
  .portal-body .management-main #admission-records-letter-form,
  .portal-body .management-main #admission-records-letter-form .admission-request-checks .ems-check-grid{
    grid-template-columns:1fr!important;
  }
  .portal-body .management-main #admission-document-form > .form-span-2,
  .portal-body .management-main #admission-records-letter-form > .form-span-2{
    grid-column:1!important;
  }
  .portal-body .management-main .admission-conversion-form .admission-form-actions,
  .portal-body .management-main #admission-records-letter-form > .admin-modal-actions,
  .portal-body .management-main #admission-document-form > .admin-modal-actions{
    flex-direction:column-reverse!important;
    align-items:stretch!important;
  }
}


/* ========================================================================== 
   EMS P5.5.3-R10 — FEE STRUCTURE REGISTER + PUBLIC FEE PRIVACY
   ========================================================================== */
.portal-body .management-main .fee-structure-overview-register{
  display:flex;
  flex-direction:column;
  gap:0;
  border:1px solid rgba(245,191,70,.22);
  border-radius:14px;
  overflow:hidden;
  background:rgba(5,27,14,.18);
}
.portal-body .management-main .fee-structure-overview-row + .fee-structure-overview-row{
  border-top:1px solid rgba(245,191,70,.15);
}
.portal-body .management-main .fee-structure-overview-main{
  display:grid;
  grid-template-columns:minmax(210px,1.4fr) repeat(3,minmax(125px,.8fr)) minmax(220px,auto);
  gap:14px 18px;
  align-items:center;
  padding:14px 16px;
}
.portal-body .management-main .fee-structure-overview-class{
  display:flex;
  align-items:center;
  gap:9px;
  min-width:0;
}
.portal-body .management-main .fee-structure-overview-class > strong{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.portal-body .management-main .fee-overview-label{
  display:block;
  margin-bottom:3px;
  font-size:.74rem;
  font-weight:800;
  letter-spacing:.02em;
  color:var(--ems-r2-muted,#cabf9c);
}
.portal-body .management-main .fee-structure-overview-actions{
  display:flex;
  justify-content:flex-end;
  gap:8px;
  flex-wrap:wrap;
}
.portal-body .management-main .fee-structure-overview-details{
  padding:0 16px 15px;
}
.portal-body .management-main .fee-structure-head-breakdown{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px 14px;
  padding:12px 14px;
  border-top:1px solid rgba(245,191,70,.14);
  background:rgba(255,255,255,.018);
}
.portal-body .management-main .fee-structure-head-breakdown > div{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:6px 0;
}
.portal-body .management-main .fee-public-status-grid{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  margin:16px 0 22px!important;
}
.portal-body .management-main .fee-public-status-text{
  display:flex!important;
  align-items:center!important;
  min-height:28px;
}
.portal-body .management-main .fee-public-privacy-note{
  margin-top:14px!important;
}
.portal-body .management-main .fee-public-payment-section{
  padding-top:18px;
  border-top:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16));
}
.portal-body .management-main .fee-public-payment-section > .module-header{
  margin-bottom:10px!important;
}
@media(max-width:1180px){
  .portal-body .management-main .fee-structure-overview-main{
    grid-template-columns:minmax(200px,1.3fr) repeat(2,minmax(130px,1fr));
  }
  .portal-body .management-main .fee-structure-overview-actions{
    grid-column:1/-1;
    justify-content:flex-start;
  }
  .portal-body .management-main .fee-structure-head-breakdown{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:700px){
  .portal-body .management-main .fee-structure-overview-main,
  .portal-body .management-main .fee-structure-head-breakdown,
  .portal-body .management-main .fee-public-status-grid{
    grid-template-columns:1fr!important;
  }
  .portal-body .management-main .fee-structure-overview-class{
    justify-content:space-between;
  }
  .portal-body .management-main .fee-structure-overview-class > strong{
    white-space:normal;
  }
  .portal-body .management-main .fee-structure-overview-actions{
    grid-column:1;
  }
}

/* ============================================================
   EMS P5.5.3-R11 — Historical Fee Backfill + Public Fee Polish
   ============================================================ */
.portal-body .management-main .fee-historical-migration-section{
  scroll-margin-top:96px;
}
.portal-body .management-main .fee-historical-summary{
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  margin:16px 0 20px!important;
}
.portal-body .management-main .fee-historical-summary > div{
  min-height:82px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:7px;
}
.portal-body .management-main .fee-historical-summary > div > span{
  font-size:.76rem;
  font-weight:800;
  letter-spacing:.02em;
  color:var(--ems-r2-muted,#cabf9c);
}
.portal-body .management-main .fee-historical-summary > div > strong{
  font-size:1.22rem;
  line-height:1.15;
}
.portal-body .management-main .fee-historical-feature-missing{
  grid-column:1/-1;
}
.portal-body .management-main .fee-historical-controls{
  display:grid;
  grid-template-columns:minmax(340px,.8fr) minmax(0,1.2fr);
  gap:28px;
  align-items:start;
  padding:18px 0 22px;
  border-top:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16));
  border-bottom:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16));
}
.portal-body .management-main .fee-historical-controls > * + *{
  border-left:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16));
  padding-left:28px;
}
.portal-body .management-main .fee-historical-entry-grid{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  gap:30px!important;
  padding-top:22px;
}
.portal-body .management-main .fee-historical-entry-grid > * + *{
  border-left:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16));
  padding-left:30px;
}
.portal-body .management-main .fee-historical-bulk{
  min-width:0;
}
.portal-body .management-main .fee-historical-bulk-actions,
.portal-body .management-main .fee-historical-setting-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  justify-content:flex-start;
}
.portal-body .management-main .fee-historical-import-preview{
  margin-top:22px;
  padding-top:20px;
  border-top:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16));
}
.portal-body .management-main .fee-historical-reconciliation h4,
.portal-body .management-main .fee-historical-bulk h4,
.portal-body .management-main #fee-historical-payment-form h4,
.portal-body .management-main #fee-historical-settings-form h4{
  margin-top:0;
}
.portal-body .management-main .fee-historical-last-batch{
  margin-top:10px;
}
.portal-body .management-main .fee-import-error{
  display:block;
  max-width:360px;
  white-space:normal;
  line-height:1.35;
}
.portal-body .management-main .fee-history-table td .admin-pill{
  white-space:nowrap;
}
.portal-body .management-main .fee-public-student-head{
  align-items:center;
  padding:14px 16px;
}
.portal-body .management-main .fee-public-student-head > span{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:7px;
}
.portal-body .management-main .fee-public-student-head > span b{
  opacity:.55;
}
.portal-body .management-main .fee-public-status-grid{
  align-items:stretch;
}
.portal-body .management-main .fee-public-status-grid .fee-public-metric{
  min-height:112px;
  display:flex!important;
  flex-direction:column;
  align-items:flex-start!important;
  justify-content:center!important;
  gap:10px;
  padding:18px 20px!important;
}
.portal-body .management-main .fee-public-status-grid .fee-public-metric > span{
  display:block;
  font-size:.82rem;
  line-height:1.3;
  color:var(--ems-r2-muted,#cabf9c);
}
.portal-body .management-main .fee-public-status-grid .fee-public-metric > strong:not(.fee-public-status-text){
  display:block;
  font-size:1.65rem;
  line-height:1;
  letter-spacing:-.02em;
}
.portal-body .management-main .fee-public-status-grid .fee-public-status-text{
  min-height:auto;
}
.portal-body .management-main .fee-public-payment-section .fee-history-table th:last-child,
.portal-body .management-main .fee-public-payment-section .fee-history-table td:last-child{
  text-align:right;
}
.portal-body .management-main .fee-public-payment-section > .empty-note{
  margin:8px 0 0;
  padding:20px 0 6px;
}
@media(max-width:1100px){
  .portal-body .management-main .fee-historical-summary{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .portal-body .management-main .fee-historical-controls,
  .portal-body .management-main .fee-historical-entry-grid{
    grid-template-columns:1fr!important;
  }
  .portal-body .management-main .fee-historical-controls > * + *,
  .portal-body .management-main .fee-historical-entry-grid > * + *{
    border-left:0;
    padding-left:0;
    border-top:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16));
    padding-top:22px;
  }
}
@media(max-width:700px){
  .portal-body .management-main .fee-historical-summary{
    grid-template-columns:1fr!important;
  }
  .portal-body .management-main .fee-historical-bulk-actions,
  .portal-body .management-main .fee-historical-setting-actions{
    flex-direction:column;
  }
  .portal-body .management-main .fee-historical-bulk-actions .ems-btn,
  .portal-body .management-main .fee-historical-setting-actions .ems-btn{
    width:100%;
  }
  .portal-body .management-main .fee-public-status-grid .fee-public-metric{
    min-height:88px;
  }
}
.portal-body .management-main .fee-historical-controls.fee-historical-controls-readonly{
  grid-template-columns:1fr;
}
.portal-body .management-main .fee-historical-controls.fee-historical-controls-readonly > * + *{
  border-left:0;
  padding-left:0;
}

/* ========================================================================== 
   EMS P5.5.3-R12 — FEE MANAGEMENT WORKSPACE UI CONVERGENCE
   Daily work first; configuration and migration remain available but collapsed.
   ========================================================================== */
.portal-body .management-main .fee-management-card .fee-operations-status{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:0!important;
  margin:18px 0 22px!important;
  border:1px solid rgba(245,191,70,.20);
  border-radius:14px;
  overflow:hidden;
  background:rgba(5,27,14,.18);
}
.portal-body .management-main .fee-management-card .fee-ops-metric{
  min-width:0;
  min-height:92px;
  padding:15px 18px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:5px;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.portal-body .management-main .fee-management-card .fee-ops-metric + .fee-ops-metric{
  border-left:1px solid rgba(245,191,70,.16)!important;
}
.portal-body .management-main .fee-management-card .fee-ops-metric > span{
  color:var(--ems-r2-muted,#cabf9c);
  font-size:.75rem;
  font-weight:850;
  letter-spacing:.035em;
  text-transform:uppercase;
}
.portal-body .management-main .fee-management-card .fee-ops-metric > strong{
  min-width:0;
  color:#fff1bf;
  font-size:1.2rem;
  line-height:1.15;
  overflow-wrap:anywhere;
}
.portal-body .management-main .fee-management-card .fee-ops-metric > small{
  color:rgba(255,242,207,.63);
  font-size:.76rem;
  line-height:1.3;
}
.portal-body .management-main .fee-management-card .fee-ops-state{
  display:flex;
  align-items:center;
}

/* Major work sections sit directly on the module surface instead of looking like nested cards. */
.portal-body .management-main .fee-management-card .fee-structure-overview-section,
.portal-body .management-main .fee-management-card .fee-daily-workspace{
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  padding:0!important;
}
.portal-body .management-main .fee-management-card .fee-structure-overview-section{
  padding-bottom:22px!important;
  border-bottom:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16))!important;
}
.portal-body .management-main .fee-management-card .fee-daily-workspace{
  padding:2px 0 24px!important;
  border-bottom:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16))!important;
}
.portal-body .management-main .fee-management-card .fee-daily-workspace > .module-header{
  margin-bottom:12px!important;
}
.portal-body .management-main .fee-management-card .fee-daily-workspace > .module-header h3::after{
  content:"Daily";
  display:inline-flex;
  margin-left:9px;
  vertical-align:middle;
  padding:3px 8px;
  border-radius:999px;
  border:1px solid rgba(245,191,70,.28);
  background:rgba(245,191,70,.10);
  color:#f5bf46;
  font-size:.66rem;
  font-weight:900;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.portal-body .management-main .fee-management-card .fee-ledger-toolbar{
  margin:0 0 14px!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}

/* Keep payment/concession controls as form regions, not painted cards. */
.portal-body .management-main .fee-management-card .fee-daily-workspace .fee-action-grid{
  margin-top:22px;
  padding-top:22px;
  border-top:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16));
  gap:28px!important;
}
.portal-body .management-main .fee-management-card .fee-daily-workspace .fee-action-grid > form{
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  padding:0!important;
}
.portal-body .management-main .fee-management-card .fee-daily-workspace .fee-action-grid > form::before{
  display:none!important;
}
.portal-body .management-main .fee-management-card .fee-daily-workspace .fee-action-grid > form + form{
  border-left:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16))!important;
  padding-left:28px!important;
}
.portal-body .management-main .fee-management-card .fee-history-grid > div{
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  padding:18px 0 0!important;
}
.portal-body .management-main .fee-management-card .fee-history-grid > div + div{
  margin-top:18px;
  border-top:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16))!important;
}

/* Configuration heading separates routine work from occasional setup. */
.portal-body .management-main .fee-management-card .fee-admin-config-heading{
  padding:8px 0 2px;
  margin-top:2px;
}
.portal-body .management-main .fee-management-card .fee-admin-config-heading .ems-eyebrow{
  margin:0 0 5px;
}
.portal-body .management-main .fee-management-card .fee-admin-config-heading h3{
  margin:0;
  color:#fff1bf;
  font-size:1.28rem;
}
.portal-body .management-main .fee-management-card .fee-admin-config-heading > p:last-child{
  margin:6px 0 0;
  color:var(--ems-r2-muted,#cabf9c);
  line-height:1.45;
}

/* Collapsible configuration sections. */
.portal-body .management-main .fee-management-card details.fee-config-section{
  width:100%;
  min-width:0;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  border-top:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16))!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.portal-body .management-main .fee-management-card details.fee-config-section:last-child{
  border-bottom:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16))!important;
}
.portal-body .management-main .fee-management-card .fee-config-summary{
  position:relative;
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:18px!important;
  padding:17px 34px 17px 0!important;
  margin:0!important;
  cursor:pointer;
  list-style:none;
  user-select:none;
}
.portal-body .management-main .fee-management-card .fee-config-summary::-webkit-details-marker{display:none;}
.portal-body .management-main .fee-management-card .fee-config-summary::after{
  content:"+";
  position:absolute;
  right:3px;
  top:50%;
  transform:translateY(-50%);
  width:24px;
  height:24px;
  display:grid;
  place-items:center;
  border-radius:50%;
  border:1px solid rgba(245,191,70,.28);
  color:#f5bf46;
  font-size:1.05rem;
  font-weight:900;
  line-height:1;
}
.portal-body .management-main .fee-management-card details[open] > .fee-config-summary::after{content:"−";}
.portal-body .management-main .fee-management-card .fee-config-summary > div{min-width:0;}
.portal-body .management-main .fee-management-card .fee-config-summary h3{
  margin:0!important;
  color:#fff1bf!important;
  font-size:1.02rem!important;
}
.portal-body .management-main .fee-management-card .fee-config-summary p{
  margin:4px 0 0!important;
  color:var(--ems-r2-muted,#cabf9c)!important;
  font-size:.83rem!important;
  line-height:1.38!important;
}
.portal-body .management-main .fee-management-card details.fee-config-section[open] > .fee-config-summary{
  border-bottom:1px solid rgba(245,191,70,.11);
}
.portal-body .management-main .fee-management-card details.fee-config-section > :not(summary){
  margin-left:0!important;
  margin-right:0!important;
}
.portal-body .management-main .fee-management-card details.fee-config-section > .fee-setup-body,
.portal-body .management-main .fee-management-card details.fee-config-section > #fee-receipt-series-form,
.portal-body .management-main .fee-management-card details.fee-one-time-tool > :not(summary){
  margin-top:0!important;
}
.portal-body .management-main .fee-management-card details.fee-config-section > .fee-setup-body{
  padding:18px 0 24px;
}

/* Fee structure editor stays wide and readable but loses the extra painted container. */
.portal-body .management-main .fee-management-card details.fee-config-section .fee-structure-box{
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  padding:4px 0 0!important;
}
.portal-body .management-main .fee-management-card details.fee-config-section .fee-structure-box::before{display:none!important;}
.portal-body .management-main .fee-management-card details.fee-config-section .fee-setup-toolbar{
  padding:0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  margin-bottom:12px!important;
}
.portal-body .management-main .fee-management-card details.fee-config-section .fee-structure-actions{
  display:flex!important;
  flex-wrap:wrap;
  gap:10px;
  padding-top:16px;
  border-top:1px solid rgba(245,191,70,.12);
}
.portal-body .management-main .fee-management-card details.fee-config-section .fee-structure-actions .ems-btn{
  width:auto!important;
  min-width:180px;
}

/* Receipt numbering becomes a compact configuration strip. */
.portal-body .management-main .fee-management-card #fee-receipt-series-form{
  display:grid!important;
  grid-template-columns:minmax(180px,1fr) minmax(170px,.8fr) minmax(110px,.5fr) minmax(210px,.9fr)!important;
  gap:12px 14px!important;
  padding:18px 0 24px!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.portal-body .management-main .fee-management-card #fee-receipt-series-form::before{display:none!important;}
.portal-body .management-main .fee-management-card #fee-receipt-series-form .teacher-safe-note,
.portal-body .management-main .fee-management-card #fee-receipt-series-form .admin-modal-actions{
  grid-column:1/-1!important;
}
.portal-body .management-main .fee-management-card #fee-receipt-series-form .admin-modal-actions{
  justify-content:flex-end!important;
}

/* Historical migration is a clearly labelled one-time tool. */
.portal-body .management-main .fee-management-card details.fee-one-time-tool{
  border-top-color:rgba(245,191,70,.27)!important;
}
.portal-body .management-main .fee-management-card details.fee-one-time-tool > .teacher-safe-note{
  margin:16px 0 0!important;
}
.portal-body .management-main .fee-management-card .fee-historical-summary{
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  margin:14px 0 18px!important;
  border:1px solid rgba(245,191,70,.15);
  border-radius:12px;
  overflow:hidden;
  gap:0!important;
}
.portal-body .management-main .fee-management-card .fee-historical-summary > div{
  min-height:74px!important;
  padding:11px 14px!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.portal-body .management-main .fee-management-card .fee-historical-summary > div + div{
  border-left:1px solid rgba(245,191,70,.12)!important;
}
.portal-body .management-main .fee-management-card .fee-historical-summary > div > strong{
  font-size:1rem!important;
}
.portal-body .management-main .fee-management-card .fee-historical-controls{
  padding:18px 0!important;
}
.portal-body .management-main .fee-management-card #fee-historical-settings-form,
.portal-body .management-main .fee-management-card #fee-historical-payment-form,
.portal-body .management-main .fee-management-card .fee-historical-bulk{
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  padding:0!important;
}
.portal-body .management-main .fee-management-card #fee-historical-settings-form::before,
.portal-body .management-main .fee-management-card #fee-historical-payment-form::before{display:none!important;}

/* Manual/Bulk selector shows one migration workflow at a time. */
.portal-body .management-main .fee-management-card .fee-historical-mode-tabs{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:5px;
  margin:20px 0 14px;
  border:1px solid rgba(245,191,70,.18);
  border-radius:12px;
  background:rgba(5,27,14,.22);
}
.portal-body .management-main .fee-management-card .fee-historical-mode-tab{
  appearance:none;
  border:0;
  border-radius:9px;
  padding:9px 14px;
  background:transparent;
  color:var(--ems-r2-muted,#cabf9c);
  font:inherit;
  font-size:.82rem;
  font-weight:900;
  cursor:pointer;
}
.portal-body .management-main .fee-management-card .fee-historical-mode-tab.active{
  background:rgba(245,191,70,.14);
  color:#fff1bf;
  box-shadow:inset 0 0 0 1px rgba(245,191,70,.22);
}
.portal-body .management-main .fee-management-card .fee-historical-mode-panels{
  padding:0 0 24px;
}
.portal-body .management-main .fee-management-card .fee-historical-mode-panel[hidden]{display:none!important;}
.portal-body .management-main .fee-management-card .fee-historical-mode-panel{
  max-width:980px;
}
.portal-body .management-main .fee-management-card .fee-historical-mode-panel[data-fee-historical-panel="manual"] #fee-historical-payment-form{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:12px 14px!important;
}
.portal-body .management-main .fee-management-card .fee-historical-mode-panel[data-fee-historical-panel="manual"] #fee-historical-payment-form > h4,
.portal-body .management-main .fee-management-card .fee-historical-mode-panel[data-fee-historical-panel="manual"] #fee-historical-payment-form > .empty-note,
.portal-body .management-main .fee-management-card .fee-historical-mode-panel[data-fee-historical-panel="manual"] #fee-historical-payment-form > .admin-modal-actions{
  grid-column:1/-1!important;
}
.portal-body .management-main .fee-management-card .fee-historical-mode-panel[data-fee-historical-panel="manual"] #fee-historical-payment-form > .admin-modal-actions{
  justify-content:flex-end!important;
}
.portal-body .management-main .fee-management-card .fee-historical-bulk-actions{
  margin-top:12px;
}

/* Responsive convergence: no horizontal form scrolling. */
@media(max-width:1180px){
  .portal-body .management-main .fee-management-card .fee-operations-status{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .portal-body .management-main .fee-management-card .fee-ops-metric:nth-child(3){border-left:0!important;border-top:1px solid rgba(245,191,70,.16)!important;}
  .portal-body .management-main .fee-management-card .fee-ops-metric:nth-child(4){border-top:1px solid rgba(245,191,70,.16)!important;}
  .portal-body .management-main .fee-management-card #fee-receipt-series-form{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .portal-body .management-main .fee-management-card .fee-historical-summary{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .portal-body .management-main .fee-management-card .fee-historical-summary > div{
    border-left:0!important;
    border-top:1px solid rgba(245,191,70,.12)!important;
  }
  .portal-body .management-main .fee-management-card .fee-historical-summary > div:nth-child(-n+2){border-top:0!important;}
  .portal-body .management-main .fee-management-card .fee-historical-summary > div:nth-child(even){border-left:1px solid rgba(245,191,70,.12)!important;}
}
@media(max-width:900px){
  .portal-body .management-main .fee-management-card .fee-daily-workspace .fee-action-grid{
    grid-template-columns:1fr!important;
  }
  .portal-body .management-main .fee-management-card .fee-daily-workspace .fee-action-grid > form + form{
    border-left:0!important;
    padding-left:0!important;
    border-top:1px solid var(--ems-r2-section-divider,rgba(245,191,70,.16))!important;
    padding-top:22px!important;
  }
  .portal-body .management-main .fee-management-card .fee-historical-mode-panel[data-fee-historical-panel="manual"] #fee-historical-payment-form{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media(max-width:700px){
  .portal-body .management-main .fee-management-card .fee-operations-status,
  .portal-body .management-main .fee-management-card #fee-receipt-series-form,
  .portal-body .management-main .fee-management-card .fee-historical-summary,
  .portal-body .management-main .fee-management-card .fee-historical-mode-panel[data-fee-historical-panel="manual"] #fee-historical-payment-form{
    grid-template-columns:1fr!important;
  }
  .portal-body .management-main .fee-management-card .fee-ops-metric + .fee-ops-metric{
    border-left:0!important;
    border-top:1px solid rgba(245,191,70,.16)!important;
  }
  .portal-body .management-main .fee-management-card .fee-historical-summary > div,
  .portal-body .management-main .fee-management-card .fee-historical-summary > div:nth-child(even){
    border-left:0!important;
    border-top:1px solid rgba(245,191,70,.12)!important;
  }
  .portal-body .management-main .fee-management-card .fee-historical-summary > div:first-child{border-top:0!important;}
  .portal-body .management-main .fee-management-card .fee-config-summary{
    align-items:flex-start!important;
    padding-right:32px!important;
  }
  .portal-body .management-main .fee-management-card .fee-config-summary > .admin-pill{
    margin-right:4px;
  }
  .portal-body .management-main .fee-management-card details.fee-config-section .fee-structure-actions,
  .portal-body .management-main .fee-management-card .fee-historical-bulk-actions,
  .portal-body .management-main .fee-management-card .fee-historical-setting-actions{
    flex-direction:column!important;
    align-items:stretch!important;
  }
  .portal-body .management-main .fee-management-card details.fee-config-section .fee-structure-actions .ems-btn,
  .portal-body .management-main .fee-management-card .fee-historical-bulk-actions .ems-btn,
  .portal-body .management-main .fee-management-card .fee-historical-setting-actions .ems-btn{
    width:100%!important;
  }
  .portal-body .management-main .fee-management-card .fee-historical-mode-tabs{
    display:grid;
    grid-template-columns:1fr 1fr;
    width:100%;
  }
}
/* R12 spacing normalization after stacked legacy layout. */
.portal-body .management-main .fee-management-card .fee-stacked-layout{gap:0!important;}
.portal-body .management-main .fee-management-card .fee-daily-workspace{padding-top:24px!important;}
.portal-body .management-main .fee-management-card .fee-admin-config-heading{padding-top:26px!important;padding-bottom:12px!important;}
