:root {
   --navy: #1a2b4a;
   --teal: #1fa39a;
   --coral: #f27a6b;
   --bg: #fff;
   --soft: #f5f7fa;
   --muted: #627089;
   --border: #e3e8ef;
   --radius: 14px;
   --shadow: 0 1px 2px rgba(26, 43, 74, .06), 0 8px 24px rgba(26, 43, 74, .08);
   --lift: 0 12px 32px rgba(26, 43, 74, .16)
}

* {
   box-sizing: border-box;
   margin: 0;
   padding: 0
}

html {
   scroll-behavior: smooth
}

body {
   font-family: "DM Sans", system-ui, sans-serif;
   color: var(--navy);
   background: var(--bg);
   line-height: 1.6
}

h1,
h2,
h3,
h4,
.logo {
   font-family: "Plus Jakarta Sans", sans-serif;
   line-height: 1.2
}

a {
   color: inherit;
   text-decoration: none
}

img {
   max-width: 100%;
   display: block
}

ol,
ul {
   list-style: none
}

.container {
   max-width: 1200px;
   margin: 0 auto;
   padding: 0 20px
}

.narrow {
   max-width: 800px
}

.center {
   text-align: center;
   margin-top: 32px
}

.accent {
   color: var(--teal)
}

.muted {
   color: var(--muted)
}

.small {
   font-size: .8rem
}

.hidden {
   display: none !important
}

/* ---------- icons (Material Symbols Rounded) ----------
   Usage: <span class="ms" data-icon="cardiology"></span>
   The glyph comes from the data-icon name via a ligature, so the markup
   stays empty and degrades to nothing if the font fails to load.

   The icon font above is pinned to FILL 0, which draws `star` as an OUTLINE.
   This 1.5 KB subset carries the FILL 1 master of the same icon, so ratings
   can show solid vs outline stars without inflating the 365 KB icon font. */
@font-face {
   font-family: "MS Star Solid";
   font-style: normal;
   font-weight: 400;
   font-display: block;
   src: url("https://fonts.gstatic.com/l/font?kit=syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDJ_vb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rIelXxeRKPkQato&skey=70ddea8fe54d532e&v=v375") format("woff2")
}

.ms {
   font-family: "Material Symbols Rounded";
   font-weight: 400;
   font-style: normal;
   line-height: 1;
   letter-spacing: normal;
   text-transform: none;
   white-space: nowrap;
   word-wrap: normal;
   direction: ltr;
   -webkit-font-feature-settings: "liga";
   font-feature-settings: "liga";
   -webkit-font-smoothing: antialiased;
   /* Blockify: adjacent inline .ms siblings get their generated text merged
      into a single shaping run, so only the first ligature fired and the rest
      rendered as literal "star" text. inline-block gives each its own run. */
   display: inline-block
}

.ms::before {
   content: attr(data-icon)
}

.ms-inline {
   font-size: .9em;
   vertical-align: -.05em
}

.pill .ms {
   margin-right: 6px
}

.stars .ms {
   font-size: 1.15rem
}

/* Solid star for the earned part of a rating; the remainder keeps the
   outline master. Usage: 4 filled + 1 outline = 4/5. */
.star-on {
   font-family: "MS Star Solid", "Material Symbols Rounded"
}

.topbar {
   background: var(--navy);
   color: #fff;
   font-size: .85rem;
   padding: 8px 0
}

.topbar .container {
   display: flex;
   justify-content: space-between;
   gap: 12px
}

.topbar a {
   color: var(--teal);
   font-weight: 700
}

.header {
   position: sticky;
   top: 0;
   z-index: 50;
   background: rgba(255, 255, 255, .95);
   backdrop-filter: blur(8px);
   border-bottom: 1px solid var(--border)
}

.header-inner {
   display: flex;
   align-items: center;
   gap: 24px;
   height: 72px
}

.logo {
   display: flex;
   align-items: center;
   gap: 10px;
   font-weight: 800;
   font-size: 1.2rem
}

.logo.light {
   color: #fff
}

.logo-mark {
   display: grid;
   place-items: center;
   width: 36px;
   height: 36px;
   border-radius: 10px;
   background: var(--teal);
   color: #fff
}

.nav {
   display: flex;
   gap: 24px;
   margin-left: auto;
   font-weight: 500
}

.nav a:hover,
.nav a.active {
   color: var(--teal)
}

/* Nav items must never be squeezed below their own text: the "More" item was
   shrinking 12px short, so its label + caret spilled out of the box and
   collided with "Contact". */
.nav > a,
.nav > .has-sub {
   flex-shrink: 0;
   white-space: nowrap
}

.menu-btn {
   display: none;
   margin-left: auto;
   background: none;
   border: 0;
   font-size: 1.6rem;
   cursor: pointer;
   color: var(--navy)
}

.btn {
   display: inline-flex;
   align-items: center;
   justify-content: center;
   gap: 8px;
   padding: 12px 22px;
   border-radius: 999px;
   font-weight: 700;
   border: 2px solid transparent;
   cursor: pointer;
   font: inherit;
   font-weight: 700;
   transition: .2s
}

