/* Shared direction for the home and project gallery. */
.home-body,.projects-body {
  --paper:#f5f3ee;
  --ink:#282923;
  --muted:#66675e;
  --line:#d8d8cf;
  --soft:#ecece5;
  --forest:#30372e;
  --chalk:#f5f3ee;
  --olive:#555e49;
  --space:clamp(22px,4.5vw,86px);
  background:var(--paper);
}
.home-body .wrap,.projects-body .wrap { max-width:1440px; }
.home-body .header,.projects-body .header {
  height:84px;
  padding-inline:max(var(--space),calc((100vw - 1440px)/2));
  border:0;
}
.home-body .header { margin-bottom:-84px; }
.home-body .header.is-scrolled { background:var(--paper);color:var(--ink); }
.home-body .header .brand,.projects-body .header .brand { font-size:25px;font-weight:600;letter-spacing:-.055em; }
.home-body .scroll-progress,.projects-body .page-progress { height:1px;background:var(--olive); }
.home-body .header nav,.projects-body .header nav { inset:84px 0 auto;height:calc(100dvh - 84px); }
.home-body .header nav::after,.projects-body .header nav::after { content:none; }
@media(min-width:1101px) {
  .home-body .header:not(:has(nav.open)),.projects-body .header:not(:has(nav.open)) { display:grid;grid-template-columns:1fr auto 1fr;gap:28px; }
  .home-body .header:not(:has(nav.open)) #menu,.projects-body .header:not(:has(nav.open)) #menu { display:none; }
  .home-body .header:not(:has(nav.open)) nav,.projects-body .header:not(:has(nav.open)) nav {
    display:flex;position:static;inset:auto;width:auto;height:auto;min-height:0;
    padding:0;margin:0;overflow:visible;background:none;color:inherit;flex-direction:row;
    align-items:center;justify-content:center;gap:clamp(20px,2.2vw,36px);
  }
  .home-body .header:not(:has(nav.open)) nav a,.projects-body .header:not(:has(nav.open)) nav a {
    display:inline-flex;width:auto;padding:0;min-height:44px;font-size:13px;font-weight:500;
    line-height:1.3;letter-spacing:0;text-transform:none;color:inherit;opacity:1;transform:none;
  }
  .home-body .header:not(:has(nav.open)) nav a:hover,.projects-body .header:not(:has(nav.open)) nav a:hover,
  .projects-body .header nav a[aria-current] { text-decoration:underline;text-underline-offset:7px; }
  .home-body .header .utilities,.projects-body .header .utilities { margin-left:0;justify-self:end; }
}
.home-body .home-hero { height:100svh;min-height:620px;max-height:1200px; }
.home-body .home-hero-media:after {
  background:linear-gradient(180deg,rgba(17,26,21,.48),transparent 25%,transparent 72%,rgba(17,26,21,.38));
}
.home-body .home-hero-media .home-hero-frame { filter:none; }
.home-body .home-hero-frame-second { animation-duration:22s; }
.home-hero-caption { position:relative;z-index:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;padding-block:160px 44px; }
.home-body .home-hero h1 { max-width:16ch;font-size:clamp(52px,5.7vw,88px);line-height:1.08;letter-spacing:-.055em;margin:0;color:#fff; }
.home-body .home-hero h1 em { font:inherit;letter-spacing:inherit; }
.home-hero-foot { display:flex;align-items:center;justify-content:space-between;margin-top:36px; }
.home-body .home-hero .home-link { color:#fff;font-size:15px;font-weight:500;gap:55px;border-bottom:0; }
.home-body .home-hero-timeline { width:120px; }
.home-body .home-hero-timeline::after { animation-duration:11s; }
.home-body .home-intro { padding-block:90px;background:var(--paper);color:var(--ink);border-bottom:1px solid var(--line); }
.home-body .home-intro-content { display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);align-items:end;gap:clamp(36px,8vw,130px); }
.home-body .home-intro h1 { font-size:clamp(42px,4.5vw,72px);line-height:1.12;letter-spacing:-.055em;margin:0;max-width:19ch; }
.home-body .home-intro h1 em { font:inherit;letter-spacing:inherit; }
.home-body .home-intro-detail .home-link { margin-top:28px; }
.home-body .home-intro p { font-size:clamp(18px,1.7vw,24px);line-height:1.5;max-width:36ch; }
.home-body .home-link { font-size:14px;font-weight:500;gap:32px; }
.home-projects { padding-block:100px 110px; }
.home-projects-head { display:flex;align-items:center;justify-content:space-between;margin-bottom:40px; }
.home-projects-head h2 { font-size:clamp(36px,4vw,58px);letter-spacing:-.05em; }
.home-projects-open { display:grid;place-items:center;width:54px;height:54px;border:1px solid var(--line);border-radius:50%;transition:background .2s,color .2s; }
.home-projects-open:hover { background:var(--forest);color:var(--chalk); }
.home-projects-grid { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px; }
.home-projects-grid img { display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:fill; }
.home-projects-grid figcaption { padding-top:18px;font-size:22px;line-height:1.3;letter-spacing:-.025em; }
.home-projects-grid figcaption span { display:block;margin-top:7px;font-size:13px;color:var(--muted);letter-spacing:0; }
.home-projects-grid a:hover figcaption { text-decoration:underline;text-underline-offset:5px; }
.home-body .home-statement { border-top:1px solid var(--line);padding-block:100px; }
.home-body .home-statement-main { grid-template-columns:minmax(0,1.1fr) minmax(0,.7fr);gap:12%;align-items:center; }
.home-body .home-statement h2 { font-size:clamp(40px,4.7vw,70px);line-height:1.12; }
.home-body .home-statement-bottom { border:0;padding:0;margin:36px 0 0; }
.home-body .home-founder { max-width:390px;justify-self:end; }
.home-body .home-founder img { height:auto;aspect-ratio:1037/1250;max-height:510px;object-position:center 25%; }
.home-body .home-founder figcaption { border:0;padding-top:0;font-size:14px; }
.home-body .home-areas { padding-top:80px; }
.home-body .home-areas-head h2 { font-size:clamp(40px,4.2vw,64px);line-height:1.12; }
.home-body .home-scene h3 { font-size:clamp(42px,4.5vw,70px);line-height:1.1; }
.home-body .home-scene-pool,.home-body .home-scene-lounge { height:clamp(480px,72svh,760px); }
.home-body .home-scene-dining { min-height:0;max-height:none;background:var(--soft); }
.home-body .home-making { margin-top:0;min-height:520px;background:var(--forest);grid-template-columns:1fr 1fr; }
.home-body .home-making-film { min-height:520px; }
.home-body .home-making-copy h2 { font-size:clamp(40px,4.2vw,64px);line-height:1.12; }
.home-body .home-close { background:var(--soft);padding-block:110px; }
.home-body .home-close h2 { font-size:clamp(44px,5.5vw,82px);line-height:1.08; }
.home-body .home-close>.wrap>div { justify-self:end; }
.home-body .home-cta { font-size:14px;font-weight:500;background:var(--forest);color:var(--chalk);min-height:54px; }
.home-body .footer { padding-top:50px; }

/* Photographs keep their complete composition; the groups establish the rhythm. */
.projects-body .projects-opening {
  min-height:0;display:grid;grid-template-columns:minmax(220px,.7fr) minmax(0,1.65fr);
  gap:clamp(35px,5vw,85px);align-items:center;padding-block:60px 100px;
}
.projects-body .projects-opening-main { display:flex;flex-direction:column;align-items:flex-start;gap:30px; }
.projects-body .projects-opening h1 { font-size:clamp(54px,5.7vw,86px);line-height:1.06;letter-spacing:-.06em; }
.projects-body .projects-opening p { font-size:16px;line-height:1.7;padding:0;max-width:31ch; }
.projects-body .projects-scroll { gap:25px;font-size:13px;margin-top:12px; }
.projects-body .projects-scroll svg { width:17px;height:17px;transform:rotate(90deg); }
.projects-body .projects-lead { width:100%;margin:0; }
.projects-body .projects-lead img { width:100%;height:auto;aspect-ratio:2048/1368; }
.projects-body .projects-gallery { background:var(--paper);padding-block:10px 100px; }
.projects-body .projects-gallery .projects-heading { padding-block:28px 35px;border-top:1px solid var(--line); }
.projects-body .projects-heading h2 { max-width:none;font-size:clamp(28px,2.5vw,38px);letter-spacing:-.04em;line-height:1.2; }
.projects-body .projects-grid { gap:62px 28px; }
.projects-body .project-photo { position:relative;width:100%; }
.projects-body .project-photo img { object-fit:fill; }
.projects-body .project-photo::after {
  content:"+";position:absolute;right:14px;bottom:14px;display:grid;place-items:center;
  width:34px;height:34px;background:var(--paper);color:var(--ink);border-radius:50%;
  font-size:22px;font-weight:400;line-height:1;opacity:0;transition:opacity .2s;
}
.projects-body .project-photo:hover::after,.projects-body .project-photo:focus-visible::after { opacity:1; }
.projects-body .projects-lead figcaption,.projects-body .projects-grid figcaption,.projects-body .projects-portraits figcaption {
  position:relative;display:block;border:0;margin-top:18px;padding:0 34px 0 0;
  font-size:clamp(19px,1.6vw,25px);font-weight:500;line-height:1.35;letter-spacing:-.025em;
}
.projects-body .projects-lead figcaption span,.projects-body .projects-grid figcaption span,.projects-body .projects-portraits figcaption span {
  display:block;margin-top:7px;font-size:13px;white-space:normal;line-height:1.5;color:var(--muted);
}
.projects-body .projects-portraits { margin-top:72px;gap:28px; }
.projects-body .projects-portraits .project-photo img { aspect-ratio:1; }
.projects-body .projects-index { padding-block:60px 100px;border-top:1px solid var(--line); }
.projects-body .projects-index .projects-heading { padding-bottom:38px; }
.projects-body .projects-index li { font-size:18px;padding-block:18px; }
.projects-body .projects-end { background:var(--forest);padding-block:100px; }
.projects-body .projects-end h2 { font-size:clamp(40px,4.6vw,68px);line-height:1.12; }
.projects-body .projects-end .text-link { padding-bottom:8px;border-bottom:1px solid currentColor;font-size:14px;font-weight:500; }
.projects-body .projects-lightbox { width:min(94vw,1500px);height:min(90dvh,1000px);max-height:90dvh;overflow:hidden;box-sizing:border-box; }
.projects-body .projects-lightbox-close { border:0;text-decoration:underline;text-underline-offset:5px; }
.projects-body .projects-lightbox>img { max-height:calc(96dvh - 70px);object-fit:contain; }
.projects-body:has(.projects-lightbox[open]) { overflow:hidden; }
.projects-body figure { scroll-margin-top:110px; }
@media(max-width:1100px) {
  .home-body .header,.projects-body .header { display:flex;height:68px; }
  .home-body .header { margin-bottom:-68px; }
  .home-body .header #menu,.projects-body .header #menu { display:flex;left:auto;right:calc(var(--space) + 58px);transform:translateY(-50%); }
  .home-body .header nav,.projects-body .header nav { inset:68px 0 auto;height:calc(100dvh - 68px); }
  .home-body .header:not(:has(nav.open)) nav,.projects-body .header:not(:has(nav.open)) nav { display:none; }
  .home-body .header nav.open,.projects-body .header nav.open { min-height:0; }
  .home-body .home-hero { min-height:600px; }
  .projects-body .projects-opening { grid-template-columns:1fr;gap:38px;padding-block:45px 75px; }
  .projects-body .projects-opening-main { display:grid;grid-template-columns:1fr 1fr;column-gap:45px; }
  .projects-body .projects-opening-main .projects-scroll { grid-column:1/-1;margin-top:0; }
  .projects-body .projects-opening h1 { font-size:64px; }
  .projects-body .projects-lead { max-width:100%; }
}
@media(max-width:600px) {
  .projects-body .projects-lightbox { width:100vw;height:100dvh;max-height:100dvh; }
}
@media(max-width:760px) {
  .home-projects-grid { grid-template-columns:1fr;gap:35px; }
  .home-projects { padding-block:65px; }
  .home-projects-head { margin-bottom:28px; }
  .home-body .home-intro-content { display:block; }
  .home-body .home-intro .home-link { margin-top:20px; }
  .home-body .home-intro { padding-block:55px; }
  .home-body .home-intro-detail { margin-top:28px; }
  .home-body .home-statement { padding-block:65px; }
  .home-body .home-statement-main { display:flex;flex-direction:column;gap:36px;align-items:stretch; }
  .home-body .home-founder { width:80%;max-width:340px;align-self:flex-end; }
  .home-body .home-areas { padding-top:45px; }
  .home-body .home-making-film { min-height:0; }
  .home-body .home-close { padding-block:75px; }
  .projects-body .projects-opening { padding-block:35px 65px; }
  .projects-body .projects-opening-main { display:flex;gap:22px; }
  .projects-body .projects-opening h1 { font-size:clamp(50px,12vw,68px); }
  .projects-body .projects-opening p { max-width:38ch;font-size:15px; }
  .projects-body .projects-opening .projects-scroll { margin:0; }
  .projects-body .projects-grid { gap:42px; }
  .projects-body .projects-portraits { margin-top:42px;gap:42px; }
  .projects-body .projects-gallery { padding-bottom:65px; }
  .projects-body .projects-index { padding-block:45px 65px; }
  .projects-body .projects-end { padding-block:70px; }
  .projects-body .project-photo::after { opacity:1;width:30px;height:30px;font-size:20px;right:10px;bottom:10px; }
}
@media(max-width:700px) {
  .home-body .header .brand,.projects-body .header .brand { font-size:22px; }
  .home-body .home-hero { height:92svh;min-height:570px;max-height:850px; }
  .home-hero-caption { padding-block:115px 28px; }
  .home-body .home-hero h1 { font-size:clamp(40px,8.8vw,61px);max-width:15ch;line-height:1.12; }
  .home-hero-foot { margin-top:22px; }
  .home-body .home-hero-timeline { width:70px; }
  .home-body .home-hero-media .home-hero-frame-first { object-position:59% center; }
  .home-body .home-scene-dining { min-height:0;max-height:none; }
  .home-body .home-making { display:block;min-height:0; }
  .home-body .home-making-copy { padding:60px var(--space); }
  .home-body .home-close h2 { font-size:clamp(43px,10vw,62px); }
}
@media(prefers-reduced-motion:reduce) {
  .home-body .home-hero-timeline { display:none; }
  .home-body .home-hero-frame-second { opacity:0;animation:none; }
}

/* A single full-width project opens the collection. */
.projects-body .header { margin-bottom:-84px;background:transparent;color:#fff; }
.projects-body .header.is-scrolled,.projects-body .header:has(nav.open) { background:var(--paper);color:var(--ink); }
.projects-body .projects-feature { position:relative;isolation:isolate;background:var(--forest);color:#fff; }
.projects-feature figure { position:relative;margin:0; }
.projects-body .projects-feature-photo { position:relative;display:block;width:100%; }
.projects-body .projects-feature-photo img { display:block;width:100%;height:auto;aspect-ratio:2048/1368;object-fit:contain; }
.projects-feature-photo::before {
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(10,18,12,.5),transparent 22%),linear-gradient(90deg,rgba(10,18,12,.46),transparent 65%),linear-gradient(0deg,rgba(10,18,12,.5),transparent 30%);
}
.projects-body .projects-feature-photo::after { content:none; }
.projects-feature-caption { position:absolute;inset:38% 0 auto;pointer-events:none; }
.projects-feature-caption h1 { font-family:Georgia,serif;font-size:clamp(58px,6.3vw,104px);font-weight:400;letter-spacing:-.035em;line-height:1.06; }
.projects-feature-caption span { display:block;margin-top:20px;font-size:15px; }
.projects-feature-foot { position:absolute;inset:min(calc(100svh - 110px),calc(100% - 110px)) 0 auto;pointer-events:none; }
.projects-body .projects-feature-foot .projects-scroll { pointer-events:auto;gap:50px;margin:0;color:#fff;font-size:15px;border-bottom:1px solid rgba(255,255,255,.7);padding-bottom:8px;animation:none; }
.projects-body .projects-feature-foot svg { transform:rotate(90deg); }
.projects-body .projects-gallery { padding-block:90px 100px;scroll-margin-top:84px; }
.projects-body .projects-gallery .projects-heading { padding-block:0 48px;border:0;align-items:start; }
.projects-body .projects-gallery .projects-heading h2 { font-size:clamp(36px,4vw,60px); }
.projects-body .projects-gallery .projects-heading p { max-width:40ch;font-size:15px;line-height:1.7; }
.projects-body .projects-grid { gap:65px 32px; }
.projects-body .projects-gallery .project-photo img { object-fit:contain; }
.projects-body .projects-grid figcaption,.projects-body .projects-portraits figcaption { font-size:clamp(21px,1.8vw,28px);font-weight:400;margin-top:20px; }
.projects-body .projects-portraits { margin-top:65px;gap:32px; }
.projects-body .projects-feature-photo:focus-visible { outline:3px solid #fff;outline-offset:-7px; }
@media(max-width:1100px) {
  .projects-body .header { margin-bottom:-68px; }
  .projects-body .projects-gallery { scroll-margin-top:68px; }
}
@media(max-width:760px) {
  .projects-feature-caption { inset:auto 0 84px; }
  .projects-feature-caption h1 { font-size:clamp(32px,8vw,58px); }
  .projects-feature-caption span { font-size:13px;margin-top:10px; }
  .projects-feature-foot { inset:auto 0 18px; }
  .projects-body .projects-feature-foot .projects-scroll { font-size:14px;gap:32px;padding:0; }
  .projects-body .projects-gallery { padding-block:50px 65px; }
  .projects-body .projects-gallery .projects-heading { padding-bottom:30px; }
  .projects-body .projects-gallery .projects-heading p { margin-top:18px; }
  .projects-body .projects-grid,.projects-body .projects-portraits { gap:42px; }
  .projects-body .projects-portraits { margin-top:42px; }
}
