/* Shared UBIS header: compact, keyboard-ready, and identical on every route. */
:root{--site-header-height:80px}
body .header.frame{display:flex;align-items:center;box-sizing:border-box;position:sticky;top:0;z-index:30;width:100%;min-height:var(--site-header-height);padding-block:12px;padding-inline:max(var(--gutter),calc((100% - 1440px)/2 + var(--gutter)));gap:16px;background:var(--white);border-bottom:1px solid var(--line);transition:none;animation:none}
body[data-site-scrolled] .header.frame{min-height:64px;padding-block:6px;margin-bottom:16px}
body[data-site-scrolled] .header .brand img{width:60px;height:44px}
body .header .brand{display:flex;align-items:center;flex-shrink:0;margin-right:auto}
body .header .brand img{display:block;width:76px;height:54px;object-fit:contain}
body .header>nav{display:flex;align-items:center;gap:16px;flex-wrap:nowrap}
body .header nav a{display:inline-flex;align-items:center;min-height:44px;padding-inline:4px;font-size:15px;font-weight:700;line-height:1.4;white-space:nowrap}
body .header [aria-current=page]{text-decoration:underline;text-underline-offset:8px}
body .header .header-login{display:inline-flex;align-items:center;min-height:44px;padding-inline:4px;font-size:14px;font-weight:400;color:var(--muted);white-space:nowrap}
body .header>.header-advisor{display:inline-flex;align-items:center;flex-shrink:0;min-height:44px;padding-inline:4px;font-size:14px;font-weight:700;white-space:nowrap;text-underline-offset:4px}
body .header .header-apply{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;gap:20px;min-height:46px;padding:10px 18px;border-radius:7px;background:var(--green);color:var(--white);font-size:15px;font-weight:700;white-space:nowrap}
body .header .header-apply:hover{background:#08572f;text-decoration:none}
body .header :focus-visible{outline:3px solid #2977bd;outline-offset:3px}
body .skip{z-index:40}
body .header .mobile-menu{display:none;position:relative}
body .header .mobile-menu summary{display:flex;align-items:center;min-width:44px;min-height:44px;padding:0;font-size:14px;list-style:none}
body .header .mobile-menu summary::-webkit-details-marker{display:none}
body .header .mobile-menu nav{position:absolute;top:100%;left:0;right:0;z-index:31;display:flex;flex-direction:column;gap:0;max-height:calc(100dvh - var(--site-header-height));padding:12px var(--gutter) 20px;overflow-y:auto;overscroll-behavior:contain;background:var(--white);color:var(--navy);border-bottom:1px solid var(--line)}
body .header .mobile-menu:not([open]) nav{display:none}
body .header .mobile-menu nav a{display:flex;align-items:center;min-height:44px;padding-block:8px}
body .header .mobile-menu .advisor-booking-link{display:flex;align-items:center;min-height:44px;padding-block:8px}
html:root{scroll-padding-top:calc(var(--site-header-height) + 72px)}
body main [id]{scroll-margin-top:24px}
body .section-nav.frame{position:sticky;top:var(--site-header-height);z-index:20;flex-wrap:nowrap;overflow-x:auto;background:var(--white)}
body .section-nav.frame a{flex-shrink:0;white-space:nowrap}
body .campaign-section-nav{top:var(--site-header-height);z-index:20;background:var(--white)}
body:not([data-program-reading-nav]) .section-nav.frame{position:static;top:auto}
/* Program pages hand the sticky role to their local reading navigation. */
body[data-program-reading-nav] .header.frame{position:relative;top:auto}
@media(max-width:1024px){
:root{--site-header-height:72px}
body .header.frame{padding-block:11px;gap:16px}
body .header .brand img{width:64px;height:48px}
body .header>nav,body .header>.header-login{display:none}
body .header .mobile-menu{display:block}
body .header>.header-advisor{display:none}
body .header .header-apply{gap:14px;padding:9px 14px;font-size:14px}
body[data-site-scrolled] .header.frame{min-height:60px;padding-block:6px;margin-bottom:12px}
body[data-site-scrolled] .header .brand img{width:52px;height:38px}
html:root{scroll-padding-top:var(--site-header-height)}
body .section-nav.frame,body .campaign-section-nav{position:static}
}
/* Program routes hand the sticky role to their own section bar. */
html[data-program-reading-nav]{scroll-padding-top:0}
body[data-program-reading-nav] .section-nav.frame,body[data-program-reading-nav] .campaign-section-nav{position:sticky;top:0}
body[data-program-reading-nav] main [id]{scroll-margin-top:64px}
