/* YANGPU HEALTH - standalone local website, no external stylesheets or CDNs */
:root {
  --ink: #24332d;
  --muted: #6d7771;
  --deep: #163c33;
  --dark: #0e2a24;
  --cream: #f8f6f1;
  --warm: #f0ede7;
  --paper: #fffefc;
  --line: #deded5;
  --sage: #dfe7df;
  --gold: #d5b991;
  --serif: "Iowan Old Style", "Baskerville", "Palatino Linotype", "Songti SC", "Noto Serif CJK SC", Georgia, serif;
  --sans: "Avenir Next", "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif;
  --gutter: clamp(24px, 5.5vw, 100px);
  --container: 1430px;
  --header-h: 86px;
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 22px); }
body { margin: 0; overflow-x: hidden; font-family: var(--sans); font-weight: 400; color: var(--ink); background: var(--cream); -webkit-font-smoothing: antialiased; }
body.dialog-open { overflow: hidden; }
a { text-decoration: none; color: inherit; }
button, input, textarea, select { font: inherit; }
button, select { cursor: pointer; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid #b9925b; outline-offset: 3px; }
button { -webkit-tap-highlight-color: transparent; }
img { display: block; max-width: 100%; }
[hidden] { display: none !important; }
.container { width: min(100% - 2 * var(--gutter), var(--container)); margin-inline: auto; }
.section-pad { padding-block: clamp(85px, 10vw, 155px); }
.skip-link { position: fixed; top: -65px; left: 24px; background: white; color: var(--dark); padding: 12px 20px; z-index: 999; }
.skip-link:focus { top: 16px; }
::selection { background: var(--gold); color: var(--dark); }

/* Header */
.site-header { z-index: 100; display: flex; align-items: center; justify-content: space-between; gap: 30px; padding: 0 var(--gutter); width: 100%; height: var(--header-h); position: absolute; left: 0; top: 0; color: white; border-bottom: 1px solid rgba(255,255,255,.22); transition: color .3s, background .3s, box-shadow .3s; }
.site-header.is-scrolled { position: fixed; height: 76px; color: var(--dark); background: rgba(250,248,243,.97); box-shadow: 0 7px 34px rgba(0,0,0,.075); border-color: transparent; backdrop-filter: blur(15px); }
/* The supplied original logo has deep green lettering. A subtle ivory panel makes
   its exact colours readable above the dark hero photography and the dark footer. */
.brand { display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; min-width:0; background:var(--cream); border-radius:3px; padding:0 4px; }
.brand-logo { display:block; width:184px; height:64px; object-fit:contain; }
.site-header.is-scrolled .brand { background:var(--cream); }
.desktop-nav { display: flex; align-items: center; gap: clamp(15px,2.2vw,35px); margin-left: auto; }
.desktop-nav a { white-space: nowrap; position: relative; opacity: .92; font-size: 12px; letter-spacing: .035em; }
.desktop-nav a::after { content:""; position:absolute; left:0; bottom:-9px; height:1px; width:0; background:currentColor; transition:width .25s; }
.desktop-nav a:hover::after, .desktop-nav a:focus-visible::after { width:100%; }
.header-right { display: flex; align-items: center; gap: clamp(12px,1.6vw,26px); margin-left: clamp(0px,1.5vw,14px); }
.language-picker { display: flex; align-items: center; gap: 4px; font-size: 12px; }
.globe-icon { font-size: 22px; font-weight: 300; line-height:1; }
.language-picker select { background: none; border: 0; color: inherit; font-family: var(--sans); font-weight: 600; font-size: 12px; padding: 5px 4px; outline-offset: 0; }
.language-picker option { color: var(--dark); background: white; }
.header-contact { border: 1px solid rgba(255,255,255,.85); font-size: 11px; font-weight: 600; padding: 13px 19px; text-align: center; transition: background .2s, color .2s, border-color .2s; white-space: nowrap; }
.header-contact:hover { color: var(--dark); background: white; }
.site-header.is-scrolled .header-contact { border-color: var(--dark); }
.site-header.is-scrolled .header-contact:hover { color: white; background: var(--dark); }
.menu-toggle { display: none; width: 38px; height: 38px; position: relative; flex: 0 0 auto; background: none; border: 0; color: inherit; }
.menu-toggle span { height: 1.5px; background: currentColor; width: 26px; position: absolute; left: 6px; top: 15px; transition: transform .2s; }
.menu-toggle span:last-child { top: 23px; }
.menu-toggle[aria-expanded="true"] span:first-child { transform: translateY(4px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] span:last-child { transform: translateY(-4px) rotate(-45deg); }
.mobile-menu { position: fixed; z-index: 90; top: 76px; left: 0; right: 0; background: var(--cream); color: var(--deep); box-shadow: 0 13px 25px rgba(0,0,0,.1); }
.mobile-menu nav { padding: 23px var(--gutter) 35px; display: grid; gap: 0; }
.mobile-menu a { padding: 17px 0; font-family: var(--serif); font-size: 24px; border-bottom: 1px solid var(--line); }

/* Hero */
.hero { position: relative; min-height: 710px; height: min(960px, max(700px, 100svh)); overflow: hidden; background: #163831; color: white; }
.hero-image { position:absolute; inset:0; height:100%; width:100%; object-fit:cover; object-position:center 52%; animation:heroZoom 15s ease-out both; }
@keyframes heroZoom { from { transform:scale(1.05); } to { transform:scale(1); } }
.hero-overlay { position:absolute; inset:0; background:linear-gradient(90deg, rgba(7,30,24,.75) 0%, rgba(7,30,24,.52) 40%, rgba(7,30,24,.17) 76%), linear-gradient(0deg,rgba(5,19,16,.5) 0%, transparent 23%, transparent 80%,rgba(5,19,16,.25)); }
.hero-decor { position:absolute; border:1px solid rgba(255,255,255,.21); pointer-events:none; }
.hero-decor-top { width: 42vw; height:42vw; border-radius:50%; top:-20vw; right:-18vw; }
.hero-content { position:relative; display:flex; align-items:center; height:100%; padding-top:75px; }
.hero-copy { max-width:850px; padding:75px 0 65px; }
.eyebrow { font-size:11px; letter-spacing: .22em; font-weight: 600; line-height: 1.6; text-transform: uppercase; }
.hero-eyebrow { display:flex; align-items:center; gap:16px; margin:0 0 30px; letter-spacing:.25em; }
.eyebrow-line { width:48px; height:1px; background:var(--gold); }
.hero h1 { font-family:var(--serif); font-size:clamp(59px,6.9vw,112px); line-height:1.09; letter-spacing:-.042em; font-weight:400; margin:0 0 27px; text-wrap:balance; }
.hero h1 em, .editorial-heading em { font-weight:400; font-style:italic; }
.hero-subtitle { font-size:clamp(15px,1.35vw,18px); line-height:1.87; font-weight:300; max-width:560px; color:rgba(255,255,255,.86); margin:0 0 40px; }
.hero-actions { display:flex; flex-wrap:wrap; gap:13px; }
.btn { display:inline-flex; align-items:center; justify-content:space-between; gap:36px; padding:17px 21px; min-height:52px; border:1px solid transparent; background:none; color:inherit; font-size:12px; font-weight:600; letter-spacing:.03em; transition:background .25s, border-color .25s, color .25s, transform .25s; }
.btn:hover { transform:translateY(-2px); }
.btn span:last-child { font-size:19px; font-weight:300; }
.btn-light { background:var(--cream); color:var(--deep); }
.btn-light:hover { background:#e5e5d9; }
.btn-outline-light { border-color:rgba(255,255,255,.75); color:white; }
.btn-outline-light:hover { background:rgba(255,255,255,.12); }
.btn-dark { background:var(--deep); color:white; border-color:var(--deep); }
.btn-dark:hover { background:#26574b; border-color:#26574b; }
.hero-footer { position:absolute; bottom:29px; left:50%; transform:translateX(-50%); display:flex; justify-content:space-between; align-items:center; font-size:10px; letter-spacing:.21em; }
.hero-location { display:flex; align-items:center; gap:11px; }
.location-dot { width:6px; height:6px; border-radius:50%; background:var(--gold); }
.scroll-note { opacity:.8; }
.hero-count { display:flex; align-items:center; gap:10px; letter-spacing:.04em; }
.hero-count > span:first-child { font-weight:700; }
.hero-count-line { width:40px; height:1px; background:rgba(255,255,255,.8); }

/* Typography, common */
.overline { color:#788479; margin:0 0 23px; }
.editorial-heading { color:var(--ink); font-family:var(--serif); font-size:clamp(44px,4.45vw,77px); letter-spacing:-.045em; line-height:1.12; font-weight:400; margin:0; text-wrap:balance; }
.section-description { max-width:340px; align-self:end; color:var(--muted); font-size:14px; line-height:1.92; }
.section-head { display:flex; justify-content:space-between; gap:35px; align-items:end; margin-bottom:46px; }
.section-head .editorial-heading { max-width:850px; }
.text-link { display:inline-flex; align-items:center; gap:30px; padding-bottom:11px; border-bottom:1px solid var(--deep); font-size:12px; color:var(--deep); font-weight:600; transition:gap .2s; }
.text-link:hover { gap:43px; }
.text-link > span:last-child { font-size:19px; font-weight:300; }

/* Intro */
.intro-section { background:var(--cream); }
.intro-layout { display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(55px,12vw,180px); }
.intro-left .editorial-heading { max-width:770px; }
.intro-right { padding-top:49px; color:var(--muted); line-height:1.88; font-size:14px; }
.intro-right p { margin:0 0 22px; }
.intro-right .intro-lead { font-family:var(--serif); font-size:clamp(22px,2vw,29px); line-height:1.46; color:var(--deep); margin:0 0 24px; }
.intro-right .text-link { margin-top:16px; }
.principles-row { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0; margin-top:clamp(70px,8vw,112px); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.principle { display:flex; align-items:start; gap:19px; padding:31px 24px; border-right:1px solid var(--line); }
.principle:first-child { padding-left:0; }
.principle:last-child { border-right:0; }
.principle-icon { color:var(--deep); font-size:25px; width:24px; flex:0 0 auto; }
.principle h3 { margin:2px 0 7px; color:var(--ink); font-size:15px; font-weight:600; }
.principle p { color:var(--muted); margin:0; font-size:12px; line-height:1.6; }

/* Programmes */
.experiences-section { background:var(--warm); }
.filter-row { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:30px; }
.filter-chip { border:1px solid #cecfc4; background:transparent; border-radius:100px; color:#59645e; padding:12px 21px; font-size:12px; transition:all .22s; }
.filter-chip:hover { border-color:var(--deep); color:var(--deep); }
.filter-chip.selected { color:white; border-color:var(--deep); background:var(--deep); }
.program-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; min-height:100px; }
.program-card { background:var(--paper); display:flex; flex-direction:column; min-width:0; overflow:hidden; transition:box-shadow .25s,transform .25s; }
.program-card:hover { box-shadow:0 18px 40px rgba(22,45,37,.1); transform:translateY(-3px); }
.program-cover { overflow:hidden; position:relative; aspect-ratio:1.27; background:#d5ddcf; }
.program-cover img { width:100%; height:100%; object-fit:cover; transition:transform .55s; }
.program-card:hover .program-cover img { transform:scale(1.045); }
.program-index { background:rgba(12,40,32,.78); backdrop-filter:blur(8px); color:white; font-size:11px; letter-spacing:.12em; position:absolute; top:16px; left:16px; padding:9px 13px; }
.program-duration { position:absolute; right:16px; bottom:16px; background:rgba(248,246,241,.95); color:var(--deep); padding:9px 13px; font-size:11px; font-weight:600; }
.program-body { display:flex; flex:1; flex-direction:column; padding:27px 26px 29px; }
.program-cat { font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:#8c8e80; margin:0 0 14px; }
.program-body h3 { font-family:var(--serif); font-size:clamp(25px,2.1vw,33px); font-weight:400; letter-spacing:-.025em; line-height:1.21; margin:0 0 14px; }
.program-body p { color:#69756e; font-size:13px; line-height:1.8; margin:0 0 22px; flex:1; }
.program-more { display:flex; align-items:center; justify-content:space-between; padding-top:18px; border-top:1px solid #e8e8df; font-size:11px; font-weight:600; color:var(--deep); }
.program-more span:last-child { font-size:19px; font-weight:300; }
.program-more:hover { color:#6b825f; }
.programme-note { color:#7b8479; font-size:11px; line-height:1.75; margin:27px 0 0; max-width:1000px; }

/* Destination feature */
.feature-section { background:#e7e9e1; display:grid; grid-template-columns:1fr 1fr; min-height:650px; }
.feature-image-area { min-height:630px; position:relative; overflow:hidden; }
.feature-image-area img { width:100%; height:100%; object-fit:cover; position:absolute; inset:0; }
.photo-caption { position:absolute; left:40px; bottom:34px; font-size:10px; color:white; letter-spacing:.19em; z-index:2; display:flex; gap:17px; padding-top:12px; border-top:1px solid rgba(255,255,255,.65); text-shadow:0 1px 8px rgba(0,0,0,.5); }
.feature-image-area::after { content:""; position:absolute; inset:65% 0 0; background:linear-gradient(transparent,rgba(0,0,0,.38)); }
.feature-content-area { display:flex; align-items:center; padding:80px clamp(45px,7.3vw,120px); }
.feature-copy { max-width:570px; }
.feature-copy .editorial-heading { font-size:clamp(45px,4vw,67px); margin:0 0 29px; }
.feature-lead { font-family:var(--serif); color:var(--deep); font-size:26px; line-height:1.4; margin:0 0 13px; }
.feature-copy > p:not(.eyebrow):not(.feature-lead) { color:#657269; font-size:14px; line-height:1.95; margin:0 0 27px; }
.feature-tags { display:flex; flex-wrap:wrap; gap:9px; margin:30px 0 35px; }
.feature-tags span { border:1px solid #bac3b4; color:#54665a; font-size:11px; padding:10px 13px; }

/* Gallery */
.gallery-section { background:var(--cream); }
.gallery-heading { text-align:center; margin:0 auto 53px; }
.gallery-grid { display:grid; grid-template-columns:1.45fr 1fr; grid-template-rows:360px 220px; gap:20px; }
.image-frame { overflow:hidden; position:relative; }
.image-frame img { width:100%; height:100%; object-fit:cover; transition:transform .6s; }
.image-frame:hover img { transform:scale(1.045); }
.gallery-large { grid-row:span 2; }
.gallery-small { grid-column:2; }
.image-frame::after { content:""; position:absolute; inset:55% 0 0; background:linear-gradient(transparent,rgba(0,0,0,.36)); }
.image-frame-label { position:absolute; bottom:26px; left:29px; z-index:1; color:white; font-size:10px; letter-spacing:.2em; }
.gallery-bottom-copy { grid-column:2; background:#e5eae2; padding:28px 36px; display:flex; gap:25px; align-items:end; justify-content:space-between; }
.gallery-bottom-copy p { max-width:335px; margin:0; color:#526156; font-size:13px; line-height:1.8; }
.gallery-star { font-size:49px; line-height:1; color:#809b83; }

/* Process */
.approach-section { background:var(--dark); color:rgba(255,255,255,.82); }
.approach-top { display:flex; align-items:end; justify-content:space-between; gap:60px; margin-bottom:72px; }
.approach-top > p { line-height:1.87; max-width:315px; font-size:14px; margin:0 0 8px; color:rgba(255,255,255,.66); }
.light-overline { color:var(--gold); }
.light-heading { color:var(--cream); }
.steps-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border-top:1px solid rgba(255,255,255,.2); border-bottom:1px solid rgba(255,255,255,.2); }
.step-card { padding:36px 30px 40px; border-right:1px solid rgba(255,255,255,.18); }
.step-card:first-child { padding-left:0; }
.step-card:last-child { border-right:0; }
.step-num { font-family:var(--serif); font-size:38px; color:var(--gold); margin:0 0 61px; display:block; }
.step-card h3 { font-size:19px; font-family:var(--serif); font-weight:400; line-height:1.4; color:white; margin:0 0 14px; }
.step-card p { line-height:1.85; font-size:12px; color:rgba(255,255,255,.65); margin:0; }
.approach-bottom { padding-top:35px; display:flex; align-items:center; justify-content:space-between; gap:30px; font-size:10px; letter-spacing:.19em; color:rgba(255,255,255,.55); }
.text-link-light { color:var(--cream); border-color:var(--gold); letter-spacing:0; font-size:12px; }

/* Partnerships */
.partners-section { background:var(--cream); }
.partners-layout { display:grid; grid-template-columns:1fr 1fr; gap:clamp(50px,10vw,150px); align-items:center; }
.partners-image { position:relative; aspect-ratio:.85; max-height:690px; }
.partners-image img { width:100%; height:100%; object-fit:cover; }
.partners-image-border { position:absolute; border:1px solid var(--gold); inset:25px -20px -22px 25px; z-index:0; pointer-events:none; }
.partners-copy { padding:30px 0; }
.partners-copy .editorial-heading { margin:0 0 30px; }
.partners-lead { font-family:var(--serif); color:var(--deep); font-size:clamp(21px,2vw,28px); line-height:1.45; margin:0 0 20px; }
.partners-copy > p:not(.eyebrow):not(.partners-lead) { color:var(--muted); font-size:14px; line-height:1.89; margin:0 0 25px; }
.partner-points { margin:30px 0 35px; border-top:1px solid var(--line); }
.partner-points div { display:flex; gap:25px; align-items:start; padding:15px 0; border-bottom:1px solid var(--line); font-size:13px; color:#48564d; }
.partner-points div span:first-child { color:#9c9b88; font-size:11px; }

/* Quote strip */
.quote-strip { position:relative; overflow:hidden; min-height:330px; background:#42564a; display:flex; align-items:center; justify-content:center; color:white; }
.quote-strip-bg { background:linear-gradient(rgba(11,35,29,.75),rgba(11,35,29,.76)),url('../assets/forest-mist.webp') center center / cover; position:absolute; inset:0; }
.quote-strip-inner { position:relative; display:flex; flex-direction:column; align-items:center; padding:60px 0; text-align:center; }
.quote-symbol { font-family:var(--serif); font-size:60px; line-height:.7; color:var(--gold); }
.quote-strip p { max-width:900px; font-family:var(--serif); font-size:clamp(27px,3vw,46px); font-style:italic; letter-spacing:-.02em; line-height:1.42; margin:24px auto 26px; }
.quote-attr { font-size:10px; letter-spacing:.23em; color:rgba(255,255,255,.75); }

/* FAQs */
.faq-section { background:var(--warm); }
.faq-layout { display:grid; grid-template-columns:.8fr 1.2fr; gap:clamp(55px,11vw,150px); }
.faq-aside > p:not(.eyebrow) { color:var(--muted); line-height:1.8; font-size:14px; max-width:315px; margin:30px 0; }
.faq-item { border-bottom:1px solid #cfd1c5; }
.faq-item:first-child { border-top:1px solid #cfd1c5; }
.faq-question { width:100%; display:flex; gap:20px; justify-content:space-between; padding:28px 0; font-weight:500; font-size:15px; background:none; border:0; color:var(--deep); text-align:left; line-height:1.5; }
.faq-symbol { font-weight:300; font-size:24px; line-height:1; color:var(--deep); flex:0 0 auto; transition:transform .25s; }
.faq-item.is-open .faq-symbol { transform:rotate(45deg); }
.faq-answer { overflow:hidden; color:#6c786f; font-size:13px; line-height:1.9; padding:0 50px 25px 0; }
.faq-answer p { margin:0; }

/* Contact */
.contact-section { background:#1b4137; color:#fff; }
.contact-layout { display:grid; grid-template-columns:.9fr 1.1fr; gap:clamp(55px,10vw,140px); align-items:start; }
.contact-copy .editorial-heading { font-size:clamp(46px,5vw,78px); margin:22px 0 27px; }
.contact-lead { font-size:15px; line-height:1.9; color:rgba(255,255,255,.75); max-width:430px; margin:0 0 70px; }
.contact-details { display:grid; gap:10px; align-items:start; }
.contact-details > span { display:block; letter-spacing:.21em; font-size:10px; color:var(--gold); padding-top:17px; }
.contact-details a { display:inline-block; font-family:var(--serif); font-size:clamp(18px,1.75vw,27px); line-height:1.6; margin:0 0 18px; word-break:break-word; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:5px; }
.contact-note { max-width:380px; font-size:13px; line-height:1.7; opacity:.8; }
.contact-illustration { font-family:var(--serif); font-size:clamp(105px,14vw,205px); line-height:1; letter-spacing:-.14em; margin-top:60px; color:rgba(255,255,255,.11); white-space:nowrap; user-select:none; }
.contact-illustration span { font-size:.43em; vertical-align:middle; color:rgba(213,185,145,.4); padding:0 .45em; }
.contact-form-panel { color:var(--ink); background:var(--cream); padding:clamp(30px,4vw,66px); }
.form-overline { font-size:10px; letter-spacing:.23em; color:#718478; margin:0 0 16px; }
.contact-form-panel h3 { font-family:var(--serif); font-weight:400; font-size:clamp(29px,2.55vw,42px); letter-spacing:-.025em; line-height:1.25; margin:0 0 13px; }
.form-description { margin:0 0 29px; color:#718078; font-size:12px; line-height:1.75; }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.form-grid label { display:flex; min-width:0; flex-direction:column; gap:9px; font-size:11px; font-weight:600; color:#536057; }
.form-grid input, .form-grid select, .form-grid textarea { width:100%; border:1px solid #d1d7cf; border-radius:0; padding:13px 14px; outline-offset:1px; color:#283b30; font-weight:400; font-size:13px; background:white; min-height:46px; }
.form-grid input:focus, .form-grid select:focus, .form-grid textarea:focus { border-color:var(--deep); }
.form-grid input::placeholder, .form-grid textarea::placeholder { color:#989f96; opacity:1; }
.form-grid textarea { resize:vertical; line-height:1.55; min-height:120px; }
.form-grid .form-wide { grid-column:1/-1; }
.consent { display:flex; align-items:start; gap:12px; color:#768076; font-size:11px; line-height:1.65; margin-top:24px; cursor:pointer; }
.consent input { margin-top:3px; accent-color:var(--deep); flex:0 0 auto; }
.form-submit { margin-top:25px; width:100%; border-radius:0; }
.form-support { display:flex; align-items:center; gap:15px; flex-wrap:wrap; margin-top:18px; font-size:12px; color:#536f5d; }
.plain-link { padding:0 0 3px; border:0; border-bottom:1px solid currentColor; background:transparent; color:var(--deep); font-size:12px; }
.copy-status { color:#326e55; }

/* Footer */
.site-footer { background:#102b25; color:#d7e1d7; padding:74px 0 28px; }
.footer-main { display:grid; grid-template-columns:1.8fr 1fr 1.2fr auto; gap:50px; padding-bottom:78px; }
.footer-logo-link { display:inline-flex; align-items:center; justify-content:center; background:var(--cream); padding:0 4px; border-radius:3px; }
.footer-logo { display:block; width:184px; height:64px; object-fit:contain; }
.footer-brand p { color:rgba(255,255,255,.57); max-width:265px; font-size:13px; line-height:1.8; margin-top:25px; }
.footer-nav { display:flex; align-items:start; flex-direction:column; gap:15px; font-size:13px; }
.footer-nav p { color:var(--gold); font-size:11px; letter-spacing:.19em; margin:0 0 7px; }
.footer-nav a { color:rgba(255,255,255,.72); }
.footer-nav a:hover { color:var(--gold); }
.back-top { border:1px solid rgba(255,255,255,.37); width:42px; height:42px; display:grid; place-items:center; align-self:start; font-size:22px; }
.footer-bottom { display:flex; gap:35px; align-items:start; justify-content:space-between; border-top:1px solid rgba(255,255,255,.16); padding-top:28px; color:rgba(255,255,255,.48); font-size:10px; letter-spacing:.05em; line-height:1.6; }
.footer-bottom span:last-child { max-width:610px; text-align:right; }

/* Programme modal */
.programme-dialog { border:0; background:var(--cream); padding:0; color:var(--ink); max-width:min(960px, calc(100vw - 30px)); width:960px; max-height:min(730px,calc(100vh - 40px)); box-shadow:0 25px 100px rgba(0,0,0,.28); overflow-y:auto; }
.programme-dialog::backdrop { background:rgba(3,23,17,.7); backdrop-filter:blur(4px); }
.dialog-inner { display:grid; grid-template-columns: .8fr 1fr; min-height:550px; position:relative; }
.dialog-close { position:sticky; top:0; justify-self:end; z-index:2; grid-column:1/-1; grid-row:1; margin:15px 15px -60px; height:42px; width:42px; border:0; color:var(--deep); background:var(--cream); font-size:32px; font-weight:300; line-height:1; }
.dialog-media { grid-column:1; grid-row:1; min-height:550px; }
.dialog-media img { height:100%; width:100%; object-fit:cover; }
.dialog-copy { grid-column:2; grid-row:1; padding:70px 52px 55px; }
.dialog-copy .editorial-heading { font-size:44px; margin:15px 0 20px; }
.dialog-lead { color:#62766a; line-height:1.85; font-size:14px; }
.dialog-includes-title { font-size:10px; letter-spacing:.17em; color:var(--deep); font-weight:700; margin-top:26px; }
.dialog-copy ul { list-style:none; padding:0; margin:15px 0 25px; }
.dialog-copy li { border-top:1px solid var(--line); color:#637066; font-size:13px; padding:11px 0; }
.dialog-copy li::before { content:"↗"; color:#9f8b65; margin-right:9px; }
.dialog-note { color:#7c867c; line-height:1.7; font-size:11px; margin:0 0 23px; }
.dialog-copy .btn { width:100%; }
.noscript-note { position:fixed; bottom:0; z-index:300; background:var(--cream); color:var(--dark); padding:20px; width:100%; text-align:center; }

/* motion */
.reveal { opacity:0; transform:translateY(26px); transition:opacity .75s ease,transform .75s ease; }
.reveal.visible { opacity:1; transform:translateY(0); }

/* responsive */
@media (max-width: 1200px) {
  .site-header { gap:13px; }
  .desktop-nav { gap:17px; }
  .brand-logo { width:166px; height:58px; }
  .header-right { gap:10px; }
  .header-contact { padding:11px 12px; }
  .partners-layout { gap:60px; }
}
@media (max-width: 1020px) {
  :root { --header-h:76px; }
  .desktop-nav { display:none; }
  .menu-toggle { display:block; }
  .site-header { position:absolute; }
  .hero h1 { font-size:clamp(60px,8vw,88px); }
  .hero-overlay { background:linear-gradient(90deg,rgba(8,30,25,.78),rgba(8,30,25,.4) 85%); }
  .intro-layout { gap:60px; }
  .principle { padding:25px 14px; gap:12px; }
  .program-grid { gap:16px; }
  .program-body { padding:22px 20px; }
  .feature-content-area { padding:55px 45px; }
  .gallery-grid { grid-template-rows:280px 200px; }
  .faq-layout { gap:55px; }
  .contact-layout { gap:50px; }
  .step-card { padding-inline:20px; }
}
@media (max-width: 760px) {
  :root { --gutter:22px; }
  .section-pad { padding-block:75px; }
  .site-header { padding:0 var(--gutter); }
  .brand-logo { width:150px; height:52px; }
  .header-contact { display:none; }
  .header-right { gap:16px; }
  .hero { height:max(710px, 95svh); max-height:850px; min-height:660px; }
  .hero-image { object-position:62% 50%; }
  .hero-overlay { background:linear-gradient(90deg,rgba(6,27,21,.84),rgba(6,27,21,.4)),linear-gradient(0deg,rgba(5,21,15,.5),transparent 25%); }
  .hero-content { padding-top:40px; }
  .hero-copy { padding-bottom:80px; }
  .hero h1 { font-size:clamp(51px,10vw,82px); }
  .hero-subtitle { font-size:14px; line-height:1.8; }
  .hero-footer { bottom:24px; }
  .hero-count, .scroll-note { display:none; }
  .intro-layout, .partners-layout, .faq-layout, .contact-layout { grid-template-columns:1fr; gap:38px; }
  .intro-right { padding-top:0; }
  .editorial-heading { font-size:clamp(44px,9vw,65px); }
  .principles-row { grid-template-columns:1fr; margin-top:55px; }
  .principle, .principle:first-child { padding:20px 0; border-right:0; border-bottom:1px solid var(--line); }
  .principle:last-child { border-bottom:0; }
  .section-head { display:block; margin-bottom:30px; }
  .section-description { margin-top:26px; max-width:530px; }
  .program-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:15px; }
  .program-cover { aspect-ratio:1; }
  .program-body h3 { font-size:26px; }
  .feature-section { grid-template-columns:1fr; }
  .feature-image-area { min-height:480px; }
  .feature-content-area { padding:75px var(--gutter); }
  .gallery-grid { grid-template-columns:1fr 1fr; grid-template-rows:260px 180px; gap:13px; }
  .gallery-large { grid-row:span 2; }
  .gallery-bottom-copy { padding:16px; }
  .gallery-bottom-copy p { font-size:11px; line-height:1.65; }
  .gallery-star { display:none; }
  .approach-top { display:block; margin-bottom:44px; }
  .approach-top > p { margin-top:24px; }
  .steps-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .step-card:nth-child(2) { border-right:0; }
  .step-card:nth-child(-n+2) { border-bottom:1px solid rgba(255,255,255,.18); }
  .step-card:nth-child(3) { padding-left:0; }
  .step-num { margin-bottom:25px; }
  .partners-image { max-height:510px; max-width:600px; width:calc(100% - 20px); }
  .partners-copy { padding-top:10px; }
  .quote-strip { min-height:285px; }
  .faq-aside > p:not(.eyebrow) { margin:20px 0; }
  .contact-copy .editorial-heading { margin:0 0 20px; }
  .contact-lead { margin-bottom:35px; }
  .contact-illustration { display:none; }
  .contact-form-panel { padding:34px 24px; }
  .footer-main { grid-template-columns:1fr 1fr; gap:45px; padding-bottom:50px; }
  .footer-brand { grid-column:1 / -1; }
  .back-top { position:absolute; right:var(--gutter); }
  .site-footer { position:relative; padding-top:55px; }
  .footer-bottom { display:block; }
  .footer-bottom span:last-child { margin-top:14px; display:block; text-align:left; }
  .dialog-inner { grid-template-columns:1fr; }
  .dialog-close { grid-column:1; }
  .dialog-media { min-height:260px; height:280px; grid-column:1; grid-row:1; }
  .dialog-copy { grid-column:1; grid-row:2; padding:35px 27px 40px; }
  .dialog-copy .editorial-heading { font-size:37px; }
}
@media (max-width: 520px) {
  .hero h1 { font-size:clamp(48px,11vw,67px); }
  .hero-eyebrow { font-size:9px; letter-spacing:.16em; }
  .hero-actions { gap:10px; }
  .hero-actions .btn { padding:14px 16px; gap:12px; font-size:11px; }
  .filter-row { gap:6px; }
  .filter-chip { padding:10px 14px; font-size:11px; }
  .program-grid { grid-template-columns:1fr; gap:20px; }
  .program-cover { aspect-ratio:1.45; }
  .program-body { padding:25px; }
  .gallery-grid { display:block; }
  .gallery-large { height:320px; margin-bottom:13px; }
  .gallery-small { height:220px; margin-bottom:13px; }
  .gallery-bottom-copy { min-height:150px; padding:24px; }
  .steps-grid { grid-template-columns:1fr; }
  .step-card, .step-card:first-child, .step-card:nth-child(3) { padding:24px 0 30px; border-right:0; border-bottom:1px solid rgba(255,255,255,.2); }
  .step-card:last-child { border-bottom:0; }
  .step-num { margin-bottom:15px; }
  .approach-bottom { flex-wrap:wrap; }
  .form-grid { grid-template-columns:1fr; }
  .footer-main { gap:35px; }
  .photo-caption { left:22px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation-duration:.01ms !important; transition-duration:.01ms !important; }
  .reveal { opacity:1; transform:none; }
}
.prepared-enquiry { width:100%; min-height:175px; margin-top:15px; color:var(--deep); background:#fff; border:1px solid #cdd4cb; padding:15px; font-size:12px; line-height:1.55; resize:vertical; }
/* Keep content accessible and visible even when scripts are disabled or a browser
   doesn't deliver intersection observer callbacks (including full-page print). */
.reveal, .reveal.visible { opacity:1; transform:none; }
/* Always-fixed navigation avoids jumpiness when returning to the top. */
.site-header { position:fixed; }
@media (max-width: 760px) { .site-header { position:fixed; } }
