/* Parent Portal (Pilot) — shares brand.css tokens (colors, fonts) but is
   a functional utility surface, not a marketing page, so it keeps its
   own simpler layout rather than reusing the site chrome. */
body.portal-body{
  min-height:100vh;background:var(--navy-deep);color:var(--ivory);
  font-family:'Inter','Cairo',sans-serif;display:flex;flex-direction:column;
}
.portal-topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid rgba(233,206,138,0.25);}
.portal-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ivory);}
.portal-brand img{width:32px;height:32px;}
.portal-brand span{font-family:'Cinzel','Amiri',serif;font-size:0.85rem;letter-spacing:0.06em;text-transform:uppercase;}
[dir="rtl"] .portal-brand span{letter-spacing:normal;}
.portal-pilot-badge{
  font-size:0.65rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--navy-deep);
  background:var(--gold-bright);padding:3px 9px;border-radius:2px;font-weight:700;
}

.portal-main{flex:1;display:flex;align-items:flex-start;justify-content:center;padding:40px 20px;}
.portal-card{
  width:100%;max-width:420px;background:var(--ivory);color:var(--ink);border:1px solid var(--gold);
  padding:32px 28px;box-shadow:0 30px 60px -20px rgba(0,0,0,0.5);margin-top:20px;
}
.portal-card h1{font-family:'Cinzel','Amiri',serif;font-size:1.2rem;margin:0 0 6px;color:var(--navy);}
.portal-card .sub{font-size:0.82rem;color:var(--ink-soft);margin-bottom:22px;}
.portal-field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px;}
.portal-field label{font-size:0.78rem;font-weight:600;color:var(--navy);}
.portal-field input{
  font-family:'Inter','Cairo',sans-serif;font-size:0.9rem;padding:10px 12px;
  border:1px solid var(--line);background:#fff;color:var(--ink);
}
.portal-field input:focus{outline:2px solid var(--gold);outline-offset:1px;}
.portal-field select{
  font-family:'Inter','Cairo',sans-serif;font-size:0.9rem;padding:10px 12px;
  border:1px solid var(--line);background:#fff;color:var(--ink);
}
.portal-field select:focus{outline:2px solid var(--gold);outline-offset:1px;}
.portal-field-hint{font-size:0.72rem;color:var(--ink-soft);margin-top:-2px;}
.portal-field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
@media (max-width:480px){.portal-field-row{grid-template-columns:1fr;}}
.portal-submit{
  width:100%;margin-top:6px;font-family:'Cinzel','Amiri',serif;font-size:0.78rem;
  letter-spacing:0.1em;text-transform:uppercase;font-weight:600;padding:13px;
  background:var(--navy);color:var(--gold-bright);border:1px solid var(--navy);cursor:pointer;
  transition:background .2s ease;
}
.portal-submit:hover{background:var(--navy-deep);}
.portal-submit:disabled{opacity:0.6;cursor:default;}
.portal-error{
  background:rgba(124,31,46,0.08);border:1px solid var(--crimson);color:var(--crimson);
  font-size:0.82rem;padding:9px 12px;margin-bottom:16px;display:none;
}
.portal-error.is-visible{display:block;}
.portal-notice{font-size:0.74rem;line-height:1.5;color:var(--ink-soft);margin-top:20px;border-top:1px solid var(--line);padding-top:16px;}
.portal-back-link{display:inline-block;margin-top:14px;font-size:0.8rem;color:var(--ink-soft);}

