/* Editorial composition; hero imagery and brand mark are unchanged. */
.editorial .deep{position:sticky;top:0;height:100svh;margin-bottom:-100svh;opacity:1}
.botanical{position:absolute;inset:0;background-size:cover;background-position:center}
.botanical--evolution{background-image:url('../../public/media/botanical/graded/immersion-02-start.jpg')}
.botanical--immersion{background-image:url('../../public/media/botanical/graded/immersion-02-hold.jpg');opacity:0}
.botanical--passage{background-image:url('../../public/media/botanical/graded/evolution-01-hold.jpg');opacity:0}
.botanical-passage{display:block;height:265svh;pointer-events:none}
.botanical--immersion,.botanical--passage{display:none}
/* Native sticky holding, never wheel interception. Short/zoomed viewports and
   reduced-motion users retain ordinary document flow (WCAG 2.1.1 / 2.3.3). */
@media(min-width:900px) and (min-height:700px) and (prefers-reduced-motion:no-preference) and (pointer:fine){
  html[data-story-pacing='on'] .editorial .cap__stage{height:320svh;padding-block:0 60px}
  html[data-story-pacing='on'] .cap__stage>.cap__grid{position:sticky;top:var(--expertise-top,140px);padding-block:24px}
  html[data-story-pacing='on'] .botanical-passage{height:265svh}
}
.botanical video{width:100%;height:100%;object-fit:cover;object-position:center;opacity:0}
.botanical.is-ready video{opacity:1}
/* Intrinsic canvas presentation avoids iOS native video UI/compositor tiles.
   It is the decoded image itself, not a cover hiding an undersized surface. */
[data-canvas-source]{opacity:.001!important;pointer-events:none!important}
.botanical video[data-canvas-source]{opacity:1!important}
[data-inline-surface]{pointer-events:none;object-fit:cover;object-position:center}
[data-inline-surface][hidden]{display:none}
.botanical [data-inline-surface]{position:absolute;inset:0;width:100%;height:100%;opacity:0}
.botanical.is-ready [data-inline-surface]{opacity:1}
@media(pointer:coarse){
  /* Safari's retracted toolbar exposes the large viewport. A stable large
     media surface covers both states without changing story scroll geometry. */
  .editorial .deep{height:100lvh;margin-bottom:-100lvh}
  .env__motion{transform:none;will-change:auto}
  .env__poster{z-index:1}
}
/* Keep the video eligible for Safari autoplay/frame presentation. The matching
   poster covers it until a decoded frame arrives, never the other way round. */
[data-hero-poster][data-retired]{visibility:hidden}
.studio .eyebrow{text-shadow:0 1px 2px rgba(0,0,0,.5)}
[data-clip]::-webkit-media-controls,[data-clip]::-webkit-media-controls-start-playback-button,
.botanical video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}
@media(pointer:coarse){.env__signal{display:none}}
/* WCAG 2.4.7: suppress only pointer-origin programmatic heading focus.
   Keyboard destinations and controls retain deliberate focus indication. */
