/* Kids Heaven International School: "On cloud nine". Bootstrap 5.3.3 grid only; everything else here. */
:root {
  --ground: #F4F8FF;
  --ink: #1D2340;
  --ink-soft: #3A4166;
  --sky: #7FB8F0;
  --sky-pale: #DCEBFB;
  --sky-deep: #2F6FB3;
  --cloud: #FFFFFF;
  --plane: #FF8A3D;
  --fold: #D9621A;
  --violet: #6B5BD6;
  --violet-ink: #4B3DB0;
  --trail: #4B3DB0;
  --shadow-sky: 0 10px 28px -12px rgba(47, 111, 179, .45);
  --shadow-soft: 0 6px 18px -8px rgba(29, 35, 64, .22);
  --display: "Cherry Bomb One", "Trebuchet MS", system-ui, sans-serif;
  --body: "Sen", "Segoe UI", system-ui, sans-serif;
  --r-cloud: 32px;
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
  margin: 0; background: var(--ground); color: var(--ink);
  font: 400 1.0625rem/1.65 var(--body); caret-color: var(--violet);
  font-variant-numeric: lining-nums;
}
::selection { background: var(--sky); color: var(--ink); }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--violet-ink); text-decoration: underline; text-decoration-style: dotted; text-decoration-thickness: 2px; text-underline-offset: 4px; }
a:hover { color: var(--ink); text-decoration-style: solid; }
:focus-visible { outline: 3px solid var(--violet); outline-offset: 3px; border-radius: 6px; }
h1, h2, h3 { margin: 0 0 .5em; line-height: 1.15; text-wrap: balance; }
p { margin: 0 0 1em; }
.muted { color: var(--ink-soft); font-size: .92em; }
.ic { width: 1.25em; height: 1.25em; flex: none; }
.star { color: var(--ink); fill: currentColor; }
.skip { position: absolute; left: 12px; top: -60px; z-index: 100; background: var(--ink); color: #fff; padding: 10px 16px; border-radius: 999px; text-decoration: none; }
.skip:focus { top: 12px; }
.skip:hover { color: #fff; }
html::-webkit-scrollbar { width: 12px; }
html::-webkit-scrollbar-track { background: var(--ground); }
html::-webkit-scrollbar-thumb { background: var(--sky); border-radius: 999px; border: 3px solid var(--ground); }

/* ---------- buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .55em;
  min-height: 50px; padding: .7em 1.35em; border-radius: 999px; border: 2px solid transparent;
  font: 700 1rem/1.1 var(--body); text-decoration: none; cursor: pointer;
  transition: transform .18s cubic-bezier(.2, .8, .2, 1), box-shadow .18s, background-color .18s;
}
.btn:hover { transform: translateY(-2px); text-decoration: none; }
.btn:active { transform: translateY(0); }
.btn-plane { background: var(--plane); color: var(--ink); box-shadow: 0 8px 18px -8px rgba(217, 98, 26, .7); }
.btn-plane:hover { background: #FF9A55; color: var(--ink); }
.btn-cloud { background: var(--cloud); color: var(--ink); border-color: #CFE2F8; box-shadow: var(--shadow-soft); }
.btn-cloud:hover { color: var(--ink); border-color: var(--sky); }
.btn-ghost { background: transparent; color: var(--violet-ink); border: 2px dashed var(--violet); }
.btn-ghost:hover { color: var(--ink); background: #EEF0FF; }
.btn[disabled] { opacity: .65; cursor: progress; transform: none; }

/* ---------- header ---------- */
.site-head { position: sticky; top: 0; z-index: 40; background: rgba(244, 248, 255, .94); backdrop-filter: saturate(1.2) blur(6px); border-bottom: 1px solid #DCE7F7; }
.head-row { display: flex; align-items: center; gap: 18px; min-height: 76px; }
.brand { flex: none; display: block; border-radius: 12px; }
.brand img { height: 52px; width: auto; }
.main-nav { margin-left: auto; }
.main-nav ul { display: flex; gap: 10px; list-style: none; margin: 0; padding: 0; }
.nav-a {
  position: relative; isolation: isolate; display: inline-block; padding: .55em 1.05em .5em; border-radius: 999px;
  background: var(--cloud); color: var(--ink); font-weight: 600; text-decoration: none;
  box-shadow: 0 4px 10px -6px rgba(47, 111, 179, .55);
}
/* the two puffs that turn a pill into a little cloud */
.nav-a::before, .nav-a::after { content: ""; position: absolute; background: var(--cloud); border-radius: 50%; z-index: -1; transition: transform .25s; }
.nav-a::before { width: 22px; height: 22px; top: -8px; left: 22%; }
.nav-a::after { width: 15px; height: 15px; top: -5px; left: 48%; }
.nav-a:hover { color: var(--violet-ink); text-decoration: none; }
.nav-a:hover::before { transform: translateY(-2px); }
.nav-a[aria-current="page"] { background: var(--ink); color: #fff; }
.nav-a[aria-current="page"]::before, .nav-a[aria-current="page"]::after { background: var(--ink); }
.head-call { display: inline-flex; align-items: center; gap: .45em; padding: .55em 1.1em; border-radius: 999px; background: var(--plane); color: var(--ink); font-weight: 700; text-decoration: none; white-space: nowrap; }
.head-call:hover { color: var(--ink); background: #FF9A55; }
.menu-btn { display: none; margin-left: auto; align-items: center; gap: .45em; min-height: 46px; padding: .5em 1.05em; border-radius: 999px; border: 2px solid #CFE2F8; background: var(--cloud); color: var(--ink); font: 700 1rem var(--body); cursor: pointer; }
@media (max-width: 1199.98px) { .main-nav ul { gap: 6px; } .nav-a { padding: .5em .8em; font-size: .97rem; } .brand img { height: 46px; } }
@media (max-width: 991.98px) {
  .main-nav, .head-call { display: none; }
  .menu-btn { display: inline-flex; }
  .head-row { min-height: 66px; }
  .brand img { height: 44px; }
}

/* ---------- phone sheet: slides down like the sky ---------- */
.sheet-scrim { position: fixed; inset: 0; background: rgba(29, 35, 64, .45); z-index: 60; opacity: 0; transition: opacity .3s; }
.sheet-scrim.open { opacity: 1; }
.sheet {
  position: fixed; left: 0; right: 0; top: 0; z-index: 70; max-height: 100dvh; overflow-y: auto;
  background: var(--sky); padding: 18px 20px 54px; transform: translateY(-104%);
  transition: transform .42s cubic-bezier(.16, 1, .3, 1);
}
.sheet.open { transform: translateY(0); }
.sheet-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.sheet-title { font: 1.6rem/1 var(--display); }
.sheet-close { display: inline-flex; align-items: center; gap: .4em; min-height: 46px; padding: .5em 1em; border-radius: 999px; border: 0; background: var(--cloud); color: var(--ink); font: 700 1rem var(--body); cursor: pointer; }
.sheet-list { list-style: none; margin: 0 0 18px; padding: 0; display: grid; gap: 10px; }
.sheet-a { display: block; padding: .7em 1.1em; border-radius: 999px; background: var(--cloud); color: var(--ink); font-weight: 700; font-size: 1.15rem; text-decoration: none; }
.sheet-a[aria-current="page"] { background: var(--ink); color: #fff; }
.sheet-acts { display: grid; gap: 10px; }
.sheet-edge { position: absolute; left: 0; bottom: -1px; width: 100%; height: 34px; }
body.sheet-open { overflow: hidden; }
@media (prefers-reduced-motion: reduce) { .sheet, .sheet-scrim { transition: none; } }

/* ---------- shared pieces ---------- */
.sec-h { font: 400 clamp(1.85rem, 1.2rem + 2.2vw, 2.7rem)/1.08 var(--display); letter-spacing: .005em; color: var(--ink); }
.sec-sub { color: var(--ink-soft); max-width: 62ch; }
.sec-sub-top { margin-bottom: 22px; }
.stock-note { font-size: .88rem; color: var(--ink-soft); margin-top: 18px; }
section { position: relative; }
.flight, .weather, .facts, .visit, .story, .crew, .legs-sec, .steps-sec, .docs-sec, .expect, .gallery-sec, .contact-sec, .prose, .board-sec { padding: clamp(56px, 7vw, 96px) 0; }
.tbc {
  display: flex; gap: .7em; align-items: flex-start; margin: 0 0 1.2em; padding: 14px 18px;
  border: 2px dashed #6E9DD6; border-radius: 22px; background: rgba(255, 255, 255, .7); color: var(--ink); max-width: 62ch;
}
.tbc-ic { color: var(--sky-deep); margin-top: .2em; }
.tbc-k { font-weight: 700; color: var(--sky-deep); }
.tbc-inline { color: var(--sky-deep); font-weight: 600; }
.trail { fill: none; stroke: var(--trail); stroke-width: 4; stroke-linecap: round; stroke-dasharray: 0 14; opacity: .75; }
.pp { display: block; filter: drop-shadow(0 8px 10px rgba(29, 35, 64, .18)); }

/* ---------- hero ---------- */
.hero { background: var(--sky); padding: clamp(36px, 5vw, 72px) 0 clamp(70px, 8vw, 110px); overflow: hidden; }
.hero-sky { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-in { position: relative; z-index: 1; }
.hero-place { display: inline-flex; align-items: center; gap: .45em; margin-bottom: 14px; padding: .35em .9em; border-radius: 999px; background: rgba(255, 255, 255, .78); font-weight: 600; font-size: .98rem; }
.hero-h { font: 400 clamp(3rem, 1.6rem + 5.4vw, 5.6rem)/.98 var(--display); color: var(--ink); margin-bottom: .18em; letter-spacing: -.01em; }
.hero-hi { font-size: 1.35rem; font-weight: 700; margin-bottom: .6em; }
.hero-lead { font-size: 1.15rem; max-width: 34ch; }
.hero-facts { list-style: none; padding: 0; margin: 0 0 22px; display: flex; flex-wrap: wrap; gap: 10px 22px; }
.hero-facts li { display: inline-flex; align-items: center; gap: .45em; font-weight: 600; }
.hero-acts { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 14px; }
.hero-call { display: inline-flex; align-items: center; gap: .4em; color: var(--ink); font-weight: 700; min-height: 48px; }
.hero-call:hover { color: var(--ink); }
.cloud-seat { position: relative; margin: 0 auto; max-width: 540px; padding: 40px 0 0; }
.seat-photo { position: relative; z-index: 1; margin: 0 9%; border-radius: 240px 240px 36px 36px; overflow: hidden; border: 10px solid var(--cloud); box-shadow: var(--shadow-sky); aspect-ratio: 480 / 461; background: var(--sky-pale); }
.seat-photo img { width: 100%; height: 100%; object-fit: cover; }
.seat-cloud { position: relative; z-index: 2; display: block; width: 112%; margin: -86px -6% 0; filter: drop-shadow(0 14px 18px rgba(47, 111, 179, .35)); }
.cloud-seat figcaption { position: relative; z-index: 3; text-align: center; font-size: .86rem; color: var(--ink); margin-top: 10px; }
.hero-pp { position: absolute; z-index: 3; }
.hero-pp-a { left: -36px; top: 18px; transform: rotate(-6deg); }
.hero-pp-b { right: 2%; top: 46%; transform: rotate(-14deg) scaleX(-1); }
.hero-edge { position: absolute; left: 0; bottom: -1px; width: 100%; height: 70px; z-index: 2; }
@media (prefers-reduced-motion: no-preference) {
  .hero-pp-a { animation: take-off 2.6s cubic-bezier(.16, 1, .3, 1) .3s both; }
  .hero-pp-b { animation: glide 3.2s cubic-bezier(.16, 1, .3, 1) .6s both; }
  .trail-a, .trail-b { animation: trail-in 2.2s ease-out .3s both; }
}
@keyframes take-off { from { transform: translate(-160px, 140px) rotate(14deg); opacity: 0; } 40% { opacity: 1; } to { transform: rotate(-6deg); } }
@keyframes glide { from { transform: translate(90px, 50px) rotate(-14deg) scaleX(-1); opacity: 0; } 40% { opacity: 1; } to { transform: rotate(-14deg) scaleX(-1); } }
@keyframes trail-in { from { opacity: 0; } to { opacity: .75; } }
@media (max-width: 991.98px) {
  .hero-lead { max-width: 46ch; }
  .cloud-seat { max-width: 420px; margin-top: 8px; }
  .hero-pp-a { left: -6px; width: 84px; height: auto; }
  .hero-pp-b { display: none; }
}

/* ---------- flight path ---------- */
.route { position: relative; margin-top: 30px; }
.route-line { position: absolute; left: 0; top: 0; width: 100%; height: 120px; }
.route-line path { fill: none; stroke: var(--violet); stroke-width: 5; stroke-linecap: round; stroke-dasharray: 0 16; }
.stops { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; position: relative; }
.stop { display: flex; flex-direction: column; padding-top: 0; }
.stop:nth-child(1) { margin-top: 70px; } .stop:nth-child(2) { margin-top: 10px; } .stop:nth-child(3) { margin-top: 50px; } .stop:nth-child(4) { margin-top: 0; }
.stop-photo { border-radius: 140px 140px 26px 26px; overflow: hidden; border: 8px solid var(--cloud); box-shadow: var(--shadow-sky); aspect-ratio: 9 / 10; background: var(--sky-pale); }
.stop-photo img { width: 100%; height: 100%; object-fit: cover; }
.stop-dot { display: none; width: 22px; height: 22px; border-radius: 50%; background: var(--cloud); border: 6px solid var(--violet); margin: -11px auto 10px; position: relative; z-index: 1; }
.stop-name { font: 400 1.9rem/1 var(--display); text-align: center; margin-bottom: .25em; }
.stop-age { text-align: center; font-weight: 600; margin-bottom: .5em; }
.stop-note { color: var(--ink-soft); font-size: .98rem; }
.stop-link { font-weight: 700; margin-top: auto; align-self: flex-start; }
@media (max-width: 991.98px) {
  .route-line { display: none; }
  .stops { grid-template-columns: repeat(2, 1fr); gap: 34px 22px; }
  .stop:nth-child(n) { margin-top: 0; }
}
@media (max-width: 575.98px) {
  .stops { grid-template-columns: 1fr; padding-left: 26px; }
  .stops::before { content: ""; position: absolute; left: 6px; top: 8px; bottom: 8px; width: 5px; background: radial-gradient(circle, var(--violet) 2.4px, transparent 2.6px) 0 0 / 5px 16px repeat-y; }
  .stop-photo { max-width: 300px; }
  .stop-dot { display: block; position: absolute; left: -31px; margin: 0; top: 40px; }
  .stop { position: relative; }
  .stop-name, .stop-age { text-align: left; }
}

/* ---------- weather today ---------- */
.weather { background: var(--sky-pale); }
.sample-tag { display: inline-flex; gap: .5em; align-items: flex-start; padding: .55em .95em; border-radius: 16px; border: 2px dashed #6E9DD6; background: var(--cloud); font-weight: 600; font-size: .95rem; }
.sample-tag .ic { color: var(--sky-deep); }
.board { background: var(--cloud); border-radius: 40px; padding: clamp(18px, 3vw, 34px); box-shadow: var(--shadow-sky); }
.board-moods { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; }
.mood {
  display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 14px 6px 12px; border-radius: 26px;
  border: 2px solid transparent; background: var(--ground); color: var(--ink-soft); font: inherit; cursor: pointer;
  transition: transform .2s, border-color .2s, background-color .2s;
}
.mood .mood-ic { opacity: .38; filter: grayscale(1); transition: opacity .2s, filter .2s; }
.mood:hover .mood-ic { opacity: .75; filter: none; }
.mood.on { color: var(--ink); border-color: var(--violet); background: #EEF0FF; transform: translateY(-4px); }
.mood.on .mood-ic { opacity: 1; filter: none; }
.mood-ic { width: 54px; height: 54px; }
.mood-name { font: 400 1.12rem/1.1 var(--display); text-align: center; }
.mood-feel { font-size: .9rem; text-align: center; }
.board-note { margin: 20px 4px 0; font-size: 1.08rem; }
.board-k { font-weight: 700; color: var(--violet-ink); }
@media (max-width: 767.98px) { .board-moods { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 340px) { .board-moods { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 575.98px) { .mood-name { font-size: .98rem; } .mood-feel { font-size: .82rem; } }
@media (prefers-reduced-motion: reduce) { .mood, .mood.on { transition: none; transform: none; } }

/* ---------- voices (dusk band) ---------- */
.voices { background: var(--violet); color: #fff; padding: clamp(60px, 8vw, 104px) 0; }
.voices .sec-h { color: #fff; }
.voices .sec-sub { color: #FFFFFF; }
.voices a { color: #fff; }
.rating-big { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.rating-num { font: 400 clamp(4rem, 3rem + 4vw, 6rem)/.9 var(--display); }
.rating-txt { display: inline-flex; align-items: center; gap: .45em; font-weight: 700; max-width: 20ch; }
.voices .star { color: var(--plane); }
.voice-sky { display: grid; gap: 18px; }
.voice { margin: 0; background: var(--cloud); color: var(--ink); border-radius: 36px 36px 36px 8px; padding: 22px 26px; box-shadow: 0 14px 30px -14px rgba(20, 16, 70, .55); }
.voice blockquote { margin: 0; }
.voice p { margin: 0 0 .5em; }
.voice figcaption { font-size: .92rem; color: var(--ink-soft); font-weight: 600; }
.v-big p { font: 400 clamp(1.4rem, 1rem + 1.4vw, 1.9rem)/1.2 var(--display); }
.v-mid { margin-left: 12%; } .v-mid p { font-size: 1.2rem; font-weight: 600; }
.v-small { margin-left: 4%; max-width: 88%; } .v-small p { font-size: 1.02rem; }

/* ---------- facts ---------- */
.facts-known, .facts-later { border-radius: var(--r-cloud); padding: clamp(20px, 3vw, 30px); height: 100%; }
.facts-known { background: var(--cloud); box-shadow: var(--shadow-sky); }
.facts-later { border: 2px dashed #6E9DD6; background: rgba(255, 255, 255, .55); }
.facts-sub { display: flex; gap: .5em; align-items: center; font: 700 1.1rem/1.3 var(--body); }
.facts-sub .ic { color: var(--violet); }
.facts-list { list-style: none; margin: 0; padding: 0; }
.facts-list li { display: grid; grid-template-columns: 9.5em 1fr; gap: 14px; padding: 11px 0; border-top: 1px solid #E3ECF8; }
.fk { font-weight: 700; color: var(--ink-soft); }
.later-list { margin: 0 0 14px; padding-left: 1.2em; }
.later-list li { padding: 3px 0; }
.later-list li::marker { color: var(--sky-deep); content: "◌  "; }
.later-note { color: var(--ink-soft); margin: 0; }
@media (max-width: 575.98px) { .facts-list li { grid-template-columns: 1fr; gap: 0; } }

/* ---------- boarding pass ---------- */
.board-sec { background: var(--ground); }
.facts + .board-sec { padding-top: 0; }
.pass { position: relative; display: grid; grid-template-columns: 1fr 300px; background: var(--cloud); border-radius: 34px; box-shadow: 0 22px 44px -22px rgba(47, 111, 179, .6); }
.pass::before, .pass::after { content: ""; position: absolute; right: 288px; width: 24px; height: 24px; border-radius: 50%; background: var(--ground); }
.pass::before { top: -12px; } .pass::after { bottom: -12px; }
.pass-main { padding: clamp(22px, 3.5vw, 42px); }
.pass-route { display: flex; align-items: center; gap: 14px; }
.pass-code { font: 400 1.8rem/1 var(--display); color: var(--violet-ink); }
.pass-line { flex: 1; display: flex; justify-content: center; position: relative; }
.pass-line::before { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 4px; background: radial-gradient(circle, var(--violet) 2px, transparent 2.3px) 0 0 / 14px 4px repeat-x; }
.pass-pp { position: relative; background: var(--cloud); padding: 0 8px; box-sizing: content-box; }
.pass-route-txt { font-size: .92rem; color: var(--ink-soft); margin: 6px 0 14px; }
.pass-h { font: 400 clamp(1.8rem, 1.3rem + 1.6vw, 2.4rem)/1.05 var(--display); }
.pass-lead { color: var(--ink-soft); }
.pass-stub { padding: clamp(22px, 3vw, 34px) 26px; border-left: 3px dotted #9CC4EE; display: flex; flex-direction: column; gap: 12px; background: #F8FBFF; border-radius: 0 34px 34px 0; }
.stub-list { margin: 0; display: grid; gap: 12px; }
.stub-list dt { font-size: .85rem; font-weight: 700; color: var(--sky-deep); }
.stub-list dd { margin: 0; font-weight: 700; }
.stub-note { font-weight: 400; color: var(--ink-soft); font-size: .88rem; }
.stub-stamp { align-self: flex-start; display: flex; align-items: center; gap: 8px; padding: 8px 14px; border: 3px solid var(--violet); border-radius: 18px; transform: rotate(-5deg); color: var(--violet-ink); font: 400 1.05rem var(--display); margin: 6px 0; }
.stub-stamp .pp { width: 40px; height: auto; filter: none; }
.stub-or { margin: 4px 0 0; font-weight: 700; }
@media (max-width: 991.98px) {
  .pass { grid-template-columns: 1fr; }
  .pass::before, .pass::after { display: none; }
  .pass-stub { border-left: 0; border-top: 3px dotted #9CC4EE; border-radius: 0 0 34px 34px; }
}
.field label { display: block; font-weight: 700; margin-bottom: 6px; }
.field input, .field select, .field textarea {
  width: 100%; min-height: 50px; padding: 12px 16px; border-radius: 16px; border: 2px solid #C5D9F2; background: var(--ground);
  color: var(--ink); font: 400 1rem/1.4 var(--body); caret-color: var(--violet);
}
.field textarea { min-height: 96px; resize: vertical; }
.field input::placeholder, .field textarea::placeholder { color: #5A6283; }
.field input:focus-visible, .field select:focus-visible, .field textarea:focus-visible { border-color: var(--violet); outline: 3px solid rgba(107, 91, 214, .35); outline-offset: 0; }
.field [aria-invalid="true"] { border-color: #C0392B; background: #FFF6F4; }
.hint { font-size: .88rem; color: var(--ink-soft); margin: 6px 0 0; }
.err { font-size: .92rem; color: #B03021; font-weight: 700; margin: 6px 0 0; }
.form-summary { border: 2px solid #C0392B; background: #FFF6F4; color: #8E2418; border-radius: 16px; padding: 12px 16px; margin-bottom: 16px; font-weight: 600; }
.form-summary ul { margin: 6px 0 0; padding-left: 1.2em; }
.form-summary a { color: #8E2418; }
.btn-send { margin-top: 20px; }
.note { margin-top: 16px; padding: 14px 18px; border-radius: 18px; }
.form-ok { background: #EAF4FF; border: 2px solid var(--sky); }
.form-fail { background: #FFF6F4; border: 2px solid #C0392B; }
.form-small { font-size: .88rem; color: var(--ink-soft); margin-top: 14px; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* ---------- visit / map ---------- */
.visit { background: var(--sky-pale); }
.visit-hours { display: flex; gap: .5em; align-items: flex-start; font-weight: 600; }
.map-card { position: relative; border-radius: var(--r-cloud); overflow: hidden; background: var(--cloud); box-shadow: var(--shadow-sky); min-height: 260px; }
.map-fallback { padding: 26px 28px; }
.map-name { font: 400 1.5rem/1.1 var(--display); }
.map-plus { color: var(--ink-soft); }
.map-acts { display: flex; flex-wrap: wrap; gap: 10px; }
.map-card iframe { display: block; width: 100%; height: 380px; border: 0; }
.map-card.loaded .map-fallback { border-bottom: 1px solid #E3ECF8; }
.map-note { margin-top: 14px; }

/* ---------- inner page band ---------- */
.band { background: var(--sky); padding: clamp(30px, 4vw, 56px) 0 clamp(78px, 8vw, 104px); overflow: hidden; }
.band-sky { position: absolute; inset: 0; width: 100%; height: 100%; }
.band .container { position: relative; z-index: 1; }
.band-pp { position: absolute; z-index: 1; right: 7%; top: 30%; transform: rotate(-10deg); }
.crumbs { display: flex; gap: 8px; font-size: .95rem; margin-bottom: 14px; font-weight: 600; }
.crumbs a { color: var(--ink); }
.band-h { font: 400 clamp(2.4rem, 1.5rem + 3.6vw, 4.2rem)/1 var(--display); max-width: 15ch; }
.band-hi { font-size: 1.25rem; font-weight: 700; margin-bottom: .4em; }
.band-lead { font-size: 1.12rem; max-width: 52ch; }
.band-edge { position: absolute; left: 0; bottom: -1px; width: 100%; height: 56px; }
@media (max-width: 991.98px) { .band-pp { right: 4%; top: 12px; width: 52px; height: auto; } }

/* ---------- about ---------- */
.cloud-frame { margin: 0; }
.cloud-frame img { border-radius: 220px 220px 30px 30px; border: 10px solid var(--cloud); box-shadow: var(--shadow-sky); width: 100%; }
.cloud-frame figcaption { font-size: .86rem; color: var(--ink-soft); margin-top: 8px; text-align: center; }
.cloud-frame.small { margin-top: 24px; max-width: 360px; }
.story .sec-h { margin-top: .4em; }
.crew { background: var(--sky-pale); }
.crew-cloud { position: relative; isolation: isolate; background: var(--cloud); border-radius: 40px 40px 28px 28px; padding: 28px 24px 10px; height: 100%; box-shadow: var(--shadow-sky); }
.crew-cloud::before { content: ""; position: absolute; top: -18px; left: 22%; width: 54px; height: 54px; border-radius: 50%; background: var(--cloud); z-index: -1; }
.crew-cloud h3 { font: 400 1.4rem/1.1 var(--display); }

/* ---------- classes ---------- */
.legs { list-style: none; margin: 0; padding: 0 0 0 10px; position: relative; }
.legs::before { content: ""; position: absolute; left: 30px; top: 30px; bottom: 30px; width: 5px; background: radial-gradient(circle, var(--violet) 2.4px, transparent 2.6px) 0 0 / 5px 16px repeat-y; }
.leg { display: grid; grid-template-columns: 46px 1fr; gap: 20px; padding-bottom: 34px; }
.leg-dot { position: relative; z-index: 1; display: grid; place-items: center; width: 46px; height: 46px; border-radius: 50%; background: var(--violet); color: #fff; font: 400 1.3rem var(--display); }
.leg-body { background: var(--cloud); border-radius: 30px; padding: 22px 26px; box-shadow: var(--shadow-sky); }
.leg-name { font: 400 2rem/1 var(--display); }
.leg-age { font-weight: 700; }
.leg-facts { display: flex; flex-wrap: wrap; gap: 8px 30px; margin: 0 0 12px; }
.leg-facts dt { font-size: .86rem; color: var(--ink-soft); font-weight: 700; }
.leg-facts dd { margin: 0; }
.side-cloud { position: sticky; top: 100px; }
.learn { list-style: none; padding: 0; margin: 0 0 18px; }
.learn li { padding: 12px 0; border-top: 1px solid #DCE7F7; }
.learn h3 { font: 700 1.05rem var(--body); margin-bottom: .2em; }
.learn p { margin: 0; color: var(--ink-soft); }

/* ---------- admissions ---------- */
.steps { list-style: none; margin: 26px 0 30px; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; position: relative; }
.steps::before { content: ""; position: absolute; left: 4%; right: 4%; top: 22px; height: 5px; background: radial-gradient(circle, var(--violet) 2.4px, transparent 2.6px) 0 0 / 16px 5px repeat-x; }
.step { position: relative; }
.step-dot { position: relative; z-index: 1; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: var(--violet); color: #fff; font: 400 1.35rem var(--display); margin-bottom: 14px; box-shadow: 0 0 0 6px var(--ground); }
.step h3 { font: 400 1.5rem/1.1 var(--display); }
.step p { color: var(--ink-soft); }
@media (max-width: 991.98px) {
  .steps { grid-template-columns: 1fr 1fr; }
  .steps::before { display: none; }
}
@media (max-width: 575.98px) { .steps { grid-template-columns: 1fr; } }
.docs-sec { background: var(--sky-pale); }
.docs { list-style: none; padding: 0; margin: 0; }
.docs li { position: relative; padding: 10px 0 10px 34px; border-top: 1px solid #C9DCF3; }
.docs li::before { content: ""; position: absolute; left: 4px; top: 16px; width: 16px; height: 16px; border-radius: 5px; border: 2px solid var(--sky-deep); }
.faq { display: grid; gap: 10px; }
.qa { background: var(--cloud); border-radius: 22px; padding: 0 20px; box-shadow: var(--shadow-soft); }
.qa summary { cursor: pointer; padding: 15px 0; font-weight: 700; list-style: none; display: flex; justify-content: space-between; gap: 12px; }
.qa summary::-webkit-details-marker { display: none; }
.qa summary::after { content: "+"; font: 400 1.5rem/1 var(--display); color: var(--violet-ink); }
.qa[open] summary::after { content: "–"; }
.qa p { padding-bottom: 14px; margin: 0; color: var(--ink-soft); }

/* ---------- campus ---------- */
.expect-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.expect-list li { border: 2px dashed #6E9DD6; border-radius: 28px; padding: 18px 20px; background: rgba(255, 255, 255, .6); }
.expect-list h3 { font: 400 1.3rem/1.1 var(--display); }
.expect-list p { margin: 0; color: var(--ink-soft); }
@media (max-width: 575.98px) { .expect-list { grid-template-columns: 1fr; } }
.gallery-sec { background: var(--sky-pale); }
.gallery { list-style: none; margin: 26px 0 0; padding: 0; display: grid; grid-template-columns: repeat(6, 1fr); gap: 18px; }
.g-item { grid-column: span 2; }
.g-0 { grid-column: span 4; }
.g-btn { display: block; width: 100%; padding: 0; border: 8px solid var(--cloud); border-radius: 120px 120px 26px 26px; overflow: hidden; background: var(--cloud); cursor: zoom-in; box-shadow: var(--shadow-sky); aspect-ratio: 4 / 3; }
.g-0 .g-btn { aspect-ratio: auto; height: 100%; border-radius: 26px 160px 26px 26px; }
.g-btn img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s cubic-bezier(.16, 1, .3, 1); }
.g-btn:hover img { transform: scale(1.04); }
@media (max-width: 767.98px) { .gallery { grid-template-columns: 1fr 1fr; } .g-item { grid-column: span 1; } .g-0 { grid-column: span 2; } .g-0 .g-btn { aspect-ratio: 4 / 3; height: auto; } }
@media (prefers-reduced-motion: reduce) { .g-btn img, .btn { transition: none; } }
.lightbox { border: 0; padding: 18px; border-radius: 30px; background: var(--cloud); max-width: min(1000px, 94vw); width: 100%; box-shadow: 0 30px 60px -20px rgba(29, 35, 64, .6); }
.lightbox::backdrop { background: rgba(29, 35, 64, .75); }
.lightbox figure { margin: 0; }
.lightbox img { width: 100%; max-height: 70vh; object-fit: contain; border-radius: 18px; background: var(--sky-pale); }
.lightbox figcaption { margin: 10px 4px; color: var(--ink-soft); }
.lb-acts { display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-end; }

/* ---------- contact ---------- */
.tower-list { list-style: none; margin: 0 0 18px; padding: 0; }
.tower-list li { display: flex; gap: 12px; padding: 12px 0; border-top: 1px solid #DCE7F7; }
.tower-list .ic { color: var(--violet); margin-top: .2em; }
.tower-acts { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 22px; }
.hours { width: 100%; border-collapse: collapse; margin-bottom: 22px; background: var(--cloud); border-radius: 22px; overflow: hidden; box-shadow: var(--shadow-soft); font-variant-numeric: tabular-nums; }
.hours caption { text-align: left; font-weight: 700; padding: 0 0 8px; }
.hours th, .hours td { padding: 10px 18px; text-align: left; border-top: 1px solid #E3ECF8; }
.hours th { font-weight: 600; }
.hours tr.today { background: #EEF0FF; }
.hours tr.today th, .hours tr.today td { font-weight: 700; }
.today-tag { color: var(--violet-ink); font-weight: 700; }

/* ---------- prose / landing ---------- */
.prose p, .prose li { max-width: 68ch; }
.land-acts { display: flex; flex-wrap: wrap; gap: 12px; }

/* ---------- footer ---------- */
.site-foot { position: relative; background: var(--ink); color: #E6EAF7; padding: 40px 0 34px; margin-top: 60px; }
.foot-clouds { position: absolute; left: 0; top: -60px; width: 100%; height: 62px; }
.foot-logo { height: 54px; width: auto; margin-bottom: 8px; }
.foot-note { font-size: .86rem; color: #B9C2E0; }
.foot-addr { display: flex; gap: .6em; align-items: flex-start; }
.foot-addr .ic { color: var(--sky); margin-top: .2em; }
.site-foot a { color: #fff; }
.foot-h { font: 400 1.35rem var(--display); color: #fff; }
.foot-links { list-style: none; margin: 0; padding: 0; }
.foot-links li { padding: 4px 0; }
.foot-small { font-size: .86rem; color: #B9C2E0; margin-top: 26px; border-top: 1px solid #343C63; padding-top: 18px; }
.site-foot ::selection { background: var(--plane); color: var(--ink); }

/* ---------- phone action bar ---------- */
.act-bar { display: none; }
@media (max-width: 991.98px) {
  .act-bar { display: grid; grid-template-columns: repeat(3, 1fr); position: fixed; left: 10px; right: 10px; bottom: 10px; z-index: 30; background: var(--cloud); border-radius: 999px; box-shadow: 0 10px 30px -8px rgba(29, 35, 64, .45); padding: 6px; }
  .act-bar a { display: flex; align-items: center; justify-content: center; gap: .4em; min-height: 48px; border-radius: 999px; color: var(--ink); font-weight: 700; text-decoration: none; }
  .act-bar a:first-child { background: var(--plane); }
  body { padding-bottom: 76px; }
}
@media print { .site-head, .act-bar, .sheet, .hero-sky, .site-foot { display: none !important; } }
.route-pp { position: absolute; right: -6px; top: 6px; transform: rotate(-12deg); z-index: 1; }
@media (max-width: 991.98px) { .route-pp { display: none; } }
@media (max-width: 991.98px) { .hero-sky g { display: none; } }
@media (max-width: 767.98px) { .band-sky { display: none; } .act-bar a { font-size: .95rem; gap: .3em; } }
