:root { --black:#090909; --white:#f5f5f2; --grey:#a8a8a4; --line:#3c3c39; --serif:"Cormorant Garamond", Georgia, serif; --sans:Manrope, Arial, sans-serif; }
* { box-sizing:border-box; } html { scroll-behavior:smooth; } body { margin:0; background:var(--black); color:var(--white); font:13px var(--sans); } a { color:inherit; text-decoration:none; } img, video { display:block; width:100%; height:100%; object-fit:cover; } figure { margin:0; } .site-shell { width:100%; margin:0; background:var(--black); overflow-x:clip; }
.site-header { height:74px; padding:0 30px; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; border-bottom:1px solid var(--line); position:sticky; top:0; z-index:20; }.wordmark { font-size:12px; line-height:.82; letter-spacing:.22em; text-align:center; font-weight:700; }.wordmark span { font-size:10px; letter-spacing:.3em; }.menu-button,.enquire-link { padding:0; border:0; color:inherit; background:none; font:700 10px var(--sans); letter-spacing:.16em; text-transform:uppercase; cursor:pointer; }.menu-button { justify-self:start; }.enquire-link { justify-self:end; }.navigation { position:fixed; z-index:15; inset:74px 0 0; display:flex; flex-direction:column; padding:30px 8.3% 34px; visibility:hidden; pointer-events:none; opacity:0; transform:translateY(-12px); background:var(--black); color:var(--white); transition:opacity .28s ease, transform .32s cubic-bezier(.2,.65,.3,1), visibility .32s; }.navigation.open { visibility:visible; pointer-events:auto; opacity:1; transform:translateY(0); }.navigation-top,.navigation-bottom { display:flex; justify-content:space-between; gap:24px; color:var(--grey); font-size:10px; line-height:1.6; font-weight:700; letter-spacing:.14em; text-transform:uppercase; }.navigation-top { padding-bottom:28px; border-bottom:1px solid #3c3c39; }.navigation-top p,.navigation-bottom p { margin:0; }.navigation-grid { display:grid; grid-template-columns:minmax(340px,1.25fr) minmax(220px,.75fr); gap:11%; flex:1; align-items:center; }.navigation-primary { display:flex; flex-direction:column; }.navigation-primary a { display:flex; align-items:baseline; gap:22px; width:max-content; font:500 clamp(42px,5vw,70px)/.85 var(--serif); letter-spacing:-.055em; transition:opacity .2s ease,transform .2s ease; }.navigation-primary a:hover,.navigation-primary a:focus-visible { opacity:.58; transform:translateX(9px); }.navigation-primary span { width:20px; color:var(--grey); font:700 10px/1 var(--sans); letter-spacing:.1em; }.navigation-primary em { margin-left:13px; color:var(--grey); font:700 10px/1 var(--sans); letter-spacing:.12em; text-transform:uppercase; vertical-align:middle; }.navigation-services { padding:4px 0 4px 28px; border-left:1px solid #3c3c39; }.navigation-services p { margin:0 0 24px; color:var(--grey); font-size:10px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; }.navigation-services a { display:block; width:max-content; max-width:100%; margin:0 0 13px; padding-bottom:3px; border-bottom:1px solid transparent; font-size:10px; line-height:1.35; }.navigation-services a:hover,.navigation-services a:focus-visible { border-bottom-color:currentColor; }.navigation-bottom { padding-top:26px; border-top:1px solid #3c3c39; }.navigation-bottom a { color:var(--white); }.site-header.menu-open { background:var(--black); color:var(--white); border-color:#3c3c39; } body.menu-open { overflow:hidden; }
.hero { min-height:760px; display:grid; grid-template-columns:minmax(390px, 47%) 1fr; border-bottom:1px solid var(--line); overflow:hidden; }.hero-copy { position:relative; padding:78px 16%; border-right:1px solid var(--line); }.hero-index,.hero-note,.hero-gallery-label { margin:0; font-size:10px; line-height:1.6; font-weight:700; letter-spacing:.13em; text-transform:uppercase; }.hero-index span { margin-left:0; color:var(--grey); font-weight:500; }.hero h1 { margin:105px 0 42px; font:500 clamp(96px, 10.2vw, 182px)/.64 var(--serif); letter-spacing:-.075em; }.hero h1 em,.manifesto h2 em,.contact h2 em { font-weight:400; }.hero-inquire { display:inline-flex; align-items:center; justify-content:space-between; min-width:150px; padding:15px 17px; background:var(--white); color:var(--black); font-size:10px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; transition:background .25s ease,color .25s ease; }.hero-inquire span { font-size:15px; line-height:0; }.hero-inquire:hover { background:transparent; color:var(--white); outline:1px solid var(--white); }.hero-note { position:absolute; left:16%; bottom:75px; color:var(--grey); }.hero-gallery { position:relative; min-height:760px; background:#111; }.hero-image { position:absolute; overflow:hidden; }.hero-image-main { top:0; right:0; width:71%; height:73%; }.hero-image-detail { left:0; bottom:0; width:48%; height:43%; border-top:15px solid var(--black); border-right:15px solid var(--black); }.hero-gallery-label { position:absolute; right:7%; bottom:7%; z-index:1; color:var(--white); text-align:right; mix-blend-mode:difference; }
.introduction { min-height:650px; padding:120px 15.3% 100px; position:relative; display:grid; grid-template-columns:35% 1fr; gap:15%; align-items:center; border-top:1px solid var(--line); }.intro-image { height:350px; }.intro-copy { max-width:335px; }.eyebrow { margin:0 0 22px; color:var(--grey); font-size:10px; line-height:1.3; font-weight:700; letter-spacing:.16em; text-transform:uppercase; }.lead { margin:0; font:500 clamp(29px, 3.2vw, 44px)/.94 var(--serif); letter-spacing:-.035em; }.text-link { display:inline-block; margin-top:30px; padding-bottom:5px; border-bottom:1px solid currentColor; font-size:10px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; }.text-link span { margin-left:11px; font-size:14px; }.intro-caption { position:absolute; left:15.3%; bottom:72px; width:180px; margin:0; color:var(--grey); font-size:10px; line-height:1.65; letter-spacing:.08em; text-transform:uppercase; }
.manifesto { padding:160px 15.3% 150px; border-top:1px solid var(--line); position:relative; }.manifesto h2,.services h2,.editorial h2,.contact h2 { margin:0; font:500 clamp(70px, 8.4vw, 118px)/.72 var(--serif); letter-spacing:-.06em; }.manifesto-note { position:absolute; right:15.3%; bottom:135px; max-width:180px; margin:0; color:var(--grey); font-size:10px; line-height:1.7; }
.gallery-strip { display:grid; grid-template-columns:.58fr 1.16fr 1.12fr .65fr; gap:15px; height:390px; overflow:hidden; }.gallery-strip figure { overflow:hidden; }.gallery-strip figure:nth-child(2) { transform:translateY(32px); }.gallery-strip figure:nth-child(3) { transform:translateY(-28px); }
.services { background:var(--white); color:var(--black); padding:135px 8.3% 105px; display:grid; grid-template-columns:.82fr 1.4fr; gap:9%; }.services-title { padding-top:3px; }.services-title .eyebrow { color:#696966; }.services h2 { font-size:clamp(56px, 5.5vw, 77px); }.service-list { border-top:1px solid #b9b9b4; }.service { display:grid; grid-template-columns:36px 1.05fr .95fr 18px; gap:20px; align-items:center; min-height:117px; border-bottom:1px solid #b9b9b4; transition:padding .22s ease; }.service:hover { padding-left:10px; }.service>span { color:#777772; font-size:10px; letter-spacing:.1em; }.service h3 { margin:0; font:500 27px/.86 var(--serif); letter-spacing:-.035em; }.service p { margin:0; font-size:10px; line-height:1.65; }.service b { font-size:18px; font-weight:400; }
.editorial { padding:130px 15.3% 100px; display:grid; grid-template-columns:1fr .85fr; gap:70px 10%; align-items:end; }.editorial h2 { font-size:clamp(66px, 7vw, 100px); }.editorial-main { height:460px; }.editorial-foot { max-width:275px; }.editorial-foot p { margin:0; font-size:11px; line-height:1.8; }.editorial-foot .text-link { margin-top:26px; }
.contact { background:var(--white); color:var(--black); text-align:center; padding:140px 24px; border-top:1px solid #b9b9b4; }.contact .eyebrow { color:#696966; }.contact h2 { font-size:clamp(78px, 9vw, 130px); }.contact>p { max-width:390px; margin:32px auto; font-size:12px; line-height:1.7; }.button { display:inline-flex; align-items:center; gap:28px; padding:15px 18px; color:var(--white); background:var(--black); font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; }.button span { font-size:16px; }
.site-footer { padding:60px 8.3% 28px; display:grid; grid-template-columns:1.65fr .7fr 1fr; gap:35px; }.site-footer .wordmark { justify-self:start; text-align:left; }.site-footer div { display:flex; flex-direction:column; gap:10px; font-size:10px; line-height:1.7; }.site-footer p { margin:0; }.copyright { grid-column:1/-1; border-top:1px solid var(--line); padding-top:21px; margin:35px 0 0!important; color:var(--grey); font-size:10px; }
@media (max-width:700px) { .site-header { height:66px; padding:0 22px; display:grid; grid-template-columns:1fr auto 1fr; }.wordmark { text-align:center; }.enquire-link { font-size:10px; }.navigation { inset:66px 0 0; padding:23px 22px 26px; }.navigation-top { padding-bottom:20px; }.navigation-top p:last-child { display:none; }.navigation-grid { display:block; overflow:auto; padding:34px 0 25px; }.navigation-primary a { gap:15px; font-size:clamp(42px,14vw,62px); }.navigation-primary span { font-size:10px; }.navigation-primary em { margin-left:8px; font-size:10px; }.navigation-services { margin:36px 0 0 34px; padding:0 0 0 20px; }.navigation-services p { margin-bottom:18px; }.navigation-services a { margin-bottom:11px; font-size:10px; }.navigation-bottom { padding-top:20px; font-size:10px; }.site-header.menu-open { border-color:#3c3c39; }.hero { min-height:680px; display:block; position:relative; }.hero-copy { height:680px; padding:56px 22px 48px; border-right:0; }.hero-index { position:relative; }.hero h1 { position:relative; z-index:2; margin:78px 0 30px; font-size:clamp(88px, 26vw, 132px); line-height:.65; }.hero-inquire { position:relative; z-index:2; min-width:135px; }.hero-note { left:22px; bottom:50px; z-index:2; color:var(--white); }.hero-gallery { position:absolute; inset:0 0 0 38%; min-height:0; background:transparent; }.hero-image-main { top:0; right:0; width:100%; height:61%; opacity:.86; }.hero-image-detail { left:0; bottom:0; width:62%; height:39%; border-top:10px solid var(--black); border-right:10px solid var(--black); }.hero-gallery-label { display:none; }.introduction { min-height:auto; padding:82px 22px 72px; display:block; }.intro-image { width:55%; height:290px; }.intro-copy { margin:52px 0 0 auto; max-width:250px; }.lead { font-size:34px; }.intro-caption { left:22px; bottom:75px; width:135px; }.manifesto { padding:105px 22px 118px; }.manifesto h2 { font-size:clamp(64px, 19vw, 92px); }.manifesto-note { right:22px; bottom:62px; width:145px; font-size:10px; }.gallery-strip { gap:10px; height:250px; }.gallery-strip figure:nth-child(2) { transform:translateY(20px); }.gallery-strip figure:nth-child(3) { transform:translateY(-17px); }.services { display:block; padding:82px 22px 65px; }.services h2 { font-size:61px; }.service-list { margin-top:54px; }.service { grid-template-columns:29px 1fr 16px; gap:11px; min-height:0; padding:20px 0; }.service h3 { font-size:26px; }.service p { grid-column:2/-1; font-size:10px; }.editorial { display:block; padding:92px 22px 76px; }.editorial h2 { font-size:72px; }.editorial-main { height:355px; margin-top:66px; }.editorial-foot { margin:38px 0 0 auto; }.contact { padding:100px 22px; }.contact h2 { font-size:clamp(72px, 21vw, 104px); }.site-footer { grid-template-columns:1fr 1fr; padding:45px 22px 24px; }.site-footer .wordmark { grid-column:1/-1; margin-bottom:20px; }.copyright { margin-top:25px!important; } }


/* SVG interface icons stay consistent across devices. */
.arrow-icon { display:inline-block; width:1.15em; height:1.15em; fill:none; stroke:currentColor; stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round; vertical-align:-0.14em; flex:0 0 auto; }
.text-link .arrow-icon { margin-left:14px; font-size:17px; }
.button .arrow-icon, .hero-inquire .arrow-icon { margin-left:auto; font-size:16px; }
.service-arrow { width:20px; height:20px; justify-self:end; }

/* Dedicated service stories */
.services { display:block; }
.services-title { max-width:540px; margin-bottom:58px; }
.service-showcase { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.service-feature { position:relative; min-height:clamp(510px,57vw,720px); overflow:hidden; background:#1b1a18; color:#fffefa; isolation:isolate; }
.service-feature-media,.service-feature-media img,.service-feature-media video { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.service-feature-media img,.service-feature-media video { transition:transform .7s cubic-bezier(.2,.65,.3,1); }
.service-feature:focus-within .service-feature-media img,.service-feature:hover .service-feature-media img,.service-feature:focus-within .service-feature-media video,.service-feature:hover .service-feature-media video { transform:scale(1.035); }
.service-feature::after { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(180deg,rgba(0,0,0,.08) 18%,rgba(0,0,0,.68) 100%); }
.service-feature-copy { position:relative; z-index:1; height:100%; padding:clamp(22px,3vw,43px); display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-end; }
.service-number { position:absolute; top:clamp(22px,3vw,43px); left:clamp(22px,3vw,43px); margin:0; font:700 10px/1.4 var(--sans); letter-spacing:.16em; text-transform:uppercase; }
.service-feature h3 { margin:0; font:500 clamp(45px,4.7vw,76px)/.78 var(--serif); letter-spacing:-.055em; }
.service-feature-copy > p:not(.service-number) { max-width:390px; margin:20px 0 24px; font:500 11px/1.75 var(--sans); }
.service-feature-copy :is(a, .service-enquiry-trigger) { display:inline-flex; align-items:center; gap:16px; padding-bottom:6px; border-bottom:1px solid currentColor; font:700 10px/1 var(--sans); letter-spacing:.13em; text-transform:uppercase; }
.service-feature-copy :is(a, .service-enquiry-trigger) .arrow-icon { width:15px; height:15px; }
@media (max-width:700px) {
  .services-title { margin-bottom:38px; }
  .service-showcase { grid-template-columns:1fr; gap:12px; }
  .service-feature { min-height:500px; }
  .service-feature h3 { font-size:58px; }
  .service-feature-copy > p:not(.service-number) { font-size:10px; max-width:310px; }
}

/* Gallery concept refinement: a light opening and legible service stories. */
.site-header,
.hero { background:var(--white); color:var(--black); border-color:#c9c9c4; }
.hero-copy { border-color:#c9c9c4; }
.hero-index span,
.hero-note { color:#6e6e69; }
.hero-gallery { background:#e8e8e3; }
.hero-image-detail { border-color:var(--white); }
.hero-inquire { background:var(--black); color:var(--white); }
.hero-inquire:hover { color:var(--black); outline-color:var(--black); }

.service-feature-media { z-index:0; }
.service-feature::after {
  z-index:1;
  background:linear-gradient(180deg,rgba(0,0,0,.38) 0%,rgba(0,0,0,.16) 43%,rgba(0,0,0,.76) 100%);
}
.service-feature-copy { z-index:2; }

@media (max-width:700px) {
  .site-header { border-color:#c9c9c4; }
  .menu-button { color:var(--black); }
  .navigation { background:var(--black); color:var(--white); border-color:var(--black); }
  .hero-note { color:var(--black); }
  .hero-image-detail { border-color:var(--white); }
}


/* Vivid story, Vivid Planner and team modules. */
.intro-body { margin:24px 0 0; color:var(--grey); font-size:11px; line-height:1.75; }
.courses { position:relative; display:grid; grid-template-columns:.78fr 1.08fr .7fr; gap:7%; min-height:700px; padding:120px 8.3% 105px; overflow:hidden; background:#e9e6de; color:var(--black); border-top:1px solid #c7c3ba; }
.courses::before { content:""; position:absolute; inset:20px; border:1px solid rgba(9,9,9,.14); pointer-events:none; }
.courses-heading,.courses-copy,.courses-image,.courses-imprint { position:relative; z-index:1; }
.courses-heading { display:flex; flex-direction:column; justify-content:space-between; padding:17px 0 16px; }
.courses-heading .eyebrow { color:#67645e; }
.course-status { width:max-content; margin:0; padding:9px 11px 8px; color:var(--white); background:var(--black); font-size:10px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; }
.courses-copy { align-self:center; max-width:450px; padding:32px 0; }
.courses-edition { margin:0 0 26px; color:#67645e; font-size:10px; font-weight:700; letter-spacing:.15em; text-transform:uppercase; }
.courses h2,.team h2 { margin:0; font:500 clamp(70px, 7.6vw, 112px)/.71 var(--serif); letter-spacing:-.065em; }
.courses h2 em,.team h2 em { font-weight:400; }
.courses-copy>p:not(.courses-edition) { max-width:325px; margin:35px 0 0; color:#56534e; font-size:11px; line-height:1.75; }
.courses .text-link { margin-top:34px; }
.courses-image { align-self:stretch; height:auto; margin:0; padding:0; background:transparent; box-shadow:none; overflow:hidden; transform:none; }
.courses-image img { position:absolute; inset:0; height:100%; object-fit:cover; }

.courses-imprint { position:absolute; right:8.3%; top:68px; margin:0; color:#67645e; font-size:10px; font-weight:700; line-height:1.55; letter-spacing:.14em; text-align:right; text-transform:uppercase; }
.courses-imprint span { display:inline-block; margin-top:5px; font-weight:500; }
.team { background:var(--white); color:var(--black); padding:125px 8.3% 105px; }.team-heading { display:grid; grid-template-columns:.88fr 1.08fr; gap:7%; }.team-heading .eyebrow { color:#696966; }.team-feature { display:grid; grid-template-columns:1.08fr .62fr; gap:9%; align-items:end; margin:95px 0 0 18%; }.team-feature figure { width:100%; max-width:322px; height:auto; max-height:483px; aspect-ratio:2 / 3; }.team-feature>div { padding-bottom:20px; }.team-role { margin:0 0 27px; color:#696966; font-size:10px; font-weight:700; letter-spacing:.15em; text-transform:uppercase; }.team-feature h3 { margin:0; font:500 clamp(54px, 6vw, 86px)/.72 var(--serif); letter-spacing:-.06em; }.team-feature div>p:last-child { max-width:265px; margin:28px 0 0; font-size:11px; line-height:1.75; }.team-note { display:flex; justify-content:space-between; gap:50px; max-width:58%; margin:56px 0 0 auto; padding-top:19px; border-top:1px solid #b9b9b4; }.team-note p { max-width:280px; margin:0; font-size:10px; line-height:1.7; }.team-note .team-image-note { max-width:140px; color:#696966; font-size:10px; font-weight:700; letter-spacing:.12em; line-height:1.55; text-transform:uppercase; }.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
@media (max-width:700px) { .intro-body { font-size:10px; }.courses { display:block; min-height:0; padding:82px 40px 80px; }.courses::before { inset:12px; }.courses-heading { display:flex; flex-direction:row; align-items:flex-start; padding:0; }.course-status { margin-top:-6px; }.courses-copy { max-width:none; margin-top:66px; padding:0; }.courses-edition { margin-bottom:24px; }.courses h2,.team h2 { font-size:clamp(66px, 19vw, 92px); }.courses-copy>p:not(.courses-edition) { margin-top:28px; }.courses-image { margin:58px 0 0; }.courses-imprint { display:none; }.team { padding:92px 22px 78px; }.team-heading { display:block; }.team-heading h2 { margin-top:54px; }.team-feature { display:block; margin:60px 0 0; }.team-feature>div { padding:33px 0 0 15%; }.team-feature h3 { font-size:74px; }.team-note { display:block; max-width:none; margin-top:45px; }.team-note .team-image-note { margin-top:22px; } }


/* In the stacked mobile layout, let the full portrait set its own height. */
@media (max-width:700px) {
  .courses-image img { position:static; height:auto; object-fit:contain; }
}

.team-feature img { object-fit:contain; object-position:center; }

/* Vivid Planner: the same editorial type, numbered rows and fine rules as the site. */
.courses.courses-expanded { display:block; min-height:0; }
.courses-expanded .courses-heading { flex-direction:row; align-items:center; justify-content:space-between; gap:20px; padding:0; margin-bottom:48px; }
.courses-expanded .courses-heading .eyebrow { margin:0; }
.courses-expanded .course-status { margin:0; }
.courses-overview { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.8fr); gap:9%; min-height:620px; }
.courses-expanded .courses-copy { grid-area:auto; min-width:0; max-width:none; margin:0; padding:24px 0; }
.courses.courses-expanded h2 { font-size:clamp(62px,6.5vw,100px); line-height:.88; }
.courses-expanded .courses-copy > p:not(.courses-edition) { max-width:43ch; margin-top:26px; font-size:15px; line-height:1.75; }
.courses-expanded .courses-copy > p + p:not(.courses-edition) { margin-top:16px; }
.courses-expanded .courses-image { grid-area:auto; min-width:0; min-height:0; margin:0; }
.courses-facts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin:32px 0 0; padding:22px 0; border-block:1px solid #b9b5ac; }
.courses-facts dt { margin-bottom:9px; color:#67645e; font-size:10px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.courses-facts dd { margin:0; font-size:13px; line-height:1.6; }
.courses-expanded .text-link { margin-top:26px; }
.courses-row { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.1fr); gap:9%; padding:64px 0; border-bottom:1px solid #b9b5ac; }
.courses-story { margin-top:64px; border-top:1px solid #b9b5ac; }
.courses-expanded h3 { margin:0; font:500 clamp(36px,3.8vw,56px)/.95 var(--serif); letter-spacing:-.04em; }
.courses-expanded h3 em { font-weight:400; }
.courses-expanded .eyebrow { color:#67645e; }
.courses-body > p:not(.eyebrow),.courses-section-note { max-width:48ch; margin:24px 0 0; color:#56534e; font-size:15px; line-height:1.75; }
.courses-story .courses-body > p:first-child { margin-top:0; }
.courses-topics { min-width:0; border-top:1px solid #b9b5ac; }
.courses-topics details { border-bottom:1px solid #b9b5ac; }
.courses-topics summary { display:grid; grid-template-columns:24px minmax(0,1fr) 20px; gap:16px; align-items:center; min-height:74px; padding:16px 0; list-style:none; cursor:pointer; font:500 clamp(25px,2.2vw,32px)/1.05 var(--serif); letter-spacing:-.025em; }
.courses-topics summary::-webkit-details-marker { display:none; }
.course-topic-number { color:#67645e; font:600 10px/1 var(--sans); letter-spacing:.1em; }
.courses-topics summary::after { content:"+"; justify-self:end; font:400 24px/1 var(--sans); }
.courses-topics details[open] > summary::after { content:"−"; }
.courses-topics summary:hover { color:#67645e; }
.courses-topics summary:focus-visible,.courses-expanded a:focus-visible { outline:2px solid var(--black); outline-offset:5px; }
.courses-topics details > p { margin:0 36px 24px 40px; color:#56534e; font-size:14px; line-height:1.75; }
#course-curriculum { scroll-margin-top:100px; }
.courses-inclusions { list-style:none; margin:28px 0 0; padding:0; border-top:1px solid #b9b5ac; }
.courses-inclusions li { padding:14px 0; border-bottom:1px solid #b9b5ac; font-size:14px; line-height:1.65; }
.courses-body .courses-audience-note { margin-top:28px; padding-top:22px; border-top:1px solid #b9b5ac; font-size:13px; }
.courses-apply { display:flex; justify-content:space-between; align-items:center; gap:40px; padding-top:64px; }
.courses-apply-action { flex-shrink:0; max-width:100%; }
.courses-apply .button { min-height:52px; line-height:1.5; }
.courses-interest-note { max-width:34ch; margin:16px 0 0; color:#56534e; font-size:12px; line-height:1.7; }
.courses-interest-note a { text-decoration:underline; text-underline-offset:3px; }
@media (min-width:701px) and (max-width:1100px) {
  .courses-overview { gap:6%; grid-template-columns:minmax(0,1.1fr) minmax(0,.8fr); }
  .courses.courses-expanded h2 { font-size:clamp(58px,7vw,76px); }
  .courses-row { gap:6%; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); }
  .courses-apply { align-items:flex-start; }
  .courses-apply .button { gap:16px; padding-inline:14px; font-size:10px; }
}
@media (max-width:700px) {
  .courses-expanded .courses-heading { margin-bottom:36px; }
  .courses-expanded .course-status { font-size:9px; letter-spacing:.1em; }
  .courses-overview { display:block; min-height:0; }
  .courses-expanded .courses-copy { padding:0; }
  .courses.courses-expanded h2 { font-size:clamp(52px,14vw,86px); }
  .courses-expanded .courses-copy > p:not(.courses-edition) { max-width:none; margin-top:24px; }
  .courses-expanded .courses-copy > p + p:not(.courses-edition) { margin-top:16px; }
  .courses-expanded .courses-image { margin-top:36px; }
  .courses-row { display:block; padding:40px 0; }
  .courses-story { margin-top:40px; }
  .courses-expanded h3 { font-size:clamp(36px,9vw,48px); }
  .courses-story .courses-body,.courses-topics,.courses-audience { margin-top:30px; }
  .courses-body > p:not(.eyebrow),.courses-section-note { max-width:none; }
  .courses-topics summary { min-height:72px; gap:12px; font-size:27px; }
  .courses-topics details > p { margin-left:36px; margin-right:20px; }
  .courses-audience { padding-top:36px; border-top:1px solid #b9b5ac; }
  .courses-facts { gap:10px; }
  .courses-facts dt { font-size:9px; letter-spacing:.06em; }
  .courses-facts dd { font-size:12px; }
  .courses-apply { display:block; padding-top:40px; }
  .courses-apply-action { margin-top:28px; }
  .courses-apply .button { justify-content:space-between; gap:16px; max-width:100%; }
}

/* Service gallery overlay */
.service-feature { cursor:zoom-in; }
.service-gallery-trigger { position:absolute; z-index:2; inset:0; width:100%; height:100%; border:0; padding:0; background:transparent; color:inherit; cursor:zoom-in; }
.service-feature-copy { pointer-events:none; }
.service-feature-copy :is(a, .service-enquiry-trigger) { position:relative; z-index:3; pointer-events:auto; cursor:pointer; }
body.gallery-open { overflow:hidden; }
.service-gallery-overlay { position:fixed; z-index:100; inset:0; padding:18px; overflow-y:auto; background:rgba(9,9,9,.98); color:var(--white); opacity:0; visibility:hidden; pointer-events:none; transition:opacity .34s ease, visibility .34s; }
.service-gallery-overlay.is-open { opacity:1; visibility:visible; pointer-events:auto; }
.service-gallery-dialog { width:min(1460px,100%); min-height:100%; margin:0 auto; transform:translateY(16px); transition:transform .55s cubic-bezier(.2,.65,.3,1); }
.service-gallery-overlay.is-open .service-gallery-dialog { transform:translateY(0); }
.service-gallery-bar { display:flex; justify-content:space-between; align-items:center; padding:14px 0 20px; border-bottom:1px solid #3c3c39; }
.service-gallery-kicker { margin:0; color:var(--grey); font-size:10px; font-weight:700; letter-spacing:.15em; text-transform:uppercase; }
.service-gallery-close,.service-lightbox-close,.service-lightbox-nav { border:0; padding:0; background:transparent; color:inherit; font:700 10px var(--sans); letter-spacing:.14em; text-transform:uppercase; cursor:pointer; }
.service-gallery-close { display:inline-flex; align-items:center; gap:10px; line-height:1; }
.service-gallery-close span,.service-lightbox-close span { display:grid; width:16px; height:16px; place-items:center; font:400 19px/16px Arial,sans-serif; }
.service-gallery-intro { display:flex; justify-content:space-between; align-items:end; gap:30px; padding:clamp(50px,8vw,112px) 0 clamp(38px,5vw,70px); }
.service-gallery-intro h2 { max-width:720px; margin:0; font:500 clamp(58px,8.5vw,132px)/.72 var(--serif); letter-spacing:-.07em; }
.service-gallery-intro p { margin:0 0 6px; color:var(--grey); font-size:10px; line-height:1.6; }
.service-gallery-grid { display:grid; grid-template-columns:1.05fr .85fr 1.12fr .78fr; align-items:start; gap:clamp(10px,1.4vw,22px); padding-bottom:32px; }
.service-gallery-card { position:relative; display:block; width:100%; height:clamp(330px,48vw,690px); overflow:hidden; border:0; padding:0; background:#1b1b19; cursor:zoom-in; transform:translateY(32px) rotate(-2.5deg); opacity:0; transition:transform .7s cubic-bezier(.2,.65,.3,1), opacity .46s ease; }
.service-gallery-card:nth-child(2) { height:clamp(270px,38vw,560px); margin-top:clamp(42px,7vw,120px); transform:translateY(32px) rotate(2deg); transition-delay:.06s; }
.service-gallery-card:nth-child(3) { height:clamp(355px,54vw,770px); margin-top:clamp(10px,2vw,34px); transform:translateY(32px) rotate(-1.2deg); transition-delay:.12s; }
.service-gallery-card:nth-child(4) { height:clamp(250px,35vw,500px); margin-top:clamp(70px,11vw,160px); transform:translateY(32px) rotate(2.6deg); transition-delay:.18s; }
.service-gallery-overlay.is-open .service-gallery-card { opacity:1; transform:translateY(0) rotate(0); }
.service-gallery-card img { transition:transform .8s cubic-bezier(.2,.65,.3,1); }
.service-gallery-card:hover img,.service-gallery-card:focus-visible img { transform:scale(1.055); }
.service-gallery-card span,.service-gallery-card figcaption { position:absolute; left:14px; bottom:14px; padding:6px 8px; background:rgba(9,9,9,.72); color:var(--white); font:700 10px var(--sans); letter-spacing:.14em; }
.service-lightbox { position:fixed; z-index:2; inset:0; display:grid; grid-template-columns:1fr minmax(0,820px) 1fr; align-items:center; gap:25px; padding:clamp(22px,4vw,64px); background:rgba(9,9,9,.985); opacity:0; visibility:hidden; pointer-events:none; transition:opacity .25s ease,visibility .25s; }
.service-lightbox.is-open { opacity:1; visibility:visible; pointer-events:auto; }
.service-lightbox figure { max-height:calc(100vh - 128px); }
.service-lightbox figure img { width:100%; height:min(76vh,850px); object-fit:contain; }
.service-lightbox-close { position:absolute; top:30px; right:34px; display:flex; align-items:center; gap:12px; }
.service-lightbox-nav { justify-self:center; color:var(--grey); transition:color .2s; }
.service-lightbox-nav:hover,.service-lightbox-nav:focus-visible { color:var(--white); }
.service-lightbox-count { position:absolute; bottom:30px; left:50%; margin:0; transform:translateX(-50%); color:var(--grey); font-size:10px; font-weight:700; letter-spacing:.15em; }
@media (max-width:700px) {
  .service-gallery-overlay { padding:14px 16px; }
  .service-gallery-bar { padding:12px 0 18px; }
  .service-gallery-intro { display:block; padding:62px 0 44px; }
  .service-gallery-intro h2 { font-size:clamp(56px,17vw,84px); }
  .service-gallery-intro p { margin-top:24px; }
  .service-gallery-grid { grid-template-columns:1fr 1fr; gap:11px; }
  .service-gallery-card,.service-gallery-card:nth-child(2),.service-gallery-card:nth-child(3),.service-gallery-card:nth-child(4) { height:46vw; min-height:210px; margin-top:0; }
  .service-gallery-card:nth-child(2),.service-gallery-card:nth-child(4) { margin-top:44px; }
  .service-lightbox { grid-template-columns:1fr 1fr; gap:0; padding:72px 18px 54px; }
  .service-lightbox figure { grid-column:1/-1; grid-row:1; }
  .service-lightbox figure img { height:70vh; }
  .service-lightbox-prev { grid-column:1; grid-row:2; justify-self:start; margin-top:24px; }
  .service-lightbox-next { grid-column:2; grid-row:2; justify-self:end; margin-top:24px; }
  .service-lightbox-close { top:25px; right:22px; }
  .service-lightbox-count { bottom:25px; }
}
@media (prefers-reduced-motion:reduce) {
  .service-gallery-overlay,.service-gallery-dialog,.service-gallery-card,.service-feature-media img { transition-duration:.01ms !important; }
}

/* Viewport-fitted service galleries */
.service-gallery-overlay {
  overflow: hidden;
  padding: 14px clamp(16px, 2vw, 32px);
}

.service-gallery-dialog {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  width: min(1460px, 100%);
  height: calc(100vh - 28px);
  height: calc(100dvh - 28px);
  min-height: 0;
}

.service-gallery-bar {
  padding: 10px 0 14px;
}

.service-gallery-intro {
  padding: clamp(18px, 4.5vh, 52px) 0 clamp(18px, 3.5vh, 42px);
}

.service-gallery-intro h2 {
  font-size: clamp(44px, min(8vw, 11vh), 112px);
}

.service-gallery-grid {
  height: 100%;
  min-height: 0;
  padding-bottom: 0;
  align-items: stretch;
}

.service-gallery-card {
  height: 100%;
  min-height: 0;
}

.service-gallery-card:nth-child(2) {
  height: calc(100% - clamp(28px, 8vh, 72px));
  margin-top: clamp(18px, 5vh, 48px);
}

.service-gallery-card:nth-child(3) {
  height: calc(100% - clamp(12px, 4vh, 36px));
  margin-top: clamp(6px, 1.5vh, 14px);
}

.service-gallery-card:nth-child(4) {
  height: calc(100% - clamp(38px, 10vh, 88px));
  margin-top: clamp(24px, 7vh, 60px);
}

@media (max-width: 900px) {
  .service-gallery-overlay {
    padding: 10px 12px;
  }

  .service-gallery-dialog {
    height: calc(100vh - 20px);
    height: calc(100dvh - 20px);
  }

  .service-gallery-bar {
    padding: 8px 0 12px;
  }

  .service-gallery-intro {
    display: flex;
    align-items: end;
    gap: 18px;
    padding: clamp(16px, 3vh, 28px) 0 clamp(14px, 2.5vh, 24px);
  }

  .service-gallery-intro h2 {
    max-width: 76%;
    font-size: clamp(34px, min(10vw, 8vh), 64px);
    line-height: .8;
  }

  .service-gallery-intro p {
    margin: 0 0 2px;
  }

  .service-gallery-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: repeat(2, minmax(0, 1fr));
    gap: 9px;
  }

  .service-gallery-card,
  .service-gallery-card:nth-child(2),
  .service-gallery-card:nth-child(3),
  .service-gallery-card:nth-child(4) {
    height: 100%;
    min-height: 0;
    margin-top: 0;
  }
}

@media (max-width: 520px) {
  .service-gallery-intro {
    display: block;
  }

  .service-gallery-intro h2 {
    max-width: 100%;
    font-size: clamp(32px, min(11vw, 7.5vh), 52px);
  }

  .service-gallery-intro p {
    margin-top: 10px;
  }

  .service-gallery-card span {
    left: 9px;
    bottom: 9px;
  }
}

@media (max-height: 620px) {
  .service-gallery-intro {
    padding-top: 12px;
    padding-bottom: 12px;
  }

  .service-gallery-intro p {
    display: none;
  }
}


/* Mobile navigation viewport fix */
html,
body {
  max-width: 100%;
  overflow-x: clip;
}

@media (max-width: 700px) {
  .navigation {
    width: 100%;
    max-width: 100vw;
    overflow: hidden;
  }

  .site-header.menu-open .menu-button {
    color: var(--white);
  }

  .navigation-grid {
    display: flex;
    flex: 1;
    min-width: 0;
    min-height: 0;
    width: 100%;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    padding: clamp(18px, 3.2vh, 30px) 0;
    overflow: hidden;
  }

  .navigation-primary {
    min-width: 0;
    width: 100%;
  }

  .navigation-primary a {
    width: 100%;
    max-width: 100%;
    gap: 12px;
    font-size: clamp(28px, min(10vw, 5.8vh), 44px);
    line-height: .88;
    white-space: nowrap;
  }

  .navigation-primary span {
    flex: 0 0 20px;
  }

  .navigation-primary em {
    flex: 0 0 auto;
    margin-left: auto;
  }

  .navigation-services {
    min-width: 0;
    margin: clamp(17px, 3vh, 28px) 0 0 32px;
    padding-left: 18px;
  }

  .navigation-services p {
    margin-bottom: clamp(9px, 1.6vh, 16px);
  }

  .navigation-services a {
    width: fit-content;
    max-width: 100%;
    margin-bottom: clamp(5px, 1vh, 10px);
    white-space: normal;
    overflow-wrap: anywhere;
  }

  .navigation-top,
  .navigation-bottom {
    flex-shrink: 0;
  }
}

@media (max-width: 360px) {
  .navigation-primary a {
    white-space: normal;
  }

  .navigation-primary em {
    flex-basis: 100%;
    margin: 2px 0 2px 32px;
  }
}

@media (max-width: 700px) and (max-height: 620px) {
  .navigation {
    padding-top: 14px;
    padding-bottom: 16px;
  }

  .navigation-top {
    padding-bottom: 10px;
  }

  .navigation-grid {
    padding: 10px 0;
  }

  .navigation-services {
    margin-top: 12px;
  }

  .navigation-services p {
    margin-bottom: 7px;
  }

  .navigation-services a {
    margin-bottom: 4px;
    line-height: 1.2;
  }

  .navigation-bottom {
    padding-top: 10px;
  }
}


/* Mobile service gallery carousel */
@media (max-width: 700px) {
  .service-gallery-intro {
    padding-bottom: clamp(14px, 2.5vh, 22px);
  }

  .service-gallery-grid {
    display: flex;
    height: 100%;
    min-width: 0;
    gap: 12px;
    padding: 0 clamp(38px, 11vw, 52px) 8px 0;
    overflow-x: auto;
    overflow-y: hidden;
    align-items: stretch;
    scroll-snap-type: x mandatory;
    scroll-padding-left: 0;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
    touch-action: pan-x;
    -webkit-overflow-scrolling: touch;
  }

  .service-gallery-grid::-webkit-scrollbar {
    display: none;
  }

  .service-gallery-card,
  .service-gallery-card:nth-child(2),
  .service-gallery-card:nth-child(3),
  .service-gallery-card:nth-child(4) {
    flex: 0 0 min(82vw, 420px);
    width: min(82vw, 420px);
    height: 100%;
    min-height: 0;
    margin: 0;
    scroll-snap-align: start;
    scroll-snap-stop: always;
    cursor: grab;
  }

  .service-gallery-card:active {
    cursor: grabbing;
  }

  .service-gallery-overlay.is-open .service-gallery-card {
    opacity: .5;
    transform: scale(.96);
  }

  .service-gallery-overlay.is-open .service-gallery-card.is-active {
    opacity: 1;
    transform: scale(1);
  }

  .service-gallery-card:hover img,
  .service-gallery-card:focus-visible img {
    transform: none;
  }

  .service-lightbox {
    display: none !important;
  }
}


/* Open navigation modal state */
html.menu-open {
  overflow: hidden;
  overscroll-behavior: none;
}

body.menu-open {
  position: fixed;
  overflow: hidden;
  overscroll-behavior: none;
}

.site-header.menu-open {
  position: fixed;
  z-index: 300;
  top: 0;
  right: 0;
  left: 0;
  width: 100%;
  background: var(--black) !important;
  color: var(--white) !important;
  border-color: #3c3c39 !important;
  isolation: isolate;
}

.site-header.menu-open > .menu-button,
.site-header.menu-open > .wordmark,
.site-header.menu-open > .enquire-link {
  position: relative;
  z-index: 2;
  color: var(--white);
}

.site-header.menu-open .navigation {
  z-index: 1;
  inset: 74px 0 0;
  width: 100%;
  height: calc(100vh - 74px);
  height: calc(100dvh - 74px);
  background: var(--black);
  overflow: hidden;
  overscroll-behavior: none;
}

@media (max-width: 700px) {
  .site-header.menu-open .navigation {
    inset: 66px 0 0;
    height: calc(100vh - 66px);
    height: calc(100dvh - 66px);
  }
}

/* Responsive audit implementation */
:root {
  --space-xs: 16px;
  --space-sm: 24px;
  --space-md: 40px;
  --space-lg: 72px;
  --space-xl: 120px;
}

body {
  font-size: 16px;
  line-height: 1.6;
}

html.gallery-open,
body.gallery-open {
  overflow: hidden;
  overscroll-behavior: none;
}

#about,
#services,
#planning,
#decor,
#florals,
#rentals,
#stationery,
#destination,
#courses,
#journal,
#team,
#contact {
  scroll-margin-top: 94px;
}

.menu-button,
.enquire-link,
.hero-inquire,
.button,
.text-link,
.service-feature-copy a,
.service-gallery-close,
.service-lightbox-close,
.service-lightbox-nav {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}

.wordmark {
  font-size: 13px;
}

.wordmark span {
  font-size: 11px;
}

.menu-button,
.enquire-link,
.hero-inquire,
.button,
.text-link,
.service-feature-copy a,
.navigation-primary span,
.navigation-primary em,
.navigation-services p,
.hero-index,
.hero-note,
.hero-gallery-label,
.eyebrow,
.service-number,
.course-status,
.courses-edition,
.courses-imprint,
.team-role,
.service-gallery-kicker,
.service-gallery-close,
.service-lightbox-close,
.service-lightbox-nav,
.service-gallery-card span,
.service-lightbox-count,
.copyright {
  font-size: 12px;
}

.navigation-top,
.navigation-bottom,
.navigation-services a,
.site-footer div {
  font-size: 13px;
}

.intro-body,
.service-feature-copy > p:not(.service-number),
.courses-copy > p:not(.courses-edition),
.team-feature div > p:last-child,
.editorial-foot p {
  font-size: 15px;
}

.manifesto-note,
.team-note p {
  font-size: 14px;
}

.contact > p {
  font-size: 16px;
}

.service-gallery-intro p {
  font-size: 13px;
}

.service-gallery-close,
.service-lightbox-close {
  padding: 0 4px;
}

.service-lightbox-nav {
  min-width: 92px;
  justify-content: center;
  padding: 0 12px;
}

.introduction {
  min-height: 600px;
  padding: 96px 12% 88px;
  grid-template-columns: 36% 1fr;
  gap: 12%;
}

.intro-caption {
  left: 12%;
  bottom: 64px;
}

.manifesto {
  padding: 130px 12% 120px;
}

.manifesto-note {
  right: 12%;
  bottom: 108px;
}

.services {
  padding: 110px 7% 90px;
}

.services-title {
  margin-bottom: 48px;
}

.service-feature {
  min-height: clamp(500px, 46vw, 620px);
}

.courses {
  min-height: 620px;
  padding: 96px 7% 88px;
  gap: 6%;
}

.courses-heading {
  justify-content: flex-start;
  gap: 28px;
}

.courses-imprint {
  right: 7%;
  top: 52px;
}

.editorial {
  padding: 100px 12% 86px;
  gap: 52px 9%;
}

.editorial-main {
  height: 420px;
}

.team {
  padding: 96px 7% 84px;
}

.team-feature {
  margin-top: 72px;
}

.team-note {
  margin-top: 48px;
}

.contact {
  padding: 112px 24px;
}

.site-footer {
  padding: 48px 7% 24px;
}

/* Tablet and small desktop */
@media (min-width: 701px) and (max-width: 1100px) {
  .navigation {
    padding: 26px 5% 30px;
  }

  .navigation-grid {
    grid-template-columns: minmax(300px, 1.15fr) minmax(220px, .85fr);
    gap: 6%;
  }

  .navigation-primary a {
    font-size: clamp(38px, 5.4vw, 54px);
  }

  .hero,
  .hero-gallery {
    min-height: 680px;
  }

  .hero {
    grid-template-columns: minmax(330px, 45%) 1fr;
  }

  .hero-copy {
    padding: 64px 10%;
  }

  .hero h1 {
    margin: 90px 0 36px;
    font-size: clamp(80px, 12vw, 126px);
  }

  .hero-note {
    left: 10%;
    bottom: 58px;
  }

  .introduction {
    min-height: 560px;
    padding: 80px 8% 72px;
    grid-template-columns: 42% 1fr;
    gap: 8%;
  }

  .intro-image {
    height: 320px;
  }

  .intro-caption {
    left: 8%;
    bottom: 52px;
  }

  .manifesto {
    padding: 110px 8% 100px;
  }

  .manifesto-note {
    right: 8%;
    bottom: 88px;
  }

  .services {
    padding: 88px 5% 76px;
  }

  .service-feature {
    min-height: clamp(460px, 60vw, 560px);
  }

  .service-feature h3 {
    font-size: clamp(42px, 5.8vw, 60px);
  }

  .courses {
    min-height: 600px;
    padding: 76px 6%;
    grid-template-columns: minmax(0, 1fr) minmax(260px, .75fr);
    grid-template-areas:
      "heading image"
      "copy image";
    gap: 28px 7%;
  }

  .courses-heading {
    grid-area: heading;
    align-self: end;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 0;
  }

  .courses-copy {
    grid-area: copy;
    align-self: start;
    padding: 0;
  }

  .courses-image {
    grid-area: image;
  }

  .courses-imprint {
    display: none;
  }

  .courses h2,
  .team h2 {
    font-size: clamp(66px, 9vw, 92px);
  }

  .editorial {
    padding: 90px 8% 78px;
    gap: 46px 7%;
  }

  .team {
    padding: 90px 7% 76px;
  }

  .team-feature {
    margin: 64px 0 0 10%;
  }
}

/* Compact mobile rhythm */
@media (max-width: 700px) {
  #about,
  #services,
  #planning,
  #decor,
  #florals,
  #rentals,
  #stationery,
  #destination,
  #courses,
  #journal,
  #team,
  #contact {
    scroll-margin-top: 82px;
  }

  .site-header {
    padding-left: max(22px, env(safe-area-inset-left));
    padding-right: max(22px, env(safe-area-inset-right));
  }

  .navigation {
    padding: 18px 22px 22px;
  }

  .navigation-grid {
    justify-content: flex-start;
    overflow-y: auto;
    overscroll-behavior: contain;
  }

  .navigation-primary a {
    min-height: 44px;
    font-size: clamp(27px, min(9.5vw, 5.4vh), 42px);
  }

  .navigation-primary span,
  .navigation-primary em,
  .navigation-services p,
  .navigation-services a,
  .navigation-top,
  .navigation-bottom {
    font-size: 12px;
  }

  .navigation-services a {
    min-height: 40px;
    display: flex;
    align-items: center;
    margin-bottom: 2px;
  }

  .hero {
    height: var(--mobile-hero-height, clamp(600px, calc(100svh - 66px), 720px));
    min-height: 0;
  }

  .hero-copy {
    min-height: 0;
    height: 100%;
    padding: 44px 22px 40px;
  }

  .hero h1 {
    margin: 64px 0 28px;
  }

  .hero-note {
    bottom: 36px;
    width: clamp(92px, calc(38vw - 30px), 120px);
    line-height: 1.45;
  }

  .introduction {
    min-height: 0;
    padding: 60px 22px 56px;
  }

  .intro-image {
    width: 62%;
    height: clamp(220px, 64vw, 250px);
  }

  .intro-copy {
    max-width: 270px;
    margin: 32px 0 0 auto;
  }

  .lead {
    font-size: clamp(31px, 9vw, 36px);
  }

  .intro-body {
    margin-top: 20px;
    font-size: 15px;
  }

  .intro-caption {
    position: static;
    width: 62%;
    margin: 20px 0 0;
    font-size: 12px;
  }

  .manifesto {
    padding: 72px 22px 80px;
  }

  .manifesto h2 {
    font-size: clamp(58px, 17vw, 82px);
  }

  .manifesto-note {
    position: static;
    width: 160px;
    margin: 32px 0 0 auto;
    font-size: 14px;
  }

  .gallery-strip {
    height: 220px;
  }

  .services {
    padding: 64px 22px 56px;
  }

  .services h2 {
    font-size: clamp(48px, 15vw, 61px);
  }

  .service-feature {
    min-height: clamp(400px, 118vw, 460px);
  }

  .service-feature-copy {
    padding: 24px;
  }

  .service-feature h3 {
    font-size: clamp(44px, 14vw, 56px);
  }

  .service-feature-copy > p:not(.service-number) {
    max-width: 330px;
    margin: 16px 0 18px;
    font-size: 14px;
    line-height: 1.55;
  }

  .courses {
    padding: 60px 22px 62px;
  }

  .courses-heading {
    align-items: center;
  }

  .course-status {
    margin-top: 0;
  }

  .courses-copy {
    margin-top: 36px;
  }

  .courses h2,
  .team h2 {
    font-size: clamp(58px, 17vw, 82px);
  }

  .courses-copy > p:not(.courses-edition) {
    margin-top: 24px;
    font-size: 15px;
  }

  .courses .text-link {
    margin-top: 24px;
  }

  .courses-image {
    margin-top: 36px;
  }

  .editorial {
    padding: 68px 22px 64px;
  }

  .editorial h2 {
    font-size: clamp(58px, 18vw, 72px);
  }

  .editorial-main {
    height: 310px;
    margin-top: 40px;
  }

  .editorial-foot {
    margin-top: 32px;
  }

  .team {
    padding: 72px 22px 64px;
  }

  .team-heading h2 {
    margin-top: 36px;
  }

  .team-feature {
    margin-top: 40px;
  }

  .team-feature > div {
    padding: 28px 0 0 10%;
  }

  .team-feature h3 {
    font-size: 68px;
  }

  .team-note {
    margin-top: 36px;
  }

  .contact {
    padding: 80px 22px;
  }

  .contact h2 {
    font-size: clamp(64px, 19vw, 92px);
  }

  .site-footer {
    padding: 40px 22px 22px;
  }

  .service-gallery-intro p {
    font-size: 13px;
  }
}

@media (max-width: 360px) {
  .site-header {
    padding-left: max(16px, env(safe-area-inset-left));
    padding-right: max(16px, env(safe-area-inset-right));
  }

  .courses h2,
  .team h2 {
    font-size: 54px;
  }

  .navigation-services {
    margin-left: 24px;
  }
}

/* Height-aware navigation and galleries for laptops */
@media (min-width: 701px) and (max-height: 800px) {
  .navigation {
    padding-top: 20px;
    padding-bottom: 22px;
  }

  .navigation-top {
    padding-bottom: 16px;
  }

  .navigation-bottom {
    padding-top: 16px;
  }

  .navigation-primary a {
    font-size: clamp(34px, min(5vw, 6.4vh), 58px);
  }

  .navigation-services p {
    margin-bottom: 14px;
  }

  .navigation-services a {
    margin-bottom: 8px;
  }

  .service-gallery-intro {
    padding: 16px 0 18px;
  }

  .service-gallery-intro h2 {
    font-size: clamp(46px, min(7vw, 9vh), 80px);
  }

  .service-gallery-card:nth-child(2) {
    height: calc(100% - 36px);
    margin-top: 24px;
  }

  .service-gallery-card:nth-child(3) {
    height: calc(100% - 18px);
    margin-top: 8px;
  }

  .service-gallery-card:nth-child(4) {
    height: calc(100% - 48px);
    margin-top: 32px;
  }
}

@media (min-width: 701px) and (max-height: 700px) {
  .navigation-grid {
    align-items: flex-start;
    overflow-y: auto;
    padding: 16px 0;
  }

  .navigation-primary a {
    font-size: clamp(32px, min(4.6vw, 5.8vh), 46px);
  }

  .service-gallery-intro p {
    display: none;
  }
}

/* Final responsive audit pass */
.navigation {
  transition: opacity .28s ease, transform .32s cubic-bezier(.2,.65,.3,1), visibility 0s linear .32s;
}

.navigation.open {
  transition-delay: 0s;
}

.service-gallery-overlay {
  transition: opacity .34s ease, visibility 0s linear .34s;
}

.service-gallery-overlay.is-open {
  transition-delay: 0s;
}

.service-lightbox {
  transition: opacity .25s ease, visibility 0s linear .25s;
}

.service-lightbox.is-open {
  transition-delay: 0s;
}

:where(a, button, [tabindex]):focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 4px;
}

.service-gallery-trigger:focus-visible {
  outline-color: var(--white);
  outline-offset: -7px;
}

.intro-caption {
  font-size: 12px;
}

.site-footer {
  row-gap: var(--space-sm);
  column-gap: var(--space-md);
}

.site-footer div {
  gap: 7px;
}

.copyright {
  margin-top: 0 !important;
}

@media (min-width: 701px) {
  .editorial {
    padding: var(--space-lg) 10% 64px;
    gap: var(--space-md) 8%;
  }

  .editorial-main {
    height: 390px;
  }

  .team {
    padding: var(--space-lg) 7% 64px;
  }

  .team-feature {
    margin-top: 56px;
  }

  .team-note {
    margin-top: 32px;
  }

  .contact {
    padding: 82px var(--space-sm);
  }

  .site-footer {
    padding: 32px 7% 16px;
  }
}

@media (min-width: 1101px) {
  .courses {
    min-height: 600px;
    padding: var(--space-lg) 7%;
  }

  .courses-copy {
    padding: var(--space-sm) 0;
  }

  .courses-copy > p:not(.courses-edition),
  .courses .text-link {
    margin-top: var(--space-sm);
  }

}

@media (max-width: 700px) {
  .service-feature {
    min-height: clamp(400px, 108vw, 440px);
  }

  .service-gallery-card figcaption {
    left: 9px;
    bottom: 9px;
    font-size: 12px;
  }

  .site-footer {
    gap: var(--space-sm);
  }
}

@media (max-width: 360px) {
  .navigation-primary a[href="#courses"] {
    flex-wrap: wrap;
  }

  .navigation-primary a[href="#courses"] em {
    flex: 0 0 auto;
    width: calc(100% - 32px);
    margin: 3px 0 2px 32px;
  }

  .navigation-grid {
    scrollbar-width: none;
  }

  .navigation-grid::-webkit-scrollbar {
    display: none;
  }
}

@media (min-width: 701px) and (max-width: 900px) and (max-height: 520px) {
  .hero,
  .hero-gallery {
    min-height: 520px;
  }

  .hero-copy {
    padding-top: var(--space-md);
    padding-bottom: var(--space-md);
  }

  .hero h1 {
    margin: 52px 0 var(--space-sm);
    font-size: clamp(74px, 11vw, 94px);
  }

  .hero-note {
    bottom: var(--space-sm);
  }
}

/* Mobile navigation fits entirely in the available viewport. */
@media (max-width: 700px) {
  .navigation {
    padding: 12px max(16px, env(safe-area-inset-right)) 14px max(16px, env(safe-area-inset-left));
    overflow: hidden;
  }

  .navigation-top {
    padding-bottom: 10px;
    font-size: 11px;
    line-height: 1.4;
  }

  .navigation-grid {
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
    gap: 10px;
    align-items: center;
    align-content: center;
    width: 100%;
    min-width: 0;
    min-height: 0;
    padding: 12px 0;
    overflow: visible;
  }

  .navigation-primary {
    width: 100%;
    min-width: 0;
  }

  .navigation-primary a {
    display: grid;
    grid-template-columns: 16px minmax(0, 1fr);
    column-gap: 7px;
    align-items: center;
    width: 100%;
    min-height: 40px;
    font-size: clamp(24px, min(7.4vw, 4.7vh), 32px);
    line-height: .88;
    white-space: normal;
  }

  .navigation-primary span {
    width: 16px;
    font-size: 11px;
  }

  .navigation-primary em,
  .navigation-primary a[href="#courses"] em {
    grid-column: 2;
    width: auto;
    margin: 3px 0 1px;
    font-size: 11px;
    line-height: 1.2;
  }

  .navigation-services,
  .navigation-services:last-child {
    min-width: 0;
    margin: 0;
    padding: 2px 0 2px 12px;
  }

  .navigation-services p {
    margin-bottom: 5px;
    font-size: 11px;
    line-height: 1.3;
  }

  .navigation-services a {
    width: 100%;
    min-height: 40px;
    margin: 0;
    padding: 0;
    font-size: 11px;
    line-height: 1.25;
    overflow-wrap: anywhere;
  }

  .navigation-bottom {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    padding-top: 10px;
    font-size: 11px;
    line-height: 1.4;
    letter-spacing: .1em;
  }

  .navigation-bottom a {
    white-space: nowrap;
  }
}

@media (min-width: 560px) and (max-width: 700px) and (max-height: 480px) {
  .navigation {
    padding-top: 8px;
    padding-bottom: 10px;
  }

  .navigation-top {
    padding-bottom: 6px;
  }

  .navigation-grid {
    grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr);
    gap: 16px;
    padding: 6px 0;
  }

  .navigation-primary {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 10px;
  }

  .navigation-primary a {
    min-height: 40px;
    font-size: 24px;
  }

  .navigation-services {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 10px;
  }

  .navigation-services p {
    grid-column: 1 / -1;
  }

  .navigation-bottom {
    padding-top: 6px;
    line-height: 1.3;
  }
}

@media (min-width: 701px) and (max-width: 900px) and (max-height: 520px) {
  .navigation {
    padding-top: 10px;
    padding-bottom: 12px;
  }

  .navigation-top {
    padding-bottom: 8px;
  }

  .navigation-grid {
    align-items: center;
    padding: 4px 0;
    overflow: visible;
  }

  .navigation-services p {
    margin-bottom: 4px;
  }

  .navigation-services a {
    margin-bottom: 2px;
    line-height: 1.2;
  }

  .navigation-bottom {
    padding-top: 8px;
  }
}

/* Service enquiry: the same paper, ink and editorial typography as the showcase. */
.service-feature-copy .service-enquiry-trigger {
  min-height:44px;
  border:0;
  border-bottom:1px solid currentColor;
  padding:0 0 6px;
  background:transparent;
  color:inherit;
  font-size:12px;
}
html.enquiry-open { overflow:hidden; overscroll-behavior:none; }
.enquiry-dialog {
  width:min(820px, calc(100% - 48px));
  max-width:none;
  max-height:calc(100vh - 48px);
  max-height:calc(100dvh - 48px);
  margin:auto;
  border:1px solid #b9b9b4;
  padding:0;
  /* overflow-y:auto alone also makes overflow-x:auto. */
  overflow-x:hidden;
  overflow-y:auto;
  overscroll-behavior:contain;
  touch-action:pan-y pinch-zoom;
  background:var(--white);
  color:var(--black);
  color-scheme:light;
}
.enquiry-dialog::backdrop { background:rgba(9,9,9,.8); }
.enquiry-bar {
  position:sticky;
  top:0;
  z-index:1;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  padding:12px 36px;
  border-bottom:1px solid #b9b9b4;
  background:var(--white);
}
.enquiry-bar .eyebrow { margin:0; color:#575751; }
.enquiry-close {
  display:inline-flex;
  min-height:44px;
  align-items:center;
  gap:12px;
  border:0;
  padding:0;
  background:none;
  color:inherit;
  font:700 11px var(--sans);
  letter-spacing:.12em;
  text-transform:uppercase;
  cursor:pointer;
}
.enquiry-close span { font:400 24px/1 var(--sans); }
.enquiry-content { min-width:0; padding:36px; overflow-wrap:anywhere; }
.enquiry-content h2 { margin:0; font:500 clamp(42px,5vw,64px)/.9 var(--serif); letter-spacing:-.05em; }
.enquiry-content h2 em { font-weight:400; }
.enquiry-content h2:focus { outline:none; }
#enquiry-intro { max-width:440px; margin:22px 0 32px; font-size:14px; line-height:1.7; color:#575751; }
.enquiry-required-note { margin:0 0 24px; color:#575751; font-size:12px; }
.enquiry-section { min-width:0; margin:0 0 28px; padding:20px 0 0; border:0; border-top:1px solid #b9b9b4; }
.enquiry-section legend { max-width:100%; padding:0 14px 0 0; white-space:normal; font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.enquiry-section legend span { margin-right:12px; color:#696966; }
.enquiry-fields { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px; }
.enquiry-field { display:flex; min-width:0; flex-direction:column; gap:8px; font-size:12px; font-weight:600; }
.enquiry-field-wide { grid-column:1/-1; }
.enquiry-field :is(input, textarea) {
  display:block;
  width:100%;
  min-width:0;
  max-width:100%;
  min-height:48px;
  border:1px solid #aaa9a3;
  border-radius:0;
  padding:12px;
  background:transparent;
  color:var(--black);
  font:400 16px/1.5 var(--sans);
}
.enquiry-field textarea { resize:vertical; }
.enquiry-field input[type="date"] { appearance:none; min-inline-size:0; max-inline-size:100%; }
.enquiry-field input[type="date"]::-webkit-datetime-edit { min-width:0; padding:0; }
.enquiry-field input[type="date"]::-webkit-date-and-time-value { min-width:0; text-align:left; }
.enquiry-field :is(input, textarea)::placeholder { color:#696966; opacity:1; }
.enquiry-field :is(input, textarea):focus-visible,
.enquiry-dialog :is(button, input[type="checkbox"]):focus-visible { outline:2px solid var(--black); outline-offset:3px; }
.enquiry-services > p { margin:0 0 16px; color:#575751; font-size:13px; }
.enquiry-service-options { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:10px; }
.enquiry-service-options label { display:flex; align-items:center; gap:12px; min-width:0; min-height:58px; border:1px solid #aaa9a3; padding:12px; font-size:13px; line-height:1.5; cursor:pointer; }
.enquiry-service-options label span { min-width:0; }
.enquiry-service-options label:has(input:checked) { border-color:var(--black); background:#e7e7e0; }
.enquiry-service-options input { flex:0 0 auto; width:18px; height:18px; margin:0; accent-color:var(--black); }
.enquiry-services .enquiry-error { margin:12px 0 0; color:#982f25; }
.enquiry-error[hidden] { display:none; }
.enquiry-submit-row { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-top:28px; padding-top:24px; border-top:1px solid #b9b9b4; }
.enquiry-submit-row p { max-width:310px; margin:0; color:#575751; font-size:12px; line-height:1.7; }
.enquiry-submit-row p a { text-decoration:underline; text-underline-offset:3px; }
.enquiry-data-note { margin:12px 0 0; color:#575751; font-size:12px; line-height:1.6; }
.site-footer .legal-links { grid-column:1/-1; padding-top:20px; border-top:1px solid var(--line); }
.site-footer .legal-links p { max-width:620px; overflow-wrap:anywhere; }
.enquiry-submit { flex-shrink:0; min-height:48px; border:1px solid var(--black); font-family:var(--sans); font-size:11px; cursor:pointer; }
.enquiry-submit:hover { background:#33332e; }
.enquiry-honey { display:none; }
.enquiry-submit:disabled { opacity:.6; cursor:wait; }
.enquiry-submit .enquiry-submit-label { font-size:11px; }
.enquiry-delivery-error { margin:20px 0 0; color:#982f25; font-size:13px; line-height:1.7; }
.enquiry-delivery-error a { text-decoration:underline; }
.enquiry-success { padding:0 0 8px; }
.enquiry-success h3 { margin:0; font:500 clamp(38px,5vw,58px)/.95 var(--serif); letter-spacing:-.04em; }
.enquiry-success h3 em { font-weight:400; }
.enquiry-done { margin-top:28px; border:1px solid var(--black); min-height:48px; font-family:var(--sans); cursor:pointer; }
.enquiry-success:focus { outline:none; }
.enquiry-form-intro[hidden],#event-enquiry-form[hidden],.enquiry-success[hidden],.enquiry-delivery-error[hidden] { display:none; }
@media (max-width:700px) {
  .enquiry-dialog { width:calc(100% - 24px); max-height:calc(100vh - 24px); max-height:calc(100dvh - 24px); }
  .enquiry-bar { padding:8px 20px; }
  .enquiry-bar .eyebrow { font-size:9px; letter-spacing:.1em; }
  .enquiry-content { padding:28px 20px; }
  .enquiry-content h2 { font-size:clamp(38px,10vw,52px); }
  .enquiry-fields,.enquiry-service-options { grid-template-columns:minmax(0,1fr); }
  .enquiry-section legend { font-size:10px; letter-spacing:.05em; }
  .enquiry-section legend span { margin-right:8px; }
  .enquiry-submit-row { flex-direction:column; align-items:stretch; gap:20px; }
  .enquiry-submit-row p { max-width:none; }
  .enquiry-submit { justify-content:space-between; }
}