.btn-primary {
   background: var(--teal);
   color: #fff
}

.btn-primary:hover {
   filter: brightness(.92);
   transform: translateY(-1px)
}

.btn-navy {
   background: var(--navy);
   color: #fff
}

.btn-navy:hover {
   background: var(--teal)
}

.btn-outline {
   border-color: var(--navy);
   color: var(--navy);
   background: transparent
}

.btn-outline:hover {
   background: var(--navy);
   color: #fff
}

.btn:disabled {
   opacity: .6;
   cursor: wait
}

.btn.small {
   padding: 8px 14px;
   font-size: .85rem
}

.full {
   width: 100%;
   margin-top: 16px
}

.hero {
   background: var(--soft);
   padding: 64px 0
}

.hero-grid {
   display: grid;
   grid-template-columns: 1fr 1fr;
   gap: 48px;
   align-items: center
}

.pill {
   display: inline-block;
   background: rgba(31, 163, 154, .12);
   color: var(--teal);
   padding: 6px 16px;
   border-radius: 999px;
   font-weight: 700;
   font-size: .85rem
}

.hero h1 {
   font-size: clamp(2.2rem, 5vw, 3.6rem);
   margin: 20px 0
}

.lead {
   font-size: 1.1rem;
   color: var(--muted);
   max-width: 520px
}

.actions {
   display: flex;
   flex-wrap: wrap;
   gap: 12px;
   margin-top: 28px
}

.badges {
   display: grid;
   grid-template-columns: repeat(3, 1fr);
   gap: 12px;
   margin-top: 36px
}

.badges div {
   background: #fff;
   border-radius: var(--radius);
   padding: 16px;
   box-shadow: var(--shadow)
}

.badges dt {
   font-weight: 800;
   font-size: 1.1rem
}

.badges dd {
   font-size: .8rem;
   color: var(--muted)
}

.slider {
   position: relative
}

.slides {
   position: relative;
   aspect-ratio: 4/5;
   border-radius: 24px;
   overflow: hidden;
   box-shadow: var(--lift)
}

.slide {
   position: absolute;
   inset: 0;
   opacity: 0;
   transition: opacity .7s
}

.slide.active {
   opacity: 1
}

.slide img {
   width: 100%;
   height: 100%;
   object-fit: cover
}

.slide-cap {
   position: absolute;
   inset: auto 0 0 0;
   padding: 80px 24px 24px;
   background: linear-gradient(transparent, rgba(26, 43, 74, .9));
   color: #fff;
   display: flex;
   flex-direction: column
}

.slide-cap strong {
   font-size: 1.3rem
}

.sl-btn {
   position: absolute;
   top: 45%;
   width: 42px;
   height: 42px;
   border-radius: 50%;
   border: 0;
   background: rgba(255, 255, 255, .9);
   font-size: 1.6rem;
   cursor: pointer;
   color: var(--navy);
   box-shadow: var(--shadow);
   display: grid;
   place-items: center
}

.sl-btn.prev {
   left: 12px
}

.sl-btn.next {
   right: 12px
}

.dots {
   display: flex;
   gap: 8px;
   margin-top: 16px
}

.dot {
   width: 8px;
   height: 8px;
   border-radius: 999px;
   border: 0;
   background: var(--border);
   cursor: pointer;
   transition: .3s
}

.dot.active {
   width: 32px;
   background: var(--teal)
}

.stats {
   background: var(--navy);
   color: #fff;
   padding: 48px 0
}

.stats-grid {
   display: grid;
   grid-template-columns: repeat(4, 1fr);
   text-align: center;
   gap: 24px
}

.count {
   font-size: 2.4rem;
   font-weight: 800;
   color: var(--teal);
   font-family: "Plus Jakarta Sans"
}

.stats span {
   opacity: .8;
   font-size: .9rem
}

.section {
   padding: 88px 0
}

.section.alt,
.banner {
   background: var(--soft)
}

.banner {
   padding: 64px 0
}

.banner h1 {
   font-size: 2.6rem;
   margin: 10px 0
}

.section.navy {
   background: var(--navy);
   color: #fff
}

.section.navy .heading h2 {
   color: #fff
}

.heading {
   text-align: center;
   max-width: 640px;
   margin: 0 auto 48px
}

.heading.left {
   text-align: left;
   max-width: none;
   margin-left: 0;
   margin-right: 0
}

.eyebrow {
   text-transform: uppercase;
   letter-spacing: .2em;
   font-size: .8rem;
   font-weight: 700;
   color: var(--teal)
}

.heading h2 {
   font-size: clamp(1.8rem, 3vw, 2.4rem);
   margin-top: 10px
}

.heading p:not(.eyebrow) {
   color: var(--muted);
   margin-top: 12px
}

.grid2 {
   display: grid;
   grid-template-columns: 1fr 1fr;
   gap: 20px
}

.grid2.wide {
   gap: 28px
}

.grid3 {
   display: grid;
   grid-template-columns: repeat(3, 1fr);
   gap: 24px
}

