/* ================================================================ BOLTON — EDITORIAL
   The home and investment pages' own look: a film title card up top, magazine
   spreads below, a dark screening room for the films and the price list set
   like a printed one. Colour comes from the studio's own swatches (olive, sage,
   terra) and is spent in a few places only. Everything here is scoped under
   body.ed so the rest of the site is untouched. */
.ed{
  --bone:#EDEAE3; --paper:#F5F2EC; --ink:#1B1916; --smoke:#625D55; --hair:rgba(27,25,22,.15);
  --olive:#5F6038; --olive-deep:#3B3C24; --sage:#9BA06D; --sage-tint:#E2E3D3;
  --terra:#C8763C; --terra-deep:#A6572A; --gold:#9C7A45;
  --night:#14140F; --night-fg:#ECE7DE; --night-dim:rgba(236,231,222,.6); --night-hair:rgba(236,231,222,.15);
  --cream:#F3EEE4; --cream-dim:rgba(243,238,228,.72); --cream-hair:rgba(243,238,228,.25);
  --display:'Libre Caslon Display','Bodoni 72',Didot,Georgia,serif;
  --serif:'Libre Caslon Text',Georgia,'Times New Roman',serif;
  --ui:'Albert Sans','Helvetica Neue',Arial,sans-serif;
  --gut:clamp(18px,5vw,80px); --max:1360px;
  --ease:cubic-bezier(.22,1,.36,1); --ease-io:cubic-bezier(.77,0,.18,1);
  background:var(--bone);color:var(--ink);font-family:var(--serif);font-size:17px;line-height:1.7;margin:0;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;color-scheme:light;
}
.ed *,.ed *::before,.ed *::after{box-sizing:border-box}
html:has(body.ed){scroll-behavior:smooth;scroll-padding-top:90px}
@media (prefers-reduced-motion:reduce){html:has(body.ed){scroll-behavior:auto}}
.ed img{max-width:100%;display:block}
.ed a{color:inherit}
.ed :focus-visible{outline:1.5px solid currentColor;outline-offset:3px}
.ed p{margin:0}
.ed h1,.ed h2,.ed h3,.ed h4{font-family:var(--display);font-weight:400;line-height:1.02;letter-spacing:-.01em;text-wrap:balance;margin:0}
.ed em{font-family:var(--serif);font-style:italic}
.ed .wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--gut)}
.ed .cap{font-family:var(--ui);font-size:11px;letter-spacing:.22em;text-transform:uppercase;font-weight:500}
.ed .muted{color:var(--smoke)}
.ed ::selection{background:var(--sage);color:var(--ink)}

/* links draw their underline; buttons fill from the left */
.ed .link{font-family:var(--ui);font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:500;text-decoration:none;display:inline-flex;gap:.5em;align-items:center;padding-bottom:4px;
  background:linear-gradient(currentColor,currentColor) 0 100%/100% 1px no-repeat;transition:background-size .5s var(--ease),color .3s}
.ed .link:hover{background-size:0 1px;background-position:100% 100%}
.ed .link .ar{display:inline-block;transition:transform .5s var(--ease)}
.ed .link:hover .ar{transform:translate(3px,-2px)}
.ed .btn{font-family:var(--ui);font-size:12px;letter-spacing:.2em;text-transform:uppercase;font-weight:500;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:.6em;
  min-height:50px;padding:0 30px;border:1px solid var(--ink);color:var(--bone);cursor:pointer;position:relative;overflow:hidden;isolation:isolate;
  background:linear-gradient(var(--terra-deep),var(--terra-deep)) 0 0/0% 100% no-repeat,var(--ink);transition:background-size .6s var(--ease),border-color .6s var(--ease),color .3s}
.ed .btn:hover{background-size:100% 100%,auto;border-color:var(--terra-deep)}
.ed .btn--line{color:var(--ink);background:linear-gradient(var(--ink),var(--ink)) 0 0/0% 100% no-repeat,transparent}
.ed .btn--line:hover{color:var(--bone);border-color:var(--ink)}
.ed .btn:disabled{opacity:.6;cursor:wait}

/* ---------------------------------------------------------------- header */
.ed .hdr{position:sticky;top:0;z-index:40;padding-top:env(safe-area-inset-top,0px);transition:transform .6s var(--ease),background-color .4s,box-shadow .4s,color .4s ease .45s}
.ed .hdr .brand img,.ed .hdr .brand__sub{transition:transform .8s var(--ease),filter .4s ease .45s,color .4s ease .45s,opacity .3s,height .4s}
.ed.menu-open .hdr,.ed.menu-open .hdr .brand img,.ed.menu-open .hdr .brand__sub{transition-delay:0s}
.ed .hdr.is-stuck{background:rgba(237,234,227,.92);-webkit-backdrop-filter:saturate(1.2) blur(10px);backdrop-filter:saturate(1.2) blur(10px);box-shadow:0 1px 0 var(--hair)}
.ed .hdr.is-hidden{transform:translateY(-100%)}
.ed .hdr__in{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;padding-block:18px;transition:padding .4s var(--ease)}
.ed .hdr.is-stuck .hdr__in{padding-block:10px}
.ed .hdr nav{display:flex;gap:30px;align-items:center}
.ed .hdr nav.r{justify-content:flex-end}
.ed .hdr nav a{font-family:var(--ui);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;text-decoration:none;font-weight:500;padding-block:6px;
  background:linear-gradient(currentColor,currentColor) 100% 100%/0 1px no-repeat;transition:background-size .45s var(--ease)}
.ed .hdr nav a:hover,.ed .hdr nav a.on{background-size:100% 1px;background-position:0 100%}
.ed .hdr nav a.hdr__cta{border:1px solid var(--ink);padding:10px 18px;background:linear-gradient(var(--ink),var(--ink)) 0 0/0 100% no-repeat;transition:background-size .5s var(--ease),color .3s}
.ed .hdr nav a.hdr__cta:hover{background-size:100% 100%;color:var(--bone)}
.ed .brand{display:flex;flex-direction:column;align-items:center;gap:6px;text-decoration:none}
.ed .brand img{height:30px;width:auto;transition:transform .8s var(--ease)}
.ed .brand:hover img{transform:rotate(-8deg)}
.ed .brand__word{font-family:var(--display);font-size:22px;letter-spacing:.34em;line-height:1;padding-left:.34em}
.ed .brand__sub{font-family:var(--ui);font-size:9.5px;letter-spacing:.32em;text-transform:uppercase;color:var(--smoke);padding-left:.32em;transition:opacity .3s,height .4s}
.ed .hdr.is-stuck .brand__sub{opacity:0;height:0;overflow:hidden}
.ed .menu-btn{display:none;font-family:var(--ui);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;font-weight:500;background:none;border:0;padding:12px 0 12px 12px;color:inherit;cursor:pointer;align-items:center;gap:10px}
.ed .menu-btn i{display:grid;gap:5px;width:22px}
.ed .menu-btn i::before,.ed .menu-btn i::after{content:"";height:1px;background:currentColor;transition:transform .5s var(--ease)}
.ed.menu-open .menu-btn i::before{transform:translateY(3px) rotate(45deg)}
.ed.menu-open .menu-btn i::after{transform:translateY(-3px) rotate(-45deg)}
.ed .mnav{position:fixed;inset:0;z-index:35;background:var(--olive-deep);color:var(--cream);display:flex;flex-direction:column;justify-content:flex-end;gap:6px;
  padding:110px var(--gut) calc(40px + env(safe-area-inset-bottom,0px));clip-path:inset(0 0 100% 0);visibility:hidden;
  transition:clip-path .7s var(--ease-io) .12s,visibility 0s linear .85s}
/* opening drops the olive down from the top; closing lifts it back up after the
   links have slipped away, and only then hides it */
.ed.menu-open .mnav{clip-path:inset(0 0 0 0);visibility:visible;transition:clip-path .8s var(--ease-io),visibility 0s}
.ed .mnav a{font-family:var(--display);font-size:clamp(38px,10vw,64px);line-height:1.1;text-decoration:none;opacity:0;transform:translateY(-14px);transition:opacity .3s ease,transform .45s var(--ease)}
.ed .mnav p{opacity:0;transition:opacity .3s ease}
.ed.menu-open .mnav p{opacity:1;transition:opacity .6s ease .6s}
.ed.menu-open .mnav a{transition:opacity .6s var(--ease),transform .8s var(--ease)}
.ed.menu-open .mnav a{opacity:1;transform:none}
.ed:not(.menu-open) .mnav a{transform:translateY(-14px)}
.ed .mnav p{margin-top:28px;color:var(--cream-dim)}
.ed.menu-open .hdr{color:var(--cream);background:transparent;box-shadow:none}
.ed.menu-open .brand__sub{color:var(--cream-dim)}
.ed.menu-open .brand img{filter:invert(1) brightness(1.6)}
@media (max-width:900px){
  .ed .hdr__in{grid-template-columns:1fr auto}
  .ed .hdr nav{display:none}
  .ed .brand{align-items:flex-start}
  .ed .brand__word,.ed .brand__sub{padding-left:0}
  .ed .menu-btn{display:inline-flex;justify-self:end}
}

