:root{
  /* ── Brand palette ─────────────────────────────────
     https://coolors.co/23256f-2e3192-4e5ac8-38bdf8-eef1ff */
  --midnight-blue:#23256F;
  --egyptian-blue:#2E3192;
  --slate-indigo:#4E5AC8;
  --deep-sky-blue:#FFFF;
  --lavender-mist:#EEF1FF;

  /* ── Semantic tokens ─────────────────────────────── */
  --brand:var(--egyptian-blue);
  --brand-dark:var(--midnight-blue);
  --brand-deep:#1A1C55;              /* below midnight, for photo wells */
  --indigo:var(--slate-indigo);
  --accent:var(--deep-sky-blue);
  --accent-mid:#089DDD;              /* 3:1 on white — focus rings, borders */
  --accent-deep:#0A7CAE;             /* 4.6:1 on white — accent text */
  --white:#FFFFFF;
  --gray:var(--lavender-mist);
  --ink:#1B1E42;
  --muted:#5C628A;
  --line:#DCE1F7;
  --shadow-s:0 2px 10px rgba(35,37,111,.06);
  --shadow-m:0 10px 30px rgba(35,37,111,.10);
  --shadow-l:0 22px 50px rgba(35,37,111,.15);
  --r:18px;
  --r-lg:26px;
  --head:"Poppins",system-ui,sans-serif;
  --body:"Inter",system-ui,sans-serif;
  --wrap:1240px;
}
*{margin:0;padding:0;box-sizing:border-box}
[hidden]{display:none!important}
[id]{scroll-margin-top:108px}  /* clear the fixed navbar on anchor jumps */
html{scroll-behavior:smooth}
body{font-family:var(--body);font-size:18px;line-height:1.7;color:var(--ink);background:var(--white);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{text-decoration:none;color:inherit}
img{display:block;max-width:100%}
ul{list-style:none}
:focus-visible{outline:3px solid var(--accent-mid);outline-offset:3px;border-radius:6px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}
h1,h2,h3,h4{font-family:var(--head);font-weight:600;line-height:1.2;letter-spacing:-.02em}
.eyebrow{font-family:var(--head);font-weight:600;font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-deep)}
.sec-title{font-size:42px;margin:14px 0 16px}
.sec-lede{font-size:18px;color:var(--muted);max-width:58ch}
.sec-head{text-align:center;margin-bottom:52px}
.sec-head .sec-lede{margin:0 auto}
.pad{padding:110px 0}
.pad-gray{background:var(--gray)}
.icon{width:26px;height:26px;stroke:currentColor;stroke-width:1.6;fill:none;stroke-linecap:round;stroke-linejoin:round}

.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--head);font-weight:600;font-size:16px;padding:16px 32px;border-radius:100px;border:0;cursor:pointer;transition:transform .25s,box-shadow .25s,background .25s}
.btn-accent{background:var(--accent);color:var(--brand-dark);box-shadow:0 6px 20px rgba(56,189,248,.34)}
.btn-accent:hover{transform:translateY(-3px);box-shadow:0 12px 30px rgba(56,189,248,.5)}
.btn-apply-red{
  background: #9e0015 !important;
  color: #FFFF !important;
}
.btn-brand{background:var(--brand);color:#fff;box-shadow:0 6px 20px rgba(35,37,111,.3)}
.btn-brand:hover{transform:translateY(-3px);box-shadow:0 12px 32px rgba(35,37,111,.44)}
.btn-outline{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.65)}
.btn-outline:hover{background:rgba(255,255,255,.14);transform:translateY(-3px)}