.grid4 {
   display: grid;
   grid-template-columns: repeat(4, 1fr);
   gap: 24px
}

.card {
   background: #fff;
   border: 1px solid var(--border);
   border-radius: 20px;
   box-shadow: var(--shadow);
   transition: .25s
}

.card.pad,
.pad {
   padding: 28px
}

.card:hover {
   box-shadow: var(--lift)
}

.card h3 {
   margin: 12px 0 6px
}

.num {
   display: grid;
   place-items: center;
   width: 40px;
   height: 40px;
   border-radius: 50%;
   background: var(--teal);
   color: #fff;
   font-weight: 800
}

.icon {
   display: grid;
   place-items: center;
   width: 52px;
   height: 52px;
   border-radius: 16px;
   background: rgba(31, 163, 154, .12);
   color: var(--teal);
   font-size: 1.5rem
}

.link {
   display: inline-block;
   margin-top: 14px;
   color: var(--teal);
   font-weight: 700
}

.doc {
   overflow: hidden
}

.doc img {
   aspect-ratio: 1;
   object-fit: cover;
   width: 100%
}

.chip {
   display: inline-block;
   background: var(--soft);
   padding: 4px 12px;
   border-radius: 999px;
   font-size: .75rem;
   font-weight: 700;
   margin: 8px 0
}

.quote {
   background: rgba(255, 255, 255, .06);
   border: 1px solid rgba(255, 255, 255, .15);
   border-radius: 20px;
   padding: 28px
}

.quote blockquote {
   opacity: .9
}

.stars {
   color: var(--coral);
   margin: 12px 0
}

.quote span {
   opacity: .7;
   font-size: .85rem
}

.book-grid {
   display: grid;
   grid-template-columns: 1fr 1.2fr;
   gap: 40px
}

.book-grid .heading {
   text-align: left;
   margin: 0
}

.ticks li {
   padding-left: 28px;
   position: relative;
   margin: 10px 0;
   color: var(--muted)
}

.ticks li::before {
   content: "✓";
   position: absolute;
   left: 0;
   color: var(--teal);
   font-weight: 800
}

.form {
   padding: 32px
}

.form h3,
.form h2 {
   margin: 10px 0
}

.form label {
   display: flex;
   flex-direction: column;
   gap: 6px;
   font-weight: 600;
   font-size: .9rem;
   margin-bottom: 4px
}

.form .grid2 {
   margin: 24px 0;
}

.err:empty {
   display: none;
}

input,
select,
textarea {
   font: inherit;
   padding: 12px 14px;
   border: 1px solid var(--border);
   border-radius: 12px;
   background: #fff;
   color: var(--navy);
   width: 100%
}

input:focus,
select:focus,
textarea:focus {
   outline: 2px solid var(--teal);
   border-color: transparent
}

input.small {
   padding: 8px 10px;
}

.invalid {
   border-color: var(--coral)
}

.err {
   color: var(--coral);
   font-size: .78rem;
   font-weight: 600;
   min-height: 1em
}

.form .btn {
   margin: 12px 0
}

.success {
   padding: 40px;
   text-align: center
}

.check {
   width: 64px;
   height: 64px;
   margin: 0 auto;
   border-radius: 50%;
   background: var(--teal);
   color: #fff;
   display: grid;
   place-items: center;
   font-size: 2rem
}

.success p {
   color: var(--muted);
   margin: 12px 0 20px
}

.faq-item {
   border-bottom: 1px solid var(--border)
}

.faq-q {
   width: 100%;
   display: flex;
   justify-content: space-between;
   background: none;
   border: 0;
   padding: 20px 0;
   font: inherit;
   font-weight: 700;
   font-size: 1.05rem;
   color: var(--navy);
   cursor: pointer;
   text-align: left
}

.faq-q span {
   color: var(--teal);
   font-size: 1.4rem;
   transition: .3s
}

.faq-q[aria-expanded="true"] span {
   transform: rotate(45deg)
}

.faq-a {
   max-height: 0;
   overflow: hidden;
   transition: max-height .35s
}

.faq-a p {
   padding-bottom: 20px;
   color: var(--muted)
}

.filters {
   display: flex;
   flex-wrap: wrap;
   gap: 10px;
   justify-content: center;
   margin-bottom: 36px
}

.chip-btn {
   border: 1px solid var(--border);
   background: #fff;
   padding: 8px 18px;
   border-radius: 999px;
   cursor: pointer;
   font: inherit;
   font-weight: 600
}

.chip-btn.active {
   background: var(--navy);
   color: #fff;
   border-color: var(--navy)
}

.prep label {
   display: flex;
   gap: 10px;
   align-items: center;
   cursor: pointer
}

.prep input {
   width: 18px;
   height: 18px;
   accent-color: var(--teal)
}

.prep.done {
   border-color: var(--teal);
   background: rgba(31, 163, 154, .05)
}

iframe {
   width: 100%;
   height: 260px;
   border: 0;
   border-radius: 14px;
   margin-top: 16px
}