.portal-wrap{width:100%;max-width:760px;}
.portal-hello{font-family:'Cinzel','Amiri',serif;font-size:1.3rem;color:var(--gold-bright);margin-bottom:4px;}
.portal-hello-sub{font-size:0.82rem;color:rgba(248,244,233,0.7);margin-bottom:24px;}
.portal-logout{background:none;border:1px solid rgba(233,206,138,0.4);color:var(--gold-bright);padding:8px 16px;font-size:0.78rem;cursor:pointer;}
.portal-logout:hover{border-color:var(--gold-bright);}
.portal-topbar-link{font-size:0.8rem;color:var(--gold-bright);text-decoration:underline;text-underline-offset:2px;}
.portal-topbar-link:hover{color:#fff;}

.portal-child-card{background:var(--ivory);color:var(--ink);border:1px solid var(--gold);margin-bottom:24px;}
.portal-child-head{background:var(--navy);color:#fff;padding:16px 20px;}
/* Explicit color, not just inherited from .portal-child-head — brand.css's
   global `h1,h2,h3,h4{color:var(--navy)}` rule otherwise wins over the
   inherited white regardless of specificity (inheritance always loses to
   any explicit rule), rendering every card-header title navy-on-navy. */
.portal-child-head h2{font-family:'Cinzel','Amiri',serif;font-size:1.05rem;margin:0 0 4px;color:#fff;}
.portal-child-head .meta{font-size:0.78rem;color:var(--gold-bright);}
.registrar-sample-badge:not([hidden]){
  display:inline-block;margin-top:6px;padding:2px 9px;font-size:0.66rem;font-weight:700;
  letter-spacing:0.04em;text-transform:uppercase;color:var(--navy-deep);background:var(--gold-bright);
  border-radius:2px;
}
.portal-stats{display:grid;grid-template-columns:repeat(auto-fit, minmax(150px, 1fr));gap:1px;background:var(--line);}
.portal-stat{background:var(--ivory);padding:16px 20px;}
.portal-stat .label{font-size:0.68rem;letter-spacing:0.05em;text-transform:uppercase;color:var(--ink-soft);}
.portal-stat .value{font-family:'Cinzel','Amiri',serif;font-size:1.4rem;color:var(--navy);margin-top:4px;}
.portal-results{padding:18px 20px;}
.portal-results h3{font-size:0.85rem;color:var(--navy);margin:0 0 10px;}
.portal-results-scroll{overflow-x:auto;}
.portal-results table{width:100%;min-width:520px;border-collapse:collapse;font-size:0.82rem;}
.portal-results th, .portal-results td{text-align:start;padding:7px 8px;border-bottom:1px solid var(--line);}
.portal-results th{color:var(--ink-soft);font-weight:600;font-size:0.72rem;text-transform:uppercase;letter-spacing:0.03em;}
.portal-empty{padding:18px 20px;color:var(--ink-soft);font-size:0.85rem;}
.portal-demo-flag{
  display:inline-block;margin-top:10px;margin-inline-end:8px;font-size:0.68rem;letter-spacing:0.04em;text-transform:uppercase;
  color:var(--crimson);border:1px solid var(--crimson);padding:2px 8px;
}
.portal-status-badge{
  display:inline-block;margin-top:10px;margin-inline-end:8px;font-size:0.68rem;letter-spacing:0.04em;text-transform:uppercase;
  color:var(--gold-bright);border:1px solid var(--gold-bright);padding:2px 8px;
}
.portal-status-badge[hidden]{display:none;}

.portal-notifications{
  background:rgba(233,206,138,0.1);border:1px solid var(--gold);margin-bottom:20px;
}
.portal-notifications[hidden]{display:none;}
.portal-notifications-head{
  display:flex;align-items:center;justify-content:space-between;padding:10px 16px;
  font-family:'Cinzel','Amiri',serif;font-size:0.78rem;letter-spacing:0.05em;text-transform:uppercase;color:var(--gold-bright);
}
.portal-text-btn{background:none;border:none;color:rgba(248,244,233,0.7);font-size:0.72rem;cursor:pointer;text-decoration:underline;text-underline-offset:2px;padding:0;font-family:'Inter','Cairo',sans-serif;}
.portal-text-btn:hover{color:var(--gold-bright);}
.portal-notifications ul{list-style:none;margin:0;padding:0 16px 14px;}
.portal-notifications li{font-size:0.82rem;color:rgba(248,244,233,0.85);padding:6px 0;border-top:1px solid rgba(233,206,138,0.2);}
.portal-notifications li:first-child{border-top:none;}

.portal-adhkar-card{
  background:var(--ivory);color:var(--ink);border:1px solid var(--gold);border-top:2px solid var(--gold);
  padding:22px 24px;margin-bottom:24px;
}
.portal-adhkar-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;}
.portal-adhkar-head h2{font-family:'Cinzel','Amiri',serif;font-size:1rem;margin:0;color:var(--navy);}
.portal-adhkar-streak{font-family:'Cinzel','Amiri',serif;font-size:0.74rem;letter-spacing:0.04em;color:var(--crimson);border:1px solid var(--crimson);padding:2px 9px;white-space:nowrap;}
.portal-adhkar-sub{font-size:0.82rem;color:var(--ink-soft);margin-bottom:16px;}
.portal-adhkar-periods{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px;}
.portal-adhkar-btn{
  display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;
  padding:16px 10px;border:1px solid var(--line);background:#fff;color:var(--navy);cursor:pointer;
  font-family:'Inter','Cairo',sans-serif;transition:border-color .2s ease,background .2s ease;
}
.portal-adhkar-btn svg{color:var(--gold-bright);}
.portal-adhkar-btn:hover{border-color:var(--gold);}
.portal-adhkar-btn .pab-state{font-size:0.7rem;letter-spacing:0.03em;text-transform:uppercase;color:var(--ink-soft);}
.portal-adhkar-btn.is-done{background:var(--navy);color:var(--ivory);border-color:var(--navy);}
.portal-adhkar-btn.is-done svg{color:var(--gold-bright);}
.portal-adhkar-btn.is-done .pab-state{color:var(--gold-bright);}
.portal-adhkar-btn:disabled{opacity:0.6;cursor:default;}
@media (max-width:420px){.portal-adhkar-periods{grid-template-columns:1fr;}}

.portal-adhkar-windows{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);margin-bottom:16px;}
.paw-box{background:var(--ivory);padding:12px 10px;text-align:center;}
.paw-value{font-family:'Cinzel','Amiri',serif;font-size:1.05rem;color:var(--navy);}
.paw-label{font-size:0.66rem;letter-spacing:0.03em;text-transform:uppercase;color:var(--ink-soft);margin-top:2px;}

.portal-adhkar-achv-head{font-family:'Cinzel','Amiri',serif;font-size:0.72rem;letter-spacing:0.06em;text-transform:uppercase;color:var(--navy);margin-bottom:10px;}
.portal-adhkar-achv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;margin-bottom:16px;}
.portal-achv-badge{border:1px solid var(--line);padding:10px 8px;text-align:center;opacity:0.4;font-size:0.68rem;color:var(--ink-soft);}
.portal-achv-badge.is-earned{opacity:1;border-color:var(--gold);background:rgba(198,161,91,0.08);color:var(--navy);font-weight:600;}