/* announcement bar */
.topbar{background:#9e0015;color:#ffffff;font-size:13.5px;position:relative;z-index:60}
.topbar .wrap{display:flex;justify-content:space-between;align-items:center;gap:20px;height:44px;flex-wrap:wrap}
.topbar ul{display:flex;gap:22px;align-items:center;flex-wrap:wrap}
.topbar a{display:flex;align-items:center;gap:7px;transition:color .2s}
.topbar a:hover{color:#fff}
.topbar .icon{width:15px;height:15px}

/* nav */
.nav{position:fixed;top:44px;left:0;right:0;z-index:55;transition:background .35s,box-shadow .35s,top .35s,backdrop-filter .35s}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:30px;height:88px;transition:height .35s}
.brand{display:flex;align-items:center;gap:13px;min-width:0}
.crest{height:50px;padding:0px 0px;border-radius:14px;display:grid;place-items:center;flex:none;box-shadow:0 3px 14px rgba(0,0,0,.10);transition:height .35s,padding .35s}
.crest img{height:50px;width:auto;display:block}
.brand-txt b{display:block;font-family:var(--head);font-weight:700;font-size:20px;letter-spacing:.01em;color:#fff;line-height:1.15;transition:color .35s}
.brand-txt span{display:block;font-size:12px;color:rgba(255,255,255,.82);transition:color .35s}
.menu{display:flex;align-items:center;gap:22px}
.menu>li>a{font-family:var(--head);font-weight:500;font-size:15px;color:#ffff !important;padding:8px 0;position:relative;white-space:nowrap;transition:color .3s}
.menu>li>a::after{content:"";position:absolute;left:0;right:100%;bottom:2px;height:2px;background:var(--accent);transition:right .3s}
.menu>li>a:hover::after{right:0}
.nav-tools{display:flex;align-items:center;gap:16px}
.searchbtn{background:none;border:0;color:#fff;cursor:pointer;display:grid;place-items:center;padding:6px;transition:color .3s}
.nav .btn{padding:13px 26px;font-size:15px}
.burger{display:none;background:none;border:0;color:#fff;cursor:pointer;padding:6px}

.nav.solid{background:#2E3192;backdrop-filter:blur(18px) saturate(180%);-webkit-backdrop-filter:blur(18px) saturate(180%);box-shadow:0 4px 24px rgba(35,37,111,.10);top:0}
.nav.solid .wrap{height:74px}
.nav.solid .crest{box-shadow:none;}
/*.nav.solid .crest{height:44px;padding:7px 12px;box-shadow:none;border:1px solid var(--line)}*/
.nav.solid .crest img{height:50px}
.nav.solid .brand-txt b{color:#ffff !important}
.nav.solid .brand-txt span{color:var(--muted)}
.nav.solid .menu>li>a,.nav.solid .searchbtn,.nav.solid .burger{color:#ffff}
.nav.solid .menu>li>a:hover{color:var(--brand)}

/* hero */
.hero{position:relative;min-height:100vh;display:flex;align-items:center;background:var(--brand-dark);overflow:hidden}
.slide{position:absolute;inset:0;opacity:0;transition:opacity .8s ease}
.slide.on{opacity:1}
.slide-img{position:absolute;inset:0;background-size:cover;background-position:center;transform:scale(1.02)}
.slide.on .slide-img{animation:kb 10s ease-out forwards}
@keyframes kb{from{transform:scale(1.02)}to{transform:scale(1.14)}}
.slide::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,rgba(35,37,111,.94) 0%,rgba(35,37,111,.78) 42%,rgba(46,49,146,.38) 100%)}
.blob{position:absolute;border-radius:50%;filter:blur(70px);opacity:.3;pointer-events:none;z-index:1}
.blob-a{width:520px;height:520px;background:var(--indigo);top:-160px;right:-90px}
.blob-b{width:400px;height:400px;background:var(--accent);bottom:-170px;left:-120px;opacity:.2}
.hero-inner{position:relative;z-index:3;width:100%;padding:150px 0 90px}
.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:60px;align-items:center}
.hero-copy{max-width:660px}
.hero .eyebrow{color:var(--accent)}
.hero h1{font-size:60px;font-weight:700;color:#fff;margin:18px 0 20px}
.hero p{font-size:19px;color:rgba(255,255,255,.86);max-width:48ch}
.hero-btns{display:flex;gap:16px;margin-top:36px;flex-wrap:wrap}
.dots{display:flex;gap:10px;margin-top:52px}
.dot{width:34px;height:4px;border-radius:100px;background:rgba(255,255,255,.32);border:0;cursor:pointer;padding:0;transition:background .3s,width .3s}
.dot[aria-current="true"]{background:var(--accent);width:56px}
.floaters{display:grid;gap:16px}
.float{display:flex;align-items:center;gap:16px;background:rgba(255,255,255,.11);border:1px solid rgba(255,255,255,.22);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:var(--r);padding:20px 24px;color:#fff;font-family:var(--head);font-weight:500;font-size:16px;animation:bob 6s ease-in-out infinite}
.float:nth-child(2){animation-delay:.9s}
.float:nth-child(3){animation-delay:1.8s}
.float:nth-child(4){animation-delay:2.7s}
.float .tick{width:40px;height:40px;border-radius:12px;background:#9e0015;display:grid;place-items:center;flex:none;color:var(--brand-dark)}
.float .tick .icon{width:20px;height:20px;stroke-width:2.4;color: white;}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}

/* reveal */
.rv{opacity:0;transform:translateY(26px);transition:opacity .75s ease,transform .75s ease}
.rv.in{opacity:1;transform:none}

/* quick access */
.qa-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:20px}
.qa{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);padding:30px 22px;text-align:center;box-shadow:var(--shadow-s);transition:transform .3s,box-shadow .3s,border-color .3s}
.qa:hover{transform:translateY(-8px);box-shadow:var(--shadow-l);border-color:transparent}
.qa .bubble{width:60px;height:60px;margin:0 auto 16px;border-radius:18px;background:rgba(78,90,200,.12);color:var(--brand);display:grid;place-items:center;transition:background .3s,color .3s}
.qa:hover .bubble{background:var(--brand);color:#fff}
.qa b{font-family:var(--head);font-weight:600;font-size:16px;display:block}

/* why */
.why-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}
.why-media{position:relative}
.why-media img{border-radius:var(--r-lg);box-shadow:var(--shadow-l);width:100%;height:520px;object-fit:cover;background:var(--brand-dark)}
.why-badge{position:absolute;right:-22px;bottom:-22px;background:var(--accent);color:var(--brand-dark);border-radius:22px;padding:26px 30px;box-shadow:var(--shadow-m);font-family:var(--head)}
.why-badge b{display:block;font-size:38px;font-weight:700;line-height:1}
.why-badge span{font-size:13.5px;font-weight:500;letter-spacing:.04em}
.why-list{display:grid;grid-template-columns:1fr 1fr;gap:18px 26px;margin-top:34px}
.why-list li{display:flex;align-items:center;gap:13px;font-family:var(--head);font-weight:500;font-size:16px}
.why-list .tick{width:30px;height:30px;border-radius:50%;background:rgba(78,90,200,.13);color:var(--brand);display:grid;place-items:center;flex:none;transition:transform .35s,background .35s,color .35s}
.why-list li:hover .tick{background:var(--brand);color:#fff;transform:scale(1.14) rotate(-8deg)}
.why-list .icon{width:16px;height:16px;stroke-width:2.6}

/* numbers */
.numbers{background:linear-gradient(135deg,var(--brand-dark) 0%,var(--brand) 55%,var(--indigo) 100%);color:#fff;position:relative;overflow:hidden}
.num-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:26px;position:relative;z-index:2}
.num{text-align:center}
.num b{font-family:var(--head);font-weight:700;font-size:52px;display:block;line-height:1;color:#fff}
.num b em{font-style:normal;color:var(--accent)}
.num span{font-size:14px;color:rgba(255,255,255,.78);letter-spacing:.05em;display:block;margin-top:10px}

/* programs */
.prog-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:24px}
.prog{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);padding:34px 28px 30px;box-shadow:var(--shadow-s);transition:transform .3s,box-shadow .3s;display:flex;flex-direction:column}
.prog:hover{transform:translateY(-10px);box-shadow:var(--shadow-l)}
.prog .bubble{width:64px;height:64px;border-radius:20px;background:linear-gradient(135deg,var(--brand),var(--indigo));color:#fff;display:grid;place-items:center;margin-bottom:20px}
.prog .bubble .icon{width:30px;height:30px}
.prog h3{font-size:21px;margin-bottom:10px}
.prog p{font-size:15px;color:var(--muted);line-height:1.65;flex:1}
.prog .go{margin-top:20px;font-family:var(--head);font-weight:600;font-size:15px;color:var(--brand);display:inline-flex;align-items:center;gap:8px}
.prog .go .icon{width:17px;height:17px;transition:transform .3s}
.prog:hover .go .icon{transform:translateX(6px)}

/* admission timeline */
.tl{display:grid;grid-template-columns:repeat(5,1fr);gap:0;position:relative;margin-top:16px}
.tl::before{content:"";position:absolute;top:38px;left:10%;right:10%;height:2px;background:var(--line)}
.tl-step{text-align:center;position:relative;padding:0 12px}
.tl-num{width:76px;height:76px;margin:0 auto 22px;border-radius:50%;background:var(--white);border:2px solid var(--line);color:var(--brand);display:grid;place-items:center;font-family:var(--head);font-weight:700;font-size:22px;position:relative;z-index:2;transition:.35s}
.tl-step:hover .tl-num{background:var(--brand);border-color:var(--brand);color:#fff;transform:scale(1.1)}
.tl-step h3{font-size:18px;margin-bottom:7px}
.tl-step p{font-size:14.5px;color:var(--muted);line-height:1.6}

/* news */
.rowhead{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:44px}
.railwrap{position:relative}
.rail{display:flex;gap:26px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:14px;scrollbar-width:none}
.rail::-webkit-scrollbar{display:none}
.card{flex:0 0 372px;scroll-snap-align:start;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-s);transition:transform .3s,box-shadow .3s}
.card:hover{transform:translateY(-8px);box-shadow:var(--shadow-l)}
.card .ph{height:216px;background:var(--brand-dark) center/cover no-repeat;overflow:hidden}
.card-b{padding:26px 26px 30px}
.tag{display:inline-block;font-family:var(--head);font-weight:600;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--brand);background:rgba(78,90,200,.13);padding:5px 12px;border-radius:100px}
.card h3{font-size:19px;margin:14px 0 10px;line-height:1.35}
.card .meta{font-size:14px;color:var(--muted)}
.card .go{margin-top:16px;font-family:var(--head);font-weight:600;font-size:14.5px;color:var(--brand);display:inline-flex;gap:7px;align-items:center}
.card .go .icon{width:16px;height:16px;transition:transform .3s}
.card:hover .go .icon{transform:translateX(5px)}
.arrows{display:flex;gap:10px}
.arrow{width:48px;height:48px;border-radius:50%;border:1px solid var(--line);background:var(--white);color:var(--brand);display:grid;place-items:center;cursor:pointer;transition:.25s}
.arrow:hover{background:var(--brand);color:#fff;border-color:var(--brand)}

/* events */
.ev-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:24px}
.ev{display:flex;gap:20px;background:var(--white);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:var(--r);padding:26px 24px;box-shadow:var(--shadow-s);transition:transform .3s,box-shadow .3s}
.ev:hover{transform:translateY(-6px);box-shadow:var(--shadow-m)}
.ev-date{flex:none;width:74px;text-align:center;border-right:1px solid var(--line);padding-right:18px;font-family:var(--head)}
.ev-date b{display:block;font-size:32px;font-weight:700;color:var(--brand);line-height:1}
.ev-date span{font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.ev h3{font-size:17.5px;margin-bottom:7px;line-height:1.35}
.ev p{font-size:14px;color:var(--muted)}

/* VC */
.vc{background:var(--brand-dark);color:#fff;position:relative;overflow:hidden}
.vc-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:64px;align-items:center;position:relative;z-index:2}
.vc-photo{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-l);height:460px;background:var(--brand-deep) center/cover no-repeat}
.vc blockquote{font-family:var(--head);font-weight:500;font-size:27px;line-height:1.48;color:#fff;letter-spacing:-.01em;margin:22px 0 26px;position:relative}
.vc blockquote::before{content:"“";position:absolute;left:-38px;top:-26px;font-size:100px;color:var(--accent);opacity:.55;font-family:Georgia,serif;line-height:1}
.vc .who b{display:block;font-family:var(--head);font-weight:600;font-size:18px}
.vc .who span{font-size:14.5px;color:rgba(255,255,255,.7)}
.vc .btn{margin-top:30px}

/* campus */
.gal{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:212px;gap:18px}
.tile{position:relative;border-radius:var(--r);overflow:hidden;background:var(--brand-dark) center/cover no-repeat;box-shadow:var(--shadow-s)}
.tile.tall{grid-row:span 2}
.tile.wide{grid-column:span 2}
.tile .fx{position:absolute;inset:0;background:center/cover no-repeat;transition:transform .7s ease}
.tile:hover .fx{transform:scale(1.12)}
.tile .lbl{position:absolute;inset:auto 0 0 0;padding:44px 22px 20px;background:linear-gradient(transparent,rgba(35,37,111,.92));color:#fff;font-family:var(--head);font-weight:600;font-size:17px}

/* partners */
.marquee{overflow:hidden;position:relative;-webkit-mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent)}
.track{display:flex;gap:20px;width:max-content;animation:slide 34s linear infinite}
.marquee:hover .track{animation-play-state:paused}
@keyframes slide{to{transform:translateX(-50%)}}
.logo{flex:none;width:222px;height:104px;border:1px solid var(--line);border-radius:var(--r);background:var(--white);display:grid;place-items:center;text-align:center;font-family:var(--head);font-weight:600;font-size:15px;color:var(--muted);padding:0 18px;transition:.3s}
.logo:hover{color:var(--brand);border-color:var(--brand);box-shadow:var(--shadow-m)}
.logo small{display:block;font-weight:500;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-deep);margin-bottom:5px}

/* footer */
footer{background:var(--brand-dark);color:rgba(238,241,255,.74);font-size:15px;padding:84px 0 25px}
.fgrid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1.5fr;gap:46px}
footer h4{font-family:var(--head);font-weight:600;font-size:16px;color:#fff;margin-bottom:20px}
footer li{margin-bottom:11px}
footer a{transition:color .2s,padding-left .2s}
footer a:hover{color:var(--accent);padding-left:5px}
.fbrand p{margin:18px 0 22px;line-height:1.7;max-width:36ch;font-size:14.5px}
.socials{display:flex;gap:11px}
.soc{width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,.1);display:grid;place-items:center;color:#fff;transition:.25s}
.soc:hover{background:var(--accent);color:var(--brand-dark);transform:translateY(-4px)}
.news-form{display:flex;gap:9px;margin-top:16px;flex-wrap:wrap}
.news-form input{flex:1;min-width:170px;padding:14px 18px;border-radius:100px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);color:#fff;font-family:var(--body);font-size:14.5px}
.news-form input::placeholder{color:rgba(255,255,255,.5)}
.news-form .btn{padding:14px 26px;font-size:14.5px}
.map{margin-top:22px;border-radius:var(--r);overflow:hidden;border:1px solid rgba(255,255,255,.16);height:150px}
.map iframe{width:100%;height:100%;border:0;filter:grayscale(.35)}
.copy{margin-top:64px;padding:24px 0;border-top:1px solid rgba(255,255,255,.12);display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;font-size:13.5px}

@media(max-width:1100px){
  .qa-grid{grid-template-columns:repeat(3,1fr)}
  .num-grid{grid-template-columns:repeat(3,1fr);gap:36px 20px}
  .hero-grid{grid-template-columns:1fr;gap:44px}
  .floaters{grid-template-columns:1fr 1fr}
  .why-grid,.vc-grid{grid-template-columns:1fr;gap:44px}
  .fgrid{grid-template-columns:1fr 1fr}
  .gal{grid-template-columns:repeat(2,1fr)}
  .tl{grid-template-columns:repeat(2,1fr);gap:40px 16px}
  .tl::before{display:none}
}
@media(max-width:1180px){
  .menu{display:none}
  .burger{display:grid}
}
@media(max-width:820px){
  .nav-tools .btn,.nav-tools .searchbtn{display:none}
  .topbar ul.left{display:none}
  .hero h1{font-size:40px}
  .sec-title{font-size:32px}
  .pad{padding:74px 0}
  .qa-grid{grid-template-columns:repeat(2,1fr)}
  .num-grid{grid-template-columns:repeat(2,1fr)}
  .why-list{grid-template-columns:1fr}
  .fgrid{grid-template-columns:1fr}
  .card{flex-basis:290px}
  .vc blockquote{font-size:21px}
  .vc blockquote::before{left:-6px;top:-40px}
  .tl{grid-template-columns:1fr}
  body{font-size:16.5px}
}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .rv{opacity:1;transform:none}
}

/* ═══════════════════════════════════════════════════════════════
   INNER PAGE COMPONENTS
   ═══════════════════════════════════════════════════════════════ */

/* mobile drawer ---------------------------------------------------- */
.scrim{position:fixed;inset:0;background:rgba(26,28,85,.55);backdrop-filter:blur(3px);opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s;z-index:70}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(340px,86vw);background:var(--brand-dark);color:#fff;z-index:75;padding:26px 26px 40px;overflow-y:auto;transform:translateX(100%);transition:transform .38s cubic-bezier(.4,0,.2,1);box-shadow:-20px 0 60px rgba(26,28,85,.4)}
body.drawer-open{overflow:hidden}
body.drawer-open .scrim{opacity:1;visibility:visible}
body.drawer-open .drawer{transform:none}
.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:26px}
.drawer-head b{font-family:var(--head);font-weight:700;font-size:19px}
.drawer .x{background:none;border:0;color:#fff;cursor:pointer;padding:6px;display:grid;place-items:center}
.drawer .x .icon{width:22px;height:22px}
.drawer nav a{display:block;font-family:var(--head);font-weight:500;font-size:16.5px;padding:13px 0;border-bottom:1px solid rgba(255,255,255,.1);transition:color .2s,padding-left .2s}
.drawer nav a:hover,.drawer nav a[aria-current="page"]{color:var(--accent);padding-left:6px}
.drawer .btn{width:100%;justify-content:center;margin-top:24px}
.drawer .d-meta{margin-top:26px;font-size:14px;color:rgba(238,241,255,.7);line-height:1.9}
.drawer .d-meta a{display:flex;align-items:center;gap:9px}
.drawer .d-meta .icon{width:15px;height:15px}

/* page hero -------------------------------------------------------- */
.phero{position:relative;background:var(--brand-dark);overflow:hidden;padding:186px 0 74px}
.phero::before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,var(--brand-dark) 0%,var(--brand) 58%,var(--indigo) 130%)}
.phero-img{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.22}
.phero .blob{opacity:.28}
.phero .wrap{position:relative;z-index:3}
.phero h1{font-size:52px;font-weight:700;color:#fff;margin:14px 0 16px;max-width:20ch}
.phero p{font-size:18.5px;color:rgba(238,241,255,.85);max-width:60ch}
.phero .eyebrow{color:var(--accent)}
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:9px;font-size:14px;color:rgba(238,241,255,.62);margin-bottom:20px}
.crumbs a{transition:color .2s}
.crumbs a:hover{color:var(--accent)}
.crumbs .sep{opacity:.5}
.crumbs [aria-current]{color:#fff}

/* content typography ----------------------------------------------- */
.prose h2{font-size:31px;margin:0 0 16px}
.prose h3{font-size:21px;margin:34px 0 12px}
.prose p{margin-bottom:18px;color:#3D4468}
.prose ul.bullets{margin:0 0 22px;display:grid;gap:12px}
.prose ul.bullets li{display:flex;gap:13px;align-items:flex-start;color:#3D4468;font-size:16.5px;line-height:1.6}
.prose ul.bullets .tick{width:26px;height:26px;border-radius:50%;background:rgba(78,90,200,.13);color:var(--brand);display:grid;place-items:center;flex:none;margin-top:3px}
.prose ul.bullets .icon{width:14px;height:14px;stroke-width:2.6}
.prose blockquote{border-left:4px solid var(--accent);background:var(--gray);border-radius:0 var(--r) var(--r) 0;padding:24px 28px;margin:26px 0;font-family:var(--head);font-weight:500;font-size:19px;line-height:1.55;color:var(--brand-dark)}

/* two-column layout with sticky sidebar ---------------------------- */
.split{display:grid;grid-template-columns:1fr 344px;gap:64px;align-items:start}
.side{position:sticky;top:120px;display:grid;gap:22px}

/* panels ----------------------------------------------------------- */
.panel{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);padding:30px 28px;box-shadow:var(--shadow-s)}
.panel-dark{background:var(--brand-dark);border-color:transparent;color:#fff}
.panel-dark h3,.panel-dark b{color:#fff}
.panel-dark p,.panel-dark li{color:rgba(238,241,255,.78)}
.panel-tint{background:var(--gray);border-color:transparent}
.panel h3{font-size:19px;margin-bottom:8px}
.panel p{font-size:15px;color:var(--muted);line-height:1.65}
.panel .btn{margin-top:18px}
.panel ul.linklist{display:grid;gap:2px;margin-top:6px}
.panel ul.linklist a{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);font-family:var(--head);font-weight:500;font-size:15.5px;transition:color .2s,padding-left .2s}
.panel ul.linklist li:last-child a{border-bottom:0}
.panel ul.linklist a:hover{color:var(--brand);padding-left:5px}
.panel ul.linklist .icon{width:16px;height:16px;color:var(--accent-deep);flex:none}
.panel-dark ul.linklist a{border-color:rgba(255,255,255,.12);color:#fff}
.panel-dark ul.linklist a:hover{color:var(--accent)}
.panel-dark ul.linklist .icon{color:var(--accent)}

/* fact strip ------------------------------------------------------- */
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:20px}
.fact{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:24px 22px;box-shadow:var(--shadow-s);transition:transform .3s,box-shadow .3s}
.fact:hover{transform:translateY(-6px);box-shadow:var(--shadow-m)}
.fact b{display:block;font-family:var(--head);font-weight:700;font-size:38px;line-height:1;color:var(--brand)}
.fact span{display:block;font-size:14px;color:var(--muted);margin-top:9px;letter-spacing:.03em}

/* department / program cards --------------------------------------- */
.dgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:22px}
.dept{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);padding:28px 26px;box-shadow:var(--shadow-s);transition:transform .3s,box-shadow .3s,border-color .3s;display:flex;flex-direction:column;gap:10px}
.dept:hover{transform:translateY(-7px);box-shadow:var(--shadow-l);border-color:transparent}
.dept .bubble{width:52px;height:52px;border-radius:15px;background:rgba(78,90,200,.12);color:var(--brand);display:grid;place-items:center;margin-bottom:6px;transition:background .3s,color .3s}
.dept:hover .bubble{background:linear-gradient(135deg,var(--brand),var(--indigo));color:#fff}
.dept .bubble .icon{width:24px;height:24px}
.dept h3{font-size:18.5px;line-height:1.3}
.dept p{font-size:14.5px;color:var(--muted);line-height:1.6;flex:1}
.dept .go{font-family:var(--head);font-weight:600;font-size:14.5px;color:var(--brand);display:inline-flex;align-items:center;gap:7px;margin-top:4px}
.dept .go .icon{width:16px;height:16px;transition:transform .3s}
.dept:hover .go .icon{transform:translateX(5px)}

/* chips / filters -------------------------------------------------- */
.chips{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:34px}
.chip{font-family:var(--head);font-weight:500;font-size:14.5px;padding:10px 20px;border-radius:100px;border:1px solid var(--line);background:var(--white);color:var(--muted);cursor:pointer;transition:.25s}
.chip:hover{border-color:var(--indigo);color:var(--brand)}
.chip[aria-pressed="true"]{background:var(--brand);border-color:var(--brand);color:#fff}

/* tables ----------------------------------------------------------- */
.tblwrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-s);background:var(--white)}
table.tbl{width:100%;border-collapse:collapse;min-width:560px}
table.tbl th,table.tbl td{text-align:left;padding:16px 22px;border-bottom:1px solid var(--line);font-size:15.5px}
table.tbl th{font-family:var(--head);font-weight:600;font-size:13px;letter-spacing:.09em;text-transform:uppercase;color:var(--brand);background:var(--gray);white-space:nowrap}
table.tbl tbody tr:last-child td{border-bottom:0}
table.tbl tbody tr{transition:background .2s}
table.tbl tbody tr:hover{background:var(--gray)}
table.tbl td b{font-family:var(--head);font-weight:600}

/* accordion -------------------------------------------------------- */
.acc{display:grid;gap:14px}
.acc-item{background:var(--white);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow-s)}
.acc-q{width:100%;display:flex;align-items:center;justify-content:space-between;gap:20px;text-align:left;background:none;border:0;cursor:pointer;padding:22px 26px;font-family:var(--head);font-weight:600;font-size:17px;color:var(--ink);transition:color .2s}
.acc-q:hover{color:var(--brand)}
.acc-q .pm{width:30px;height:30px;border-radius:50%;background:rgba(78,90,200,.12);color:var(--brand);display:grid;place-items:center;flex:none;transition:.3s}
.acc-q .pm .icon{width:15px;height:15px;stroke-width:2.6}
.acc-item.open .acc-q .pm{background:var(--brand);color:#fff;transform:rotate(45deg)}
.acc-a{max-height:0;overflow:hidden;transition:max-height .38s ease}
.acc-item.open .acc-a{max-height:520px}
.acc-a div{padding:0 26px 24px;color:var(--muted);font-size:16px;line-height:1.7}

/* notice / download list ------------------------------------------- */
.notices{display:grid;gap:14px}
.notice{display:flex;align-items:center;gap:20px;background:var(--white);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:var(--r);padding:20px 24px;box-shadow:var(--shadow-s);transition:transform .3s,box-shadow .3s}
.notice:hover{transform:translateX(5px);box-shadow:var(--shadow-m)}
.notice .nfile{width:44px;height:44px;border-radius:12px;background:rgba(78,90,200,.12);color:var(--brand);display:grid;place-items:center;flex:none}
.notice .ntxt{flex:1;min-width:0}
.notice b{display:block;font-family:var(--head);font-weight:600;font-size:16.5px;line-height:1.35}
.notice span{font-size:13.5px;color:var(--muted)}
.notice .icon.go{width:19px;height:19px;color:var(--brand);flex:none}

/* closing CTA band -------------------------------------------------- */
.cta-band{background:linear-gradient(135deg,var(--brand-dark) 0%,var(--brand) 60%,var(--indigo) 100%);color:#fff;border-radius:var(--r-lg);padding:56px 54px;display:flex;align-items:center;justify-content:space-between;gap:40px;flex-wrap:wrap;position:relative;overflow:hidden}
.cta-band h2{font-size:32px;color:#fff;margin-bottom:10px}
.cta-band p{color:rgba(238,241,255,.82);max-width:52ch}
.cta-band .acts{display:flex;gap:14px;flex-wrap:wrap;flex:none}

/* people ------------------------------------------------------------ */
.people{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:24px}
.person{text-align:center}
.person .ph{height:250px;border-radius:var(--r-lg);background:var(--brand-deep) center/cover no-repeat;box-shadow:var(--shadow-m);margin-bottom:18px}
.person b{display:block;font-family:var(--head);font-weight:600;font-size:17.5px}
.person span{display:block;font-size:14px;color:var(--muted);margin-top:4px}

@media(max-width:1100px){
  .split{grid-template-columns:1fr;gap:44px}
  .side{position:static}
  .phero{padding:158px 0 62px}
  .phero h1{font-size:40px}
}
@media(max-width:820px){
  .phero{padding:132px 0 54px}
  .phero h1{font-size:32px}
  .phero p{font-size:16.5px}
  .cta-band{padding:38px 30px}
  .cta-band h2{font-size:25px}
  .prose h2{font-size:25px}
}
@media(prefers-reduced-motion:reduce){
  .drawer{transition:none}
  .acc-a{transition:none}
}

/* news grid (listing pages) --------------------------------------- */
.newsgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:26px}
.newsgrid .card{flex:none;width:auto}

/* ═══════════════════════════════════════════════════════════════
   NAVBAR DROPDOWN SUBMENUS
   ═══════════════════════════════════════════════════════════════ */
.menu>li{position:relative}
.has-sub>a{display:inline-flex;align-items:center;gap:6px}
.has-sub>a .chev{width:13px;height:13px;stroke-width:2.4;flex:none;opacity:.75;transition:transform .3s,opacity .3s}
.has-sub:hover>a .chev,.has-sub:focus-within>a .chev{transform:rotate(180deg);opacity:1}

/* invisible bridge so the pointer can travel from link to panel */
.has-sub::before{content:"";position:absolute;left:-14px;right:-14px;top:100%;height:26px}

.sub{
  position:absolute;top:100%;left:50%;
  min-width:296px;
  background:var(--white);
  border:1px solid var(--line);
  border-radius:var(--r);
  box-shadow:var(--shadow-l);
  padding:18px 0 12px;
  opacity:0;visibility:hidden;pointer-events:none;
  transform:translate(-50%,18px);
  transition:opacity .26s ease,transform .26s ease,visibility .26s;
  z-index:70;
}
.sub::after{ /* notch */
  content:"";position:absolute;top:-7px;left:50%;
  width:13px;height:13px;
  transform:translateX(-50%) rotate(45deg);
  background:var(--white);
  border-left:1px solid var(--line);
  border-top:1px solid var(--line);
  border-radius:4px 0 0 0;
}
.has-sub:hover>.sub,.has-sub:focus-within>.sub{
  opacity:1;visibility:visible;pointer-events:auto;
  transform:translate(-50%,24px);
}

.sub .sub-head{
  font-family:var(--head);font-weight:600;font-size:11.5px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--accent-deep);
  padding:0 22px 12px;margin-bottom:8px;
  border-bottom:1px solid var(--line);
}
.sub li{margin:0}
.sub a{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:11px 22px;
  font-family:var(--head);font-weight:500;font-size:15px;line-height:1.35;
  color:var(--ink);white-space:normal;
  transition:background .22s,color .22s,padding-left .22s;
}
.sub a:hover,.sub a:focus-visible{background:var(--gray);color:var(--brand);padding-left:27px}
.sub a .icon{
  width:15px;height:15px;flex:none;color:var(--accent-deep);
  opacity:0;transform:translateX(-6px);transition:opacity .22s,transform .22s;
}
.sub a:hover .icon,.sub a:focus-visible .icon{opacity:1;transform:none}

/* drawer sub-links (mobile) */
.drawer .d-sub{margin:0 0 4px;padding:2px 0 8px 14px;border-left:2px solid rgba(56,189,248,.35)}
.drawer .d-sub a{font-size:15px;font-weight:400;padding:9px 0;border-bottom:0;color:rgba(238,241,255,.78)}
.drawer .d-sub a:hover{color:var(--accent);padding-left:5px}

@media(prefers-reduced-motion:reduce){
  .sub{transition:none}
  .has-sub>a .chev{transition:none}
}

/* ═══════════════════════════════════════════════════════════════
   MESSAGE / PROFILE PAGES, SLIDER, ANIMATION UTILITIES
   ═══════════════════════════════════════════════════════════════ */

/* — portrait + message layout —————————————————————————— */
.msg-grid{display:grid;grid-template-columns:400px 1fr;gap:64px;align-items:start}
.msg-photo{position:relative}
.msg-photo .frame{
  border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-l);
  background:var(--brand-deep) center/cover no-repeat;aspect-ratio:4/5;
}
.msg-photo .frame img{width:100%;height:100%;object-fit:cover;object-position:top center}
.msg-photo::after{
  content:"";position:absolute;inset:auto -18px -18px auto;width:150px;height:150px;
  border-radius:var(--r-lg);background:linear-gradient(135deg,var(--brand),var(--indigo));
  z-index:-1;
}
.msg-card{
  margin-top:-46px;margin-left:26px;margin-right:-10px;position:relative;z-index:2;
  background:var(--white);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow-l);padding:22px 26px;
}
.msg-card b{display:block;font-family:var(--head);font-weight:700;font-size:19px;line-height:1.25;color:var(--brand-dark)}
.msg-card span{display:block;font-size:14px;color:var(--muted);margin-top:5px;letter-spacing:.02em}

.msg-body{position:relative}
.msg-body .quote-mark{
  font-family:Georgia,serif;font-size:120px;line-height:.8;color:var(--indigo);
  opacity:.16;display:block;margin-bottom:-30px;
}
.msg-body p{font-size:17.5px;line-height:1.8;color:#3D4468;margin-bottom:20px}
.msg-body p.lede{font-size:21px;line-height:1.65;color:var(--brand-dark);font-family:var(--head);font-weight:500}
.msg-sign{
  margin-top:34px;padding-top:26px;border-top:1px solid var(--line);
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;
}
.msg-sign .who b{display:block;font-family:var(--head);font-weight:600;font-size:17px}
.msg-sign .who span{display:block;font-size:14.5px;color:var(--muted)}

/* — stat callouts inside prose ——————————————————————— */
.statline{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:18px;
  margin:32px 0;
}
.statline div{
  background:var(--gray);border-radius:var(--r);padding:22px 20px;border-left:3px solid var(--accent-mid);
}
.statline b{display:block;font-family:var(--head);font-weight:700;font-size:30px;line-height:1;color:var(--brand)}
.statline span{display:block;font-size:13.5px;color:var(--muted);margin-top:8px;line-height:1.4}

/* — generic content slider ——————————————————————————— */
.slider{position:relative}
.slider-track{
  display:flex;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;
  padding:6px 2px 18px;scrollbar-width:none;scroll-behavior:smooth;
}
.slider-track::-webkit-scrollbar{display:none}
.slider-track>*{flex:0 0 clamp(260px,32%,380px);scroll-snap-align:start}
.slider-nav{display:flex;gap:10px;justify-content:center;margin-top:10px}
.slider-nav button{
  width:46px;height:46px;border-radius:50%;border:1px solid var(--line);
  background:var(--white);color:var(--brand);display:grid;place-items:center;
  cursor:pointer;transition:.25s;
}
.slider-nav button:hover{background:var(--brand);color:#fff;border-color:var(--brand);transform:translateY(-2px)}
.slider-nav button:disabled{opacity:.35;cursor:default;transform:none;background:var(--white);color:var(--muted)}

/* — fade/slide reveal variants ——————————————————————— */
.rv-l{opacity:0;transform:translateX(-34px);transition:opacity .8s ease,transform .8s ease}
.rv-r{opacity:0;transform:translateX(34px);transition:opacity .8s ease,transform .8s ease}
.rv-s{opacity:0;transform:scale(.94);transition:opacity .7s ease,transform .7s ease}
.rv-l.in,.rv-r.in,.rv-s.in{opacity:1;transform:none}

/* — soft floating accent behind sections ——————————————— */
.pad{position:relative}
.glow{
  position:absolute;border-radius:50%;filter:blur(90px);opacity:.14;
  pointer-events:none;z-index:0;background:var(--indigo);
}
.glow-tr{width:420px;height:420px;top:-120px;right:-120px}
.glow-bl{width:380px;height:380px;bottom:-140px;left:-120px;background:var(--accent-mid)}
.pad>.wrap{position:relative;z-index:1}

@media(max-width:1100px){
  .msg-grid{grid-template-columns:1fr;gap:44px}
  .msg-photo{max-width:400px}
  .msg-card{margin-right:0}
}
@media(max-width:820px){
  .msg-body .quote-mark{font-size:84px;margin-bottom:-22px}
  .msg-body p{font-size:16.5px}
  .msg-body p.lede{font-size:18.5px}
  .slider-track>*{flex:0 0 84%}
}
@media(prefers-reduced-motion:reduce){
  .rv-l,.rv-r,.rv-s{opacity:1;transform:none;transition:none}
  .slider-track{scroll-behavior:auto}
}

.frame.no-photo{display:grid;place-items:center;background:linear-gradient(135deg,var(--brand-dark) 0%,var(--brand) 55%,var(--indigo) 100%)}
.frame.no-photo span{font-family:var(--head);font-weight:700;font-size:76px;letter-spacing:.05em;color:rgba(255,255,255,.92)}

/* sections carrying a decorative glow must clip it (scoped so sticky sidebars elsewhere still work) */
.pad-fx{overflow:hidden}

/* ── mega dropdown (multi-column) ─────────────────────────────── */
.nav .wrap{position:relative}
.menu>li.has-mega{position:static}
.sub-mega{
  position:absolute;top:100%;left:0;right:0;
  min-width:0;padding:30px 34px 26px;
  display:grid;gap:10px 34px;
  transform:translateY(18px);
}
.sub-mega::after{display:none}
.has-mega:hover>.sub-mega,.has-mega:focus-within>.sub-mega{transform:translateY(22px)}
.sub-mega .col{min-width:0}
.sub-mega .col>b{
  display:block;font-family:var(--head);font-weight:600;font-size:11.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--accent-deep);
  padding:0 12px 10px;margin-bottom:6px;border-bottom:1px solid var(--line);
}
.sub-mega a{padding:8px 12px;font-size:14.5px;border-radius:10px}
.sub-mega a:hover,.sub-mega a:focus-visible{padding-left:16px}
.sub-mega .col-lead a{font-weight:600;color:var(--brand)}
@media(max-width:1180px){
  .sub,.sub-mega{display:none!important}
}

/* ── dropdown fixes ───────────────────────────────────────────── */
/* Mega <li> are position:static, so the shared ::before bridge would resolve
   against .nav .wrap and span the full bar — overlapping every other mega item
   and cross-triggering the wrong panel. Drop the bridge for mega and sit the
   panel flush under the bar instead, so there is no gap left to bridge. */
.has-mega::before{display:none}
.sub-mega{transform:translateY(10px)}
.has-mega:hover>.sub-mega,.has-mega:focus-within>.sub-mega{transform:translateY(0)}

/* Submenu arrows: visible at rest, emphasised on hover (was hidden until hover,
   which read as "missing" in the mega panels). */
.sub a .icon{opacity:.4;transform:none}
.sub a:hover .icon,.sub a:focus-visible .icon{opacity:1;transform:translateX(3px)}

/* Notch on the mega panels too. The panel spans the whole bar, so left:50%
   would point at the middle of the navbar instead of the menu item that opened
   it — --notch-x is set per item in site.js from the trigger's centre. */
.sub-mega::after{
  display:block;
  left:var(--notch-x,50%);
}

/* Menu items must fill the bar's height, otherwise there is a dead zone between
   the bottom of the <li> and the panel: the pointer leaves the item on the way
   down and the dropdown closes before it can be reached. */
.menu{align-items:stretch}
.menu>li{display:flex;align-items:center}
/* ...and the <ul> itself must stretch within the bar, otherwise it stays
   content-height (42px) centred in an 88px bar and its items cannot fill it. */
.menu{align-self:stretch}

/* ── navbar fit with nav-tools restored ───────────────────────────
   Brand + 8 dropdown items + search + Apply Now no longer fit at 1240.
   Tighten the menu, stop the brand shrinking into it, and hand over to the
   burger a little earlier. */
.menu{gap:16px}
.menu>li>a{font-size:16px}
@media(min-width:1241px){
  .nav .brand{flex:none}
  .brand-txt b,.brand-txt span{white-space:nowrap}
}
/* the locality line is the widest part of the brand — drop it on mid screens */
@media(min-width:1241px) and (max-width:1560px){
  .nav .brand-txt span{display:none}
}
@media(max-width:1240px){
  .menu{display:none}
  .burger{display:grid}
  .sub,.sub-mega{display:none!important}
}

/* ── collapsible mobile drawer ────────────────────────────────────
   Sub-links are collapsed by default so the drawer opens as a short list
   rather than 100+ links filling the screen. */
.drawer .d-group{border-bottom:1px solid rgba(255,255,255,.1)}
.drawer .d-row{display:flex;align-items:center;gap:6px}
.drawer .d-row>a{flex:1;border-bottom:0}
.drawer .d-toggle{
  flex:none;background:none;border:0;cursor:pointer;padding:10px 4px;
  color:rgba(238,241,255,.6);display:grid;place-items:center;transition:color .2s;
}
.drawer .d-toggle:hover{color:var(--accent)}
.drawer .d-toggle .icon{width:18px;height:18px;stroke-width:2.2;transition:transform .3s}
.drawer .d-group.open .d-toggle{color:var(--accent)}
.drawer .d-group.open .d-toggle .icon{transform:rotate(180deg)}

.drawer .d-sub{
  max-height:0;overflow:hidden;
  transition:max-height .38s ease;
  border-left:2px solid rgba(56,189,248,.35);
  margin:0 0 0 4px;padding:0 0 0 14px;
}
.drawer .d-group.open .d-sub{max-height:1400px;padding-bottom:10px}
.drawer .d-sub a{
  display:block;padding:9px 0;border-bottom:0;
  font-size:14.5px;font-weight:400;color:rgba(238,241,255,.72);
}
.drawer .d-sub a:hover{color:var(--accent);padding-left:5px}
.drawer .d-sub .d-colhead{
  display:block;font-family:var(--head);font-weight:600;font-size:10.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--accent);
  opacity:.75;margin:14px 0 2px;
}
.drawer .d-sub .d-colhead:first-child{margin-top:8px}

/* ── responsive utility bar ───────────────────────────────────────
   Must stay exactly one 44px line at every width: the navbar is fixed at
   top:44px, so if this bar wraps its content spills out underneath it. */
.topbar .wrap{
  flex-wrap:nowrap;
  overflow-x:auto;overflow-y:hidden;
  scrollbar-width:none;-ms-overflow-style:none;
}
.topbar .wrap::-webkit-scrollbar{display:none}
.topbar ul{flex-wrap:nowrap}
.topbar a{white-space:nowrap}

@media(max-width:1100px){
  .topbar{font-size:13px}
  .topbar ul{gap:18px}
}
@media(max-width:940px){
  .topbar ul{gap:14px}
  /* shed the two links that duplicate the drawer soonest */
  .topbar ul:not(.left) li:nth-child(4),
  .topbar ul:not(.left) li:nth-child(5){display:none}
}
@media(max-width:820px){
  /* every utility link is in the drawer; tap-to-call is not — keep contact */
  .topbar ul:not(.left){display:none}
  .topbar ul.left{display:flex;width:100%;justify-content:center;gap:26px}
  .topbar .wrap{justify-content:center}
}
@media(max-width:480px){
  .topbar{font-size:12.5px}
  .topbar ul.left{gap:18px}
  .topbar .icon{width:14px;height:14px}
}
@media(max-width:380px){
  .topbar ul.left li:nth-child(2){display:none}   /* email too long — phone only */
}

/* headline sizes at phone widths — "Veterinary & Animal" overran 390px and was
   being clipped by body{overflow-x:hidden} */
@media(max-width:560px){
  .hero h1{font-size:32px}
  .phero h1{font-size:28px}
  .sec-title{font-size:27px}
  .hero p,.phero p{font-size:16px}
}
@media(max-width:400px){
  .hero h1{font-size:28px}
  .phero h1{font-size:25px}
  .sec-title{font-size:24px}
}

/* Grid/flex children default to min-width:auto, so a column refuses to shrink
   below its content's min-content width — the hero copy was forcing 419px into
   a 346px viewport and overflowing. */
.hero-grid>*,.why-grid>*,.vc-grid>*,.split>*,.msg-grid>*,.fgrid>*{min-width:0}
.hero-copy,.msg-body,.prose{min-width:0}
.float{min-width:0}
.float span:not(.tick){min-width:0}

/* ═══════════════════════════════════════════════════════════════
   RESPONSIVE HARDENING
   ═══════════════════════════════════════════════════════════════
   Every rule below fixes a defect that was measured in a sized iframe at
   320–1240px across all 71 pages, not a suspicion. Each block records what
   overflowed and by how much, because `body{overflow-x:hidden}` hides the
   symptom: the page never grows a scrollbar, it just silently clips whatever
   ran off the right-hand edge.

   Kept as one appended section rather than edited into the rules above so the
   frozen design is still readable as it was, and so this pass can be reviewed
   — or reverted — on its own. */

/* ── 1. Long words must not size the layout ──────────────────────
   The single token "directoracademics@cuvas.edu.pk" has a min-content width of
   297px. A grid or flex child is floored at its content's min-content width
   unless told otherwise, so that one email address sized the whole sidebar
   column to 354px inside a 304px container and hung 50px off the side of every
   phone on /academics and /admissions.

   Both halves are needed. min-width:0 alone lets the column shrink but pushes
   the email out of its own card; overflow-wrap alone lets the word break but
   only after the column has already been made too wide.

   It must be `anywhere`, not `break-word`. The two are identical in where they
   break a line — the difference is that only `anywhere` also shrinks the
   element's min-content width, and min-content is precisely what was sizing
   the column. `break-word` was tried here first and moved the overflow from
   the sidebar into the card without removing it. */
.prose,.panel,.dept,.prog,.card,.notice,.ev,.fact,.person,.qa,.num,
.statline,.msg-body,.msg-card,.acc-a div,.crumbs,.tl-step,
footer,.drawer,.float,.cta-band{overflow-wrap:anywhere}
.side>*,.panel>*,.notices>*,.acc>*,.dgrid>*,.prog-grid>*,.newsgrid>*,
.ev-grid>*,.people>*,.facts>*,.statline>*,.qa-grid>*,.num-grid>*,
.floaters>*,.cta-band>*,.rowhead>*,.tl>*,.gal>*,.acts>*,
.why-list>*,.bullets>*,.linklist>*{min-width:0}

/* The same shape one level down: a fixed-width tick beside text in a flex row.
   The tick is flex:none, so the text is the only thing that can absorb a
   narrow screen, and it will not do so while it is floored at min-content. */
.why-list li,.prose ul.bullets li,.notice,.float,.ev,
.panel ul.linklist a,.dept .go,.prog .go,.card .go{overflow-wrap:anywhere}
.why-list li>*:not(.tick),.prose ul.bullets li>*:not(.tick),
.notice>*:not(.nfile),.float>*:not(.tick){min-width:0}

/* ── 2. auto-fit tracks wider than the viewport ──────────────────
   repeat(auto-fit,minmax(280px,1fr)) cannot go below 280px, so on a 320px
   phone — 264px of content between the gutters — the track overflowed by 16px
   and every card in it was clipped. `min(N,100%)` keeps the intended card
   width right up until the container is narrower than one card, then hands the
   whole width over. Measured on .dgrid (15 pages) and .newsgrid (/news). */
.prog-grid{grid-template-columns:repeat(auto-fit,minmax(min(215px,100%),1fr))}
.ev-grid{grid-template-columns:repeat(auto-fit,minmax(min(268px,100%),1fr))}
.facts{grid-template-columns:repeat(auto-fit,minmax(min(160px,100%),1fr))}
.dgrid{grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr))}
.people{grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr))}
.statline{grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr))}
.newsgrid{grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr))}