.footer {
   background: var(--navy);
   color: rgba(255, 255, 255, .8);
   padding: 64px 0 24px
}

.footer-grid {
   display: grid;
   grid-template-columns: 1.6fr 1fr 1fr 1.1fr 1.4fr;
   gap: 28px
}

.footer h4 {
   color: #fff;
   margin-bottom: 12px
}

.footer a:not(.logo) {
   display: block;
   margin: 6px 0
}

.footer a:hover {
   color: var(--teal)
}

.footer p {
   margin-top: 12px
}

.newsletter {
   display: flex;
   gap: 8px;
   margin-top: 12px;
}

.newsletter .btn {
   padding: 10px 16px
}

.footer .accred {
   display: flex;
   flex-wrap: wrap;
   gap: 8px;
   margin-top: 16px
}

.footer .accred span {
   border: 1px solid rgba(255, 255, 255, .2);
   border-radius: 999px;
   padding: 4px 12px;
   font-size: .72rem;
   font-weight: 700
}

.footer .hours-mini {
   font-size: .9rem
}

.footer .hours-mini b {
   color: #fff;
   display: block;
   margin-bottom: 2px
}

.footer .hours-mini p {
   margin: 6px 0
}

.copy {
   border-top: 1px solid rgba(255, 255, 255, .15);
   margin-top: 40px;
   padding-top: 20px;
   font-size: .85rem
}

.to-top {
   position: fixed;
   right: 20px;
   bottom: 20px;
   width: 46px;
   height: 46px;
   border-radius: 50%;
   border: 0;
   background: var(--teal);
   color: #fff;
   font-size: 1.3rem;
   cursor: pointer;
   opacity: 0;
   pointer-events: none;
   transition: .3s;
   box-shadow: var(--lift);
   display: grid;
   place-items: center
}

.to-top.show {
   opacity: 1;
   pointer-events: auto
}

.reveal {
   opacity: 0;
   transform: translateY(20px);
   transition: opacity .6s, transform .6s
}

.reveal.in {
   opacity: 1;
   transform: none
}

/* Nav collapses to the drawer below 1025px. The horizontal header needs
   ~988px (logo 190 + nav 515 + CTA 195 + gaps 48 + container padding 40),
   so the old 900px cut let the links collide before they collapsed.
   Keep in sync with min-width:1025px below and the matchMedia check in
   js/main.js. */
@media (max-width: 1024px) {

   .hero-grid,
   .book-grid,
   .grid2,
   .footer-grid {
      grid-template-columns: 1fr
   }

   .grid3,
   .grid4,
   .stats-grid {
      grid-template-columns: 1fr 1fr
   }

   .menu-btn {
      display: block;
      margin-left: 0
   }

   .hide-sm {
      display: none
   }

   /* Primary CTA stays reachable while the nav is collapsed. Compact so the
      logo + CTA + burger still fit a 320px viewport; margin-left:auto pulls
      both to the right now that the burger no longer claims the free space. */
   .cta-book {
      display: inline-flex;
      margin-left: auto;
      padding: 9px 14px;
      font-size: .8rem;
      gap: 6px;
      white-space: nowrap
   }

   .nav {
      display: none;
      position: absolute;
      top: 72px;
      left: 0;
      right: 0;
      background: #fff;
      flex-direction: column;
      padding: 20px;
      border-bottom: 1px solid var(--border);
      gap: 14px
   }

   .nav.open {
      display: flex
   }

   .topbar span {
      display: none
   }
}

@media (max-width:560px) {

   .grid3,
   .grid4,
   .badges {
      grid-template-columns: 1fr
   }
}

/* ---------- expandable components ---------- */
[id] {
   scroll-margin-top: 90px
}

.section.tight {
   padding: 56px 0
}

.btn-white {
   background: #fff;
   color: var(--navy)
}

.btn-white:hover {
   filter: brightness(.96);
   transform: translateY(-1px)
}

/* nav submenu */
.nav .has-sub {
   position: relative;
   --sub-gap: 18px
}

.nav .has-sub>.top {
   display: flex;
   align-items: center;
   gap: 5px
}

.caret {
   font-size: .8rem;
   opacity: .7;
   transition: .25s
}

.has-sub:hover .caret,
.has-sub.open .caret {
   transform: rotate(180deg)
}

.submenu {
   position: absolute;
   top: calc(100% + var(--sub-gap));
   /* Right-aligned: "More" sits next to the Book CTA, so a left-anchored panel
      reached ~44px into the button and the links painted over each other. */
   left: auto;
   right: -14px;
   min-width: 224px;
   background: #fff;
   border: 1px solid var(--border);
   border-radius: 16px;
   box-shadow: var(--lift);
   padding: 10px;
   display: none;
   flex-direction: column
}

.has-sub:hover .submenu,
.has-sub:focus-within .submenu,
.has-sub.open .submenu {
   display: flex
}

/* Fade only where it is not re-triggered by the pointer. On touch layouts the
   panel is driven by .open, so animating on :hover re-faded it on every
   hover/unhover of the "More" label. */