/* --- Multi-programme (dual enrolment) chips --- */
.portal-programmes{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.portal-programme-chip{
  font-size:0.7rem;letter-spacing:0.02em;color:var(--gold-bright);border:1px solid rgba(233,206,138,0.4);
  padding:2px 9px;white-space:nowrap;
}
.portal-programme-chip.is-primary{background:rgba(233,206,138,0.12);border-color:var(--gold-bright);font-weight:600;}

/* --- Student Portal: Hifz & Ijazah panel --- */
.portal-hifz-card{
  background:var(--ivory);color:var(--ink);border:1px solid var(--gold);border-top:2px solid var(--gold);
  padding:22px 24px;margin-bottom:24px;
}
.portal-hifz-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px;}
.portal-hifz-head h2{font-family:'Cinzel','Amiri',serif;font-size:1rem;margin:0;color:var(--navy);}
.portal-hifz-stage-badge{
  font-family:'Cinzel','Amiri',serif;font-size:0.72rem;letter-spacing:0.04em;color:var(--navy);
  background:rgba(198,161,91,0.16);border:1px solid var(--gold);padding:3px 10px;white-space:nowrap;
}
.portal-hifz-stage-desc{font-size:0.82rem;color:var(--ink-soft);margin:6px 0 4px;}
.portal-hifz-sub{font-size:0.78rem;color:var(--navy);font-weight:600;margin:0 0 14px;}