/* ── 3. The closing CTA band ─────────────────────────────────────
   .acts carries flex:none so the two buttons keep their own line on desktop.
   flex:none is flex-shrink:0, so below ~470px the pair — 354px of buttons —
   simply refused to shrink or wrap and drove the band up to 266px past the
   screen edge. This was the single most widespread defect: 70 of 71 pages.
   Below 560px the buttons stack full width instead, which is also the better
   phone target. */
@media(max-width:560px){
  .cta-band{padding:32px 22px}
  .cta-band .acts{flex:1 1 100%;width:100%}
  .cta-band .acts .btn{flex:1 1 auto;justify-content:center}
}

/* ── 4. Hero floaters ────────────────────────────────────────────
   Two columns held all the way down to 320px. A .float needs 48px of padding
   plus a 40px tick plus its longest word, so the pair stopped fitting at about
   500px: at 360px the cards overflowed by 47px and "Veterinary Teaching
   Hospital" spilled out of its own box. */
@media(max-width:640px){
  .floaters{grid-template-columns:1fr}
}

/* ── 5. Statistics ───────────────────────────────────────────────
   .num b is 52px, and "10,000+" needs ~180px of it. The two-column grid gives
   135px on a 360px phone, so the number wrapped and left the "+" alone on a
   line of its own. */