@media (min-width: 1025px) {

   .has-sub:hover .submenu,
   .has-sub:focus-within .submenu {
      animation: subIn .18s ease
   }
}

.has-sub.open .submenu {
   animation: subIn .18s ease
}

/* Transparent bridge across the gap: without it the pointer leaves .has-sub
   on the way down to the panel and :hover drops, closing the menu. */
.nav .has-sub::after {
   content: "";
   position: absolute;
   top: 100%;
   left: -12px;
   right: -12px;
   height: var(--sub-gap)
}

@keyframes subIn {
   from {
      opacity: 0;
      transform: translateY(-6px)
   }

   to {
      opacity: 1;
      transform: none
   }
}

.submenu a {
   padding: 9px 12px;
   border-radius: 10px;
   font-size: .92rem;
   font-weight: 500;
   color: var(--navy)
}

.submenu a:hover {
   background: var(--soft);
   color: var(--teal)
}

.submenu a::after {
   content: "→";
   float: right;
   opacity: .5
}

.status {
   font-weight: 700
}

.status b {
   color: #5fd6c9
}

.status.closed b {
   color: var(--coral)
}

/* split feature */
.split {
   display: grid;
   grid-template-columns: 1fr 1fr;
   gap: 48px;
   align-items: center
}

.split.flip .media {
   order: -1
}

.split .lead {
   max-width: none
}

.split .actions {
   margin-top: 24px
}

.media {
   border-radius: 24px;
   overflow: hidden;
   box-shadow: var(--lift);
   position: relative;
   min-height: 280px;
   display: grid;
   place-items: center;
   color: #fff
}

.media img {
   position: absolute;
   inset: 0;
   width: 100%;
   height: 100%;
   object-fit: cover
}

.media .ph {
   position: absolute;
   inset: 0;
   display: grid;
   place-items: center
}

.media .stat {
   position: relative;
   text-align: center;
   text-shadow: 0 2px 14px rgba(0, 0, 0, .35)
}

.media .stat b {
   display: block;
   font-family: "Plus Jakarta Sans";
   font-size: clamp(2.4rem, 5vw, 3.4rem);
   line-height: 1
}

.media .stat span {
   font-size: .9rem;
   opacity: .9
}