.portal-juz-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:5px;margin-bottom:10px;}
@media (max-width:520px){.portal-juz-grid{grid-template-columns:repeat(6,1fr);}}
.portal-juz-box{
  aspect-ratio:1;display:flex;align-items:center;justify-content:center;
  font-size:0.66rem;font-weight:600;color:var(--ink-soft);background:var(--line);border:1px solid var(--line);
  cursor:default;
}
.portal-juz-box.is-memorising{background:rgba(198,161,91,0.3);border-color:var(--gold);color:var(--navy);}
.portal-juz-box.is-completed_pending_review{background:var(--gold);border-color:var(--gold);color:var(--navy-deep);}
.portal-juz-box.is-verified{background:var(--navy);border-color:var(--navy);color:var(--gold-bright);}

.portal-juz-legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:0.7rem;color:var(--ink-soft);align-items:center;margin:0 0 4px;}
.pjl-swatch{display:inline-block;width:11px;height:11px;margin-inline-end:4px;vertical-align:middle;background:var(--line);border:1px solid var(--line);}
.pjl-swatch.is-memorising{background:rgba(198,161,91,0.3);border-color:var(--gold);}
.pjl-swatch.is-completed_pending_review{background:var(--gold);border-color:var(--gold);}
.pjl-swatch.is-verified{background:var(--navy);border-color:var(--navy);}

.portal-ijazah-card{border:1px solid var(--gold);border-inline-start:3px solid var(--gold);padding:12px 14px;margin-top:10px;background:rgba(198,161,91,0.06);}
.portal-ijazah-card.is-revoked{border-color:var(--crimson);border-inline-start-color:var(--crimson);background:rgba(124,31,46,0.05);}
.pij-ref{font-family:'Cinzel','Amiri',serif;font-size:0.78rem;color:var(--navy);}
.pij-scope{font-size:0.88rem;margin-top:2px;}
.pij-meta{font-size:0.76rem;color:var(--ink-soft);margin-top:4px;}
.pij-revoked{font-size:0.76rem;color:var(--crimson);margin-top:6px;font-weight:600;}

/* --- Parent dashboard: per-child Hifz snapshot --- */
.portal-child-hifz-snapshot{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 20px 0;font-size:0.78rem;color:var(--navy);
}
.portal-child-hifz-snapshot .phs-badge{
  font-family:'Cinzel','Amiri',serif;font-size:0.68rem;letter-spacing:0.03em;color:var(--navy);
  background:rgba(198,161,91,0.16);border:1px solid var(--gold);padding:2px 9px;
}