/* ---------------------------------------------------------------- the title card */
.ed .credit{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-block:16px 14px;border-top:1px solid var(--hair)}
.ed .reel{position:relative;aspect-ratio:2.39/1;max-width:100%;overflow:hidden;background:var(--night)}
.ed .reel__f{position:absolute;inset:0;opacity:0;transition:opacity 1.8s ease}
.ed .reel__f.on{opacity:1}
.ed .reel__f img{width:100%;height:100%;object-fit:cover;transform:scale(1.08);transition:transform 9s linear}
.ed .reel__f.on img{transform:scale(1)}
.ed .reel__shade{position:absolute;inset:auto 0 0 0;height:50%;background:linear-gradient(to top,rgba(12,11,8,.62),rgba(12,11,8,0));pointer-events:none}
.ed .reel__cap{position:absolute;left:clamp(16px,3vw,36px);right:clamp(16px,3vw,36px);bottom:clamp(14px,2.6vw,30px);display:flex;justify-content:space-between;align-items:flex-end;gap:16px;color:var(--cream);flex-wrap:wrap}
.ed .reel__now{display:grid;gap:6px}
.ed .rec{display:inline-flex;align-items:center;gap:9px;color:var(--cream-dim)}
.ed .rec::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--terra);box-shadow:0 0 0 0 rgba(200,118,60,.6);animation:edRec 2.4s ease-out infinite}
@keyframes edRec{0%{box-shadow:0 0 0 0 rgba(200,118,60,.55)}70%{box-shadow:0 0 0 9px rgba(200,118,60,0)}100%{box-shadow:0 0 0 0 rgba(200,118,60,0)}}
.ed .reel__name{font-family:var(--display);font-size:clamp(22px,2.6vw,36px);line-height:1.1;transition:opacity .5s,transform .7s var(--ease)}
.ed .reel__name.swap{opacity:0;transform:translateY(8px)}
.ed .reel__cap .link{color:var(--cream)}
.ed .reel__play{display:inline-flex;align-items:center;gap:12px;background:none;border:0;color:var(--cream);cursor:pointer;font-family:var(--ui);font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:500;padding:0}
.ed .reel__play b{width:46px;height:46px;border-radius:50%;border:1px solid var(--cream-hair);display:grid;place-items:center;transition:background-color .4s,border-color .4s,transform .6s var(--ease)}
.ed .reel__play b::before{content:"";border-left:9px solid currentColor;border-top:6px solid transparent;border-bottom:6px solid transparent;margin-left:3px}
.ed .reel__play:hover b{background:var(--terra);border-color:var(--terra);transform:scale(1.08)}
.ed .reel__ticks{position:absolute;top:clamp(14px,2.4vw,26px);right:clamp(16px,3vw,36px);display:flex;gap:6px}
.ed .reel__ticks button{width:26px;height:14px;border:0;padding:6px 0;background:none;cursor:pointer;position:relative}
.ed .reel__ticks button::before,.ed .reel__ticks button::after{content:"";position:absolute;left:0;top:6px;height:2px;width:100%;background:rgba(243,238,228,.32)}
.ed .reel__ticks button::after{background:var(--cream);transform:scaleX(0);transform-origin:left}
.ed .reel__ticks button.on::after{animation:edTick var(--dur,7s) linear forwards}
.ed .reel__ticks button.done::after{transform:scaleX(1)}
@keyframes edTick{to{transform:scaleX(1)}}
.ed .thesis{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:clamp(28px,6vw,96px);align-items:end;padding-block:clamp(36px,6vw,80px) clamp(56px,9vw,120px)}
.ed .thesis h1{font-size:clamp(46px,7.6vw,118px);line-height:.98}
.ed .thesis h1 em{color:var(--terra-deep);font-size:.92em;letter-spacing:-.02em}
.ed .thesis__side{display:grid;gap:26px;max-width:40ch}
.ed .thesis__side p{font-size:18px}
.ed .cta-row{display:flex;gap:24px;align-items:center;flex-wrap:wrap}
@media (max-width:800px){.ed .thesis{grid-template-columns:1fr;align-items:start}}
@media (max-width:600px){.ed .reel{aspect-ratio:1/1}.ed .reel__cap{flex-direction:column;align-items:flex-start;gap:14px}}

/* ---------------------------------------------------------------- a note */
.ed .note{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(28px,6vw,96px);align-items:center;padding-block:clamp(56px,9vw,128px);border-top:1px solid var(--hair)}
.ed .note figure{margin:0;display:grid;gap:12px}
.ed .note__lede{font-family:var(--display);font-size:clamp(26px,2.9vw,40px);line-height:1.22;margin-top:18px}
.ed .note__body{display:grid;gap:18px;max-width:46ch;margin-top:26px}
.ed .note__body p+p{margin-top:0}
.ed .sig{font-family:var(--serif);font-style:italic;font-size:24px;color:var(--olive)}
@media (max-width:800px){.ed .note{grid-template-columns:1fr}}

/* ---------------------------------------------------------------- photographs */
.ed .ph{margin:0;overflow:hidden;background:var(--paper);position:relative}
.ed .ph img{width:100%;height:100%;object-fit:cover}
.ed .ph[data-par] img{height:116%;margin-top:-8%;will-change:transform}
.ed .ph:not([data-par]) img{transition:transform 1.4s var(--ease)}
.ed .ph:not([data-par]):hover img{transform:scale(1.03)}

/* selected work: one spread */
.ed .spread{padding-block:clamp(40px,7vw,96px) clamp(56px,9vw,128px)}
.ed .spread__head{display:flex;justify-content:space-between;align-items:baseline;gap:20px;flex-wrap:wrap;margin-bottom:clamp(24px,4vw,48px)}
.ed .spread__head h2{font-size:clamp(34px,4.4vw,64px)}
.ed .spgrid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:auto 1fr auto;gap:clamp(12px,1.6vw,24px);align-items:end}
.ed .sp1{grid-column:1/6;grid-row:1/3;aspect-ratio:2/3}
.ed .sp2{grid-column:6/13;grid-row:1;aspect-ratio:3/2;align-self:start}
.ed .sp3,.ed .sp4{grid-row:2;align-self:stretch;min-height:0}
.ed .sp3 img,.ed .sp4 img{position:absolute;inset:0}
.ed .sp3{grid-column:6/9}.ed .sp4{grid-column:9/13}
.ed .sp5{grid-column:1/9;grid-row:3;aspect-ratio:3/2;margin-top:clamp(12px,3vw,40px)}
.ed .sp6{grid-column:9/13;grid-row:3;aspect-ratio:4/5}
@media (max-width:700px){
  .ed .spgrid{grid-template-rows:none}
  .ed .sp1,.ed .sp2,.ed .sp3,.ed .sp4,.ed .sp5,.ed .sp6{grid-row:auto;margin-top:0}
  .ed .sp1,.ed .sp2,.ed .sp5,.ed .sp6{grid-column:1/13}
  .ed .sp3,.ed .sp4{aspect-ratio:2/3}.ed .sp3{grid-column:1/7}.ed .sp4{grid-column:7/13}
  .ed .sp3 img,.ed .sp4 img{position:static}
}

/* ---------------------------------------------------------------- the screening room */
.ed .room{background:var(--night);color:var(--night-fg);padding-block:clamp(64px,10vw,140px);position:relative;overflow:hidden}
.ed .room::before{content:"";position:absolute;inset:-40% -10% auto auto;width:70vw;height:70vw;max-width:900px;max-height:900px;border-radius:50%;
  background:radial-gradient(closest-side,rgba(95,96,56,.32),rgba(95,96,56,0));pointer-events:none}
.ed .room .muted{color:var(--night-dim)}
.ed .room__head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,5vw,80px);align-items:end;margin-bottom:clamp(36px,5vw,64px);position:relative}
.ed .room__head h2{font-size:clamp(40px,5.6vw,84px)}
.ed .room__head h2 em{color:var(--sage)}
.ed .room__head p{max-width:44ch}
.ed .prog{list-style:none;margin:0;padding:0;position:relative}
.ed .prog li{position:relative}
.ed .prog li::before,.ed .prog li:last-child::after{content:"";position:absolute;left:0;right:0;height:1px;background:var(--night-hair);transform-origin:left;transition:transform 1.2s var(--ease)}
.ed .prog li::before{top:0;transition-delay:calc(var(--k,0) * 90ms)}.ed .prog li:last-child::after{bottom:0}
.ed .prog a{display:grid;grid-template-columns:clamp(110px,16vw,220px) minmax(0,1fr) auto;gap:clamp(16px,3vw,40px);align-items:center;padding-block:18px;text-decoration:none;position:relative}
.ed .prog a::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:100%;background:var(--terra);transform:scaleX(0);transform-origin:left;transition:transform .7s var(--ease);z-index:1}
.ed .prog a:hover::after{transform:scaleX(1)}
.ed .prog .th{aspect-ratio:16/9;overflow:hidden;background:#000;position:relative}
.ed .prog .th img{width:100%;height:100%;object-fit:cover;opacity:.82;transition:opacity .5s,transform 1.2s var(--ease)}
.ed .prog .th::after{content:"";position:absolute;left:50%;top:50%;border-left:12px solid var(--cream);border-top:8px solid transparent;border-bottom:8px solid transparent;transform:translate(-40%,-50%) scale(.6);opacity:0;transition:opacity .4s,transform .6s var(--ease)}
.ed .prog a:hover .th img{opacity:1;transform:scale(1.06)}
.ed .prog a:hover .th::after{opacity:1;transform:translate(-40%,-50%) scale(1)}
.ed .prog .nm{font-family:var(--display);font-size:clamp(22px,2.6vw,38px);line-height:1.1;display:block;transition:transform .7s var(--ease)}
.ed .prog a:hover .nm{transform:translateX(10px)}
.ed .prog .dt{font-family:var(--ui);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--night-dim);margin-top:8px;display:block;transition:transform .7s var(--ease) .05s}
.ed .prog a:hover .dt{transform:translateX(10px)}
.ed .prog .go{font-family:var(--ui);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--night-dim);transition:color .3s;white-space:nowrap}
.ed .prog a:hover .go{color:var(--terra)}
.ed .room__foot{margin-top:32px;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:center;position:relative}
.ed .room .link{color:var(--night-fg)}
@media (max-width:800px){.ed .room__head{grid-template-columns:1fr}.ed .prog .go{display:none}.ed .prog a{grid-template-columns:clamp(96px,30vw,160px) minmax(0,1fr)}}