.g1 {
   background: linear-gradient(135deg, var(--teal), #116560)
}

.g2 {
   background: linear-gradient(135deg, var(--navy), #2f4a76)
}

.g3 {
   background: linear-gradient(135deg, var(--coral), #b8503f)
}

.g4 {
   background: linear-gradient(135deg, #3aa8a0, #0f5f59)
}

h2 {
   margin: 10px 0;
}

/* panels */
.callout {
   background: rgba(31, 163, 154, .08);
   border: 1px solid rgba(31, 163, 154, .25);
   border-radius: 24px;
   padding: 40px
}

.callout.navy {
   background: var(--navy);
   color: #fff;
   border-color: var(--navy)
}

.callout.coral {
   background: rgba(242, 122, 107, .1);
   border-color: rgba(242, 122, 107, .3)
}

.callout h2,
.callout h3 {
   color: inherit
}

.alert {
   background: rgba(242, 122, 107, .12);
   border: 1px solid rgba(242, 122, 107, .35);
   border-radius: 16px;
   padding: 18px 22px
}

.alert strong {
   color: #c85a4b
}

.alert.teal {
   background: rgba(31, 163, 154, .1);
   border-color: rgba(31, 163, 154, .3)
}

.alert.teal strong {
   color: var(--teal)
}

.tag {
   display: inline-block;
   background: var(--soft);
   border: 1px solid var(--border);
   padding: 5px 14px;
   border-radius: 999px;
   font-size: .78rem;
   font-weight: 700
}

.tag.teal {
   background: rgba(31, 163, 154, .12);
   color: var(--teal);
   border-color: transparent
}

.tag.coral {
   background: rgba(242, 122, 107, .14);
   color: #c85a4b;
   border-color: transparent
}

.tag.dark {
   background: var(--navy);
   color: #fff;
   border-color: var(--navy)
}

.tag-row {
   display: flex;
   flex-wrap: wrap;
   gap: 10px;
   margin-top: 18px
}

.link-row {
   display: grid;
   grid-template-columns: repeat(3, 1fr);
   gap: 20px;
   margin-top: 28px
}

.link-row a {
   background: rgba(255, 255, 255, .08);
   border: 1px solid rgba(255, 255, 255, .18);
   border-radius: 16px;
   padding: 18px 20px;
   font-weight: 700;
   transition: .2s
}

.link-row a:hover {
   background: var(--teal);
   border-color: var(--teal);
   transform: translateY(-2px)
}

.link-row span {
   display: block;
   font-weight: 400;
   font-size: .85rem;
   opacity: .75;
   margin-top: 4px
}

/* pricing */
.plan {
   position: relative;
   padding: 32px;
   display: flex;
   flex-direction: column
}

.plan .amount {
   font-family: "Plus Jakarta Sans";
   font-size: 2.1rem;
   font-weight: 800;
   margin: 8px 0 0
}

.plan .per {
   color: var(--muted);
   font-size: .85rem;
   margin-bottom: 4px
}

.plan .ticks {
   margin: 20px 0 24px
}

.plan .ticks li {
   font-size: .92rem;
   margin: 8px 0
}

.plan .btn {
   margin-top: auto
}

.plan.featured {
   border-color: var(--teal);
   box-shadow: var(--lift)
}

.plan.featured::after {
   content: "Most chosen";
   position: absolute;
   top: -13px;
   left: 32px;
   background: var(--teal);
   color: #fff;
   font-size: .7rem;
   font-weight: 800;
   letter-spacing: .1em;
   text-transform: uppercase;
   padding: 5px 12px;
   border-radius: 999px
}

.plan .strike {
   color: var(--muted);
   text-decoration: line-through;
   font-size: 1.05rem;
   margin-right: 10px;
   font-weight: 600
}

/* facility gallery */
.gallery {
   display: grid;
   grid-template-columns: 2fr 1fr 1fr;
   gap: 16px
}

.gallery figure {
   position: relative;
   border-radius: 18px;
   overflow: hidden;
   min-height: 180px;
   display: grid;
   place-items: center;
   background: linear-gradient(135deg, var(--navy), #2c4571);
   color: #fff;
   padding: 20px;
   text-align: center;
   box-shadow: var(--shadow);
   border: 0
}

[data-zoom],
.gallery figure[data-zoom] {
   cursor: zoom-in
}

.gallery .wide {
   grid-row: span 2;
   min-height: 376px
}

.gallery .t2 {
   background: linear-gradient(135deg, var(--teal), #0f5f59)
}

.gallery .t3 {
   background: linear-gradient(135deg, var(--coral), #b8503f)
}

.gallery img {
   position: absolute;
   inset: 0;
   width: 100%;
   height: 100%;
   object-fit: cover;
   transition: .4s
}

.gallery figure:hover img {
   transform: scale(1.04)
}

.gallery .sym {
   font-size: 2.2rem;
   position: relative
}

.gallery .lab {
   position: absolute;
   left: 0;
   right: 0;
   bottom: 0;
   padding: 30px 18px 14px;
   background: linear-gradient(transparent, rgba(26, 43, 74, .88));
   font-weight: 700;
   font-size: .95rem
}

.gallery .zoom {
   position: absolute;
   top: 12px;
   right: 12px;
   width: 32px;
   height: 32px;
   border-radius: 50%;
   background: rgba(255, 255, 255, .9);
   color: var(--navy);
   display: grid;
   place-items: center;
   font-size: 1rem;
   opacity: 0;
   transition: .25s
}

.gallery figure:hover .zoom {
   opacity: 1
}

/* timeline */
.timeline {
   position: relative;
   padding-left: 36px
}

.timeline::before {
   content: "";
   position: absolute;
   left: 11px;
   top: 8px;
   bottom: 8px;
   width: 2px;
   background: var(--border)
}

.tl-item {
   position: relative;
   margin-bottom: 28px
}

.tl-item:last-child {
   margin-bottom: 0
}

.tl-item::before {
   content: "";
   position: absolute;
   left: -36px;
   top: 5px;
   width: 22px;
   height: 22px;
   border-radius: 50%;
   background: var(--teal);
   border: 4px solid var(--bg);
   box-shadow: 0 0 0 2px var(--teal)
}

.tl-item h4 {
   margin-bottom: 4px
}

.tl-item p {
   color: var(--muted)
}

.tl-item .when {
   display: inline-block;
   background: rgba(31, 163, 154, .12);
   color: var(--teal);
   font-size: .7rem;
   font-weight: 800;
   text-transform: uppercase;
   letter-spacing: .1em;
   padding: 3px 11px;
   border-radius: 999px;
   margin-bottom: 8px
}

/* faces & metrics */
.avatar {
   width: 72px;
   height: 72px;
   border-radius: 50%;
   display: grid;
   place-items: center;
   background: linear-gradient(135deg, var(--navy), #2f4a76);
   color: #fff;
   font-weight: 800;
   font-size: 1.25rem;
   margin-bottom: 14px
}

.avatar.a2 {
   background: linear-gradient(135deg, var(--teal), #0f5f59)
}

.avatar.a3 {
   background: linear-gradient(135deg, var(--coral), #b8503f)
}

.avatar.a4 {
   background: linear-gradient(135deg, #2f4a76, #5a7fb5)
}

.avatar+h3 {
   margin-top: 0
}

.kpi {
   background: var(--soft);
   border: 1px solid var(--border);
   border-radius: 20px;
   padding: 26px
}

.kpi b {
   display: block;
   font-family: "Plus Jakarta Sans";
   font-size: 1.9rem;
   color: var(--teal);
   line-height: 1.1
}

.kpi span {
   color: var(--muted);
   font-size: .88rem
}

.section.navy .kpi {
   background: rgba(255, 255, 255, .06);
   border-color: rgba(255, 255, 255, .15)
}

.section.navy .kpi span {
   color: rgba(255, 255, 255, .72)
}

.quote-wide {
   background: rgba(255, 255, 255, .06);
   border: 1px solid rgba(255, 255, 255, .15);
   border-radius: 24px;
   padding: 44px;
   text-align: center
}

.quote-wide blockquote {
   font-family: "Plus Jakarta Sans";
   font-size: clamp(1.15rem, 2.4vw, 1.6rem);
   line-height: 1.45;
   max-width: 780px;
   margin: 0 auto
}

/* posts */
.post {
   display: flex;
   flex-direction: column;
   overflow: hidden
}

.post .ph {
   aspect-ratio: 16/10;
   display: grid;
   place-items: center;
   font-size: 2.4rem;
   position: relative
}

.post .ph .cat {
   position: absolute;
   left: 16px;
   top: 16px;
   background: rgba(255, 255, 255, .92);
   color: var(--navy);
   font-size: .68rem;
   font-weight: 800;
   text-transform: uppercase;
   letter-spacing: .1em;
   padding: 4px 11px;
   border-radius: 999px
}

.post .body {
   padding: 24px;
   display: flex;
   flex-direction: column;
   flex: 1
}

.post h3 {
   margin: 8px 0 6px
}

.post .by {
   font-size: .8rem;
   color: var(--muted);
   margin-top: 16px
}

.post .link {
   margin-top: auto;
   padding-top: 16px
}

.post.feature {
   grid-column: span 2;
   flex-direction: row
}

.post.feature .ph {
   aspect-ratio: auto;
   flex: 1
}

.post.feature .body {
   flex: 1.2
}

.post.feature .body h3 {
   font-size: clamp(1.3rem, 2.6vw, 1.8rem);
   margin: 8px 0 12px
}

/* jobs */
.role {
   display: flex;
   gap: 20px;
   align-items: center;
   flex-wrap: wrap;
   padding: 14px 24px;
}

.role .grow {
   flex: 1;
   min-width: 220px
}

.role h3 {
   margin: 0 0 4px
}

.role .meta {
   color: var(--muted);
   font-size: .88rem
}

.role .sal {
   font-family: "Plus Jakarta Sans";
   font-weight: 800;
   color: var(--teal);
   white-space: nowrap
}

/* downloads */
.download {
   gap: 18px;
   align-items: center;
   flex-wrap: wrap;
   padding: 14px 20px;
}

.download>* {
   margin-bottom: 15px;
}

.download .grow {
   flex: 1;
   min-width: 210px
}

.download .ico {
   width: 46px;
   height: 46px;
   border-radius: 12px;
   background: rgba(31, 163, 154, .12);
   color: var(--teal);
   display: grid;
   place-items: center;
   font-size: 1.2rem;
   flex: none
}

.download h3 {
   margin: 0 0 2px;
   font-size: 1.05rem
}

.download p {
   margin: 0;
   font-size: .85rem;
   color: var(--muted)
}

/* hours table */
.tbl {
   width: 100%;
   border-collapse: collapse
}

.tbl th,
.tbl td {
   padding: 14px 12px;
   text-align: left;
   border-bottom: 1px solid var(--border)
}

.tbl th {
   font-size: .76rem;
   text-transform: uppercase;
   letter-spacing: .14em;
   color: var(--muted)
}

.tbl tr:last-child td {
   border-bottom: 0
}

.tbl .day {
   font-weight: 700
}

.tbl tr.today {
   background: rgba(31, 163, 154, .07)
}

.tbl tr.today .day::after {
   content: " · today";
   color: var(--teal);
   font-size: .74rem;
   font-weight: 800;
   letter-spacing: .06em
}

.pill-open,
.pill-shut {
   font-size: .72rem;
   font-weight: 800;
   padding: 3px 11px;
   border-radius: 999px;
   white-space: nowrap
}

.pill-open {
   background: rgba(31, 163, 154, .14);
   color: var(--teal)
}

.pill-shut {
   background: rgba(98, 112, 137, .14);
   color: var(--muted)
}

/* sidebar list */
.side-list li {
   border-bottom: 1px solid var(--border);
   padding: 12px 0;
   display: flex;
   justify-content: space-between;
   gap: 14px;
   align-items: baseline
}

.side-list li:last-child {
   border-bottom: 0
}

.side-list a {
   font-weight: 600;
   font-size: .94rem
}

.side-list a:hover {
   color: var(--teal)
}

.side-list span {
   font-size: .76rem;
   color: var(--muted);
   flex: none
}

.side-cols {
   display: grid;
   grid-template-columns: 1fr 320px;
   gap: 40px;
   align-items: start
}

.sticky {
   position: sticky;
   top: 96px
}

/* department picker */
.dept-pick {
   display: grid;
   grid-template-columns: repeat(6, 1fr);
   gap: 12px
}

.dept-pick a {
   display: block;
   text-align: center;
   padding: 20px 12px;
   border-radius: 16px;
   background: #fff;
   border: 1px solid var(--border);
   font-weight: 700;
   font-size: .88rem;
   box-shadow: var(--shadow);
   transition: .2s
}

.dept-pick a:hover {
   transform: translateY(-3px);
   border-color: var(--teal);
   color: var(--teal)
}

.dept-pick span {
   display: block;
   font-size: 1.5rem;
   margin-bottom: 8px
}

/* pros */
.pros {
   display: grid;
   grid-template-columns: repeat(2, 1fr);
   gap: 14px
}

.pros li {
   background: var(--soft);
   border-radius: 14px;
   padding: 16px 18px;
   font-weight: 600
}

.pros li b {
   display: block;
   margin-bottom: 3px;
   color: var(--navy);
}

.pros li span {
   display: block;
   color: var(--muted);
   font-weight: 400;
   font-size: .86rem
}

/* closing CTA */
.cta {
   background: linear-gradient(135deg, var(--navy), #24406b);
   color: #fff;
   padding: 64px 0
}

.cta h2 {
   font-size: clamp(1.7rem, 3vw, 2.3rem)
}

.cta p {
   opacity: .82;
   max-width: 580px;
   margin: 12px auto 26px
}

.cta .actions {
   justify-content: center;
   margin-top: 0
}

.cta .btn-outline {
   border-color: rgba(255, 255, 255, .7);
   color: #fff
}

.cta .btn-outline:hover {
   background: #fff;
   color: var(--navy)
}

.cta .eyebrow {
   color: #5fd6c9
}

.cta .link-row {
   grid-template-columns: repeat(3, 1fr);
   max-width: 820px;
   margin: 40px auto 0
}

/* lightbox */
.lightbox {
   position: fixed;
   inset: 0;
   background: rgba(12, 22, 40, .92);
   display: grid;
   place-items: center;
   z-index: 200;
   padding: 24px
}

.lightbox img {
   max-width: min(900px, 92vw);
   max-height: 82vh;
   border-radius: 16px;
   box-shadow: var(--lift);
   display: block
}

.lightbox .lb-cap {
   color: #fff;
   text-align: center;
   margin: 14px 0 0;
   font-weight: 600
}

.lightbox .lb-close {
   position: absolute;
   top: 20px;
   right: 24px;
   width: 44px;
   height: 44px;
   border-radius: 50%;
   border: 0;
   background: rgba(255, 255, 255, .16);
   color: #fff;
   font-size: 1.5rem;
   cursor: pointer;
   line-height: 1
}

@media (max-width: 1024px) {

   .split,
   .gallery,
   .side-cols {
      grid-template-columns: 1fr
   }

   .gallery .wide {
      grid-row: auto;
      min-height: 200px
   }

   .dept-pick {
      grid-template-columns: repeat(3, 1fr)
   }

   .post.feature {
      grid-column: auto;
      flex-direction: column
   }

   .post.feature .ph {
      aspect-ratio: 16/10
   }

   .sticky {
      position: static
   }

   .submenu {
      position: static;
      display: none;
      flex-direction: column;
      box-shadow: none;
      border: 0;
      padding: 0 0 0 16px;
      min-width: 0;
      background: var(--soft);
      border-radius: 12px
   }

   /* Beats the base :hover/:focus-within rules on specificity order, so the
      panel stays closed until the JS toggles .open on tap. */
   .has-sub:hover .submenu,
   .has-sub:focus-within .submenu {
      display: none
   }

   .has-sub.open .submenu {
      display: flex
   }

   .submenu::before {
      color: var(--muted)
   }

   .submenu a::after {
      display: none
   }

   .nav .has-sub::after {
      display: none
   }

   /* Keep the caret on touch layouts: it is the only cue that the "More"
      row expands, since there is no hover to reveal the panel. */
   .caret {
      display: block;
      font-size: .9rem
   }

   .link-row {
      grid-template-columns: 1fr
   }

   /* Same specificity as .cta .link-row so the 3-column CTA row actually
      collapses on phones; media queries add no specificity on their own. */
   .cta .link-row {
      grid-template-columns: 1fr;
      max-width: none
   }
}

@media (max-width:560px) {
   .pros {
      grid-template-columns: 1fr
   }

   .dept-pick {
      grid-template-columns: repeat(2, 1fr)
   }

   .gallery {
      grid-template-columns: 1fr 1fr
   }
}

/* Narrow phones: the wordmark + CTA + burger no longer fit one row at 320px,
   so tighten the header instead of letting it scroll sideways. */
@media (max-width: 400px) {
   .header-inner {
      gap: 10px
   }

   .logo {
      font-size: 1rem;
      gap: 7px
   }

   .logo-mark {
      width: 30px;
      height: 30px;
      border-radius: 8px
   }

   .cta-book {
      padding: 8px 11px;
      font-size: .74rem
   }

   .menu-btn {
      font-size: 1.35rem
   }
}

@media (prefers-reduced-motion:reduce) {
   * {
      transition: none !important;
      animation: none !important
   }

   .reveal {
      opacity: 1;
      transform: none
   }
}

/* ---------- utilities ---------- */

.my-10 {
   margin: 10px 0
}