/* Shared portal chrome. Components retain their existing, tested behavior. */
.portal-header {
  position: sticky;
  top: 0;
  z-index: 70;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  min-height: 82px;
  height: 82px;
  padding: 15px 28px;
  color: #fff;
  background-color: var(--navy);
  background-image: var(--hex-tex), linear-gradient(110deg, var(--navy), var(--navy-abyss));
  border-bottom: 3px solid var(--gold);
  box-shadow: 0 3px 18px #143a5212;
}
.portal-brand { display: flex; align-items: center; gap: 24px; text-decoration: none; color: #fff; min-width: 0; }
.portal-brand:hover { color: #fff; }
.portal-brand img { width: 180px; height: auto; display: block; flex: none; }
.portal-product { border-left: 1px solid #ffffff30; padding-left: 24px; font: 400 18px/1.3 var(--font-display); white-space: nowrap; }
.portal-product small { display: block; color: #c3cdea; margin-top: 5px; font: 600 var(--cf-font-size-label)/1.4 var(--font-body); text-transform: uppercase; letter-spacing: .13em; }
.portal-account-nav { display: flex; align-items: center; gap: 8px; font-size: var(--cf-text-xs); }
.portal-account-nav a, .portal-account-nav button { min-height: 40px; display: inline-flex; align-items: center; padding: 9px 12px; background: transparent; border: 1px solid transparent; border-radius: 7px; color: #e8edfa; font: inherit; text-decoration: none; white-space: nowrap; cursor: pointer; }
.portal-account-nav a:hover, .portal-account-nav button:hover { border-color: #ffffff40; background: #ffffff0b; color: #fff; }
.portal-account-nav a[aria-current] { border-color: var(--gold); }
.portal-account-nav .portal-who, .portal-account-nav #who { max-width: 200px; font-size: var(--cf-text-xs); color: #c3cdea; margin: 0 12px 0 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.portal-menu-toggle { display: none; border: 1px solid #ffffff50; border-radius: 8px; background: #ffffff0a; color: #fff; height: 42px; width: 42px; padding: 0; font-size: 22px; cursor: pointer; flex: none; }
body.portal-ready { background: var(--bg); color: var(--text); font-family: var(--font-body); font-size: 16px; }
.portal-layout { display: grid; grid-template-columns: 264px minmax(0,1fr); align-items: start; }
.portal-content { min-width: 0; width: 100%; }
.portal-page-tools { display: flex; justify-content: flex-end; align-items: center; flex-wrap: wrap; gap: 8px; padding: 20px 32px 0; }
.portal-page-tools select { width: auto; max-width: 100%; }
body.portal-ready .report-brand { flex-wrap: wrap; }
body.portal-ready .report-brand > div { min-width: 0; flex: 1 1 300px; }
body.portal-ready .report-brand img { width: 220px; max-width: 100%; height: auto; flex: none; }
body.portal-ready #scenario-grid { grid-template-columns: repeat(auto-fill,minmax(min(100%,300px),1fr)); }
body.portal-ready .pool-toolbar > *,body.portal-ready .pool-finance-hero > * { min-width:0; max-width:100%; }
@media(max-width:600px) {
  body.portal-ready .pool-toolbar .actions { width:100%; min-width:0; }
  body.portal-ready .pool-toolbar select { width:100%; min-width:0; max-width:100%; }
  body.portal-ready .pool-layer-strip { display:grid; grid-template-columns:1fr; }
  body.portal-ready .pool-finance-hero { padding:24px; }
}
.portal-sidebar {
  position: sticky;
  top: 82px;
  height: calc(100dvh - 82px);
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 24px 16px;
  background-color: var(--navy-deep);
  background-image: var(--hex-tex), linear-gradient(160deg,var(--navy-deep),var(--navy-abyss));
  color: #e8edfa;
  scrollbar-width: thin;
  scrollbar-color: #526ba1 transparent;
  border-right: 1px solid #1d4e6b20;
}
.portal-sidebar-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 0 10px 18px; }
.portal-sidebar .sidebar-label { display: block; color: #c3cdea; font-size: var(--cf-font-size-label); padding: 0; margin: 0; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.portal-sponsor { color: var(--cyan); font: 500 var(--cf-text-sm) var(--font-display); white-space: nowrap; }
.portal-school-chrome .portal-header { flex-wrap:wrap; height:132px; padding:14px 28px 0; gap:8px 20px; }
.portal-primary-nav { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:6px; width:100%; height:44px; }
.portal-primary-nav a { display:flex; align-items:center; padding:10px 20px; color:#dce7fc; text-decoration:none; font-size:14px; font-weight:700; white-space:nowrap; border-bottom:3px solid transparent; }
.portal-primary-nav a[aria-current],.portal-primary-nav a:hover { color:white; border-color:var(--gold); background:#ffffff0a; }
.portal-school-chrome .portal-sidebar { top:132px; height:calc(100dvh - 132px); }
.district-visual-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; margin-bottom:28px; }
.district-visual-grid h2 { font-size:20px; margin:0 0 18px; }
.district-next-actions { margin-bottom:24px; }
.rubric-start-card>summary { color:var(--navy);font:700 21px var(--font-heading);cursor:pointer; }
.rubric-start-card[open]>summary { margin-bottom:18px; }
.district-has-baseline .guided-hero { display:block;padding:24px 30px; }
.district-has-baseline .guided-hero h1 { font-size:30px;margin:8px 0; }
.district-has-baseline .guided-hero h2 { font-size:18px;margin:0 0 8px; }
.district-has-baseline .guided-hero p { margin:0 0 16px; }
.district-has-baseline .guided-hero-copy { max-width:none; }
.district-next-item { display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:24px;padding:20px 0;border-top:1px solid var(--border); }
.district-next-item h3 { margin:8px 0; }
.district-next-item p { font-size:14px;margin:0;max-width:85ch; }
.district-next-meta { display:flex;flex-direction:column;gap:8px;font-size:var(--cf-text-sm); }
.district-visual-grid #trend-section { background:white; border:1px solid var(--border); border-radius:12px; padding:24px; min-width:0; }
.district-visual-grid #trend-section>.card { border:0;box-shadow:none;padding:0; }
@media(max-width:1100px){.district-visual-grid{grid-template-columns:1fr}}
@media(max-width:600px){.district-next-item{grid-template-columns:1fr;gap:14px}.district-next-meta{padding-left:12px;border-left:3px solid var(--gold)}}
@media(max-width:900px) { body.portal-school-chrome .portal-header { padding:10px 16px 0; height:132px; flex-wrap:wrap; } body.portal-school-chrome .portal-sidebar,body.portal-school-chrome .portal-menu-backdrop { top:132px; height:calc(100dvh - 132px); } .portal-primary-nav a { padding:10px 15px; } }
.portal-sidebar .nav-overview, .portal-sidebar .module-nav-item, .portal-nav-link {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-height: 42px;
  margin: 2px 0;
  padding: 10px 12px;
  border: 1px solid transparent;
  border-left: 3px solid transparent;
  border-radius: 7px;
  background: transparent;
  color: #d8e2f5;
  text-align: left;
  text-decoration: none;
  font: 500 var(--cf-text-sm)/1.45 var(--font-body);
  cursor: pointer;
  transition: background .15s, border-color .15s;
}
.portal-sidebar .nav-overview { justify-content: space-between; font-weight: 700; margin-bottom: 18px; }
.portal-sidebar .nav-overview:hover, .portal-sidebar .module-nav-item:hover, .portal-nav-link:hover { color: #fff; background: #ffffff0b; }
.portal-sidebar .selected, .portal-sidebar .selected:hover { background: #ffffff12; border-color: #ffffff13; border-left-color: var(--gold); color: #fff; }
.portal-sidebar .nav-index { flex: none; font: 400 var(--cf-text-sm) var(--font-display); color: #95addc; }
.portal-sidebar .selected .nav-index { color: var(--gold); }
.portal-nav-dot { width: 5px; height: 5px; border: 1px solid #95addc; border-radius: 50%; flex: none; margin: 0 4px 0 2px; }
.selected .portal-nav-dot { background: var(--gold); border-color: var(--gold); }
.portal-sidebar .nav-group { display: block; margin: 23px 0 9px; padding: 0 14px; color: var(--cyan-soft); font: 700 var(--cf-font-size-label)/1.4 var(--font-body); letter-spacing: .14em; text-transform: uppercase; }
.portal-sidebar #module-nav { display: block; overflow: visible; margin: 0; padding: 0; }
.portal-service-menu { margin-top:20px; border-top:1px solid #ffffff25; padding-top:12px; }
.portal-service-menu>summary { padding:14px; color:var(--cyan-soft); font-weight:700; cursor:pointer; }
.portal-service-menu[open]>summary { color:white; }
.portal-sidebar-foot { border-top: 1px solid #ffffff18; display: flex; flex-direction: column; gap: 8px; margin-top: 30px; padding: 20px 14px 0; font-size: var(--cf-text-sm); color: #95addc; }
.portal-sidebar-foot a { color: var(--cyan-soft); text-decoration: none; }
.portal-utility-nav { margin-top: 25px; padding-top: 15px; border-top: 1px solid #ffffff18; }
.portal-nav-message { color: #c3cdea; padding: 16px; font-size: var(--cf-text-sm); }
body.portal-ready .portal-main { min-width: 0; width: 100%; max-width: 1600px; padding: 30px 32px 56px; margin: 0 auto; }
.portal-main > h1:first-child { margin-top: 6px; }
body.portal-ready h1, body.portal-ready h2, body.portal-ready h3 { font-family: var(--font-heading); color: var(--navy); }
body.portal-ready[data-portal="admin"] #tab-nav { display: none; }
body.portal-ready .card, body.portal-ready .surface, body.portal-ready .module-card { border-radius: var(--radius); border-color: var(--border); box-shadow: var(--shadow); }
body.portal-ready .card { padding: 24px; }
body.portal-ready .guided-hero, body.portal-ready .mission-hero, body.portal-ready .admin-overview-hero, body.portal-ready .pool-finance-hero, body.portal-ready .pool-risk-hero {
  background-color: var(--navy);
  background-image: var(--hex-tex), linear-gradient(115deg, var(--navy), var(--navy-abyss));
  border-radius: 14px;
  border-bottom: 3px solid var(--gold);
  color: #fff;
}
body.portal-ready .guided-hero h1, body.portal-ready .guided-hero h2, body.portal-ready .mission-hero h1 { color: #fff; }
body.portal-ready :is(.guided-hero, .mission-hero, .admin-overview-hero, .pool-finance-hero, .pool-risk-hero, .campaign-hero, .audit-hero, .tut-hero, .assurance-hero, .evidence-review-path, .member-pathway) :is(h1,h2,h3) { color: #fff; }
body.portal-ready :is(.guided-hero, .mission-hero, .admin-overview-hero, .pool-finance-hero, .pool-risk-hero) p { color: #dce5f5; }
body.portal-ready :is(.guided-hero, .mission-hero, .admin-overview-hero, .pool-finance-hero, .pool-risk-hero) .guided-kicker { color: var(--gold); }
body.portal-ready .guided-hero .journey-step { background: #ffffff08; border-color: #ffffff20; color: #dce5f5; }
body.portal-ready .guided-hero .journey-step strong { color: #fff; }
body.portal-ready .guided-hero .journey-step.current { background: #ffffff10; border-color: #ffffff35; }
body.portal-ready .guided-hero .step-number { background: #ffffff15; border-color: #ffffff35; color: #fff; }
body.portal-ready .guided-hero .journey-step.current .step-number { background: var(--gold); color: var(--navy-deep); border-color: var(--gold); }
body.portal-ready .guided-hero .journey-step.complete .step-number { background: var(--ok); border-color: var(--ok); }
body.portal-ready h1[tabindex="-1"]:focus { outline: none; }
body.portal-ready .mission-hero::before { background: none; }
body.portal-ready .mission-hero h1 em { font-family: var(--font-heading); font-style: normal; font-weight: 800; color: var(--cyan-soft); }
body.portal-ready .button, body.portal-ready .btn { border-radius: 8px; min-height: 42px; font-family: var(--font-body); font-weight: 600; }
body.portal-ready .button-navy, body.portal-ready .btn.primary { background: var(--blue); border-color: var(--blue); color: #fff; }
body.portal-ready .button-navy:hover, body.portal-ready .btn.primary:hover { background: var(--navy); border-color: var(--navy); color: #fff; }
body.portal-ready .button-subtle { background: var(--surface-tint); color: var(--navy); }
body.portal-ready .button-gold { background: var(--gold); color: var(--navy-deep); }
body.portal-ready .button-gold:hover { background: #ffc15d; color: var(--navy-deep); }
body.portal-ready .button-outline:hover { border-color: var(--gold); color: #fff; }
body.portal-ready .stat, body.portal-ready .stat-card { box-shadow: var(--shadow); border-top: 3px solid var(--blue); }
body.portal-ready .stat:nth-child(2), body.portal-ready .stat-card:nth-child(2) { border-top-color: var(--gold); }
body.portal-ready .stat:nth-child(3), body.portal-ready .stat-card:nth-child(3) { border-top-color: var(--sky); }
body.portal-ready .stat:nth-child(4), body.portal-ready .stat-card:nth-child(4) { border-top-color: var(--indigo); }
body.portal-ready .stat-value, body.portal-ready .module-number, body.portal-ready .campaign-path strong { font-family: var(--font-display); }
body.portal-ready .module-number { font-size: 23px; color: var(--blue); }
body.portal-ready .module-card { border-top: 3px solid var(--blue); }
body.portal-ready .module-card:hover { border-color: var(--sky); border-top-color: var(--blue); }
body.portal-ready .workspace-heading h1 { color: var(--navy); font-size: clamp(26px,2.7vw,38px); letter-spacing: -.025em; }
body.portal-ready .workspace-heading p, body.portal-ready .section-description { font-size: var(--cf-text-sm); }
body.portal-ready .record-table, body.portal-ready .chart-data { font-size: var(--cf-text-sm); }
body.portal-ready .record-table th, body.portal-ready .chart-data th { background: var(--surface-tint); font-size: var(--cf-text-sm); color: var(--text-muted); }
body.portal-ready .record-table td, body.portal-ready .chart-data td { border-color: var(--border); }
body.portal-ready .record-title { color: var(--navy); }
body.portal-ready .workspace-method, body.portal-ready .workspace-banner, body.portal-ready .next-step, body.portal-ready .campaign-card, body.portal-ready .library-card { background: var(--surface-tint); border-color: var(--border); }
body.portal-ready .workspace-method summary { color: var(--blue); }
body.portal-ready .hero-program-mark { background: #ffffff08; border-color: #ffffff30; }
body.portal-ready .hero-program-mark > span { color: var(--gold); font-family: var(--font-display); font-size: 90px; }
body.portal-ready .btn:focus-visible, body.portal-ready .button:focus-visible, body.portal-ready a:focus-visible, body.portal-ready button:focus-visible, body.portal-ready summary:focus-visible { outline: 3px solid var(--sky); outline-offset: 3px; }
.portal-header a:focus-visible, .portal-header button:focus-visible, .portal-sidebar a:focus-visible, .portal-sidebar button:focus-visible { outline-color: var(--gold); }
body.portal-ready input, body.portal-ready select, body.portal-ready textarea { border-color: #b4c1da; }
body.portal-ready input:focus-visible, body.portal-ready select:focus-visible, body.portal-ready textarea:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
.portal-menu-backdrop { display: none; }
.portal-domain-nav { display:flex; gap:5px; padding:4px; background:#ffffff08; border:1px solid #ffffff25; border-radius:10px; }
.portal-domain-nav a { display:block; padding:11px 16px; border-radius:7px; color:#fff; font:700 14px var(--font-body); text-decoration:none; white-space:nowrap; }
.portal-domain-nav a[aria-current] { background:var(--gold); color:var(--navy-deep); }
.portal-domain-nav a:hover:not([aria-current]) { background:#ffffff12; color:#fff; }
.portal-account-nav .portal-who { display:none; }
.portal-account-nav a,.portal-account-nav button { font-size:14px; min-height:44px; }
.portal-sidebar .nav-overview,.portal-sidebar .module-nav-item,.portal-sidebar .portal-nav-link { font-size:14px; min-height:44px; }
.portal-sidebar .nav-group { font-size:var(--cf-text-sm); }
body.portal-ready .ops-hero { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:28px 32px; }
body.portal-ready .ops-hero h1 { font-size:32px; margin:0 0 8px; }
body.portal-ready .ops-hero p { margin:0; font-size:14px; }
body.portal-ready .ops-hero .hero-actions { margin:0; }
body.portal-ready .module-card p { font-size:var(--cf-text-sm); }
body.portal-ready .module-card-top { justify-content:flex-start; }
/* unify track: pool sub-views are page tabs (they are no longer separate menu entries). */
body.portal-ready .group-chip { color:var(--blue); font-size:var(--cf-text-xs); }
.pool-workspace-page #mission-overview .insight-grid,.pool-workspace-page #mission-overview .priorities,.pool-workspace-page #mission-overview .campaign-section,.pool-workspace-page #mission-overview .dependency-section,.pool-workspace-page #mission-overview .module-mix-chart,.pool-workspace-page #evidence-review-section { display:none; }
@media(min-width:901px) and (max-width:1250px) { .portal-account-nav a { display:none; } .portal-account-nav #who { display:none; } .portal-product { font-size:15px; } .portal-domain-nav a { padding:10px 12px; font-size:var(--cf-text-sm); } }
@media(max-width:900px) {
  body.portal-ready[data-portal="admin"] .portal-header { display:grid; grid-template-columns:42px minmax(0,1fr) auto; grid-template-rows:58px 46px; height:128px; padding:10px 16px 0; gap:0 12px; }
  body.portal-ready[data-portal="admin"] .portal-brand { grid-column:2; grid-row:1; }
  body.portal-ready[data-portal="admin"] .portal-menu-toggle { grid-column:1; grid-row:1; }
  body.portal-ready[data-portal="admin"] .portal-account-nav { grid-column:3; grid-row:1; }
  body.portal-ready[data-portal="admin"] .portal-domain-nav { grid-row:2; grid-column:1/-1; padding:0; border:0; background:none; justify-content:center; }
  body.portal-ready[data-portal="admin"] .portal-domain-nav a { flex:1; text-align:center; font-size:14px; padding:12px; }
  body.portal-ready[data-portal="admin"] .portal-sidebar { top:128px; height:calc(100dvh - 128px); }
  body.portal-ready[data-portal="admin"].portal-menu-open .portal-menu-backdrop { top:128px; height:calc(100dvh - 128px); }
  body.portal-ready .ops-hero { flex-direction:column; align-items:flex-start; padding:24px; }
}
/* Keep the simplified public entrances quiet and on-brand. */
.signin-brand, .login-hero { background-color: var(--navy); background-image: var(--hex-tex), linear-gradient(115deg,var(--navy),var(--navy-abyss)); }
.signin-brand { border-bottom-color: var(--gold); }
.signin-form-panel { color: var(--text); }
.signin-page{position:relative;isolation:isolate;background:#f1f4f8}
.signin-page::before{content:'';position:fixed;right:-90px;bottom:-70px;width:min(560px,75vw);height:min(590px,80vw);background:url('/static/img/sectors/municipal/mark-color.svg?v=5c23677b2c') center/contain no-repeat;opacity:.035;pointer-events:none;z-index:-1}
.signin-shell{position:relative}.signin-brand{background-image:url('/static/img/document-network.svg?v=898014a8e1');background-size:cover}
@media (max-width: 1200px) and (min-width: 901px) {
  .portal-layout { grid-template-columns: 236px minmax(0,1fr); }
  body.portal-ready .portal-main { padding: 26px 24px 48px; }
  .portal-brand { gap: 16px; }
  .portal-product { padding-left: 16px; font-size: 16px; }
  .portal-account-nav .portal-who, .portal-account-nav #who { display: none; }
}
@media (max-width: 900px) {
  .portal-header { padding: 12px 18px; gap: 12px; min-height: 82px; flex-wrap: nowrap; }
  .portal-menu-toggle { display: inline-block; }
  .portal-brand { flex: 1; gap: 16px; }
  .portal-brand img { width: 150px; }
  .portal-product { font-size: 16px; padding-left: 16px; }
  .portal-account-nav { margin-left: auto; }
  .portal-account-nav .portal-who, .portal-account-nav #who { display: none; }
  .portal-account-nav a { display: none; }
  .portal-account-nav button { padding: 8px; font-size: var(--cf-text-xs); }
  .portal-layout { display: block; }
  .portal-sidebar { position: fixed; top: 82px; bottom: 0; left: 0; height: calc(100dvh - 82px); width: min(320px,85vw); z-index: 65; transform: translateX(-100%); visibility: hidden; transition: transform .2s, visibility .2s; box-shadow: 10px 0 30px #143a5220; }
  .portal-menu-open .portal-sidebar { transform: translateX(0); visibility: visible; }
  .portal-menu-open { overflow: hidden; }
  .portal-menu-open .portal-menu-backdrop { display: block; position: fixed; z-index: 64; inset: 82px 0 0; background: #143a5265; border: 0; width: 100%; height: calc(100dvh - 82px); cursor: pointer; }
  body.portal-ready .portal-main { padding: 24px 20px 40px; }
  .portal-page-tools { padding: 18px 20px 0; justify-content: flex-start; }
  .portal-sidebar .module-nav-item { max-width: none; }
}
@media (max-width: 520px) {
  .portal-header { gap: 10px; padding: 12px 14px; }
  .portal-brand { gap: 12px; }
  .portal-brand img { width: 115px; }
  .portal-product { font-size: var(--cf-text-sm); padding-left: 12px; white-space: normal; min-width: 0; }
  .portal-product small { font-size: var(--cf-font-size-label); letter-spacing: .08em; }
  .portal-account-nav { display: none; }
  body.portal-ready .portal-main { padding: 20px 16px 36px; }
  body.portal-ready .card, body.portal-ready .surface { padding: 20px; }
  body.portal-ready .mission-hero { padding: 26px 24px; }
  .portal-sidebar .nav-index { display: inline; }
}
@media (prefers-reduced-motion: reduce) { .portal-sidebar, .portal-nav-link, .portal-sidebar .module-nav-item { transition: none; } }
@media print {
  .portal-header, .portal-sidebar, .portal-menu-backdrop { display: none !important; }
  .portal-layout { display: block; }
  body.portal-ready .portal-main { padding: 0; max-width: none; }
  body.portal-ready .mission-hero, body.portal-ready .guided-hero { background: #fff !important; border: 1px solid var(--border); color: var(--text); }
  body.portal-ready .mission-hero h1, body.portal-ready .mission-hero h1 em, body.portal-ready .guided-hero h1, body.portal-ready .guided-hero h2 { color: var(--navy); }
}
@media(max-width:900px) {
  body.portal-school-chrome .portal-header { display:grid;grid-template-columns:42px minmax(0,1fr) auto;grid-template-rows:58px 78px;height:150px;padding:10px 16px 0;gap:0 12px; }
  body.portal-school-chrome .portal-menu-toggle { grid-column:1;grid-row:1; }
  body.portal-school-chrome .portal-brand { grid-column:2;grid-row:1; }
  body.portal-school-chrome .portal-account-nav { grid-column:3;grid-row:1; }
  .portal-primary-nav { grid-column:1/-1;grid-row:2;height:78px;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 4px; }
  .portal-primary-nav a { justify-content:center;font-size:var(--cf-text-sm);padding:8px 4px; }
  body.portal-school-chrome .portal-sidebar,body.portal-school-chrome .portal-menu-backdrop { top:150px;height:calc(100dvh - 150px); }
}
