@font-face{font-family:"Bricolage Grotesque";font-style:normal;font-weight:200 800;font-display:swap;src:url("fonts/bricolage-grotesque-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Instrument Sans";font-style:normal;font-weight:400 700;font-display:swap;src:url("fonts/instrument-sans-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Noto Sans Sinhala";font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/noto-sans-sinhala-link.woff2") format("woff2");unicode-range:U+0964-0965,U+0D81-0DF4,U+200C-200D,U+25CC}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
html.motion{scroll-behavior:smooth}
body{margin:0}

/* Tokens. Registered so the fluid values are resolved once, against the page container. */
@property --gutter{syntax:"<length>";inherits:true;initial-value:16px}
@property --gap{syntax:"<length>";inherits:true;initial-value:12px}
@property --sec{syntax:"<length>";inherits:true;initial-value:64px}
@property --band-pad{syntax:"<length>";inherits:true;initial-value:44px}
@property --fs-h1{syntax:"<length>";inherits:true;initial-value:44px}
@property --fs-h2{syntax:"<length>";inherits:true;initial-value:32px}
@property --fs-xl{syntax:"<length>";inherits:true;initial-value:40px}
@property --fs-lead{syntax:"<length>";inherits:true;initial-value:17px}
@property --life-h{syntax:"<length>";inherits:true;initial-value:240px}

.lk{
  container:page / inline-size;
  position:relative;
  overflow-x:clip;
  background:#FBFBFD;
  color:#10122B;
  font-family:"Instrument Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  font-size:1.0625rem;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  --navy:#23277E;
  --navy-deep:#161A5C;
  --red:#D00000;
  --ink:#10122B;
  --ink-2:#4B4F68;
  --rule:#DCDFEA;
  --paper:#FBFBFD;
  --tint:#EEF0F7;
  --display:"Bricolage Grotesque","Instrument Sans",system-ui,sans-serif;
}
.lk__in{
  --gutter:clamp(1rem,4.444cqi,4rem);
  --gap:clamp(.75rem,1.667cqi,1.5rem);
  --sec:3rem;
  --band-pad:clamp(2.75rem,2rem + 4cqi,6rem);
  --fs-h1:clamp(2.75rem,1.357rem + 5.714cqi,6.5rem);
  --fs-h2:clamp(2rem,1.257rem + 3.048cqi,4rem);
  --fs-xl:clamp(2.5rem,1.2rem + 5.333cqi,6rem);
  --fs-lead:clamp(1.0625rem,.97rem + .38cqi,1.3125rem);
  --life-h:clamp(15rem,8rem + 21.5cqi,27.5rem);
}
.lk *,.lk *::before,.lk *::after{box-sizing:border-box}
.lk :where(h1,h2,h3,p,ul,ol,dl,dd,dt,figure,address){margin:0;padding:0}
.lk :where(ul,ol){list-style:none}
.lk :where(img){display:block;max-width:100%}
.lk :where(a){color:inherit}
.lk :where(h1,h2,h3){
  font-family:var(--display);
  font-weight:650;
  font-optical-sizing:auto;
  letter-spacing:-.03em;
  line-height:1;
  color:var(--navy);
  text-wrap:balance;
}
.lk :where(p){text-wrap:pretty}
.lk [id]{scroll-margin-top:72px}
.lk :lang(si){font-family:"Noto Sans Sinhala","Instrument Sans",sans-serif;line-height:1.7}
.lk :focus-visible{outline:3px solid var(--navy);outline-offset:3px}
.hero :focus-visible,.g1__band :focus-visible,.ftr :focus-visible{outline-color:#fff}
.hdr__bar :focus-visible{outline-color:currentColor}

.skip{position:absolute;left:8px;top:-80px;z-index:60;padding:12px 16px;background:#fff;color:var(--navy);font-weight:600}
.skip:focus{top:8px}

.ic{flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}

/* Buttons and links */
.btn{
  display:inline-flex;align-items:center;gap:10px;
  min-height:52px;padding:0 22px;
  border:0;border-radius:2px;
  font:600 1.0625rem/1.2 "Instrument Sans",system-ui,sans-serif;
  text-decoration:none;cursor:pointer;
  transition:background-color .15s ease,color .15s ease;
}
.hdr__bar .btn,.hero__actions .btn,.nav a,.rev,.dock .btn{white-space:nowrap}
.lk a.btn--red{background:var(--red);color:#fff}
.lk a.btn--red:hover{background:#A80000}
.lk a.btn--white{background:#fff;color:var(--navy)}
.lk a.btn--white:hover{background:var(--tint)}
.lk a.btn--line{background:transparent;color:var(--navy);box-shadow:inset 0 0 0 1.5px var(--navy)}
.lk a.btn--line:hover{background:var(--navy);color:#fff}
.tlink{
  display:inline-flex;align-items:center;gap:8px;min-height:44px;
  font-weight:600;color:var(--navy);
  text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:6px;
}
.tlink:hover{text-decoration-thickness:2.5px}
.lk a.tlink--light{color:#fff}

/* Review layer: photo sources and unapproved lines */
.cap{
  position:absolute;left:8px;bottom:8px;z-index:2;
  max-width:calc(100% - 16px);padding:5px 8px 6px;
  background:rgba(16,18,43,.9);color:#fff;
  font-size:.6875rem;line-height:1.3;font-weight:400;overflow-wrap:anywhere;
  pointer-events:none;
}
.cap b{display:block;font-weight:600}
.cap--tl{bottom:auto;top:8px}
.cap--br{left:auto;right:8px}
.ph{
  display:inline-block;justify-self:start;align-self:start;
  padding:3px 7px;border:1px dashed currentColor;
  font-size:.75rem;line-height:1.3;font-weight:500;color:var(--ink-2);
}
.g1__band .ph{color:rgba(255,255,255,.82)}
.review-off .cap,.review-off .ph{display:none}

/* 6.1 Header */
.hdr{position:sticky;top:0;z-index:40;height:0}
.hdr__bar{
  position:absolute;top:0;left:0;right:0;height:64px;
  display:flex;align-items:center;gap:4px;
  padding-inline:var(--gutter);
  color:#fff;
  transition:background-color .2s ease,color .2s ease,height .2s ease,box-shadow .2s ease;
}
.is-scrolled .hdr__bar{background:var(--paper);color:var(--navy);box-shadow:0 1px 0 var(--rule)}
.brand{display:flex;align-items:center;gap:10px;min-height:44px;margin-right:auto;text-decoration:none}
.brand__crest{width:40px;height:40px;flex:none}
.brand__name{display:block;font-family:var(--display);font-weight:700;font-size:1.3125rem;letter-spacing:-.03em;line-height:1}
.brand__line{display:block;max-width:9.5rem;margin-top:3px;font-size:.6875rem;line-height:1.2;text-wrap:balance}
.is-scrolled .brand__line{color:var(--ink-2)}
.nav{display:none}
.nav a,.hdr__lang{
  display:inline-flex;align-items:center;min-height:44px;padding:0 12px;
  font-size:1rem;font-weight:500;text-decoration:none;
  text-decoration-thickness:1.5px;text-underline-offset:7px;
}
.nav a:hover,.hdr__lang:hover{text-decoration:underline}
.hdr__lang{padding:0 8px}
.rev,.menu-btn,.sheet__close{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-width:44px;min-height:44px;padding:0;
  background:none;border:0;color:inherit;cursor:pointer;
  font:500 .9375rem/1 "Instrument Sans",system-ui,sans-serif;
}
.rev{box-shadow:inset 0 0 0 1px color-mix(in srgb,currentColor 45%,transparent);border-radius:2px;min-height:36px;min-width:44px}
.rev__t{display:none}
.review-off .rev{opacity:.7}
.review-off .rev__t{text-decoration:line-through}
.hdr__wa{display:none}
.lk a.hdr__wa{min-height:44px;padding:0 18px;font-size:1rem}

.sheet{
  display:none;position:absolute;top:0;left:0;right:0;z-index:2;
  height:100vh;height:100dvh;
  flex-direction:column;overflow:auto;
  padding:0 var(--gutter) calc(20px + env(safe-area-inset-bottom,0px));
  background:var(--paper);color:var(--navy);
}
.menu-open .sheet{display:flex}
.sheet__top{display:flex;align-items:center;flex:none;height:64px}
.sheet__top .brand__line{color:var(--ink-2)}
.sheet__close{padding:0 4px 0 12px}
.sheet__nav{margin-top:12px;border-top:1px solid var(--rule)}
.sheet__nav a{
  display:flex;align-items:center;justify-content:space-between;min-height:80px;
  border-bottom:1px solid var(--rule);
  font-family:var(--display);font-weight:650;font-size:2.375rem;letter-spacing:-.035em;line-height:1;
  text-decoration:none;color:var(--navy);
}
.sheet__foot{display:grid;gap:10px;margin-top:auto;padding-top:28px}
.sheet__foot .btn{justify-content:center}
.sheet__lang{display:inline-flex;align-items:center;min-height:44px;font-weight:500;text-decoration:none}

/* 6.2 Hero. Phone: photo, then headline on navy. */
.hero{position:relative;display:flex;flex-direction:column;background:var(--navy);color:#fff}
.hero__media{position:relative;overflow:hidden;height:55vh;height:55svh;background:var(--navy-deep)}
.hero__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--fp)}
.hero__shade{
  position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to bottom,rgba(22,26,92,.84) 0,rgba(22,26,92,.7) 62px,rgba(22,26,92,0) 170px);
}
.hero__body{display:grid;gap:18px;padding:26px var(--gutter) 26px}
.lk .hero h1{color:#fff;font-size:var(--fs-h1);font-weight:700;letter-spacing:-.035em;line-height:.95}
.hero__sub{max-width:34em;font-size:var(--fs-lead);line-height:1.45;color:rgba(255,255,255,.9)}
.hero__actions{display:grid;gap:6px;margin-top:6px}
.hero__actions .btn{justify-content:center}
.hero__foot{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  min-height:56px;padding:8px var(--gutter);
  border-top:1px solid rgba(255,255,255,.24);
  font-weight:500;text-decoration:none;
}
.hero__foot:hover span{text-decoration:underline;text-underline-offset:6px}

/* 6.3 Key facts */
.facts{padding:clamp(2.25rem,1.5rem + 3.4cqi,4.5rem) var(--gutter) var(--sec)}
.facts__c{container:facts / inline-size}
.facts__list{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1fr);column-gap:20px;border-bottom:1px solid var(--rule)}
.fact{display:grid;grid-template-columns:subgrid;grid-column:1 / -1;align-items:baseline;padding:14px 0;border-top:1px solid var(--rule)}
.fact dt{font-size:.9375rem;color:var(--ink-2)}
.fact dd{font-family:var(--display);font-weight:650;font-size:1.1875rem;letter-spacing:-.02em;line-height:1.2;color:var(--navy)}
@container facts (min-width:640px){
  .facts__list{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:0;border-bottom:0}
  .fact{display:block;grid-column:auto;padding:18px 28px 24px 0}
  .fact:last-child{grid-column:span 2}
  .fact dt{margin-bottom:6px}
  .fact dd{font-size:1.375rem}
}
@container facts (min-width:1000px){
  .facts__list{grid-template-columns:1fr 1fr 1.3fr 1.05fr 1.25fr;grid-template-rows:auto auto}
  .fact,.fact:last-child{display:grid;grid-template-rows:subgrid;grid-template-columns:none;grid-column:auto;grid-row:span 2;row-gap:8px;padding:20px 32px 0 0}
  .fact dt{margin-bottom:0}
  .fact dd{font-size:1.5rem}
}

/* 6.4 Grade 1, January 2027 */
.g1{position:relative}
.g1__photo{position:relative;aspect-ratio:3 / 2;overflow:hidden;background:var(--navy-deep)}
.g1__photo img,.life__card img,.idx__photo img,.room__img img,.visit__photo img{width:100%;height:100%;object-fit:cover}
.g1__band{padding-block:var(--band-pad);background:var(--navy);color:#fff}
.g1__grid{display:grid;gap:36px;padding-inline:var(--gutter)}
.lk .g1 h2{color:#fff;font-size:var(--fs-h2)}
.lk .g1 h3{color:#fff;font-size:1.375rem;letter-spacing:-.02em;line-height:1.15}
.g1__intro p{max-width:32em;margin-top:20px;color:rgba(255,255,255,.88)}
.g1__intro .btn{margin-top:28px}
.dates{margin-top:16px}
.dates li{padding:18px 0 20px;border-top:1px solid rgba(255,255,255,.26)}
.dates time,.dates__h{display:flex;align-items:baseline;gap:12px}
.dates__d{
  font-family:var(--display);font-weight:650;font-size:clamp(2.5rem,1.9rem + 2.4cqi,4rem);
  font-variant-numeric:tabular-nums lining-nums;letter-spacing:-.04em;line-height:1;
}
.dates__w{color:rgba(255,255,255,.8)}
.dates p{max-width:26em;margin-top:8px;color:rgba(255,255,255,.92)}
.g1__src{padding-top:14px;border-top:1px solid rgba(255,255,255,.26);font-size:.875rem;color:rgba(255,255,255,.76)}
.rows{display:grid;margin-top:16px;border-bottom:1px solid rgba(255,255,255,.26)}
.row{display:grid;gap:6px;padding:18px 0 20px;border-top:1px solid rgba(255,255,255,.26)}
.row__t{font-family:var(--display);font-weight:650;font-size:1.375rem;letter-spacing:-.02em;line-height:1.15}
.row__d{max-width:30em;color:rgba(255,255,255,.88)}
.row .ph{margin-top:4px}

/* 6.5 Life at Matara */
.life{padding-block:var(--sec)}
.life__head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding-inline:var(--gutter);margin-bottom:clamp(1.25rem,.9rem + 1.6cqi,2.5rem)}
.lk .life h2{font-size:var(--fs-h2)}
.life__ctrl{display:none;gap:8px}
.life__btn{
  display:grid;place-items:center;width:48px;height:48px;padding:0;
  background:none;border:0;border-radius:2px;box-shadow:inset 0 0 0 1.5px var(--navy);
  color:var(--navy);cursor:pointer;
  transition:background-color .15s ease,color .15s ease;
}
.life__btn:hover{background:var(--navy);color:#fff}
.life__track{
  display:flex;gap:8px;
  overflow-x:auto;overscroll-behavior-x:contain;
  scroll-snap-type:x proximity;scroll-padding-inline:var(--gutter);
  padding-inline:var(--gutter);
  scrollbar-width:none;
}
.life__track::-webkit-scrollbar{display:none}
.life__card{position:relative;flex:none;height:var(--life-h);aspect-ratio:4 / 3;overflow:hidden;scroll-snap-align:start;background:var(--tint)}
.life__card--sq{aspect-ratio:1}
.life__card--tall{aspect-ratio:4 / 5}
.life__end{padding-inline:var(--gutter);margin-top:18px}

/* 6.6 From preschool upward, in one school */
.stages{padding-block:var(--sec);background:var(--tint);--line:#C5CADE}
.stages__grid{display:grid;gap:clamp(1.75rem,1rem + 3cqi,3rem);padding-inline:var(--gutter)}
.lk .stages h2{max-width:11em;font-size:var(--fs-h2)}
.idxc{container:idx / inline-size;position:relative}
.idx{border-bottom:1px solid var(--line)}
.idx__row{display:grid;grid-template-areas:"photo" "head" "line";gap:12px;padding:18px 0 22px;border-top:1px solid var(--line)}
.idx__photo{grid-area:photo;position:relative;aspect-ratio:3 / 2;overflow:hidden;background:var(--rule)}
.idx__head{grid-area:head}
.lk .idx__name{font-size:clamp(2.25rem,1.14rem + 5cqi,3.5rem);letter-spacing:-.04em;transition:translate .3s ease}
.idx__sub{margin-top:8px;font-size:.9375rem;color:var(--ink-2)}
.idx__line{grid-area:line;display:grid;gap:10px;max-width:27em;font-size:1.125rem;line-height:1.45}
.stages__cta{margin-top:20px}
@container idx (min-width:560px){
  .idx__row{grid-template-columns:minmax(0,1fr) 210px;grid-template-areas:"head photo" "line photo";column-gap:36px;row-gap:12px;align-items:start;padding:28px 0 32px}
}

/* 6.7 Inside the school */
.inside{padding-block:var(--sec)}
.inside__grid{display:grid;gap:26px;padding-inline:var(--gutter)}
.lk .inside h2{font-size:var(--fs-h2)}
.room__img{position:relative;overflow:hidden;background:var(--tint)}
.room--a .room__img{aspect-ratio:3 / 2}
.room--b .room__img{aspect-ratio:676 / 800}
.room--b{width:72%;justify-self:end}
.lk .room h3{margin-top:16px;font-size:1.5rem;letter-spacing:-.025em;line-height:1.1}
.room__d{max-width:26em;margin-top:6px;color:var(--ink-2)}
.room .ph{margin-top:10px}

/* 6.8 Fees */
.fees{padding-block:calc(var(--sec) * 1.15);background:#fff;border-block:1px solid var(--rule)}
.fees__in{display:grid;gap:clamp(1.5rem,1rem + 2cqi,2.75rem);padding-inline:var(--gutter)}
.lk .fees h2{font-size:var(--fs-xl);font-weight:700;letter-spacing:-.04em;line-height:.95;text-wrap:wrap}
.fees h2 span{display:inline-block}
.fees__body p{max-width:29em;font-size:var(--fs-lead);line-height:1.45;color:var(--ink-2)}
.fees__body .btn{margin-top:24px}

/* 6.9 Visit the school */
.visit{position:relative;padding-bottom:var(--sec)}
.visit__photo{position:relative;aspect-ratio:4 / 3;overflow:hidden;background:var(--tint)}
.panel{
  container:panel / inline-size;
  position:relative;z-index:1;
  margin:-28px var(--gutter) 0;padding:28px 22px 30px;
  background:var(--paper);box-shadow:0 0 0 1px var(--rule);
}
.panel__grid{display:grid;gap:28px}
.lk .panel h2{font-size:clamp(2rem,1.2rem + 3.4cqi,3rem)}
.addr{
  margin-top:18px;
  font-family:var(--display);font-style:normal;font-weight:650;
  font-size:clamp(1.3125rem,1rem + 1.7cqi,1.625rem);letter-spacing:-.025em;line-height:1.22;color:var(--navy);
}
.addr span{display:block}
.panel .tlink{margin-top:10px}
.contact{border-bottom:1px solid var(--rule)}
.contact__r{display:grid;gap:2px 12px;align-items:baseline;padding:13px 0;border-top:1px solid var(--rule)}
.contact dt{font-size:.9375rem;color:var(--ink-2)}
.contact dd{display:grid;gap:6px;font-weight:500;overflow-wrap:anywhere}
.panel .btn{width:100%;justify-content:center;margin-top:22px;text-align:center;padding-block:12px}
@container panel (min-width:420px){
  .contact__r{grid-template-columns:6.75rem minmax(0,1fr)}
}
@container panel (min-width:720px){
  .panel__grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:48px;align-items:start}
}

/* 6.10 Footer */
.ftr{padding:clamp(3rem,2rem + 4cqi,5.5rem) var(--gutter) 28px;background:var(--navy-deep);color:#fff}
.ftr__grid{display:grid;gap:36px}
.ftr__brand{display:flex;align-items:flex-start;gap:14px}
.ftr__crest{width:56px;height:56px;flex:none}
.ftr__name{font-family:var(--display);font-weight:700;font-size:1.25rem;letter-spacing:-.02em;line-height:1.15}
.ftr address{margin-top:8px;font-style:normal;font-size:.9375rem;line-height:1.5;color:rgba(255,255,255,.82)}
.ftr__cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 20px}
.lk .ftr h3{margin-bottom:4px;font-family:inherit;font-size:.9375rem;font-weight:600;letter-spacing:0;line-height:1.4;color:#fff}
.ftr li a{display:inline-flex;align-items:center;min-height:44px;color:rgba(255,255,255,.86);text-decoration:none}
.ftr li a:hover{color:#fff;text-decoration:underline;text-underline-offset:5px}
.ftr__copy{margin-top:40px;padding-top:20px;border-top:1px solid rgba(255,255,255,.22);font-size:.875rem;color:rgba(255,255,255,.78)}

/* 6.11 Phone dock */
.dock{
  position:sticky;bottom:0;z-index:30;
  display:grid;grid-template-columns:1fr 1fr;gap:8px;
  padding:8px var(--gutter) calc(8px + env(safe-area-inset-bottom,0px));
  background:var(--paper);box-shadow:0 -1px 0 var(--rule);
  transition:transform .25s ease;
}
.dock .btn{min-height:48px;justify-content:center;padding:0 10px;font-size:1rem}
.dock-away .dock{transform:translateY(105%)}

/* Tablet */
@container page (min-width:700px){
  .lk__in{--sec:clamp(4rem,2.2rem + 6.2cqi,8.5rem)}
  .hdr__bar{height:80px;gap:8px}
  .is-scrolled .hdr__bar{height:64px}
  .brand__crest{width:48px;height:48px}
  .brand__name{font-size:1.5rem}
  .brand__line{font-size:.8125rem;max-width:11rem}
  .lk a.hdr__wa{display:inline-flex}
  .sheet__top{height:80px}

  .hero__media{height:52vh;height:min(52svh,600px)}
  .hero__img{object-position:var(--fp-md)}
  .hero__body{grid-template-columns:minmax(0,1fr) auto;column-gap:calc(var(--gutter) * 1.5);row-gap:26px;align-items:end;padding-block:40px 44px}
  .hero__body h1{grid-column:1 / -1}
  .hero__actions{justify-items:start;margin-top:0}

  .g1__photo{position:absolute;z-index:1;top:-40px;right:0;width:39cqi;aspect-ratio:4 / 5}
  .g1__grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:56px}
  .g1__intro{grid-column:1 / 8;min-height:calc(48.75cqi - 32px - var(--band-pad))}
  .g1__dates{grid-column:1 / 7}
  .g1__at{grid-column:7 / 13}

  .life__track{gap:12px}

  .inside__grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:clamp(1.75rem,1rem + 2.4cqi,3rem)}
  .inside h2{grid-column:1 / 9}
  .room--a{grid-column:1 / 8;grid-row:2}
  .room--b{grid-column:9 / 13;grid-row:2;width:auto;justify-self:stretch;margin-top:clamp(3rem,9cqi,8rem)}
  .inside__cta{grid-column:1 / 8}

  .visit__photo{aspect-ratio:16 / 9}
  .panel{margin-top:-64px;padding:40px}

  .ftr__grid{gap:44px}
  .ftr__cols{grid-template-columns:repeat(3,minmax(0,1fr))}

  .dock{display:none}
}

@container page (min-width:800px){
  .brand__line{max-width:none}
  .rev{padding:0 12px}
  .rev__t{display:inline}
}

/* Desktop */
@container page (min-width:1100px){
  .nav{display:flex;gap:4px;margin-right:12px}
  .menu-btn{display:none}
  .lk a.hdr__wa{margin-left:8px}

  .hero{display:grid;grid-template-rows:1fr auto;min-height:78vh;min-height:78svh;background:var(--navy-deep)}
  .hero__media{position:absolute;inset:0;height:auto}
  .hero__img{object-position:var(--fp-lg)}
  .hero__shade{
    background:
      linear-gradient(to bottom,rgba(22,26,92,.84) 0,rgba(22,26,92,.7) 70px,rgba(22,26,92,0) 184px),
      radial-gradient(96% 126% at 0% 100%,rgba(22,26,92,.94) 0,rgba(22,26,92,.9) 46%,rgba(22,26,92,.8) 68%,rgba(22,26,92,.32) 82%,rgba(22,26,92,.07) 93%,rgba(22,26,92,0) 100%);
  }
  .hero__cap{bottom:64px}
  .hero__body{position:relative;display:block;align-self:end;padding:120px var(--gutter) 40px}
  .hero__body h1{max-width:48cqi}
  .hero__sub{max-width:27em;margin-top:24px}
  .hero__actions{display:flex;align-items:center;gap:28px;margin-top:28px}
  .hero__foot{position:relative;justify-content:flex-start;border-top:0;background:var(--navy)}

  .g1__photo{top:-56px;width:32.5cqi}
  .g1__grid{row-gap:72px}
  .g1__intro{grid-column:1 / 5;min-height:calc(40.625cqi - 48px - var(--band-pad))}
  .g1__dates{grid-column:5 / 9}
  .g1__at{grid-column:1 / 13}
  .rows{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap)}
  .row{grid-column:1 / -1;grid-template-columns:subgrid;align-items:baseline;gap:0 var(--gap);padding:22px 0 24px}
  .row__t{grid-column:1 / 5}
  .row__d{grid-column:5 / 9}
  .row .ph{grid-column:9 / 13;margin-top:0}

  .life__ctrl{display:flex}

  .stages__grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);align-items:start}
  .stages h2{grid-column:1 / 6}
  .idxc{grid-column:6 / 13;grid-row:1;align-self:stretch;min-height:640px}
  .idx__row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"head line";column-gap:var(--gap);align-items:baseline;padding:40px 0 44px}
  .idx__line{padding-top:.4em}
  .idx__photo{
    position:absolute;left:calc(-71.43cqi - var(--gap) * .714);bottom:0;width:50cqi;
    opacity:0;pointer-events:none;
    transition:opacity .25s ease;
  }
  .idx__row:nth-child(1) .idx__photo{translate:0 -96px}
  .idx__row:nth-child(2) .idx__photo{translate:0 -48px}
  .idx__row:first-child .idx__photo{opacity:1}
  .idx:has(.idx__row:hover) .idx__row:not(:hover) .idx__photo{opacity:0}
  .idx:has(.idx__row:hover) .idx__row:hover .idx__photo{opacity:1}
  .idx__row:hover .idx__name{translate:8px 0}
  .stages__cta{margin-top:28px}

  .fees__in{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap)}
  .fees h2{grid-column:1 / 11}
  .fees__body{grid-column:7 / 13}

  .visit__photo{aspect-ratio:40 / 21}
  .panel{width:max(60cqi,51rem);margin:-15.8cqi var(--gutter) 0 auto;padding:44px 48px 48px}

  .ftr__grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap)}
  .ftr__brand{grid-column:1 / 6}
  .ftr__cols{grid-column:7 / 13}
}

/* One quiet moment of motion. Everything is in place without it. */
@media all{
  .motion .hero__img{animation:lk-settle 1.4s cubic-bezier(.2,.7,.2,1) both}
  @supports (animation-timeline:view()){
    /* section arrivals are handled in the motion layer below */
  }
}
@keyframes lk-settle{
  from{transform:scale(1.06)}
  to{transform:scale(1)}
}
@keyframes lk-rise{
  from{transform:translateY(12px)}
  to{transform:translateY(0)}
}
@media all{
  html:not(.motion) .lk *,html:not(.motion) .lk *::before,html:not(.motion) .lk *::after{transition-duration:.01ms !important;animation:none !important;scroll-behavior:auto !important}
}
/* ------------------------------------------------------------------
   Interaction and motion layer.
   Rules of the house: nothing loops, nothing bounces, nothing moves more
   than a few pixels, and every state is readable with motion switched off.
   ------------------------------------------------------------------ */
.lk{-webkit-tap-highlight-color:transparent}
.lk picture{display:contents}
.menu-open .hdr__bar{visibility:hidden}

/* Buttons and links: a small press, and arrows that lean the way they point. */
.btn{transition:background-color .15s ease,color .15s ease,scale .15s ease}
.btn:active,.life__btn:active{scale:.975}
.tlink .ic,.hero__foot .ic,.life__btn .ic{transition:translate .28s cubic-bezier(.2,.7,.2,1)}
.life__btn{transition:background-color .15s ease,color .15s ease,opacity .2s ease,scale .15s ease}
.life__btn:disabled{opacity:.32;cursor:default}
.life__btn:disabled:hover{background:none;color:var(--navy)}
@media (hover:hover){
  .tlink:hover .ic{translate:4px 0}
  .tlink[target="_blank"]:hover .ic{translate:2px -2px}
  .hero__foot:hover .ic{translate:0 4px}
  .life__btn:not(:disabled):hover:first-child .ic{translate:-3px 0}
  .life__btn:not(:disabled):hover:last-child .ic{translate:3px 0}
}

/* Main menu: the underline draws in, and stays under the section being read. */
.nav a{
  background:linear-gradient(currentColor,currentColor) 12px calc(100% - 9px) / 0 1.5px no-repeat;
  transition:background-size .28s cubic-bezier(.2,.7,.2,1);
}
.nav a:hover{text-decoration:none}
.nav a:hover,.nav a[aria-current="true"]{background-size:calc(100% - 24px) 1.5px}

/* Phone menu: the sheet eases in and its links follow, one after another. */
.sheet{
  opacity:0;translate:0 -10px;
  transition:opacity .26s ease,translate .34s cubic-bezier(.2,.7,.2,1),display .34s allow-discrete;
}
.menu-open .sheet{opacity:1;translate:none}
.sheet__nav a,.sheet__foot{opacity:0;translate:0 10px;transition:opacity .4s ease,translate .45s cubic-bezier(.2,.7,.2,1)}
.menu-open .sheet__nav a,.menu-open .sheet__foot{opacity:1;translate:none;transition-delay:calc(70ms + var(--n,0) * 45ms)}
.sheet__nav a:nth-child(2){--n:1}
.sheet__nav a:nth-child(3){--n:2}
.sheet__nav a:nth-child(4){--n:3}
.sheet__foot{--n:5}
@starting-style{
  .menu-open .sheet{opacity:0;translate:0 -10px}
  .menu-open .sheet__nav a,.menu-open .sheet__foot{opacity:0;translate:0 10px}
}

/* Phone dock waits below the screen while the hero's own buttons are in view. */
.dock-hold .dock{transform:translateY(105%)}

/* Life at Matara: drag with a mouse, a position bar, and a slow lean on hover. */
.life__track{cursor:grab}
.life__track.is-dragging{cursor:grabbing;scroll-snap-type:none;scroll-behavior:auto;user-select:none}
.life__track img{-webkit-user-drag:none;user-select:none}
.life__end{display:flex;align-items:center;justify-content:space-between;gap:24px}
.life__pos{position:relative;flex:none;width:clamp(96px,22cqi,180px);height:2px;background:var(--rule);overflow:hidden}
.life__pos i{position:absolute;inset:0 auto 0 0;width:calc(var(--w,.3) * 100%);background:var(--navy);translate:calc(var(--x,0) * (1 / var(--w,.3) - 1) * 100%) 0}
@media (hover:hover){
  .life__card img{transition:scale .7s cubic-bezier(.2,.7,.2,1)}
  .life__card:hover img{scale:1.035}
}

/* Stage index on desktop: one frame glides to the row under the pointer, and the other rows step back. */
@container page (min-width:1100px){
  .idx{--row:0}
  .idx:has(.idx__row:nth-child(2):hover){--row:1}
  .idx:has(.idx__row:nth-child(3):hover){--row:2}
  .idx .idx__row:nth-child(n) .idx__photo{
    translate:0 calc(-96px + var(--row) * 48px);
    transition:opacity .35s ease,translate .55s cubic-bezier(.2,.7,.2,1);
  }
  .idx__row{transition:opacity .25s ease}
  .idx:has(.idx__row:hover) .idx__row:not(:hover) .idx__head,
  .idx:has(.idx__row:hover) .idx__row:not(:hover) .idx__line{opacity:.4}
  .idx__head,.idx__line{transition:opacity .25s ease}
}

/* Sections arrive once, as they are reached. Set by script, so the page is complete without it. */
[data-rv]{opacity:0;translate:0 14px}
[data-rv="fade"]{translate:none}
[data-rv].in{
  opacity:1;translate:none;
  transition:opacity .7s ease,translate .8s cubic-bezier(.2,.7,.2,1);
  transition-delay:calc(var(--d,0) * 70ms);
}
[data-rv].now{transition:none}
@media print{
  [data-rv]{opacity:1 !important;translate:none !important}
}

/* Motion runs only when the page carries the "motion" mark. A line in the head sets it,
   unless the visitor's device asks for reduced motion (add ?motion=on to preview anyway). */
.hero h1 .w{display:inline-block}
/* Opening: the header settles, the headline arrives word by word, the rest follows. */
.motion .hdr__bar{animation:lk-fade .7s ease both}
.motion .hero h1 .w{animation:lk-word .8s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(140ms + var(--i) * 65ms)}
.motion .hero__sub{animation:lk-up .8s cubic-bezier(.2,.7,.2,1) .56s both}
.motion .hero__actions{animation:lk-up .8s cubic-bezier(.2,.7,.2,1) .66s both}
.motion .hero__foot{animation:lk-fade .8s ease .8s both}

/* Scroll-linked, where the browser supports it: the hero photo drifts as it leaves, other photos settle as they arrive. */
@supports (animation-timeline:view()){
  .motion .hero__img{
    animation:lk-settle 1.4s cubic-bezier(.2,.7,.2,1) both,lk-drift linear both;
    animation-timeline:auto,scroll(root block);
    animation-range:normal,0 100vh;
  }
  .motion .g1__photo img,.motion .room__img img,.motion .visit__photo img{
    animation:lk-photo linear both;
    animation-timeline:view();
    animation-range:entry 0% cover 50%;
  }
}
@keyframes lk-fade{
  from{opacity:0}
  to{opacity:1}
}
@keyframes lk-up{
  from{opacity:0;translate:0 12px}
  to{opacity:1;translate:none}
}
@keyframes lk-word{
  from{opacity:0;translate:0 .32em}
  to{opacity:1;translate:none}
}
@keyframes lk-drift{
  to{scale:1.08;translate:0 4%}
}
@keyframes lk-photo{
  from{scale:1.1}
  to{scale:1}
}
/* Principal's message */
.msg{padding-block:var(--sec);background:var(--tint)}
.msg__grid{display:grid;gap:clamp(1.75rem,1rem + 3cqi,3rem);padding-inline:var(--gutter)}
.msg__photo{position:relative;aspect-ratio:4 / 5;overflow:hidden;background:var(--rule)}
.msg__photo img{width:100%;height:100%;object-fit:cover}
.lk .msg h2{font-size:var(--fs-h2);max-width:12em;text-indent:-.42em}
.msg__by{margin-top:18px;font-size:1rem;color:var(--ink-2);max-width:32em}
.msg__text{display:grid;gap:1.05em;margin-top:28px;max-width:34em;font-size:1.0625rem;line-height:1.7}
.msg__more{margin-top:20px;max-width:34em}
.msg__more > .msg__text{margin-top:18px}
.msg__more summary{
  display:inline-flex;align-items:center;gap:10px;min-height:44px;
  list-style:none;cursor:pointer;
  font-weight:600;color:var(--navy);
  text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:6px;
}
.msg__more summary::-webkit-details-marker{display:none}
.msg__more summary .ic{transition:rotate .3s cubic-bezier(.2,.7,.2,1)}
.msg__more[open] summary .ic{rotate:45deg}
.msg__close{display:none}
.msg__more[open] .msg__open{display:none}
.msg__more[open] .msg__close{display:inline}
.msg__sign{margin-top:.6em}
.msg__name{font-family:var(--display);font-weight:650;font-size:1.375rem;letter-spacing:-.02em;line-height:1.2;color:var(--navy)}
.lk .msg__text .msg__role{margin-top:-.8em;font-size:.9375rem;color:var(--ink-2)}
.msg__creds{display:grid;gap:6px;margin-top:4px;padding-top:16px;border-top:1px solid #C5CADE;font-size:.875rem;line-height:1.5;color:var(--ink-2)}
.msg__creds span{padding-inline:.35em;color:#9AA0B8}
.msg .ph{margin-top:18px}
.msg__cta{margin-top:20px}

@container page (min-width:700px){
  .msg__grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);align-items:start}
  .msg__photo{grid-column:1 / 6;position:sticky;top:96px}
  .msg__body{grid-column:7 / 13}
}
@container page (min-width:1100px){
  .msg__photo{grid-column:1 / 5}
  .msg__body{grid-column:6 / 12}
}

/* The full message opens smoothly where the browser supports it; elsewhere it simply appears. */
.motion .msg{interpolate-size:allow-keywords}
.motion .msg__more::details-content{
  height:0;overflow:clip;
  transition:height .55s cubic-bezier(.2,.7,.2,1),content-visibility .55s allow-discrete;
}
.motion .msg__more[open]::details-content{height:auto}
@supports (animation-timeline:view()){
  .motion .msg__photo img{animation:lk-photo linear both;animation-timeline:view();animation-range:entry 0% cover 50%}
}
.contact dd small{font-size:.875rem;font-weight:400;color:var(--ink-2)}
.contact dd small a{font-weight:500}
.contact dd a{color:var(--navy);font-weight:600;text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:5px}
.contact dd a:hover{text-decoration-thickness:2.5px}
.lk .g1__more{display:flex;width:fit-content;margin-top:16px}
.stages__cta{display:flex;flex-wrap:wrap;gap:4px 28px}
/* ------------------------------------------------------------------
   Inner pages. Same type, colour and rules as the homepage; no new ideas.
   ------------------------------------------------------------------ */
.nav a[aria-current="page"]{background-size:calc(100% - 24px) 1.5px}
.sheet__nav a[aria-current="page"]{color:var(--red)}
.sheet__nav a:nth-child(5){--n:4}
.sheet__nav a:nth-child(6){--n:5}
.ftr li a{overflow-wrap:anywhere}

/* The header sits on paper from the start, because there is no photo behind it. */
.solid .hdr__bar{background:var(--paper);color:var(--navy);box-shadow:0 1px 0 var(--rule)}
.solid .brand__line{color:var(--ink-2)}
.solid main{padding-top:64px}

/* Page head: words first, one photograph beside them. */
.pg-head{display:grid;gap:28px;padding:clamp(2rem,1rem + 4cqi,4.5rem) 0 0}
.pg-head__text{padding-inline:var(--gutter)}
.lk .pg-head h1{font-size:clamp(2.5rem,1.6rem + 3.8cqi,4.75rem);letter-spacing:-.035em;line-height:.98;max-width:11em}
.pg-head__lead{margin-top:20px;max-width:32em;font-size:var(--fs-lead);line-height:1.5;color:var(--ink-2)}
.pg-head__actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 28px;margin-top:30px}
.pg-head__actions .btn{white-space:nowrap}
.pg-head__photo{position:relative;aspect-ratio:4 / 3;overflow:hidden;background:var(--tint)}
.pg-head__photo img,.pg-fig img,.pg-gallery img{width:100%;height:100%;object-fit:cover}

/* Sections */
.pg-sec{padding-block:var(--sec)}
.pg-sec--tint{background:var(--tint)}
.pg-sec--navy{background:var(--navy);color:#fff}
.pg-sec + .pg-sec:not(.pg-sec--tint,.pg-sec--navy){border-top:1px solid var(--rule)}
.pg-wrap{display:grid;gap:24px clamp(.75rem,1.667cqi,1.5rem);padding-inline:var(--gutter)}
.lk .pg-wrap h2{font-size:clamp(1.875rem,1.3rem + 2.2cqi,3rem);letter-spacing:-.03em;line-height:1.02;max-width:12em}
.lk .pg-sec--navy h2,.lk .pg-sec--navy h3{color:#fff}
.pg-body{display:grid;gap:1em;align-content:start;min-width:0}
.pg-body > p{max-width:36em}
.pg-body > .pg-lead{font-size:var(--fs-lead);line-height:1.5}
.pg-sec--navy .pg-body > p{color:rgba(255,255,255,.88)}
.pg-body > .btn,.pg-body > .tlink{justify-self:start}
.pg-body > .btn{margin-top:.5em}
.pg-note{font-size:.9375rem;color:var(--ink-2)}
.pg-sec--navy .pg-note{color:rgba(255,255,255,.72)}
.pg-sec--navy .ph{color:rgba(255,255,255,.82)}
.pg-sec--navy :focus-visible,.pg-cta :focus-visible{outline-color:#fff}

/* Plain lists, ruled */
.pg-list{list-style:none;border-top:1px solid var(--rule);max-width:44rem}
.pg-list li{display:grid;gap:2px;padding:14px 0;border-bottom:1px solid var(--rule)}
.pg-list b{font-weight:600}
.pg-list span{color:var(--ink-2);font-size:1rem}
.pg-list--names{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--gap)}
.pg-list--names li{font-family:var(--display);font-weight:650;font-size:clamp(1.25rem,1rem + 1cqi,1.625rem);letter-spacing:-.02em;line-height:1.15;color:var(--navy)}
.pg-sec--navy .pg-list{border-color:rgba(255,255,255,.25)}
.pg-sec--navy .pg-list li{border-color:rgba(255,255,255,.25)}
.pg-sec--navy .pg-list span{color:rgba(255,255,255,.8)}

/* Steps: numbered in type, not in circles */
.pg-steps{list-style:none;counter-reset:step;border-top:1px solid var(--rule);max-width:46rem}
.pg-steps > li{
  counter-increment:step;
  display:grid;grid-template-columns:3.25rem minmax(0,1fr);gap:4px 12px;
  padding:20px 0 22px;border-bottom:1px solid var(--rule);
}
.pg-steps > li::before{
  content:counter(step,decimal-leading-zero);
  grid-row:1 / span 3;
  font-family:var(--display);font-weight:650;font-size:1.5rem;letter-spacing:-.03em;line-height:1.1;color:var(--red);
  font-variant-numeric:tabular-nums;
}
.lk .pg-steps h3{font-size:clamp(1.25rem,1.05rem + .8cqi,1.5rem);letter-spacing:-.02em;line-height:1.15}
.pg-steps p{color:var(--ink-2);max-width:34em}
.pg-steps .ph{margin-top:6px}
.pg-steps a{color:var(--navy);font-weight:600;text-underline-offset:4px}

/* Dates */
.pg-dates{list-style:none;display:grid;gap:0;border-top:1px solid rgba(255,255,255,.25);max-width:40rem}
.pg-dates li{display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:16px;align-items:baseline;padding:18px 0;border-bottom:1px solid rgba(255,255,255,.25)}
.pg-dates time,.pg-dates__h{display:grid}
.pg-dates a{color:#fff;font-weight:600;text-underline-offset:4px}
.pg-dates b{font-family:var(--display);font-weight:650;font-size:1.75rem;letter-spacing:-.03em;line-height:1}
.pg-dates i{font-style:normal;font-size:.9375rem;color:rgba(255,255,255,.75)}

/* Columns of three, ruled at the top */
.pg-cols{display:grid;gap:28px}
.pg-cols > div{display:grid;gap:10px;align-content:start;padding-top:16px;border-top:2px solid var(--navy)}
.lk .pg-cols h3{font-size:1.375rem;letter-spacing:-.02em;line-height:1.15}
.pg-cols p{color:var(--ink-2)}
.pg-cols .tlink{justify-self:start}

/* Photographs */
.pg-fig{position:relative;margin:0;aspect-ratio:3 / 2;overflow:hidden;background:var(--tint)}
.pg-figs{display:grid;gap:var(--gap)}
.pg-gallery{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding-inline:var(--gutter)}
.pg-gallery li{position:relative;aspect-ratio:1;overflow:hidden;background:var(--tint)}
.pg-gallery img{position:absolute;inset:0}
.pg-gallery li:first-child{grid-column:1 / -1;aspect-ratio:3 / 2}

/* Contact list */
.pg-dl{border-top:1px solid var(--rule);max-width:40rem}
.pg-dl > div{display:grid;gap:2px 16px;align-items:baseline;padding:14px 0;border-bottom:1px solid var(--rule)}
.pg-dl dt{font-size:.9375rem;color:var(--ink-2)}
.pg-dl dd{font-weight:500;overflow-wrap:anywhere}
.pg-dl dd a{color:var(--navy);font-weight:600;text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:5px}
.pg-dl dd a:hover{text-decoration-thickness:2.5px}
.pg-dl small{display:block;margin-top:2px;font-size:.875rem;font-weight:400;color:var(--ink-2)}

/* Closing band */
.pg-cta{background:var(--navy-deep);color:#fff;padding-block:var(--band-pad)}
.pg-cta__in{display:grid;gap:18px;padding-inline:var(--gutter)}
.lk .pg-cta h2{color:#fff;font-size:var(--fs-h2);max-width:12em}
.pg-cta p{max-width:30em;color:rgba(255,255,255,.86);font-size:var(--fs-lead)}
.pg-cta__act{display:flex;flex-wrap:wrap;align-items:center;gap:12px 28px;margin-top:10px}

/* The principal's message, in full, on the About page */
.msg__full{margin-top:20px;max-width:34em}

@container page (min-width:420px){
  .pg-dl > div{grid-template-columns:8.5rem minmax(0,1fr)}
}
@container page (min-width:700px){
  .solid main{padding-top:80px}
  .pg-head{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);align-items:center;padding-top:clamp(2.5rem,1rem + 4cqi,4rem);padding-bottom:var(--sec)}
  .pg-head__text{grid-column:1 / 7;padding-right:0}
  .pg-head__photo{grid-column:7 / 13;aspect-ratio:4 / 5;margin-right:0}
  .pg-wrap{grid-template-columns:repeat(12,minmax(0,1fr))}
  .pg-wrap > h2{grid-column:1 / 13}
  .pg-wrap > .pg-body{grid-column:1 / 12}
  .pg-wrap > .pg-full{grid-column:1 / 13}
  .pg-cols{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--gap)}
  .pg-list--names{grid-template-columns:repeat(3,minmax(0,1fr))}
  .pg-figs{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:end}
  .pg-figs .pg-fig:last-child{aspect-ratio:4 / 5}
  .pg-gallery{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
  .pg-gallery li:first-child{grid-column:span 2;grid-row:span 2;aspect-ratio:auto}
  .pg-gallery li:nth-child(4){grid-column:span 2;aspect-ratio:auto}
  .pg-cta__in{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);align-items:end}
  .pg-cta__in > h2{grid-column:1 / 8}
  .pg-cta__in > div{grid-column:8 / 13}
}
@container page (min-width:1100px){
  .pg-head__text{grid-column:1 / 7}
  .pg-head__photo{grid-column:8 / 13;aspect-ratio:1}
  .pg-wrap > h2{grid-column:1 / 5}
  .pg-wrap > .pg-body{grid-column:6 / 13}
  .pg-wrap > .pg-full{grid-column:1 / 13}
}

/* Motion: the head arrives on load, photographs settle as they are reached. */
.motion .pg-head h1{animation:lk-up .8s cubic-bezier(.2,.7,.2,1) .1s both}
.motion .pg-head__lead{animation:lk-up .8s cubic-bezier(.2,.7,.2,1) .22s both}
.motion .pg-head__actions{animation:lk-up .8s cubic-bezier(.2,.7,.2,1) .32s both}
.motion .pg-head__photo{animation:lk-fade 1s ease .15s both}
@supports (animation-timeline:view()){
  .motion .pg-fig img,.motion .pg-gallery img{animation:lk-photo linear both;animation-timeline:view();animation-range:entry 0% cover 50%}
}
@media (hover:hover){
  .pg-gallery img{transition:scale .7s cubic-bezier(.2,.7,.2,1)}
  .pg-gallery li:hover img{scale:1.035}
}

/* Footer: room for a phone number and an email address on one line each. */
@container page (min-width:700px){
  .ftr__cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.45fr)}
}
.ftr__tel{white-space:nowrap}
/* ------------------------------------------------------------------
   Admissions onboarding (apply.html). One question per screen,
   thumb-reach controls on a phone, a live message preview on desktop.
   ------------------------------------------------------------------ */
.lk button.btn--red{background:var(--red);color:#fff}
.lk button.btn--red:hover{background:#A80000}
.lk .btn--navy{background:var(--navy);color:#fff}
.lk .btn--navy:hover{background:var(--navy-deep)}
.lk button.btn--line{background:transparent;color:var(--navy);box-shadow:inset 0 0 0 1.5px var(--navy)}
.lk button.btn--line:hover{background:var(--navy);color:#fff}
.btn .ic{flex:none}

.ob-page .dock{display:none}
.ob-page .hdr__bar,.ob-page.is-scrolled .hdr__bar{height:64px}
.ob-page main{padding-top:64px}
.ob{--ob-line:#C9CEDF;min-height:calc(100vh - 64px);min-height:calc(100svh - 64px);padding-bottom:var(--sec)}
.ob fieldset{border:0;margin:0;padding:0;min-width:0}
.ob legend{display:block;padding:0;width:100%}
.ob [hidden]{display:none !important}
.ob__live{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* Progress, pinned under the header */
.ob__top{
  position:sticky;top:64px;z-index:20;
  display:flex;align-items:center;gap:8px;
  padding:6px var(--gutter) 10px calc(var(--gutter) - 10px);
  background:var(--paper);
}
.ob__back{
  display:inline-flex;align-items:center;justify-content:center;flex:none;
  min-width:44px;min-height:44px;padding:0;border:0;background:none;color:var(--navy);cursor:pointer;
  font:600 1rem/1 "Instrument Sans",system-ui,sans-serif;
}
.ob__prog{flex:1;display:grid;gap:7px}
.ob__count{font-size:.875rem;font-weight:500;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ob__bar{position:relative;height:4px;background:var(--rule);overflow:hidden}
.ob__bar i{position:absolute;inset:0 auto 0 0;width:calc(var(--p,0) * 100%);background:var(--navy);transition:width .5s cubic-bezier(.2,.7,.2,1)}
[data-at="review"] .ob__bar i{background:var(--red)}

.ob__grid{display:grid;gap:40px}
.ob__main{display:flex;flex-direction:column;min-width:0;padding:clamp(1.5rem,1rem + 2cqi,2.5rem) var(--gutter) 0}
[data-at="intro"] .ob__main{padding-top:clamp(2rem,1rem + 4cqi,4rem)}

/* Questions */
.lk .ob-q{
  font-family:var(--display);font-weight:650;letter-spacing:-.03em;line-height:1.06;color:var(--navy);
  font-size:clamp(1.875rem,1.3rem + 2.4cqi,2.875rem);max-width:15em;text-wrap:balance;outline:none;
}
.lk #ob-h{font-size:clamp(2.5rem,1.6rem + 3.8cqi,4.75rem);line-height:.98;letter-spacing:-.035em}
.ob-lead{margin-top:18px;max-width:32em;font-size:var(--fs-lead);line-height:1.5;color:var(--ink-2)}
.ob-lead a,.ob-alt a{color:var(--navy);font-weight:600;text-underline-offset:4px}
.ob-hint{margin-top:12px;max-width:34em;font-size:.9375rem;color:var(--ink-2)}
.ob-err{margin-top:10px;font-size:.9375rem;font-weight:600;color:#B00000}

/* Typed answers */
.ob-field{display:grid;gap:8px;margin-top:26px;max-width:30rem}
.ob-field__l{font-size:.9375rem;font-weight:600;color:var(--ink)}
.ob-field__l small{font-size:inherit;font-weight:400;color:var(--ink-2)}
.ob-field input,.ob-field textarea{
  width:100%;min-height:60px;padding:0 16px;
  border:1.5px solid var(--ob-line);border-radius:2px;background:#fff;color:var(--ink);
  font:500 1.1875rem/1.3 "Instrument Sans",system-ui,sans-serif;
  transition:border-color .15s ease,box-shadow .15s ease;
}
.ob-field textarea{min-height:104px;padding:14px 16px;resize:vertical;font-size:1.0625rem;line-height:1.5}
.ob-field input:hover,.ob-field textarea:hover{border-color:#9AA0B8}
.ob-field input:focus,.ob-field textarea:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(35,39,126,.16)}
.ob-field input[aria-invalid="true"]{border-color:#B00000}
.ob-field--date{max-width:16rem}
.ob-age{min-height:1.5em;margin-top:12px;font-weight:600;color:var(--navy)}

/* Single choices: whole rows to tap */
.ob-choices{display:grid;gap:10px;margin-top:26px;max-width:34rem}
.ob-ch{
  position:relative;display:grid;grid-template-columns:minmax(0,1fr) 24px;column-gap:16px;align-items:center;
  min-height:66px;padding:14px 18px;
  border:1.5px solid var(--ob-line);border-radius:2px;background:#fff;cursor:pointer;
  transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease,scale .15s ease;
  -webkit-user-select:none;user-select:none;
}
.ob-ch input,.ob-chip input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.ob-ch__t{font-weight:600;font-size:1.0625rem;line-height:1.3;color:var(--ink)}
.ob-ch__t em{display:inline-block;margin-left:6px;padding:2px 7px;border:1px solid currentColor;font-style:normal;font-size:.75rem;font-weight:600;line-height:1.3;color:var(--red);vertical-align:2px}
.ob-ch__d{grid-column:1;font-size:.9375rem;line-height:1.35;color:var(--ink-2)}
.ob-ch i{
  grid-column:2;grid-row:1 / span 2;position:relative;width:24px;height:24px;
  border:1.5px solid #9AA0B8;border-radius:50%;background:#fff;transition:border-color .15s ease,background-color .15s ease;
}
.ob-ch i::after{
  content:"";position:absolute;inset:0;margin:auto;width:10px;height:6px;
  border:solid #fff;border-width:0 0 2px 2px;rotate:-45deg;translate:0 -1px;scale:0;
  transition:scale .2s cubic-bezier(.2,.7,.2,1.4);
}
.ob-ch:active{scale:.985}
.ob-ch:has(input:checked){border-color:var(--navy);background:var(--tint);box-shadow:inset 0 0 0 1px var(--navy)}
.ob-ch:has(input:checked) i{border-color:var(--navy);background:var(--navy)}
.ob-ch:has(input:checked) i::after{scale:1}
.ob-ch:has(input:focus-visible),.ob-chip:has(input:focus-visible) span{outline:2px solid var(--navy);outline-offset:3px}
@media (hover:hover){
  .ob-ch:hover{border-color:var(--navy)}
}

/* Chips: short answers, several at once where the question allows */
.ob-sub{margin-top:24px}
.ob-sub__l{margin-bottom:10px;font-size:.9375rem;font-weight:600}
.ob-chips{display:flex;flex-wrap:wrap;gap:8px;max-width:36rem}
.ob-chips--multi{margin-top:24px}
.ob-chip{position:relative;cursor:pointer;-webkit-user-select:none;user-select:none}
.ob-chip span{
  display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:0 18px;
  border:1.5px solid var(--ob-line);border-radius:2px;background:#fff;
  font-weight:600;font-size:1rem;color:var(--ink);
  transition:background-color .15s ease,border-color .15s ease,color .15s ease,scale .15s ease;
}
.ob-chip:active span{scale:.97}
.ob-chip input:checked + span{background:var(--navy);border-color:var(--navy);color:#fff}
.ob-chips--multi .ob-chip span::before{
  content:"";width:0;height:6px;border:solid currentColor;border-width:0 0 2px 2px;rotate:-45deg;translate:0 -2px;
  opacity:0;margin-right:-8px;transition:width .2s ease,opacity .2s ease,margin .2s ease;
}
.ob-chips--multi .ob-chip input:checked + span::before{width:10px;opacity:1;margin-right:0}
@media (hover:hover){
  .ob-chip:hover input:not(:checked) + span{border-color:var(--navy)}
}

.ob-link{
  display:inline-flex;align-items:center;min-height:44px;margin-top:10px;padding:0;border:0;background:none;cursor:pointer;
  font:600 1rem/1.2 "Instrument Sans",system-ui,sans-serif;color:var(--navy);
  text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:6px;
}
.ob-link:hover{text-decoration-thickness:2.5px}
.ob-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px 28px;margin-top:30px}
.ob-row .ob-link{margin-top:0}

/* Welcome and what happens next */
.ob-how{list-style:none;counter-reset:how;margin-top:30px;max-width:32rem;border-top:1px solid var(--rule)}
.ob-how li{counter-increment:how;display:grid;grid-template-columns:2.25rem minmax(0,1fr);column-gap:8px;padding:13px 0;border-bottom:1px solid var(--rule)}
.ob-how li::before{content:counter(how);grid-row:1 / span 2;font-family:var(--display);font-weight:650;font-size:1.25rem;line-height:1.2;color:var(--red);font-variant-numeric:tabular-nums}
.ob-how b{font-weight:600}
.ob-how span{font-size:.9375rem;color:var(--ink-2)}
.ob-resume{margin-top:28px;padding:18px 20px 20px;max-width:32rem;background:var(--tint);box-shadow:inset 3px 0 0 var(--navy)}
.ob-resume .ob-row{margin-top:14px}
.ob-next__h{margin-top:36px;font-family:var(--display);font-size:1.375rem;letter-spacing:-.02em;line-height:1.15;color:var(--navy)}
.ob-how--next{margin-top:14px}

/* Continue and Back: in the thumb zone on a phone */
.ob__bar-act{
  position:sticky;bottom:0;z-index:15;
  display:flex;gap:10px;align-items:center;
  margin:auto calc(var(--gutter) * -1) 0;padding:12px var(--gutter) calc(12px + env(safe-area-inset-bottom,0px));
  background:var(--paper);box-shadow:0 -1px 0 var(--rule);
}
.ob-step{margin-bottom:36px}
.ob:not([data-at="intro"]) .ob__main{min-height:calc(100vh - 140px);min-height:calc(100svh - 140px)}
.ob__back--text{min-width:auto;padding:0 18px;box-shadow:inset 0 0 0 1.5px var(--ob-line);min-height:52px}
.ob__back--text:hover{box-shadow:inset 0 0 0 1.5px var(--navy)}
.ob__next{flex:1;justify-content:center}
[data-at="child"] .ob__back--text{visibility:hidden;width:0;padding:0;margin-right:-10px}

/* Review */
.ob-sum{margin-top:24px;max-width:34rem;border-top:1px solid var(--rule)}
.ob-sum > div{border-bottom:1px solid var(--rule)}
.ob-sum dt{padding-top:12px;font-size:.875rem;color:var(--ink-2)}
.ob-sum__edit{
  display:flex;align-items:baseline;justify-content:space-between;gap:16px;width:100%;
  min-height:44px;padding:4px 0 12px;border:0;background:none;cursor:pointer;text-align:left;
  font:500 1.0625rem/1.4 "Instrument Sans",system-ui,sans-serif;color:var(--ink);
}
.ob-sum__edit > span:first-child{min-width:0;overflow-wrap:anywhere}
.ob-sum__e{flex:none;font-size:.875rem;font-weight:600;color:var(--navy);text-decoration:underline;text-underline-offset:4px}
.ob-sum__edit:hover .ob-sum__e{text-decoration-thickness:2px}
.ob-send{
  position:sticky;bottom:0;z-index:15;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;margin:26px calc(var(--gutter) * -1) 0;max-width:none;
  padding:12px var(--gutter) calc(12px + env(safe-area-inset-bottom,0px));background:var(--paper);box-shadow:0 -1px 0 var(--rule);
}
.ob-send .btn{padding-inline:16px}
.ob-send .btn{justify-content:center}
.ob-alt{margin-top:18px;max-width:34rem;font-size:.9375rem;color:var(--ink-2)}

/* Done */
.ob-tick{display:grid;place-items:center;width:64px;height:64px;margin-bottom:22px;background:var(--tint)}
.ob-tick path{fill:none;stroke:var(--navy);stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:40;stroke-dashoffset:0}

/* Side column: a photograph on the welcome screen, then the message as it is written */
.ob__aside{display:none}
[data-at="intro"] .ob__aside{display:block;padding-inline:var(--gutter)}
.ob-photo{position:relative;aspect-ratio:4 / 3;overflow:hidden;background:var(--tint)}
.ob-photo img{width:100%;height:100%;object-fit:cover}
.ob-preview__h{font-size:.875rem;font-weight:600;color:var(--ink-2)}
.ob-bubble{
  margin-top:12px;padding:16px 18px;max-height:min(60vh,520px);overflow:auto;
  background:#fff;border:1px solid var(--rule);border-radius:14px 14px 14px 3px;
  box-shadow:0 1px 0 var(--rule);
}
.ob-bubble p{white-space:pre-wrap;font-size:.9375rem;line-height:1.55;color:var(--ink);overflow-wrap:anywhere}
.ob-preview__to{margin-top:10px;font-size:.8125rem;color:var(--ink-2)}

@container page (min-width:700px){
  .ob__top{top:64px;padding-inline:calc(var(--gutter) - 10px) var(--gutter)}
  .ob__bar-act{position:static;margin:0;padding:0;box-shadow:none;background:none;max-width:34rem}
  .ob:not([data-at="intro"]) .ob__main{min-height:0}
  .ob__next{flex:none;padding-inline:28px}
  .ob-send{display:flex;flex-wrap:wrap}
  .ob-send{position:static;margin-inline:0;padding:0;box-shadow:none;background:none}
  .ob-photo{aspect-ratio:16 / 9}
}
@container page (min-width:1100px){
  .ob__grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);padding-inline:var(--gutter);align-items:start}
  .ob__main{grid-column:1 / 8;padding-inline:0}
  .ob__aside,[data-at="intro"] .ob__aside{display:block;grid-column:9 / 13;position:sticky;top:120px;padding:clamp(1.5rem,1rem + 2cqi,2.5rem) 0 0}
  [data-at="intro"] .ob__aside{grid-column:8 / 13;padding-top:clamp(2rem,1rem + 4cqi,4rem)}
  .ob-photo{aspect-ratio:4 / 5}
  .ob__top{padding-inline:calc(var(--gutter) - 10px) var(--gutter)}
  .ob__top .ob__prog{max-width:calc((100% - var(--gutter)) * 7 / 12)}
}

/* Motion */
.motion .ob-step.is-fwd{animation:ob-in .42s cubic-bezier(.2,.7,.2,1) both}
.motion .ob-step.is-back{animation:ob-in-back .42s cubic-bezier(.2,.7,.2,1) both}
.motion .ob-step.is-in .ob-ch,.motion .ob-step.is-in .ob-chip,.motion .ob-step.is-in .ob-field{animation:lk-up .5s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(80ms + var(--i,0) * 45ms)}
.ob-ch:nth-child(2),.ob-chip:nth-child(2){--i:1}
.ob-ch:nth-child(3),.ob-chip:nth-child(3){--i:2}
.ob-ch:nth-child(4),.ob-chip:nth-child(4){--i:3}
.ob-chip:nth-child(5){--i:4}
.ob-chip:nth-child(6){--i:5}
.motion .ob-step.is-shake{animation:ob-shake .38s ease}
.motion [data-at="intro"] #ob-h{animation:lk-up .8s cubic-bezier(.2,.7,.2,1) .1s both}
.motion [data-at="intro"] .ob-lead{animation:lk-up .8s cubic-bezier(.2,.7,.2,1) .2s both}
.motion [data-at="intro"] .ob-how li{animation:lk-up .7s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(300ms + var(--i,0) * 60ms)}
.ob-how li:nth-child(2){--i:1}
.ob-how li:nth-child(3){--i:2}
.ob-how li:nth-child(4){--i:3}
.motion [data-at="intro"] .ob-photo{animation:lk-fade 1s ease .15s both}
.motion .ob-sub:not([hidden]){animation:lk-up .4s cubic-bezier(.2,.7,.2,1) both}
.motion .ob-tick path{stroke-dashoffset:40;animation:ob-tick .6s cubic-bezier(.2,.7,.2,1) .2s forwards}
@keyframes ob-in{from{opacity:0;translate:28px 0}to{opacity:1;translate:none}}
@keyframes ob-in-back{from{opacity:0;translate:-28px 0}to{opacity:1;translate:none}}
@keyframes ob-shake{20%{translate:-6px 0}45%{translate:5px 0}70%{translate:-3px 0}100%{translate:none}}
@keyframes ob-tick{to{stroke-dashoffset:0}}