@media(max-width:560px){
  .num b{font-size:38px}
  .num span{font-size:13px}
}
@media(max-width:400px){
  .num b{font-size:32px}
}

/* ── 6. Gutters ──────────────────────────────────────────────────
   28px each side costs 56px of a 320px screen. Narrowing it is the one change
   that gives every component below more room at once. The two decorations that
   deliberately hang outside their parent are pulled flush at the same time —
   they were relying on the gutter to absorb them, and would have been clipped
   by the narrower one. */
@media(max-width:1100px){
  .why-badge{right:0}
  .msg-photo::after{right:0}
}
@media(max-width:480px){
  .wrap{padding:0 20px}
  .why-badge{padding:18px 22px}
  .why-badge b{font-size:30px}
}
@media(max-width:380px){
  .wrap{padding:0 16px}
}

/* ── 7. The brand lock-up ────────────────────────────────────────
   Crest plus "CUVAS" plus "Bahawalpur, Pakistan" overran the bar by 15px at
   320px and crowded the burger. The locality line is already dropped between
   1241 and 1560px for the same reason; do it at the bottom end too. */
@media(max-width:400px){
  .nav .brand-txt span{display:none}
  .crest{height:44px;padding:7px 11px}
  .crest img{height:30px !important;}
}

/* ── 8. Viewport units on phones ─────────────────────────────────
   100vh is the viewport with the browser chrome retracted, so a 100vh hero is
   taller than the screen while the address bar is showing. svh is the small
   viewport — the one that is always visible. Browsers without it keep the
   100vh above, so this is safe to state unconditionally. */