/* ---------------------------------------------------------------- sessions (sage) */
.ed .sess{background:var(--sage-tint);padding-block:clamp(64px,10vw,140px)}
.ed .sess__head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,5vw,80px);align-items:end;margin-bottom:clamp(28px,4vw,52px)}
.ed .sess__head h2{font-size:clamp(36px,4.6vw,68px)}
.ed .sess__head h2 em{color:var(--olive)}
.ed .sess__head p{color:#4C4A3C;max-width:46ch}
.ed .sess__row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.6vw,24px)}
.ed .sess__row figure{margin:0;display:grid;gap:14px;align-content:start}
.ed .sess__row .ph{aspect-ratio:4/5;background:#D6D8C3}
.ed .sess__row figcaption{display:grid;gap:2px}
.ed .sess__row h3{font-size:25px}
.ed .sess__row figcaption span{color:#4C4A3C}
.ed .sess__note{margin-top:30px;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:center;padding-top:22px;border-top:1px solid rgba(59,60,36,.22)}
@media (max-width:800px){.ed .sess__head{grid-template-columns:1fr}.ed .sess__row{grid-template-columns:1fr 1fr}.ed .sess__row figure:last-child{grid-column:1/3}.ed .sess__row figure:last-child .ph{aspect-ratio:3/2}}

/* ---------------------------------------------------------------- kind words */
.ed .words{padding-block:clamp(64px,10vw,140px)}
.ed .words blockquote{margin:0;max-width:22ch;font-family:var(--display);font-size:clamp(34px,5vw,76px);line-height:1.08;text-wrap:balance}
.ed .words__mark{display:block;font-family:var(--display);font-size:clamp(90px,10vw,150px);line-height:.6;height:.42em;color:var(--terra)}
.ed .words__who{margin-top:28px}
.ed .words__more{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,4vw,56px);margin-top:clamp(48px,7vw,96px);padding-top:28px;border-top:1px solid var(--hair)}
.ed .words__more figure{margin:0;display:grid;gap:14px;align-content:start}
.ed .words__more p{font-size:16px}
@media (max-width:800px){.ed .words__more{grid-template-columns:1fr}}

/* ---------------------------------------------------------------- inquire (olive) */
.ed .inq{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);background:var(--olive-deep);color:var(--cream);scroll-margin-top:0}
.ed .inq .ph{min-height:100%;background:#2E2F1B}
.ed .inq__body{padding:clamp(40px,7vw,110px) clamp(22px,6vw,96px);display:grid;gap:22px;align-content:center}
.ed .inq h2{font-size:clamp(40px,5.4vw,80px)}
.ed .inq h2 em{color:#D9A06F}
.ed .inq .muted,.ed .inq .cap{color:var(--cream-dim)}
.ed .inq__lede{max-width:44ch;color:var(--cream-dim)}
.ed .form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px 20px;margin-top:8px;max-width:540px}
.ed .form label{display:grid;gap:8px;font-family:var(--ui);font-size:11px;letter-spacing:.22em;text-transform:uppercase;font-weight:500;color:var(--cream-dim)}
.ed .form input{font:inherit;font-family:var(--serif);font-size:17px;letter-spacing:0;text-transform:none;color:var(--cream);background:transparent;border:0;border-bottom:1px solid var(--cream-hair);padding:9px 0;border-radius:0;min-width:0;width:100%;transition:border-color .3s;color-scheme:dark}
.ed .form input::placeholder{color:rgba(243,238,228,.4)}
.ed .form input:focus{outline:none;border-bottom-color:var(--cream)}
.ed .form .full{grid-column:1/-1}
.ed .form .btn{justify-self:start;background:linear-gradient(var(--terra),var(--terra)) 0 0/0% 100% no-repeat,var(--cream);color:var(--olive-deep);border-color:var(--cream)}
.ed .form .btn:hover{background-size:100% 100%,auto;border-color:var(--terra);color:var(--ink)}
.ed .form__note{grid-column:1/-1;font-size:15px;color:var(--cream-dim)}
.ed .form__err{color:#F2B48A}
.ed .datecheck{grid-column:1/-1;font-size:15px;font-style:italic;margin:-6px 0 0}
.ed .datecheck.is-open{color:#CFD6A2}
.ed .datecheck.is-booked{color:#F2B48A}
.ed .done{display:grid;gap:14px;max-width:46ch}
.ed .done h3{font-size:clamp(28px,3vw,40px)}
.ed .done a{color:var(--cream)}
@media (max-width:800px){.ed .inq{grid-template-columns:1fr}.ed .inq .ph{aspect-ratio:3/2;min-height:0}}
@media (max-width:480px){.ed .form{grid-template-columns:1fr}}

/* ---------------------------------------------------------------- footer */
.ed .ftr{background:var(--ink);color:var(--night-fg);padding-block:clamp(56px,8vw,100px) 28px}
.ed .ftr .muted{color:var(--night-dim)}
.ed .ftr__top{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(2,minmax(0,1fr));gap:clamp(28px,5vw,72px)}
.ed .ftr__verse{font-family:var(--display);font-size:clamp(28px,3.4vw,48px);line-height:1.12;max-width:16ch}
.ed .ftr ul{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:8px;overflow-wrap:anywhere}
.ed .ftr a{text-decoration:none;background:linear-gradient(currentColor,currentColor) 100% 100%/0 1px no-repeat;transition:background-size .45s var(--ease)}
.ed .ftr a:hover{background-size:100% 1px;background-position:0 100%}
.ed .ftr__social{display:flex;gap:16px;margin-top:18px}
.ed .ftr__social a{background:none;opacity:.75;transition:opacity .3s,transform .5s var(--ease)}
.ed .ftr__social a:hover{opacity:1;transform:translateY(-2px)}
.ed .ftr__bot{margin-top:clamp(40px,6vw,80px);padding-top:20px;border-top:1px solid var(--night-hair);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
.ed .offer{font-family:var(--serif);font-style:italic;color:#D9A06F}
@media (max-width:800px){.ed .ftr__top{grid-template-columns:1fr 1fr}.ed .ftr__top>div:first-child{grid-column:1/-1}}

/* ---------------------------------------------------------------- investment */
.ed .inv-top{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(28px,6vw,96px);align-items:end;padding-block:clamp(28px,5vw,64px) clamp(48px,7vw,96px);border-top:1px solid var(--hair)}
.ed .inv-top h1{font-size:clamp(58px,10vw,156px);line-height:.9;margin-top:18px}
.ed .inv-top__lede{margin-top:28px;font-size:19px;max-width:40ch}
.ed .inv-top__offer{margin-top:28px;padding:16px 20px;max-width:48ch;background:var(--sage-tint);display:grid;gap:4px}
.ed .inv-top__offer .cap{color:var(--olive)}
.ed .inv-top__offer p{font-style:italic}
.ed .inv-top .ph{aspect-ratio:4/5}
.ed .inv-top .cta-row{margin-top:30px}
.ed .toc{display:flex;gap:10px 30px;flex-wrap:wrap;padding-block:16px;border-block:1px solid var(--hair);position:sticky;top:0;background:var(--bone);z-index:30;transition:top .6s var(--ease)}
.ed .hdr:not(.is-hidden)~main .toc{top:var(--hdr-h,0px)}
.ed .toc a{font-family:var(--ui);font-size:11px;letter-spacing:.2em;text-transform:uppercase;font-weight:500;text-decoration:none;color:var(--smoke);padding-block:4px;
  background:linear-gradient(var(--olive),var(--olive)) 100% 100%/0 2px no-repeat;transition:background-size .5s var(--ease),color .3s}
.ed .toc a:hover{color:var(--ink)}
.ed .toc a.on{color:var(--olive);background-size:100% 2px;background-position:0 100%}
.ed .coll{padding-block:clamp(56px,9vw,120px);border-bottom:1px solid var(--hair);scroll-margin-top:140px}
.ed .coll__head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,5vw,80px);align-items:end;margin-bottom:clamp(28px,4vw,56px)}
.ed .coll__head.one{grid-template-columns:1fr;gap:18px}
.ed .coll__head h2{font-size:clamp(40px,5.4vw,80px)}
.ed .coll__head p{max-width:46ch}
.ed .from{font-family:var(--ui);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;font-weight:500;margin-top:14px;display:block;color:var(--olive)}
.ed .feature{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;margin-bottom:clamp(28px,4vw,48px);background:var(--sage-tint)}
.ed .feature .ph{aspect-ratio:4/5;background:#D6D8C3}
.ed .feature__body{display:grid;align-content:center;gap:20px;padding:clamp(28px,5vw,72px)}
.ed .feature__tag{color:var(--terra-deep)}
.ed .feature__name{font-size:clamp(44px,5.6vw,84px)}
.ed .price{font-family:var(--display);font-size:clamp(30px,3vw,44px);line-height:1;font-variant-numeric:lining-nums tabular-nums}
.ed .incl{list-style:none;margin:0;padding:0;columns:2;column-gap:32px}
.ed .incl li{break-inside:avoid;padding-block:9px;border-top:1px solid var(--hair);font-size:15.5px}
.ed .feature .incl li{border-color:rgba(59,60,36,.18)}
.ed .tiers{border-top:1px solid var(--ink)}
.ed .tier{border-bottom:1px solid var(--hair)}
.ed .tier summary{list-style:none;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.6fr) clamp(92px,9vw,140px) 28px;gap:clamp(12px,3vw,40px);align-items:baseline;padding-block:22px;cursor:pointer}
.ed .tier summary::-webkit-details-marker{display:none}
.ed .tier__n{font-family:var(--display);font-size:clamp(24px,2.6vw,36px);line-height:1.1;transition:transform .6s var(--ease),color .3s}
.ed .tier summary:hover .tier__n{transform:translateX(6px);color:var(--olive)}
.ed .tier__k{color:var(--smoke);font-size:15.5px}
.ed .tier__p{font-family:var(--display);font-size:clamp(24px,2.6vw,36px);line-height:1.1;font-variant-numeric:lining-nums tabular-nums;text-align:right;white-space:nowrap}
.ed .tier__x{position:relative;width:14px;height:14px;justify-self:end;align-self:center}
.ed .tier__x::before,.ed .tier__x::after{content:"";position:absolute;left:0;top:50%;width:14px;height:1px;background:var(--ink);transition:transform .5s var(--ease)}
.ed .tier__x::after{transform:rotate(90deg)}
.ed .tier[open] .tier__x::after{transform:rotate(0)}
.ed .tier[open] .tier__n{color:var(--olive)}
.ed .tier__body{padding:0 0 26px;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.6fr) clamp(92px,9vw,140px) 28px;gap:clamp(12px,3vw,40px)}
.ed .tier__body>p{grid-column:1/2;grid-row:1/3;font-style:italic;color:var(--smoke);font-size:15.5px}
.ed .tier__body .incl{grid-column:2/3;columns:1}
.ed .tier__body .incl li:last-child{border-bottom:1px solid var(--hair)}
.ed .tier__body .acts{grid-column:2/3;display:flex;flex-wrap:wrap;gap:12px 28px;align-items:baseline;padding-top:6px}
@media (max-width:760px){
  .ed .tier summary{grid-template-columns:minmax(0,1fr) auto 20px}
  .ed .tier__k{grid-column:1/-1;grid-row:2}
  .ed .tier__body{grid-template-columns:1fr}
  .ed .tier__body>p,.ed .tier__body .incl,.ed .tier__body .acts{grid-column:1/-1;grid-row:auto}
}
.ed .coll__split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:clamp(24px,5vw,80px);align-items:start}
.ed .coll__split>.ph{aspect-ratio:3/4;position:sticky;top:150px}
@media (max-width:860px){.ed .inv-top,.ed .coll__head,.ed .feature,.ed .coll__split{grid-template-columns:1fr}.ed .coll__split>.ph{position:relative;top:auto;aspect-ratio:3/2}.ed .inv-top .ph{aspect-ratio:3/2}.ed .incl{columns:1}.ed .feature .ph{aspect-ratio:3/2}}
.ed .every{padding-block:clamp(56px,9vw,120px);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:clamp(24px,5vw,80px);border-bottom:1px solid var(--hair)}
.ed .every h3{font-size:clamp(34px,4vw,56px)}
.ed .every .incl{columns:2}
@media (max-width:860px){.ed .every{grid-template-columns:1fr}.ed .every .incl{columns:1}}
.ed .tblwrap{overflow-x:auto}
.ed .plist{width:100%;border-collapse:collapse}
.ed .plist th{text-align:left;font-weight:400;padding:18px 0;border-bottom:1px solid var(--hair);vertical-align:baseline;font-family:var(--display);font-size:clamp(20px,2vw,26px)}
.ed .plist td{padding:18px 0 18px 24px;border-bottom:1px solid var(--hair);vertical-align:baseline;color:var(--smoke);font-size:15.5px}
.ed .plist td.p{font-family:var(--display);font-size:24px;color:var(--ink);text-align:right;white-space:nowrap;font-variant-numeric:lining-nums tabular-nums}
.ed .plist tr:first-child>*{border-top:1px solid var(--ink)}
.ed .plist .grp th{font-family:var(--ui);font-size:11px;letter-spacing:.22em;text-transform:uppercase;font-weight:500;color:var(--olive);padding-top:40px;border-top:0}
.ed .plist tr{transition:background-color .3s}
.ed .plist tr:not(.grp):hover{background:var(--paper)}
@media (max-width:600px){.ed .plist td.d{display:none}}
.ed .build{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:center;padding:clamp(28px,4vw,56px);background:var(--terra-deep);color:var(--cream);margin-block:clamp(56px,8vw,100px);position:relative;overflow:hidden}
.ed .build::after{content:"";position:absolute;right:-80px;top:-80px;width:260px;height:260px;border-radius:50%;border:1px solid rgba(243,238,228,.2);pointer-events:none}
.ed .build h3{font-size:clamp(30px,3.2vw,46px)}
.ed .build p{color:var(--cream-dim);margin-top:10px;max-width:52ch}
.ed .build .btn{background:linear-gradient(var(--ink),var(--ink)) 0 0/0% 100% no-repeat,var(--cream);color:var(--ink);border-color:var(--cream)}
.ed .build .btn:hover{background-size:100% 100%,auto;color:var(--cream);border-color:var(--ink)}
@media (max-width:700px){.ed .build{grid-template-columns:1fr}}
.ed .fine{font-size:14.5px;color:var(--smoke);max-width:70ch;display:grid;gap:8px;padding-bottom:clamp(56px,8vw,100px)}

/* ---------------------------------------------------------------- page tops (photography, films, about) */
.ed .ptop{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:clamp(24px,6vw,96px);align-items:end;padding-block:clamp(28px,5vw,64px) clamp(36px,5vw,64px)}
.ed .ptop h1{font-size:clamp(56px,9.6vw,150px);line-height:.88}
.ed .ptop h1 em{color:var(--terra-deep)}
.ed .ptop__side{display:grid;gap:22px;max-width:40ch}
.ed .ptop__side p{font-size:18px}
@media (max-width:800px){.ed .ptop{grid-template-columns:1fr;align-items:start}}
/* a letterboxed frame: opens like the home reel on arrival */
.ed .band{aspect-ratio:2.39/1;position:relative}
.ed .band.ph[data-par] img{height:120%;margin-top:-10%}
@media (max-width:600px){.ed .band{aspect-ratio:4/3}}
/* open state spelled out: a clip-path can't animate from inset() to "none",
   so without this the frame snapped open instead of drawing open */
.js-motion .band{clip-path:inset(0 0 0 0);transition:clip-path 1.6s var(--ease-io)}
.js-motion.ed-load .band{clip-path:inset(48% 0 48% 0)}
.js-motion.ed-load .ptop__side,.js-motion.ed-load .credit{opacity:0;transform:translateY(14px)}
.js-motion .ptop__side{transition:opacity 1s ease .9s,transform 1.2s var(--ease) .9s}

/* ---------------------------------------------------------------- photography: the index and the gallery */
.ed .gidx{display:flex;gap:8px 30px;flex-wrap:wrap;align-items:baseline;padding-block:14px;margin-top:clamp(28px,4vw,52px);border-block:1px solid var(--hair);position:sticky;top:0;background:var(--bone);z-index:30;transition:top .6s var(--ease)}
.ed .hdr:not(.is-hidden)~main .gidx{top:var(--hdr-h,0px)}
.ed .gidx button{font-family:var(--ui);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--smoke);background:none;border:0;padding:8px 0;cursor:pointer;
  background:linear-gradient(var(--olive),var(--olive)) 100% 100%/0 2px no-repeat;transition:background-size .5s var(--ease),color .3s}
.ed .gidx button:hover{color:var(--ink)}
.ed .gidx button[aria-pressed=true]{color:var(--olive);background-size:100% 2px;background-position:0 100%}
.ed .gidx sup{font-size:9.5px;letter-spacing:.06em;color:var(--terra-deep);margin-left:4px;vertical-align:.6em;font-variant-numeric:tabular-nums}
.ed .gidx__lay{margin-left:auto;display:flex;gap:6px;align-items:center;font-family:var(--ui);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--smoke)}
.ed .gidx__lay button{padding:6px 10px;border:1px dashed var(--hair);background:none}
.ed .gidx__lay button[aria-pressed=true]{border:1px solid var(--olive)}
.ed .gal{padding-block:clamp(20px,3vw,36px) clamp(56px,9vw,120px)}
.ed .gal.is-mosaic{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:clamp(150px,17vw,260px);gap:clamp(10px,1.4vw,20px);grid-auto-flow:dense}
.ed .gal.is-mosaic .gal__t{grid-column:span var(--c,1);grid-row:span var(--r,1)}
@media (max-width:900px){.ed .gal.is-mosaic{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:44vw;gap:10px}.ed .gal.is-mosaic .gal__t{grid-column:span var(--mc,1);grid-row:span var(--mr,1)}}
.ed .gal.is-masonry{columns:3 280px;column-gap:clamp(10px,1.4vw,20px)}
.ed .gal.is-masonry .gal__t{display:block;margin-bottom:clamp(10px,1.4vw,20px);break-inside:avoid}
.ed .gal.is-masonry .gal__t img{height:auto}
.ed .gal__t{display:block;position:relative;overflow:hidden;background:var(--paper);cursor:zoom-in}
.ed .gal__t[hidden]{display:none!important}
.ed .gal__t img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease),filter .6s}
.ed .gal__t::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 0 var(--bone);transition:box-shadow .5s var(--ease);pointer-events:none}
.ed .gal__t:hover img{transform:scale(1.04)}
.ed .gal__t:hover::after{box-shadow:inset 0 0 0 6px var(--bone)}
.ed .gal__t:focus-visible{outline:2px solid var(--olive);outline-offset:3px}
/* tiles wipe up as they come into view, one after another along the row */
.js-motion .gal__t.gw img{clip-path:inset(100% 0 0 0);transform:scale(1.12);transition:clip-path 1.2s var(--ease-io),transform 1.6s var(--ease)}
.js-motion .gal__t.gw.in img{clip-path:inset(0 0 0 0);transform:none}
.js-motion .gal.is-swapping .gal__t{opacity:0;transform:translateY(10px)}
.ed .gal .gal__t{transition:opacity .45s ease,transform .6s var(--ease)}