/* --- Founder Dashboard --- */
.pfd-section{background:var(--ivory);color:var(--ink);border:1px solid var(--gold);border-top:2px solid var(--gold);padding:22px 24px;margin-bottom:20px;}
.pfd-section h2{font-family:'Cinzel','Amiri',serif;font-size:1rem;margin:0 0 14px;color:var(--navy);}
.pfd-subhead{font-family:'Cinzel','Amiri',serif;font-size:0.74rem;letter-spacing:0.04em;text-transform:uppercase;color:var(--navy);margin:20px 0 10px;}
.pfd-note{font-size:0.8rem;color:var(--ink-soft);margin-top:10px;}
.pfd-bars{display:flex;flex-direction:column;gap:10px;}
.pfd-bar-row{font-size:0.8rem;}
.pfd-bar-label{color:var(--ink);margin-bottom:4px;}
.pfd-bar-track{height:8px;background:var(--line);width:100%;}
.pfd-bar-fill{height:100%;background:var(--gold);}
.pfd-unavailable{background:#F7EDEE;border-color:var(--crimson);border-top-color:var(--crimson);}
.pfd-unavailable-row{font-size:0.82rem;color:var(--ink-soft);padding:8px 0;border-top:1px solid var(--line);}
.pfd-unavailable-row:first-child{border-top:none;}
.pfd-unavailable-row strong{color:var(--ink);}

/* --- Account Creation Journey --- */
.portal-steps{display:flex;align-items:center;justify-content:center;gap:0;margin-bottom:26px;}
.portal-step{display:flex;flex-direction:column;align-items:center;gap:6px;flex:0 0 auto;}
.portal-step-circle{
  width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:'Cinzel','Amiri',serif;font-size:0.78rem;border:1.5px solid var(--line);color:var(--ink-soft);background:var(--milk,#FCFAF6);
}
.portal-step-label{font-size:0.62rem;letter-spacing:0.04em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap;}
.portal-step.is-active .portal-step-circle{border-color:var(--gold);color:var(--navy);background:rgba(198,161,91,0.15);}
.portal-step.is-active .portal-step-label{color:var(--navy);font-weight:600;}
.portal-step.is-done .portal-step-circle{border-color:var(--gold);background:var(--gold);color:#fff;}
.portal-step-line{width:40px;height:1px;background:var(--line);margin:0 6px 18px;flex:0 0 auto;}
.portal-success-icon{
  width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  border:1.5px solid var(--gold);color:var(--gold);margin:0 auto 16px;
}
/* Solid background (not a translucent tint) on purpose — this banner
   appears both on light .portal-card surfaces (student login) and
   directly on the dark .portal-body background (dashboard), and a
   low-alpha tint reads as illegible dark-on-dark in the second context
   (the same bug class already fixed once for .pfd-unavailable). Solid
   gold-bright + dark navy text guarantees contrast either way. */
/* :not([hidden]) is load-bearing, not decoration — a bare .account-
   status-banner{display:flex} has the same specificity as the UA
   stylesheet's [hidden]{display:none} default and comes later in the
   cascade, so it silently wins regardless of the element's `hidden`
   attribute. Confirmed as a real, reproducible bug during the Account
   Creation Journey's end-to-end verification: js/portal-dashboard.js
   correctly sets `verifyBanner.hidden = true` once a guardian's email
   is actually verified, but the banner kept rendering anyway because
   this rule overrode it — meaning the "please verify your email"
   banner never actually disappeared for any real user, regardless of
   verification status, since this class was introduced. */
.account-status-banner:not([hidden]){
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  background:var(--gold-bright);border:1px solid var(--gold);padding:12px 18px;margin-bottom:20px;
  font-size:0.85rem;font-weight:600;color:var(--navy-deep);
}
.account-status-banner button{
  font-family:'Inter','Cairo',sans-serif;font-size:0.76rem;font-weight:600;color:var(--navy-deep);
  background:rgba(255,255,255,0.35);border:1px solid var(--navy-deep);padding:6px 14px;cursor:pointer;white-space:nowrap;
}
.account-status-banner button:hover{background:rgba(255,255,255,0.6);}
.portal-application-card{border:1px solid var(--line);background:var(--ivory);padding:16px 20px;margin-bottom:12px;}
.portal-application-card h4{font-family:'Cormorant Garamond','Amiri',serif;font-size:1.15rem;color:var(--navy);margin:0 0 4px;}
.portal-application-meta{font-size:0.78rem;color:var(--ink-soft);}
.portal-application-status{
  display:inline-block;font-size:0.62rem;letter-spacing:0.06em;text-transform:uppercase;
  padding:3px 10px;border:1px solid var(--gold);color:var(--navy);margin-top:8px;
}

/* --- Staff Identity record --- */
.identity-field-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));gap:1px;background:var(--line);}
.identity-field{background:var(--ivory);padding:16px 20px;}
.identity-field .label{font-size:0.68rem;letter-spacing:0.05em;text-transform:uppercase;color:var(--ink-soft);}
.identity-field .value{font-family:'Cinzel','Amiri',serif;font-size:1rem;color:var(--navy);margin-top:4px;}
.identity-roles-list{padding:16px 20px;display:flex;flex-direction:column;gap:10px;}
.identity-role-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 14px;border:1px solid var(--line);background:var(--ivory);}
.identity-role-name{font-family:'Cinzel','Amiri',serif;font-size:0.86rem;color:var(--navy);}
.identity-role-scope{font-size:0.74rem;color:var(--ink-soft);margin-top:2px;}
.identity-role-badge{font-size:0.62rem;letter-spacing:0.06em;text-transform:uppercase;padding:3px 9px;border:1px solid var(--gold);color:var(--navy);white-space:nowrap;}
.identity-role-badge.is-proposed{border-color:var(--ink-soft);color:var(--ink-soft);}
.identity-delegation-row{padding:12px 14px;border:1px solid rgba(233,206,138,0.5);background:rgba(233,206,138,0.08);margin-bottom:10px;font-size:0.82rem;color:var(--ink);}
.identity-delegation-row strong{color:var(--navy);}
.identity-delegation-meta{font-size:0.72rem;color:var(--ink-soft);margin-top:4px;}
.identity-empty{padding:16px 20px;font-size:0.85rem;color:var(--ink-soft);font-style:italic;}

