/* Isolated faculty navigation; project microsites use their own header/assets. */
.km-trigger { display: none; }
.km-dialog:not([open]) { display: none; }
.km-dialog, .km-dialog * { box-sizing: border-box; }
.km-dialog {
    --km-blue: #094e96;
    --km-ink: #16324d;
    position: fixed; inset: 0; margin: 0; padding: 0; border: 0;
    width: 100%; max-width: none; height: 100vh; height: 100dvh; max-height: none;
    color: var(--km-ink); background: #094e96; font-family: 'Barlow', sans-serif;
    overflow: hidden; overscroll-behavior: contain;
}
.km-dialog[open] { display: flex; flex-direction: column; animation: km-enter .25s ease-out; }
.km-dialog::backdrop { background: #102b47b3; }
.km-dialog button, .km-trigger { font-family: inherit; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.km-dialog a { text-decoration: none; }
.km-dialog :is(a,button,input):focus-visible, .km-trigger:focus-visible { outline: 3px solid #4490bf; outline-offset: 3px; }
.km-top {
    display: flex; align-items: center; justify-content: space-between; gap: 16px;
    padding: max(18px, env(safe-area-inset-top)) max(22px, env(safe-area-inset-right)) 18px max(22px, env(safe-area-inset-left));
    flex: 0 0 auto; background: #094e96; color: #fff; z-index: 1;
    transition: box-shadow .2s;
}
.km-scrolled .km-top { box-shadow: 0 6px 20px #062b542b; }
.km-brand { display: flex; align-items: center; gap: 12px; color: #fff; font-size: 16px; font-weight: 600; line-height: 1.3; }
.km-brand:hover { color: #fff; }
.km-brand img { display: block; width: 52px; height: 52px; padding: 3px; background: white; border-radius: 50%; }
.km-brand small { display: block; margin-top: 4px; font-size: 12px; font-weight: 400; color: #d6e5f4; }
.km-close { display: grid; place-items: center; flex-shrink: 0; width: 44px; height: 44px; border: 1px solid #ffffff55; border-radius: 50%; color: #fff; background: #ffffff0d; }
.km-close:hover { background: #ffffff24; }
.km-scroll { overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; min-height: 0; flex: 1; background: #f8fafc; }
.km-intro { background: #094e96; padding: 20px 24px 46px; color: white; }
.km-eyebrow { display: block; font-size: 11px; font-weight: 500; letter-spacing: .15em; text-transform: uppercase; color: #d6e5f4; }
.km-intro h2 { font-size: clamp(29px, 7vw, 42px); line-height: 1.15; letter-spacing: -.025em; font-weight: 500; margin: 12px 0 23px; padding: 0; color: white; }
.km-search { display: flex; align-items: center; border: 1px solid #ffffff45; background: #ffffff14; border-radius: 12px; overflow: hidden; }
.km-search:focus-within { border-color: #fff; box-shadow: 0 0 0 2px #ffffff38; }
.km-search input[type=search] { min-width: 0; width: 100%; height: 50px; border: 0; padding: 0 16px; background: transparent; color: #fff; box-shadow: none; font: inherit; font-size: 16px; outline: none; }
.km-search input::placeholder { color: #e0ebf6; opacity: 1; }
.km-search button { display: grid; place-items: center; width: 50px; height: 50px; flex-shrink: 0; border: 0; background: transparent; color: #fff; }
.km-body { position: relative; margin-top: -18px; border-radius: 22px 22px 0 0; padding: 14px 24px max(25px, env(safe-area-inset-bottom)); background: #f8fafc; }
.km-links, .km-links ul { list-style: none; margin: 0; padding: 0; }
.km-links > li { border-bottom: 1px solid #dfe6ed; }
.km-links li { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
.km-links li > a { display: flex; align-items: center; gap: 9px; min-height: 63px; padding: 14px 10px 14px 0; color: var(--km-ink); font-size: 23px; font-weight: 500; line-height: 1.25; overflow-wrap: anywhere; }
.km-links li > a:hover, .km-links li.current-menu-item > a, .km-links .km-expanded > a { color: var(--km-blue); }
.km-links li.current-menu-item > a { font-weight: 600; }
.km-sub-toggle { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: #eaf0f6; color: var(--km-blue); }
.km-sub-toggle svg { transition: transform .2s; }
.km-sub-toggle[aria-expanded=true] { background: var(--km-blue); color: white; }
.km-sub-toggle[aria-expanded=true] svg { transform: rotate(180deg); }
.km-links ul { grid-column: 1 / -1; margin: 0 0 17px; padding: 6px 0 6px 16px; border-left: 2px solid #4490bf; }
.km-links ul[hidden] { display: none; }
.km-links ul li > a { min-height: 46px; font-size: 17px; line-height: 1.4; padding: 10px 8px 10px 0; }
.km-links ul ul { margin: 4px 0 9px; border-color: #cfdeeb; padding-left: 12px; }
.km-links ul ul li > a { font-size: 16px; }
.km-links .km-home > a { font-size: 15px; min-height: 49px; color: #5b7084; }
.km-home .fa-home { font-size: 17px; }
.km-links > li:not(.menu-item-has-children):not(.km-home) > a::after { content: '\2197'; margin-left: auto; font-size: 24px; font-weight: 400; color: #4490bf; }
.km-bottom { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-top: 28px; }
.km-signature { font-size: 21px; letter-spacing: .08em; font-weight: 600; color: var(--km-blue); }
.km-signature > span { display: block; font-size: 9px; letter-spacing: .32em; font-weight: 400; margin-top: 1px; }
.km-languages { display: flex; gap: 6px; }
.km-languages a { display: grid; place-items: center; min-width: 44px; min-height: 44px; font-size: 13px; font-weight: 600; border-radius: 50%; color: #5b7084; }
.km-languages a[aria-current] { background: #094e96; color: white; }
.km-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@media (max-width: 1000px) {
    .km-ready #header > .content-size > .simple-tbl { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
    .km-ready #header > .content-size { padding-inline: 20px; }
    .km-ready #header .simple-tbl .menu { display: block; width: auto; }
    .km-ready #header .menu > nav, .km-ready #header > .content-size > .simple-tbl .search.mobile { display: none !important; }
    .km-ready #header .logo { display: block; width: auto; }
    .km-ready #header .logo img { display: block; width: 76px; height: auto; }
    .km-ready #header { padding: 14px 0; }
    .km-ready .km-trigger { display: inline-flex; align-items: center; gap: 15px; min-height: 48px; padding: 0 17px; border: 1px solid #d8e3ee; border-radius: 12px; font-size: 15px; font-weight: 600; color: #094e96; background: #f0f5fa; }
}
@media (min-width: 600px) {
    .km-top, .km-intro, .km-body { padding-left: max(32px, calc((100% - 640px)/2)); padding-right: max(32px, calc((100% - 640px)/2)); }
}
@media (max-width: 360px) {
    .km-top { padding-inline: 16px; gap: 8px; }
    .km-brand { font-size: 14px; gap: 8px; }
    .km-brand img { width: 44px; height: 44px; }
    .km-intro, .km-body { padding-left: 20px; padding-right: 20px; }
    .km-links li > a { font-size: 21px; }
}
@keyframes km-enter { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) { .km-dialog[open] { animation: none; } .km-dialog *, .km-dialog *::after { transition: none; } }