/* the photograph viewer */
.ed .glb{position:fixed;inset:0;z-index:60;background:#11100C;color:var(--cream);display:grid;grid-template-rows:auto 1fr auto;opacity:0;visibility:hidden;transition:opacity .4s,visibility .4s}
.ed .glb[hidden]{display:none}
.ed .glb.on{opacity:1;visibility:visible}
.ed .glb__bar{display:flex;justify-content:space-between;align-items:center;padding:calc(10px + env(safe-area-inset-top,0px)) clamp(14px,3vw,32px) 10px}
.ed .glb__fig{margin:0;display:grid;place-items:center;min-height:0;padding:0 clamp(8px,6vw,96px);position:relative;touch-action:pan-y}
.ed .glb__fig img{max-width:100%;max-height:calc(100svh - 150px);width:auto;height:auto;object-fit:contain;transition:opacity .35s ease,transform .6s var(--ease)}
.ed .glb__fig img.out{opacity:0;transform:translateX(calc(var(--dir,1) * -24px))}
.ed .glb__fig img.pre{opacity:0;transform:translateX(calc(var(--dir,1) * 24px));transition:none}
.ed .glb button{background:none;border:0;color:var(--cream);cursor:pointer;font-family:var(--ui);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;font-weight:500;padding:12px}
.ed .glb__nav{display:flex;justify-content:space-between;align-items:center;padding:8px clamp(14px,3vw,32px) calc(14px + env(safe-area-inset-bottom,0px))}
.ed .glb__nav button span{display:inline-block;transition:transform .5s var(--ease)}
.ed .glb__prev:hover span{transform:translateX(-4px)}.ed .glb__next:hover span{transform:translateX(4px)}
.ed .glb__count{font-variant-numeric:tabular-nums;color:var(--cream-dim)}
.ed .glb__count b{font-weight:500;color:#D9A06F}

/* ---------------------------------------------------------------- films: a dark page */
body.ed:has(.pg-night){background:var(--night);color:var(--night-fg)}
body.ed:has(.pg-night) .hdr{color:var(--night-fg)}
body.ed:has(.pg-night) .hdr.is-stuck{background:rgba(20,20,15,.9);box-shadow:0 1px 0 var(--night-hair)}
body.ed:has(.pg-night) .brand img{filter:invert(1) brightness(1.6)}
body.ed:has(.pg-night) .brand__sub,body.ed:has(.pg-night) .muted{color:var(--night-dim)}
body.ed:has(.pg-night) .hdr nav a.hdr__cta{border-color:var(--night-fg);background-image:linear-gradient(var(--night-fg),var(--night-fg))}
body.ed:has(.pg-night) .hdr nav a.hdr__cta:hover{color:var(--night)}
body.ed:has(.pg-night) .menu-btn{color:var(--night-fg)}
body.ed:has(.pg-night) .credit{border-top-color:var(--night-hair)}
body.ed:has(.pg-night) ::selection{background:var(--terra);color:var(--night)}
.ed .pg-night .ptop h1 em{color:var(--sage)}
.ed .pg-night .btn{color:var(--night);border-color:var(--night-fg);background:linear-gradient(var(--terra),var(--terra)) 0 0/0% 100% no-repeat,var(--night-fg)}
.ed .pg-night .btn:hover{background-size:100% 100%,auto;border-color:var(--terra);color:var(--ink)}
.ed .pg-night .link{color:var(--night-fg)}
.ed .feat{position:relative}
.ed .feat__below{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:clamp(24px,6vw,96px);align-items:start;padding-block:clamp(24px,3vw,36px) clamp(56px,8vw,110px)}
.ed .feat__below p{max-width:46ch;color:var(--night-dim)}
@media (max-width:800px){.ed .feat__below{grid-template-columns:1fr}}
.ed .arch{padding-block:clamp(56px,8vw,110px) clamp(64px,10vw,140px);border-top:1px solid var(--night-hair);position:relative}
.ed .arch::before{content:"";position:absolute;left:-10%;top:-10%;width:60vw;height:60vw;max-width:800px;max-height:800px;border-radius:50%;background:radial-gradient(closest-side,rgba(166,87,42,.16),rgba(166,87,42,0));pointer-events:none}
.ed .arch__head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,5vw,80px);align-items:end;margin-bottom:clamp(32px,5vw,60px);position:relative}
.ed .arch__head h2{font-size:clamp(40px,5.6vw,84px)}
.ed .arch__head h2 em{color:var(--sage)}
.ed .arch__count{display:flex;gap:16px;align-items:baseline;justify-self:end;text-align:right}
.ed .arch__count b{font-family:var(--display);font-weight:400;font-size:clamp(56px,7vw,104px);line-height:.9;color:#D9A06F;font-variant-numeric:lining-nums tabular-nums}
.ed .arch__count span{max-width:22ch;color:var(--night-dim);text-align:left}
@media (max-width:800px){.ed .arch__head{grid-template-columns:1fr}.ed .arch__count{justify-self:start}}
.ed .fgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(28px,3.4vw,52px) clamp(16px,2vw,28px);position:relative}
@media (max-width:900px){.ed .fgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.ed .fgrid{grid-template-columns:1fr}}
.ed .fc{display:grid;gap:14px;text-decoration:none;color:var(--night-fg)}
.ed .fc__th{aspect-ratio:16/9;overflow:hidden;background:#000;position:relative;display:block}
.ed .fc__th img{width:100%;height:100%;object-fit:cover;opacity:.86;transition:opacity .5s,transform 1.4s var(--ease)}
.ed .fc__th::after{content:"";position:absolute;left:14px;bottom:14px;width:40px;height:40px;border-radius:50%;border:1px solid var(--cream-hair);
  background:radial-gradient(circle,transparent 0) ,transparent;transition:background-color .4s,border-color .4s,transform .6s var(--ease)}
.ed .fc__th::before{content:"";position:absolute;left:31px;bottom:28px;border-left:9px solid var(--cream);border-top:6px solid transparent;border-bottom:6px solid transparent;z-index:1}
.ed .fc__th--none{display:grid;place-items:center;background:radial-gradient(closest-side,rgba(166,87,42,.28),rgba(166,87,42,0)),#0D0D0A;box-shadow:inset 0 0 0 1px var(--night-hair)}
.ed .fc__th--none::before,.ed .fc__th--none::after{display:none}
.ed .fc__th--none span{font-family:var(--serif);font-style:italic;font-size:clamp(24px,2.4vw,34px);color:#D9A06F;transition:transform 1.2s var(--ease)}
.ed .fc:hover .fc__th--none span{transform:scale(1.05)}
.ed .fc:hover .fc__th img{opacity:1;transform:scale(1.05)}
.ed .fc:hover .fc__th::after{background-color:var(--terra);border-color:var(--terra);transform:scale(1.08)}
.ed .fc__nm{font-family:var(--display);font-size:clamp(22px,2vw,30px);line-height:1.1;display:block;background:linear-gradient(var(--terra),var(--terra)) 0 100%/0 1px no-repeat;transition:background-size .6s var(--ease);justify-self:start;padding-bottom:4px}
.ed .fc:hover .fc__nm{background-size:100% 1px}
.ed .fc__dt{font-family:var(--ui);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--night-dim);margin-top:-6px}
.js-motion .fc.rv{transform:translateY(34px)}

/* ---------------------------------------------------------------- about */
.ed .meet{border-top:0}
.ed .stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:clamp(28px,4vw,44px) 0 0;border-top:1px solid var(--hair)}
.ed .stats div{padding:18px 18px 0 0;display:grid;gap:4px}
.ed .stats div+div{padding-left:18px;border-left:1px solid var(--hair)}
.ed .stats dt{font-family:var(--display);font-size:clamp(42px,5vw,72px);line-height:1;color:var(--terra-deep);font-variant-numeric:lining-nums tabular-nums}
.ed .stats dd{margin:0;font-family:var(--ui);font-size:11px;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--smoke)}
.ed .why{background:var(--sage-tint);padding-block:clamp(72px,11vw,160px)}
.ed .why blockquote{margin:22px 0 0;font-family:var(--display);font-size:clamp(36px,5.6vw,88px);line-height:1.06;max-width:20ch;text-wrap:balance}
.ed .why blockquote em,.ed .why blockquote .script{color:var(--olive);font-family:var(--serif);font-style:italic}
.ed .why .cap{color:var(--olive)}
.ed .ct{background:var(--olive-deep);color:var(--cream);padding-block:clamp(64px,10vw,140px);scroll-margin-top:0}
.ed .ct .muted,.ed .ct .cap{color:var(--cream-dim)}
.ed .ct__grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(36px,7vw,110px);align-items:start}
.ed .ct h2{font-size:clamp(40px,5.2vw,78px)}
.ed .ct h2 em{color:#D9A06F}
.ed .ct__lede{margin-top:22px;max-width:40ch;color:var(--cream-dim)}
.ed .ct__info{margin-top:clamp(32px,5vw,56px);display:grid;gap:22px;padding-top:24px;border-top:1px solid var(--cream-hair)}
.ed .ct__info a{color:var(--cream);text-decoration:none;background:linear-gradient(currentColor,currentColor) 0 100%/100% 1px no-repeat;padding-bottom:2px;overflow-wrap:anywhere}
.ed .ct__info .ftr__social a{background:none}
.ed .ct .form{max-width:none}
.ed .form textarea,.ed .form select{font:inherit;font-family:var(--serif);font-size:17px;letter-spacing:0;text-transform:none;color:var(--cream);background:transparent;border:0;border-bottom:1px solid var(--cream-hair);padding:9px 0;border-radius:0;width:100%;transition:border-color .3s;color-scheme:dark;resize:vertical}
.ed .form select{appearance:none;-webkit-appearance:none;background:linear-gradient(45deg,transparent 50%,var(--cream-dim) 50%) right 6px center/6px 6px no-repeat,linear-gradient(-45deg,transparent 50%,var(--cream-dim) 50%) right 0 center/6px 6px no-repeat;padding-right:24px}
.ed .form select option{color:var(--ink)}
.ed .form textarea:focus,.ed .form select:focus{outline:none;border-bottom-color:var(--cream)}
.ed .form textarea::placeholder{color:rgba(243,238,228,.4)}
.ed .form .opt{letter-spacing:.12em;opacity:.7;text-transform:lowercase;font-weight:400}
.ed .form__promise{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px 18px;font-family:var(--ui);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--cream-dim)}
.ed .form__promise span::before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:#D9A06F;margin-right:8px;vertical-align:.2em}
.ed .receipt{grid-column:1/-1;border:1px solid var(--cream-hair);padding:18px 20px;display:grid;gap:10px}
.ed .receipt__h{display:flex;justify-content:space-between;align-items:baseline}
.ed .receipt__h h3{font-size:26px}
.ed .receipt__h a{color:#D9A06F;font-family:var(--ui);font-size:11px;letter-spacing:.18em;text-transform:uppercase}
.ed .receipt ol{list-style:none;margin:0;padding:0;display:grid;gap:4px;font-size:15px}
.ed .receipt li,.ed .receipt__t{display:flex;justify-content:space-between;gap:16px}
.ed .receipt li b{font-weight:400;font-variant-numeric:tabular-nums}
.ed .receipt li.is-free b{color:#CFD6A2;font-style:italic}
.ed .receipt__t{border-top:1px solid var(--cream-hair);padding-top:10px;font-family:var(--display);font-size:24px}
.ed .receipt__t b{font-weight:400}
.ed .done ol{margin:0;padding-left:1.2em;display:grid;gap:6px;color:var(--cream-dim)}
.ed .done .cta-row{margin-top:8px}
.ed .done .btn{background:linear-gradient(var(--terra),var(--terra)) 0 0/0% 100% no-repeat,var(--cream);color:var(--olive-deep);border-color:var(--cream)}
.ed .done .link{color:var(--cream)}
@media (max-width:860px){.ed .ct__grid{grid-template-columns:1fr}}
.js-motion .stats div{opacity:0;transform:translateY(16px);transition:opacity .9s ease,transform 1s var(--ease)}
.js-motion .stats.in div{opacity:1;transform:none}
.js-motion .stats.in div:nth-child(2){transition-delay:.12s}.js-motion .stats.in div:nth-child(3){transition-delay:.24s}

/* ---------------------------------------------------------------- build your day (the builder)
   The markup and ids are the builder's own (assets/js/bp-build.js drives them);
   only the dress changes: paper cards, olive when chosen, a dark call sheet. */
.ed .bld{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,390px);gap:clamp(28px,4vw,64px);align-items:start;padding-bottom:clamp(64px,9vw,130px)}
.ed .bstep{padding:clamp(32px,4.4vw,52px) 0;border-top:1px solid var(--hair)}
.ed .bstep--wait{opacity:.32;pointer-events:none;filter:saturate(.4);transition:opacity .8s var(--ease),filter .8s var(--ease)}
.ed .bstep--wait.is-open{opacity:1;pointer-events:auto;filter:none}
.ed .bstep__head{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 18px;margin-bottom:clamp(20px,2.6vw,30px)}
.ed .bstep__no{font-family:var(--serif);font-style:italic;font-size:22px;color:var(--terra-deep);padding-right:.1em}
.ed .bstep__head h2{font-size:clamp(32px,3.6vw,52px)}
.ed .bstep__note{flex-basis:100%;font-size:15px;color:var(--smoke);max-width:60ch}
/* choices: paper cards that turn olive when chosen */
.ed .bcovers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(12px,1.4vw,18px)}
.ed .bcover,.ed .balbum,.ed .bextra,.ed .bteam__row,.ed .bcmp,.ed .bcmp__col{background:var(--paper);border:1px solid var(--hair)}
.ed .bcover{position:relative;display:grid;grid-template-columns:40% 1fr;min-height:160px;overflow:hidden;cursor:pointer;transition:border-color .5s var(--ease),background-color .5s var(--ease),transform .6s var(--ease)}
.ed .bcover:hover{border-color:var(--olive);transform:translateY(-3px)}
.ed .bcover input,.ed .balbum input,.ed .bextra input,.ed .bseg input{position:absolute;opacity:0;pointer-events:none}
.ed .bcover__img{overflow:hidden;background:#D6D8C3}
.ed .bcover__img img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.ed .bcover:hover .bcover__img img{transform:scale(1.06)}
.ed .bcover__body{display:flex;flex-direction:column;gap:6px;padding:18px 20px}
.ed .bcover__name{font-family:var(--display);font-size:clamp(24px,2.2vw,30px);line-height:1.05}
.ed .bcover__desc{font-size:14.5px;line-height:1.5;color:var(--smoke)}
.ed .bcover__from{margin-top:auto;font-family:var(--ui);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--smoke)}
.ed .bcover__from b{font-family:var(--display);font-weight:400;font-size:22px;letter-spacing:0;text-transform:none;color:var(--terra-deep);margin-left:4px}
.ed .bcover:has(input:checked){background:var(--sage-tint);border-color:var(--olive);box-shadow:inset 0 0 0 1px var(--olive)}
.ed .bcover:has(input:checked)::after,.ed .balbum:has(input:checked)::after,.ed .bextra:has(input:checked)::after{content:"";position:absolute;width:26px;height:26px;border-radius:50%;background:var(--olive)
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23F3EEE4' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/14px no-repeat;animation:edPop .45s var(--ease)}
.ed .bcover:has(input:checked)::after{top:12px;left:12px}
@keyframes edPop{from{transform:scale(.4);opacity:0}}
.ed .bcover:has(input:focus-visible),.ed .balbum:has(input:focus-visible),.ed .bextra:has(input:focus-visible){outline:1.5px solid var(--olive);outline-offset:3px}
@media (max-width:600px){.ed .bcovers{grid-template-columns:1fr}.ed .bcover{min-height:132px}}
/* what each collection includes */
.ed .bcmp{margin-top:16px}
.ed .bcmp[hidden]{display:none}
.ed .bcmp summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;font-family:var(--ui);font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;font-weight:500}
.ed .bcmp summary::-webkit-details-marker{display:none}
.ed .bcmp summary::after{content:"";width:9px;height:9px;border-right:1px solid var(--olive);border-bottom:1px solid var(--olive);transform:rotate(45deg) translateY(-3px);transition:transform .5s var(--ease)}
.ed .bcmp[open] summary::after{transform:rotate(-135deg) translateY(-2px)}
.ed .bcmp__set{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;padding:0 12px 12px}
.ed .bcmp__set[hidden]{display:none}
.ed .bcmp__col{position:relative;display:flex;flex-direction:column;gap:6px;padding:18px;background:var(--bone)}
.ed .bcmp__col.is-used{border-color:var(--olive);background:var(--sage-tint);box-shadow:inset 0 0 0 1px var(--olive)}
.ed .bcmp__used{display:none;font-family:var(--ui);font-size:10px;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--olive)}
.ed .bcmp__col.is-used .bcmp__used{display:block}
.ed .bcmp__col h3{font-size:24px}
.ed .bcmp__p{font-size:14px;color:var(--smoke)}
.ed .bcmp__p b{font-family:var(--display);font-size:20px;font-weight:400;color:var(--terra-deep)}
.ed .bcmp__col ul{list-style:none;display:grid;gap:6px;margin:6px 0 12px;padding:0;flex:1}
.ed .bcmp__col li{position:relative;padding-left:18px;font-size:14px;line-height:1.45;color:var(--smoke)}
.ed .bcmp__col li::before,.ed .bsheet__get li::before{content:"";position:absolute;left:0;top:.5em;width:9px;height:5px;border-left:1px solid var(--olive);border-bottom:1px solid var(--olive);transform:rotate(-45deg)}
.ed .bcmp__use{align-self:flex-start;border:1px solid var(--ink);background:none;padding:10px 14px;font-family:var(--ui);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;font-weight:500;color:var(--ink);cursor:pointer;
  background:linear-gradient(var(--ink),var(--ink)) 0 0/0 100% no-repeat;transition:background-size .5s var(--ease),color .3s}