/* --- Registrar's Office --- */
.registrar-search-row{display:flex;gap:10px;padding:16px 20px;flex-wrap:wrap;}
.registrar-search-row input{
  flex:1;min-width:220px;font-family:'Inter','Cairo',sans-serif;font-size:0.9rem;padding:10px 12px;
  border:1px solid var(--line);background:#fff;color:var(--ink);
}
.registrar-search-row input:focus{outline:2px solid var(--gold);outline-offset:1px;}
.registrar-search-error{background:rgba(124,31,46,0.08);border:1px solid var(--crimson);color:var(--crimson);font-size:0.82rem;padding:9px 12px;margin:0 20px 16px;}
.registrar-hint{font-size:0.8rem;color:var(--ink-soft);padding:0 20px;margin:14px 0;}
.registrar-form-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));gap:0 16px;padding:0 20px 20px;align-items:start;}
.registrar-field-wide{grid-column:1 / -1;}
.registrar-form-grid .portal-field select,
.registrar-form-grid .portal-field textarea{
  font-family:'Inter','Cairo',sans-serif;font-size:0.9rem;padding:10px 12px;
  border:1px solid var(--line);background:#fff;color:var(--ink);resize:vertical;
}
.registrar-form-grid .portal-field select:focus,
.registrar-form-grid .portal-field textarea:focus{outline:2px solid var(--gold);outline-offset:1px;}
.registrar-form-submit{grid-column:1 / -1;width:auto;padding:12px 24px;}
.registrar-btn-danger{background:var(--crimson);border-color:var(--crimson);color:#fff;}
.registrar-btn-danger:hover{background:#5e1824;}
.registrar-form-result{margin:0 20px 20px;padding:10px 14px;font-size:0.84rem;}
.registrar-form-result.is-ok{background:rgba(198,161,91,0.12);border:1px solid var(--gold);color:var(--navy);}
.registrar-form-result.is-error{background:rgba(124,31,46,0.08);border:1px solid var(--crimson);color:var(--crimson);}

.registrar-guardians{padding:0 20px 16px;}
.registrar-guardians-head{font-size:0.68rem;letter-spacing:0.05em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px;}
.registrar-guardian-row{font-size:0.82rem;color:var(--ink);padding:4px 0;}

.registrar-timeline{padding:16px 20px;display:flex;flex-direction:column;gap:12px;}
.registrar-timeline-row{border-inline-start:3px solid var(--gold);background:var(--ivory);padding:10px 14px;}
.registrar-timeline-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.registrar-timeline-type{font-family:'Cinzel','Amiri',serif;font-size:0.82rem;color:var(--navy);}
.registrar-timeline-date{font-size:0.74rem;color:var(--ink-soft);}
.registrar-timeline-move{font-size:0.82rem;color:var(--ink);margin-top:4px;}
.registrar-timeline-reason{font-size:0.82rem;color:var(--ink-soft);margin-top:4px;font-style:italic;}
.registrar-timeline-meta{font-size:0.72rem;color:var(--ink-soft);margin-top:4px;}

.registrar-certificates{padding:16px 20px 0;}
.registrar-cert-forms{display:grid;grid-template-columns:1fr 1fr;gap:0;border-top:1px solid var(--line);margin-top:16px;padding-top:16px;}
@media (max-width:680px){.registrar-cert-forms{grid-template-columns:1fr;}}

.teacher-class-list{display:grid;grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));gap:14px;padding:16px 20px;}
.teacher-class-card{
  text-align:left;background:var(--milk);border:1px solid var(--line);padding:14px 16px;cursor:pointer;
  font-family:inherit;transition:border-color 0.15s, background 0.15s;
}
.teacher-class-card:hover{border-color:var(--gold);background:var(--ivory);}
.teacher-class-name{font-family:'Cinzel','Amiri',serif;font-size:0.92rem;color:var(--navy);}
.teacher-class-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.teacher-class-count{font-size:0.74rem;color:var(--ink-soft);margin-top:8px;}