.hero{min-height:100svh}

/* ── 9. Notice / download / search rows ──────────────────────────
   The row's furniture is all fixed width — a 44px file icon, a 19px arrow and
   two 20px gaps — so 103px of a 288px card is spoken for before any text. The
   title was down to 137px and wrapping every second word. Nothing overflowed;
   it was just unreadable. */
@media(max-width:480px){
  .notice{gap:13px;padding:16px 16px}
  .notice .nfile{width:36px;height:36px;border-radius:10px}
  .notice .nfile .icon{width:19px;height:19px}
  .notice b{font-size:15.5px}
}

/* ── 10. Mosaic tile captions ────────────────────────────────────
   The gallery keeps two columns down to the smallest screen, which leaves a
   tile 135px wide. 22px of caption padding each side leaves 91px for a word
   like "Convocation", which needs about 100. */
@media(max-width:480px){
  .tile .lbl{padding:36px 14px 14px;font-size:15px;overflow-wrap:anywhere}
}

/* ── 11. Accordion headroom ──────────────────────────────────────
   .acc-a opens to a fixed 520px. The longest answer on the site is 269px at
   360px wide, but answers are editable from /admin and the same text takes
   more lines as the screen narrows, so a phone is where this would clip first.
   Raising the ceiling costs nothing: max-height only bounds the transition. */
@media(max-width:820px){
  .acc-item.open .acc-a{max-height:1400px}
}

/* ── 12. Touch targets ───────────────────────────────────────────
   The hero slide dots are 34x4px — accurate to the design, impossible to hit
   with a thumb. Grow the hit area, not the dot. Vertically only: widening it
   would push the pad past the dot's own box and into the neighbouring gap. */
.dot{position:relative}
.dot::after{content:"";position:absolute;inset:-16px 0}

/* ── 13. Developer credit ────────────────────────────────────────
   A band below the footer, in the university red the Apply button uses. Its
   own element rather than a row inside <footer>, because the footer paints
   itself --brand-dark and a nested strip would have to fight that background
   at every breakpoint. Padding, not a height: the line wraps on a narrow
   phone and a fixed height would clip it. */
.credit{background:#9e0015;color:#fff;text-align:center;padding:16px 20px;font-family:var(--head);font-weight:500;font-size:14.5px;letter-spacing:.01em;overflow-wrap:anywhere}