.ed .bcmp__use:hover{background-size:100% 100%;color:var(--bone)}
.ed .bcmp__col.is-used .bcmp__use{display:none}
/* how long we stay */
.ed .bhours{display:grid;grid-template-columns:auto 1fr;gap:20px 34px;align-items:center}
.ed .bhours__dial{display:flex;align-items:center;gap:16px}
.ed .bdial{width:48px;height:48px;border-radius:50%;border:1px solid var(--hair);background:none;font-size:22px;line-height:1;color:var(--ink);cursor:pointer;transition:border-color .3s,background-color .3s,color .3s,transform .4s var(--ease)}
.ed .bdial:hover:not(:disabled){border-color:var(--ink);background:var(--ink);color:var(--bone)}
.ed .bdial:active:not(:disabled){transform:scale(.92)}
.ed .bdial:disabled{opacity:.3;cursor:default}
.ed .bhours__n{display:flex;flex-direction:column;align-items:center;min-width:80px}
.ed .bhours__n b{font-family:var(--display);font-weight:400;font-size:68px;line-height:.9;color:var(--terra-deep);font-variant-numeric:lining-nums tabular-nums}
.ed .bhours__n span{font-family:var(--ui);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;font-weight:500;color:var(--smoke)}
.ed .bhours__range{width:100%;accent-color:var(--olive);height:28px}
.ed .bday{grid-column:1/-1;list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0}
.ed .bday li{font-size:14px;padding:.45em 1em;border:1px dashed var(--hair);border-radius:999px;color:var(--smoke);transition:background-color .5s var(--ease),border-color .5s var(--ease),color .5s var(--ease),transform .5s var(--ease)}
.ed .bday li.on{border-style:solid;border-color:var(--sage);background:var(--sage-tint);color:var(--olive-deep)}
.ed .bday[hidden],.ed .bhours__x[hidden]{display:none}
.ed .bhours__x{grid-column:1/-1;font-size:15px;color:var(--smoke);padding:12px 16px;border:1px dashed var(--sage);background:var(--sage-tint)}
.ed .bhours__x b{color:var(--terra-deep);font-weight:400}
@media (max-width:600px){.ed .bhours{grid-template-columns:1fr}.ed .bhours__dial{justify-content:center}}
/* who's there */
.ed .bteam{display:grid;gap:10px}
.ed .bteam__row{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center;padding:18px 20px}
.ed .bteam__row[hidden]{display:none}
.ed .bteam__row h3{font-size:26px}
.ed .bteam__row p{font-size:14.5px;color:var(--smoke);line-height:1.5;margin-top:4px;max-width:52ch}
.ed .bseg{display:flex;padding:3px;border:1px solid var(--hair);border-radius:999px;background:var(--bone)}
.ed .bseg label{position:relative;cursor:pointer}
.ed .bseg span{display:flex;align-items:baseline;gap:6px;min-width:54px;justify-content:center;padding:.55em 1.15em;border-radius:999px;font-family:var(--ui);font-weight:500;font-size:14px;color:var(--smoke);white-space:nowrap;transition:background-color .45s var(--ease),color .45s var(--ease)}
.ed .bseg span small{font-size:11.5px;color:var(--smoke)}
.ed .bseg input:checked+span{background:var(--olive);color:var(--cream)}
.ed .bseg input:checked+span small{color:var(--cream-dim)}
.ed .bseg input:focus-visible+span{outline:1.5px solid var(--olive);outline-offset:2px}
@media (max-width:600px){.ed .bteam__row{grid-template-columns:1fr}.ed .bseg{justify-self:start}}
/* something to hold, and extras */
.ed .balbums{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin-bottom:12px}
.ed .balbums[hidden],.ed .balbum[hidden],.ed .bextra[hidden]{display:none}
.ed .bextras{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.ed .balbum,.ed .bextra{position:relative;display:grid;gap:4px;align-content:start;padding:18px 20px;cursor:pointer;transition:border-color .45s var(--ease),background-color .45s var(--ease),transform .5s var(--ease)}
.ed .balbum:hover,.ed .bextra:hover{border-color:var(--olive);transform:translateY(-2px)}
.ed .balbum__t,.ed .bextra__t{font-family:var(--display);font-size:24px;line-height:1.1;padding-right:30px}
.ed .balbum__d,.ed .bextra__d{font-size:14px;line-height:1.5;color:var(--smoke)}
.ed .balbum__d em{font-style:italic}
.ed .balbum__p,.ed .bextra__p{font-family:var(--display);font-size:21px;color:var(--terra-deep);margin-top:6px}
.ed .balbum::before,.ed .bextra::before{content:"";position:absolute;top:18px;right:18px;width:22px;height:22px;border:1px solid var(--hair);border-radius:50%}
.ed .bextra::before{border-radius:4px}
.ed .balbum:has(input:checked),.ed .bextra:has(input:checked){background:var(--sage-tint);border-color:var(--olive);box-shadow:inset 0 0 0 1px var(--olive)}
.ed .balbum:has(input:checked)::after,.ed .bextra:has(input:checked)::after{top:16px;right:16px}
.ed .bextra:has(input:checked)::after{border-radius:5px}
/* the call sheet */
.ed .bsheet{position:sticky;top:20px;max-height:calc(100vh - 40px);overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;background:var(--paper);border:1px solid var(--hair);transition:top .6s var(--ease)}
.ed .hdr:not(.is-hidden)~main .bsheet{top:calc(var(--hdr-h,0px) + 20px)}
.ed .slate{position:relative;background:var(--night);color:var(--night-fg)}
.ed .slate__clap{height:22px;background:repeating-linear-gradient(-58deg,var(--cream) 0 16px,var(--night) 16px 32px);border-bottom:2px solid var(--night);transform-origin:0 100%}
.ed .bsheet.clap .slate__clap{animation:edClap .55s var(--ease)}
@keyframes edClap{0%{transform:rotate(0)}35%{transform:rotate(-9deg)}100%{transform:rotate(0)}}
.ed .slate__meta{display:grid;grid-template-columns:1fr 1fr;margin:0;border-top:1px solid var(--night-hair)}
.ed .slate__meta>div{padding:10px 14px;border-right:1px solid var(--night-hair);border-bottom:1px solid var(--night-hair);min-width:0}
.ed .slate__meta>div:nth-child(2n){border-right:0}
.ed .slate__meta dt,.ed .slate__meta dt label{font-family:var(--ui);font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;font-weight:500;color:#D9A06F}
.ed .slate__meta dd{margin:2px 0 0;font-family:var(--serif);font-size:17px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ed .slate__date input{width:100%;background:transparent;border:0;color:var(--night-fg);font-family:var(--serif);font-size:16px;color-scheme:dark;padding:0;outline:none}
.ed .slate__date input:focus{box-shadow:0 1px 0 #D9A06F}
.ed .slate__x{display:none}
.ed .bsheet__body{padding:20px 22px 24px;display:grid;gap:14px}
.ed .bsheet__empty{font-size:15px;color:var(--smoke)}
.ed .bsheet__empty a{color:var(--terra-deep)}
.ed .bsheet__lines{list-style:none;display:grid;gap:9px;margin:0;padding:0}
.ed .bl{display:flex;justify-content:space-between;gap:14px;font-size:15px;line-height:1.4;animation:edLine .55s var(--ease) both}
.ed .bl b{font-weight:400;white-space:nowrap;font-variant-numeric:lining-nums tabular-nums}
.ed .bl--cov{color:var(--smoke);font-size:13.5px}
.ed .bl--cov span,.ed .bl--cov b{text-decoration:line-through;text-decoration-color:var(--terra);color:var(--smoke)}
.ed .bl--deal{padding:8px 10px;margin:2px -10px;background:var(--sage-tint);color:var(--olive-deep)}
.ed .bl--free b{font-family:var(--ui);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;font-weight:500;color:var(--olive)}
.ed .bl--promo,.ed .bl--promo b{color:var(--terra-deep)}
@keyframes edLine{from{opacity:0;transform:translateY(6px)}}
.ed .bsheet__deal{font-size:14.5px;line-height:1.5;color:var(--smoke);padding:10px 12px;border:1px dashed var(--sage);background:var(--sage-tint)}
.ed .bsheet__deal b{color:var(--olive-deep);font-weight:400}
.ed .bsheet__total{display:flex;align-items:baseline;gap:10px;padding-top:14px;border-top:1px solid var(--ink)}
.ed .bsheet__total[hidden]{display:none}
.ed .bsheet__total span{font-family:var(--ui);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;font-weight:500;color:var(--smoke);margin-right:auto}
.ed .bsheet__total s{font-family:var(--display);font-size:20px;color:var(--smoke)}
.ed .bsheet__total b{font-family:var(--display);font-weight:400;font-size:50px;line-height:1;font-variant-numeric:lining-nums tabular-nums}
.ed .bsheet__get{font-size:14px;line-height:1.55;color:var(--smoke)}
.ed .bsheet__get span{font-family:var(--ui);font-size:10px;letter-spacing:.22em;text-transform:uppercase;font-weight:500;color:var(--olive);margin-right:4px}
.ed .bsheet__get ul{list-style:none;display:grid;gap:5px;margin:8px 0 0;padding:0}
.ed .bsheet__get li{position:relative;padding-left:18px;font-size:14px;line-height:1.45}
.ed .bsheet__go{width:100%;background:linear-gradient(var(--ink),var(--ink)) 0 0/0% 100% no-repeat,var(--terra-deep);border-color:var(--terra-deep)}
.ed .bsheet__go:hover{border-color:var(--ink)}
.ed .bsheet__fine{font-size:13px;line-height:1.5;color:var(--smoke);text-align:center}
.ed .bbar{display:none}
@media (max-width:900px){
  .ed .bld{grid-template-columns:1fr;padding-bottom:120px}
  .ed .bsheet,.ed .hdr:not(.is-hidden)~main .bsheet{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:50;max-height:86svh;border:0;transform:translateY(105%);transition:transform .6s var(--ease-io);padding-bottom:env(safe-area-inset-bottom,0px)}
  body.ed.bsheet-open .bsheet,body.ed.bsheet-open .hdr~main .bsheet{transform:none}
  .ed .slate__x{display:block;position:absolute;right:8px;top:28px;width:38px;height:38px;border:0;border-radius:50%;background:rgba(243,238,228,.1);color:var(--cream);font-size:22px;cursor:pointer}
  .ed .slate__meta>div:nth-child(2){padding-right:50px}
  .ed .bbar{display:flex;align-items:center;gap:12px;position:fixed;left:0;right:0;bottom:0;z-index:45;padding:12px var(--gut) calc(12px + env(safe-area-inset-bottom,0px));border:0;border-top:1px solid rgba(243,238,228,.14);background:var(--night);color:var(--night-fg);cursor:pointer;font:inherit;text-align:left;transition:opacity .4s,transform .55s var(--ease)}
  .ed .bbar.is-tucked{transform:translateY(110%)}
  .ed .bbar[hidden]{display:none}
  .ed .bbar__t{font-family:var(--ui);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;font-weight:500;color:#D9A06F}
  .ed .bbar__sum{font-family:var(--display);font-weight:400;font-size:26px;margin-right:auto}
  .ed .bbar__go{font-family:var(--ui);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;font-weight:500;padding:.8em 1em;border:1px solid var(--cream-hair)}
  .ed .bbar.bump{animation:edBump .5s var(--ease)}
  body.ed.bsheet-open .bbar{opacity:0;pointer-events:none;transform:translateY(10px)}
}
@keyframes edBump{40%{transform:translateY(-5px)}}

/* ---------------------------------------------------------------- the player */
.ed .lb{position:fixed;inset:0;z-index:60;background:rgba(12,11,8,.97);display:grid;place-items:center;padding:clamp(16px,5vw,64px);opacity:0;visibility:hidden;transition:opacity .45s,visibility .45s}
.ed .lb.on{opacity:1;visibility:visible}
.ed .lb__frame{width:min(1200px,100%);aspect-ratio:16/9;background:#000;transform:scale(.96);transition:transform .7s var(--ease)}
.ed .lb.on .lb__frame{transform:none}
.ed .lb iframe{width:100%;height:100%;border:0;display:block}
.ed .lb__x{position:absolute;top:calc(14px + env(safe-area-inset-top,0px));right:18px;background:none;border:0;color:var(--cream);font-family:var(--ui);font-size:12px;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;padding:12px}

/* ---------------------------------------------------------------- motion
   Only things that start below the fold wait to come in; whatever is on screen
   when the page opens is already there. js-motion is set by editorial.js, and
   never in the editor or for anyone who asks for less motion. */
.js-motion .rv{opacity:0;transform:translateY(26px);transition:opacity 1s var(--ease),transform 1.2s var(--ease)}
.js-motion .rv.in{opacity:1;transform:none}
/* the wipe sits on the children, not the observed box: a box clipped to nothing
   never reports itself on screen, and lazy images inside it never load */
.js-motion .rv-img>*{clip-path:inset(100% 0 0 0);transition:clip-path 1.4s var(--ease-io)}
.js-motion .rv-img>figcaption{transition-delay:.35s}
.js-motion .rv-img img{transform:scale(1.18);transition:transform 1.8s var(--ease)}
.js-motion .rv-img.in>*{clip-path:inset(0 0 0 0)}
.js-motion .rv-img.in img{transform:none}
.js-motion .prog.rv-lines li::before,.js-motion .prog.rv-lines li:last-child::after{transform:scaleX(0)}
.js-motion .prog.rv-lines.in li::before,.js-motion .prog.rv-lines.in li:last-child::after{transform:scaleX(1)}
.js-motion .prog.rv-lines li .th,.js-motion .prog.rv-lines li .nm,.js-motion .prog.rv-lines li .dt{opacity:0;transform:translateY(14px);transition:opacity .9s var(--ease),transform 1s var(--ease)}
.js-motion .prog.rv-lines.in li .th,.js-motion .prog.rv-lines.in li .nm,.js-motion .prog.rv-lines.in li .dt{opacity:1;transform:none}
/* each word rises inside its own mask. The mask is padded well past the glyph
   box (and pulled back with negative margins, so spacing doesn't change): the
   italic accent letters lean out past their box and descend below it, and a
   tight mask was shaving their tails and tops. */
.js-motion .w{display:inline-block;overflow:hidden;vertical-align:top;padding:.14em .32em .36em .32em;margin:-.14em -.32em -.36em -.32em}
/* the rising word carries the same room inside it: while it moves it is drawn
   on its own layer, and a layer only as big as the word's box was cutting the
   italic f's tail until the rise finished, then the tail popped in */
.js-motion .w>i{display:inline-block;font-style:inherit;padding:.1em .26em .32em .26em;margin:-.1em -.26em -.32em -.26em;transform:translateY(160%);transition:transform 1.1s var(--ease)}
.js-motion .is-in .w>i{transform:none}
/* A headline is drawn as plain text until editorial.js has split it into
   words, and then hidden for its rise. On a phone that loads the script a
   beat after the first paint, the text flashed up and vanished before rising.
   So while the page is arriving, an unsplit headline waits out of sight (the
   header's timer lifts ed-load regardless, so it can never stay hidden). */
.js-motion.ed-load [data-split]:not(.is-split){opacity:0}
/* the opening: the frame opens like a letterbox, the header settles, the line rises */
.js-motion.ed-load .reel{clip-path:inset(48% 0 48% 0)}
.js-motion .reel{clip-path:inset(0 0 0 0);transition:clip-path 1.6s var(--ease-io)}
.js-motion.ed-load .reel__cap,.js-motion.ed-load .reel__ticks{opacity:0}
.js-motion .reel__cap,.js-motion .reel__ticks{transition:opacity 1s ease .9s}
.js-motion.ed-load .hdr__in>*{opacity:0;transform:translateY(-10px)}
.js-motion .hdr__in>*{transition:opacity .9s ease,transform 1s var(--ease)}
.js-motion .hdr__in>:nth-child(2){transition-delay:.08s}.js-motion .hdr__in>:nth-child(3){transition-delay:.16s}
.js-motion.ed-load .credit,.js-motion.ed-load .thesis__side,.js-motion.ed-load .inv-top .ph,.js-motion.ed-load .inv-top__lede,.js-motion.ed-load .inv-top__offer,.js-motion.ed-load .inv-top .cta-row,.js-motion.ed-load .inv-top .cap{opacity:0;transform:translateY(14px)}
.js-motion .credit,.js-motion .thesis__side,.js-motion .inv-top .ph,.js-motion .inv-top__lede,.js-motion .inv-top__offer,.js-motion .inv-top .cta-row,.js-motion .inv-top .cap{transition:opacity 1s ease .5s,transform 1.2s var(--ease) .5s}
.js-motion .thesis__side,.js-motion .inv-top__lede{transition-delay:.9s}
.js-motion .inv-top__offer,.js-motion .inv-top .cta-row{transition-delay:1.05s}
@media (prefers-reduced-motion:reduce){
  .ed .reel__f,.ed .reel__f img,.ed .ph img{transition:none!important}
  .ed .reel__f img{transform:none!important}
  .ed .rec::before{animation:none}
}
.ed .lb[hidden]{display:none}

/* ---------------------------------------------------------------- inquiry forms, easier to read and to use
   Labels, hints and placeholders on the olive panels were faint (placeholders
   about 3:1); these lift them past 4.5:1 without changing the look. */
.ed .form label{color:rgba(243,238,228,.86)}
.ed .form .opt{opacity:1;color:var(--cream-dim)}
.ed .form input::placeholder,.ed .form textarea::placeholder{color:rgba(243,238,228,.62)}
.ed .form input,.ed .form textarea,.ed .form select{border-bottom-color:rgba(243,238,228,.45)}
.ed .form input[type=date]{min-height:44px}
.ed .form input[type=date]::-webkit-calendar-picker-indicator{opacity:.8;cursor:pointer}
.ed .form label.is-off{opacity:.45}
.ed .form .chk{display:flex;align-items:center;gap:10px;margin-top:-6px;font-family:var(--serif);font-size:15px;letter-spacing:0;text-transform:none;font-weight:400;color:var(--cream-dim);cursor:pointer}
.ed .form .chk input{-webkit-appearance:auto;appearance:auto;width:18px;height:18px;min-height:0;margin:0;padding:0;border:0;accent-color:var(--terra);flex:none}
.ed .form__note{color:rgba(243,238,228,.8)}

/* "Rather just send a message?" */
.ed .form__alt{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding-top:18px;border-top:1px solid var(--cream-hair);font-size:15px;color:var(--cream-dim)}
.ed .form__dm{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px;border:1px solid rgba(243,238,228,.45);border-radius:999px;color:var(--cream);text-decoration:none;font-family:var(--ui);font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:500;transition:background-color .3s,border-color .3s,color .3s}
.ed .form__dm:hover{background:var(--cream);border-color:var(--cream);color:var(--olive-deep)}
.ed .form__dm--plain{border-color:transparent;padding:0 4px;text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--cream-hair)}
.ed .form__dm--plain:hover{background:none;border-color:transparent;color:var(--cream);text-decoration-color:currentColor}

/* About: the heading, then the form, then the details and a word from a couple
   (on a phone the form now comes straight after the heading). */
.ed .ct__grid{grid-template-areas:"head form" "aside form";grid-template-rows:auto 1fr;row-gap:0}
.ed .ct__head{grid-area:head}
.ed .ct__aside{grid-area:aside}
.ed .ct #cform,.ed .ct .done{grid-area:form}
.ed .ct__quote{margin:clamp(32px,5vw,52px) 0 0;display:grid;gap:12px;max-width:42ch}
.ed .ct__quote blockquote{margin:0;font-family:var(--serif);font-style:italic;font-size:19px;line-height:1.55;color:var(--cream)}
.ed .ct__quote figcaption{color:#D9A06F}
@media (max-width:860px){
  .ed .ct__grid{grid-template-areas:"head" "form" "aside";grid-template-rows:auto;row-gap:clamp(36px,8vw,56px)}
  .ed .ct__quote{margin-top:0}
}

/* "Is your date open?" near the top of Home and About */
.ed .qd{display:grid;gap:10px;max-width:400px;margin-top:4px}
.ed .qd .cap{color:var(--smoke)}
.ed .qd__row{display:flex;gap:10px;align-items:stretch}
.ed .qd input{flex:1;min-width:0;min-height:48px;font:inherit;font-family:var(--serif);font-size:17px;color:var(--ink);background:transparent;border:0;border-bottom:1px solid rgba(27,25,22,.45);border-radius:0;padding:8px 0;color-scheme:light}
.ed .qd input:focus{outline:none;border-bottom-color:var(--ink)}
.ed .qd .btn{min-height:48px;padding:0 22px}
.ed .qd__out{font-size:15px;line-height:1.55;color:var(--ink)}
.ed .qd__out::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:9px;vertical-align:.15em;background:var(--smoke)}
.ed .qd__out.is-open::before{background:var(--olive)}
.ed .qd__out.is-booked::before{background:var(--terra-deep)}
.ed .qd__out.is-err::before{background:var(--terra-deep)}
.ed .qd__out a{color:var(--ink);text-underline-offset:4px;white-space:nowrap}
.ed .qd__out b{font-weight:400;color:var(--olive-deep)}
.ed .inv-top .qd{margin-top:28px}
@media (prefers-reduced-motion:reduce){.ed .form__dm{transition:none}}

/* ---------------------------------------------------------------- home: what and where, first
   The line above the reel says plainly what this is and where, readable at a
   glance for someone arriving from a search. */
.ed .credit{align-items:baseline}
.ed .credit__what{margin:0;font-family:var(--ui);font-size:12.5px;letter-spacing:.16em;text-transform:uppercase;font-weight:500;color:var(--ink)}

/* Phones: a shorter reel and the buttons straight under the headline, so the
   first screen has a next step on it (the bar below has the other). */
@media (max-width:600px){
  .ed .credit{padding-block:12px 10px}
  .ed .credit__by{display:none}
  .ed .credit__what{font-size:11.5px;letter-spacing:.14em;line-height:1.5}
  .ed .reel{aspect-ratio:4/3}
  .ed .thesis{padding-top:28px;gap:24px}
  .ed .thesis h1{font-size:clamp(40px,11.5vw,54px)}
  .ed .thesis__side .cta-row{order:-1}
}

/* The bar along the bottom on phones: prices and the date check */
.ed .qbar{display:none}
@media (max-width:800px){
  .ed .qbar{position:fixed;left:0;right:0;bottom:0;z-index:35;display:flex;align-items:center;justify-content:space-between;gap:16px;
    padding:10px var(--gut) calc(10px + env(safe-area-inset-bottom,0px));background:rgba(237,234,227,.96);-webkit-backdrop-filter:saturate(1.2) blur(10px);backdrop-filter:saturate(1.2) blur(10px);
    box-shadow:0 -1px 0 var(--hair);transition:transform .45s var(--ease),opacity .3s}
  .ed .qbar.is-away,.ed.menu-open .qbar{transform:translateY(110%);opacity:0;pointer-events:none}
  .ed .qbar__p{font-family:var(--ui);font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:500;text-decoration:none;color:var(--ink);padding:14px 4px;
    background:linear-gradient(currentColor,currentColor) 0 calc(100% - 10px)/100% 1px no-repeat}
  .ed .qbar .btn{min-height:46px;padding:0 22px}
  .ed.has-qbar{padding-bottom:calc(68px + env(safe-area-inset-bottom,0px))}
}
@media (prefers-reduced-motion:reduce){.ed .qbar{transition:none}}

/* ---------------------------------------------------------------- leaving for another page
   The page veils itself in its own background colour (over the phone menu
   too), and the next page opens with its entrance, so there's never a hard cut.
   The veil is a real element, taller than the screen: Safari colours its
   floating toolbar from what's under it, and it ignores pseudo-elements. */
.ed .ed-veil{position:fixed;left:0;right:0;top:-60px;bottom:-120px;z-index:100;background:var(--bone);opacity:0;pointer-events:none;transition:opacity .38s var(--ease-io)}
.ed.ed-leaving .ed-veil{opacity:1;pointer-events:auto}
html:has(body.ed-leaving){background:var(--bone)}
.ed.ed-leaving main{transform:translateY(-10px);transition:transform .5s var(--ease)}
.ed.menu-open.ed-leaving .mnav a{opacity:.35;transition:opacity .25s ease}
.ed.menu-open.ed-leaving .mnav a.is-go{opacity:1}
.ed .mnav a{-webkit-tap-highlight-color:transparent}
@media (prefers-reduced-motion:reduce){.ed .ed-veil{display:none}}

/* ---------------------------------------------------------------- empty date fields, labelled
   editorial.js wraps each date field and lays "Choose a date" and a calendar
   mark over it while it's empty; Chrome's own mm/dd/yyyy hides meanwhile so
   the two never overlap, and comes back the moment the field is in use. */
.ed .dt-wrap{position:relative;display:block;min-width:0}
.ed .qd__row .dt-wrap{flex:1}
.ed .dt-wrap input[type=date]{width:100%}
.ed .dt-ph{position:absolute;left:0;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;gap:9px;pointer-events:none;
  font-family:var(--serif);font-size:17px;letter-spacing:0;text-transform:none;font-weight:400;opacity:.62;white-space:nowrap;transition:opacity .2s}
.ed .dt-ph svg{flex:none}
.ed .dt-wrap.has-val .dt-ph,.ed .dt-wrap:focus-within .dt-ph{opacity:0}
.ed .dt-wrap:not(.has-val) input[type=date]:not(:focus)::-webkit-datetime-edit{color:transparent}
.ed .dt-wrap input[type=date]:disabled~.dt-ph{opacity:.3}
/* With a mouse, the browser draws its own calendar button at the end of the field; ours is for phones. */
@media (hover:hover) and (pointer:fine){.ed .dt-ph svg{display:none}}