.teacher-roster-scroll{overflow-x:auto;padding:0 20px 16px;}
.teacher-roster-table{width:100%;border-collapse:collapse;font-size:0.82rem;min-width:520px;}
.teacher-roster-table th{
  text-align:left;font-size:0.68rem;letter-spacing:0.05em;text-transform:uppercase;color:var(--ink-soft);
  border-bottom:1px solid var(--gold);padding:8px 8px;white-space:nowrap;
}
.teacher-roster-table td{padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap;}
.teacher-roster-table td:first-child{white-space:normal;min-width:140px;}
.teacher-roster-table input{
  width:64px;padding:6px 8px;border:1px solid var(--line);background:#fff;color:var(--ink);font-size:0.82rem;
}
.teacher-roster-table input:focus{outline:2px solid var(--gold);outline-offset:1px;}

.teacher-save-row{display:flex;flex-wrap:wrap;gap:10px;padding:16px 20px;}
.teacher-save-btn{width:auto;padding:10px 18px;}

@media (max-width:520px){
  .portal-topbar{padding:12px 16px;}
  .portal-main{padding:24px 14px;}
}

/* Institutional Identity Profile (Phase 1A) */
.profile-progress-track{background:var(--line);height:10px;border-radius:5px;overflow:hidden;}
.profile-progress-fill{background:var(--gold);height:100%;transition:width 0.3s ease;}
.profile-next-step{font-size:0.85rem;color:var(--navy);font-weight:600;margin:12px 0 10px;}
.profile-section-flags{display:flex;flex-wrap:wrap;gap:8px;}
.profile-section-flag{
  font-size:0.72rem;padding:4px 10px;border:1px solid var(--line);color:var(--ink-soft);
}
.profile-section-flag.is-done{border-color:var(--gold);color:var(--navy);background:rgba(198,161,91,0.1);}

.profile-section-form{padding:16px 20px;}
.profile-form-result{margin-inline-start:12px;font-size:0.82rem;}
.profile-form-result.is-ok{color:var(--navy);font-weight:600;}
.profile-form-result.is-error{color:var(--crimson);font-weight:600;}

.profile-contact-form{
  border:1px solid var(--line);padding:14px 16px;margin-bottom:14px;background:var(--ivory);
}
.profile-contact-head{font-size:0.78rem;font-weight:700;color:var(--navy);margin-bottom:10px;text-transform:uppercase;letter-spacing:0.04em;}

.profile-interest-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));gap:4px 16px;padding:16px 20px 0;}
.profile-interest-option{display:flex;align-items:center;gap:8px;font-size:0.86rem;color:var(--ink);padding:6px 0;}
.profile-interest-option input{width:auto;}