[data-pointer-focus]:focus{outline:none}
html[data-input='keyboard'] [tabindex='-1']:focus{outline:1px solid var(--bone);outline-offset:8px}
.nav__i,.nav__mark{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}
/* Leave the approved first frame intact; soften only its scroll-out dimming. */
.env__veil{opacity:calc(var(--sp) * .44)}
.botanical__shade{position:absolute;inset:0;opacity:.28;
  background:linear-gradient(90deg,rgba(10,9,13,.22),#0a090d 76%),linear-gradient(#0a090d,transparent 35%,rgba(10,9,13,.6))}
.editorial .turn::before{background:linear-gradient(var(--ink),transparent 200px)}
.editorial .turn__say{font-size:clamp(3rem,6.6vw,7.4rem);max-width:16ch}
.editorial .turn__grid{padding-block:32px}
.editorial .cap__stage{padding-top:56px;padding-bottom:40px}
.editorial .cap__btn{padding-block:24px}
.editorial .cap__t{font-size:clamp(1.35rem,2.2vw,2.4rem)}
.editorial .cap__artist{min-height:105svh;margin-top:40px;padding-block:92px 100px;justify-content:center}
.editorial .artist__stage>.cap__h{margin-left:42%;border:0;width:auto}
.editorial .artist__spread{margin-left:42%;gap:44px}
.editorial .artist__title{font-size:clamp(3rem,5.6vw,6.3rem);max-width:14ch}
.editorial .artist__title .ln:last-child{padding-left:0}
.editorial .artist__body{width:100%;margin:0;padding-left:0}
.editorial .artist__rule{display:none}
.editorial .artist__body>p{max-width:38ch}
.editorial .wk{padding-block:100px 110px;background:none}
.editorial .wk__title{font-size:clamp(2.8rem,5.8vw,6.5rem);max-width:18ch!important;margin-left:18%}
.editorial .wk__title .ln:last-child{padding-left:0}
.editorial .wk__body{margin-top:64px;grid-template-columns:1.15fr .65fr;gap:7vw}
.editorial .wk__meta{padding:0;background:none}
.studio{position:relative;padding:120px var(--gut) 160px;background:none}
.studio__in{max-width:var(--maxw);margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:34px 7vw}
.studio .eyebrow{grid-column:1/-1}
.studio h2{font-size:clamp(3.4rem,5.9vw,6.6rem);font-weight:300;letter-spacing:-.055em;line-height:1.04;color:var(--ivory)}
.studio h2 em{font-style:normal;font-weight:400;color:var(--bone)}
.studio__body{align-self:end;max-width:40ch;color:var(--speak);font-size:var(--t-body);line-height:1.8}
.studio__body p+p{margin-top:22px}.studio__body .text-link{margin-top:26px}
.editorial .contact{--ivory:#f5f1ea;--bone:#dedbd1;--speak:#BDBDC2;--mute:#A2A2A9;--edge:#A2A2A9;
  --ink:#0a090d;--graphite:#171719;--seam:rgba(222,219,209,.18);--seam-lit:rgba(222,219,209,.45);
  color:var(--bone);background:linear-gradient(transparent,rgba(10,9,13,.94) 60%);box-shadow:none;padding-top:44px}
.editorial .contact__grid{column-gap:8vw;padding-top:54px;grid-template-columns:1fr 1fr}
.editorial .contact__intro h2{font-size:clamp(3.2rem,5.2vw,5.8rem);line-height:1.06}
.editorial .contact__aside{max-width:35ch}
.editorial .contact .field input,.editorial .contact .field select,.editorial .contact .field textarea{
  background:rgba(10,9,13,.36);border-bottom-color:#71717A;color-scheme:dark;padding:14px 10px}
.editorial .contact .field input:focus,.editorial .contact .field select:focus,.editorial .contact .field textarea:focus{
  outline:1px solid #CBCBCF;outline-offset:4px;background:#1F1F22}
.editorial .contact .field option,.editorial .contact .field optgroup{background:#171719;color:#f5f1ea}
.editorial .contact .project-button{background:var(--bone);color:var(--ink)}
.editorial .contact .project-button:hover{background:var(--ivory)}
.editorial .contact .project-button:active{background:#BCBCC1}
.editorial .contact [data-enquiry-edit]{width:auto;min-height:44px;padding:10px 0;background:transparent;color:var(--bone);font-size:12px;border:0;border-bottom:1px solid var(--seam)}
.editorial .contact [data-enquiry-edit]:hover{background:transparent;color:var(--ivory)}
.enquiry__optional{border-block:1px solid var(--seam);margin-top:30px;padding-block:4px}
.enquiry__optional summary{min-height:48px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;color:var(--bone);font-size:13px;list-style:none}
.enquiry__optional summary::-webkit-details-marker{display:none}
.enquiry__optional summary::after{content:'+';font-size:22px;font-weight:300}
.enquiry__optional[open] summary::after{content:'−'}
.enquiry__optional .enquiry__fields{padding:18px 0 24px}
.enquiry__optional summary:focus-visible{outline:2px solid var(--bone);outline-offset:4px}
.enquiry__optional summary:hover{color:var(--ivory)}
.field__route{font-size:12px;line-height:1.65;color:var(--speak);margin-top:12px;max-width:50ch}
@media(max-width:899.98px){
  .botanical{background-position:center}.botanical video{object-position:center}
  .botanical__shade{background:linear-gradient(90deg,rgba(10,9,13,.3),rgba(10,9,13,.75)),linear-gradient(#0a090d,transparent 25%)}
  .editorial .turn__say{font-size:clamp(2.4rem,8.6vw,4.8rem)}
  .editorial .cap__artist{min-height:78svh;margin-top:38px;padding-block:72px}
  .editorial .artist__stage>.cap__h,.editorial .artist__spread{margin-left:12%}
  .editorial .artist__title{font-size:clamp(2.7rem,8.6vw,4.5rem)}
  .editorial .wk{padding-block:68px 76px}.editorial .wk__title{margin-left:0;font-size:clamp(2.3rem,7.8vw,4.2rem)}
  .editorial .wk__body{grid-template-columns:1fr;gap:34px;margin-top:40px}
  .studio{padding-block:70px 90px}.studio__in{grid-template-columns:1fr;gap:28px}
  .studio h2{font-size:clamp(3rem,9vw,5rem)}.studio__body{margin-left:12%}
  .editorial .contact__grid{grid-template-columns:1fr;gap:44px}
  .editorial .contact__intro h2{font-size:clamp(3rem,9vw,4.8rem)}
  .editorial .contact{background:linear-gradient(transparent,#0a090d 40%)}
}
/* Save-data fallback remains photographic; reduced motion uses authored cuts. */
html[data-botanical-mode='still'][data-botanical='immersion'] .botanical--immersion{opacity:1!important}

/* Arrival / reading stop / release share the same centered frame. */
.artist__stage{width:100%}
.chapter-arrival{position:fixed;inset:0;background:#0c0d0d;z-index:18;opacity:0;pointer-events:none}
/* Preserve descenders while line masks remain within the original type frame. */
.editorial-line-mask{padding-bottom:.1em;margin-bottom:-.1em;overflow:clip}
.artist__stage,.wk__in,.studio__in{opacity:var(--chapter-release,1)}
.editorial [data-chapter-hold]{display:block;height:var(--chapter-height);min-height:0;padding-block:0;margin-top:0;overflow:visible}
[data-chapter-hold]>.artist__stage,[data-chapter-hold]>.wk__in,[data-chapter-hold]>.studio__in{position:sticky;top:var(--chapter-top);padding-block:24px}
.editorial .wk__title{font-size:clamp(2.8rem,5.2vw,6rem)}
.editorial .wk__body{margin-top:42px}
.editorial .wk__item{padding-top:32px}
.editorial .wk__scope li{padding-block:10px}
@media(min-width:900px) and (min-height:700px){
  .editorial .contact__intro{position:sticky;top:130px;align-self:start}
}
/* Restore the approved point/divider geometry. A hairline shadow supplies
   contrast on the lit wall; no hardware cap, badges or extra tick marks. */
.cur{mix-blend-mode:normal}
.cur__d{width:3.5px;height:3.5px;margin:8.75px 0 0 -1.75px;border-radius:50%;background:var(--ivory);opacity:.38;box-shadow:0 0 0 .55px rgb(11 11 12 / var(--cursor-edge,0))}
.cur__s{width:1px;height:18px;margin:1.5px 0 0 -.5px;background:var(--ivory);opacity:.24;transform-origin:50% 0;box-shadow:0 0 0 .5px rgb(11 11 12 / var(--cursor-edge,0))}
.interface-arrow{display:inline-block;width:1em;height:1em;background:currentColor;mask:url('../../public/identity/interface-arrow.svg') center/contain no-repeat;-webkit-mask:url('../../public/identity/interface-arrow.svg') center/contain no-repeat;vertical-align:-.1em}
.interface-arrow--back{rotate:180deg}
/* Progressive native select enhancement preserves platform keyboard,
   screen-reader, form-value and validation behaviour (WCAG 2.1.1 / 4.1.2).
   Touch devices retain their familiar picker; no imitation ARIA widget. */
@supports(appearance:base-select){
 @media(pointer:fine){
  .enquiry select,.enquiry select::picker(select){appearance:base-select}
  .enquiry select{display:flex;align-items:center;justify-content:space-between;gap:16px}
  .enquiry select::picker(select){background:#1b1c1b;color:#e5e1d5;border:1px solid #5F5F65;border-radius:2px;padding:12px;max-height:min(440px,65svh);box-shadow:0 16px 45px #0005;font:400 14px/1.5 var(--sans);scrollbar-width:thin}
  .enquiry select option{padding:11px 16px;min-height:42px;border-radius:1px;gap:14px;font:400 14px/1.5 var(--sans);letter-spacing:0;text-transform:none;color:#e5e1d5}
  .enquiry select option:hover,.enquiry select option:focus{background:#323235;color:#f1eee5;outline:none}
  .enquiry select option:checked{background:#28282A;color:#f1eee5}
  .enquiry select option:disabled{display:none}
  .enquiry select optgroup{padding-block:8px 12px;font:400 10px/1.5 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:#9F9FA6;background:none}
  .enquiry select optgroup::before{display:block;padding:10px 16px 6px;color:#9F9FA6;font-size:10px;letter-spacing:.13em;text-transform:uppercase;font-weight:400}
  .enquiry select::picker-icon{color:#9F9FA6;scale:.8}
  .enquiry select option::checkmark{color:#9F9FA6}
 }
}
.contact__arrival{display:contents}
/* Touch forms must not inherit a transformed focus coordinate space. GSAP
   leaves even its completed y:0 entrance as a matrix; navigation also moves
   the grid. Keep opacity/heading entrances, but keep the form in normal flow.
   Native keyboard positioning and browser zoom remain fully available. */
@media(pointer:coarse){
  #contact .contact__grid,#contact .contact__project{
    transform:none!important;translate:none!important;scale:none!important;
  }
  #contact input,#contact textarea,#contact select{font-size:16px;scroll-margin-block:96px 140px}
}
@media(max-width:899px) and (min-height:660px) and (prefers-reduced-motion:no-preference){
  .contact__arrival{display:block;min-height:calc(100svh + 64px)}
  .editorial .contact__arrival .contact__intro{position:sticky;top:110px;padding-bottom:40px}
}
/* A mobile keyboard changes the available viewport height. Keep the touch
   Contact section in normal flow so height breakpoints cannot remove a
   viewport-sized sticky spacer beneath the focused field and jump the page.
   Fine-pointer desktop keeps the approved editorial sticky composition. */
@media(max-width:899px),(pointer:coarse){
  #contact .contact__arrival{display:contents!important;min-height:0!important}
  #contact .contact__intro{position:static!important;top:auto!important;padding-bottom:0!important}
}
html[data-contact-editing="true"] #contact .contact__project{
  opacity:1!important;visibility:visible!important;transform:none!important;translate:none!important;scale:none!important;
}
@media(min-width:1000px) and (min-height:760px) and (prefers-reduced-motion:no-preference){
  html[data-unfold]:not([data-motion='still']) .turn{height:175svh}
}
.cur__s::before,.cur__s::after{display:none}
/* Supplemental light only: remove the old dark annulus around the pointer. */
.env__lamp{background:radial-gradient(circle var(--lampR) at var(--lx) var(--ly),rgba(227,227,228,.12),rgba(193,193,198,.045) 35%,transparent 72%)}
@media(prefers-reduced-motion:reduce){
  .botanical-passage{display:block!important;height:190svh}
  html[data-motion='still'] .editorial .deep{position:sticky;inset:auto;top:0;height:100lvh;margin-bottom:-100lvh}
  .chapter-arrival{display:none}
}
html[data-botanical-mode='still'] .botanical-passage{display:none!important}
.ambient-utility{margin-top:12px;font:400 12px/1.7 var(--sans)}
.ambient-utility button{font:inherit;color:var(--bone);background:none;border:0;min-height:44px;padding:10px 0;cursor:pointer}
.ambient-utility button:hover{color:var(--ivory)}
.ambient-utility button:focus-visible{outline:2px solid var(--ivory);outline-offset:4px}
html[data-ambient-paused] .cue::after{animation-play-state:paused}
.enquiry__trap{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.enquiry__status{font-size:13px;line-height:1.7;color:var(--bone);margin-top:24px}
.enquiry__note a{text-decoration:underline;text-underline-offset:3px}
.field[hidden]{display:none!important}
.field input[type=file]{font-size:12px;max-width:100%}
.field input::file-selector-button{background:#D5D5D7;color:#1A1A1B;border:0;padding:10px;margin-right:12px;cursor:pointer}


/* Project form: who it is for, budget range, progress. Pill buttons; colours stay in the studio palette (bone, graphite, sage). */
.project-button{border-radius:999px;padding-inline:30px}
.ct__label{display:block;font-size:12px;color:var(--bone);margin-bottom:12px;line-height:1.5}.ct__label span{color:var(--mute);font-size:11px}
.ct__pills{display:flex;flex-wrap:wrap;gap:10px}
.pill{appearance:none;font:inherit;font-size:14px;line-height:1;color:var(--speak);background:transparent;border:1px solid #69646e;border-radius:999px;padding:13px 18px;min-height:44px;cursor:pointer;transition:border-color var(--motion-fast),background var(--motion-fast),color var(--motion-fast)}
.pill:hover{border-color:var(--bone);color:var(--bone)}
.pill[aria-checked="true"]{border-color:#A0A0A7;background:rgba(160,160,167,.14);color:var(--ivory)}
.pill:focus-visible{outline:1px solid var(--bone);outline-offset:3px}
.field.is-done>label::after{content:"✓";float:right;font-size:13px;color:#A0A0A7}
.enquiry__progress{display:flex;align-items:center;gap:16px;margin-top:34px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.enquiry__progress i{flex:1;height:1px;background:#3b3840;position:relative}
.enquiry__progress b{position:absolute;left:0;top:0;bottom:0;width:0;background:#A0A0A7;transition:width var(--motion-medium) var(--e-out)}
.enquiry__progress+.enquiry__action{margin-top:16px}
.field__hint .use{margin-left:8px;background:none;border:0;color:#A0A0A7;font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
@media(prefers-reduced-motion:reduce){.enquiry__progress b{transition:none}}


/* Form refinement: a tighter rhythm, quieter boxes, clearer focus. Same studio colours. */
#contact .enquiry__label{padding-bottom:20px}
#contact .enquiry__fields{gap:22px 28px}
#contact .field label,#contact .ct__label{margin-bottom:2px;font-size:12.5px;color:var(--speak)}
#contact .field:focus-within label{color:var(--ivory)}
#contact .field input,#contact .field select,#contact .field textarea{background:transparent;padding:10px 0;min-height:46px;border-bottom-color:#59555e}
#contact .field input:focus,#contact .field select:focus,#contact .field textarea:focus{background:transparent;border-bottom-color:#A0A0A7;box-shadow:0 1px 0 #A0A0A7}
#contact .field input::placeholder,#contact .field textarea::placeholder{color:#7d7981;font-size:15px}
#contact .field textarea{min-height:92px;resize:vertical}
@media(pointer:coarse){#contact .field textarea{resize:none}}
#contact .field__hint{margin-top:6px}
#contact .ct__pills{gap:8px;margin-top:8px}
#contact .pill{font-size:13.5px;padding:10px 15px;min-height:42px}
#contact .enquiry__progress{margin-top:26px}
#contact .project-button{min-height:58px}
@media(max-width:700px){#contact .enquiry__fields{gap:20px 0}#contact .enquiry__fields{grid-template-columns:minmax(0,1fr)}}
#contact .field select{padding-left:0;text-indent:0}
