/* ==== pages/contact.css ==== */
/* =====================================================================
   Contact (body[data-page="contact"]). Choreography: assets/js/pages/contact.js.
   Every scene is a calm static layout first (reduced motion / no JS); html.motion turns it into a
   pinned or scroll-linked scene. Classes are prefixed "ct-" because all page stylesheets ship
   in one bundle. Copy over film uses .on-media, so it reads the same in both themes.
   ===================================================================== */

/* ---------- 1 · Opening ---------- */
.ct-hero{position:relative;isolation:isolate}
.ct-open{padding:calc(var(--nav-h) + clamp(56px,10vh,120px)) var(--gutter) clamp(56px,8vw,96px)}
.ct-intro{max-width:1180px;margin-inline:auto;text-align:center}
.ct-intro .eyebrow{margin-bottom:16px}
.ct-title{text-wrap:balance} /* the white twin is a <p>: keep its line breaks identical to the <h1> */
.ct-intro .lead{max-width:31em;margin:clamp(18px,2vw,26px) auto 0}
.ct-intro--film{display:none}

/* The film: a dark band behind "Reach our team" and the report form (static) — or, with motion,
   a window under the headline that opens to full-bleed and stays pinned behind both. */
.ct-body{position:relative;z-index:2;background:var(--film-bg);color:#f5f5f7}
.ct-bg{position:absolute;inset:0;pointer-events:none}
.ct-pin{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
.ct-film{position:absolute;inset:0}
.ct-film-media{position:absolute;inset:0;overflow:hidden;background:var(--film-bg)}
.ct-film-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 40%}
.ct-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.5) 0%,rgba(0,0,0,.24) 32%,rgba(0,0,0,.3) 64%,rgba(0,0,0,.66) 100%),rgba(0,0,0,.5)}
/* the film's pause button: its own sticky layer above the copy, so it is always reachable */
.ct-ctl{position:absolute;inset:0;z-index:3;pointer-events:none}
.ct-ctl-pin{position:sticky;top:0;height:100vh;height:100svh}
.ct-vctl{pointer-events:auto}
.ct-vctl.is-tucked{opacity:0;visibility:hidden;transition:opacity .4s var(--ease),visibility 0s .4s}
.ct-spacer{display:none}
.ct-flow{position:relative;z-index:1;padding-top:var(--sec)}
/* room after the form: static, the dark band simply ends; with motion the film closes back into a window here */
.ct-end{height:var(--sec)}

.motion .ct-open{position:sticky;top:0;z-index:1;height:100vh;height:100svh;margin-bottom:-100vh;margin-bottom:-100svh;padding:0}
.motion .ct-intro{position:absolute;left:0;right:0;top:calc(var(--nav-h) + clamp(36px,8vh,96px));padding-inline:var(--gutter);transform-origin:50% 0;will-change:transform,opacity}
.motion .ct-intro--film{display:block;--text:#fff;--text-2:rgba(255,255,255,.88);--text-meta:rgba(255,255,255,.8);color:#fff}
/* a soft pool of shade behind the white headline keeps it legible over the sunlit patch of the film */
.motion .ct-intro--film::before{content:"";position:absolute;left:50%;top:46%;z-index:-1;width:min(1500px,150%);height:250%;transform:translate(-50%,-50%);
  background:radial-gradient(closest-side,rgba(0,0,0,.5),rgba(0,0,0,.3) 58%,rgba(0,0,0,0));pointer-events:none}
.motion .ct-body{background:none}
.motion .ct-film{clip-path:inset(44% max(var(--gutter),calc((100% - var(--maxw))/2)) 28px round var(--r-xl));will-change:clip-path}
.motion .ct-film-media video{will-change:transform}
.motion .ct-scrim{will-change:opacity}
.motion .ct-vctl{will-change:transform}
.motion .ct-spacer{display:block;height:150vh;height:150svh}
.motion .ct-flow{padding-top:0}
.motion .ct-end{height:clamp(240px,40vh,420px)}

/* ---------- 2 · Reach our team (giant lines of type over the film) ---------- */
.ct-reach,.ct-report-head{--text-meta:rgba(255,255,255,.8)}
.ct-reach{--line:rgba(255,255,255,.22)}
.ct-k{margin-bottom:clamp(20px,3vw,36px);font-size:clamp(15px,1.2vw,17px);line-height:1.3;font-weight:600;letter-spacing:-.01em;color:var(--text-meta)}
.ct-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,4.2fr);align-items:baseline;gap:10px 32px;padding:clamp(22px,3.2vw,40px) 0}
.ct-row::before,.ct-row:last-child::after{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--line);transform-origin:0 50%}
.ct-row:last-child::after{top:auto;bottom:0}
.ct-row dt{font-size:clamp(15px,1.2vw,17px);font-weight:600;letter-spacing:-.01em;color:var(--text-meta)}
.ct-row dd{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px 24px;min-width:0}
.ct-v{display:inline-flex;align-items:center;gap:.28em;max-width:100%;color:#fff;font:600 clamp(30px,5.4vw,84px)/1.04 var(--f-display);letter-spacing:-.036em;font-variant-numeric:tabular-nums}
.ct-v .chev{width:.2em;height:.34em;opacity:0;transform:translate3d(-.25em,0,0);transition:opacity .5s var(--ease),transform .7s var(--ease)}
a.ct-v:hover .chev,a.ct-v:focus-visible .chev{opacity:.7;transform:none}
a.ct-v:focus-visible{outline-offset:6px;border-radius:12px}
.ct-v--hours{display:block;font-size:clamp(26px,3.4vw,52px);line-height:1.12;letter-spacing:-.03em}
.ct-v--hours .ct-m+.ct-m{color:rgba(255,255,255,.7)}
.ct-m{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}
.ct-m>span{display:inline-block}
.ct-copybtn{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:0 14px 0 12px;border-radius:var(--r-pill);color:#fff;font-size:14px;font-weight:500;letter-spacing:-.01em;
  background:rgba(255,255,255,.14);-webkit-backdrop-filter:blur(14px) saturate(160%);backdrop-filter:blur(14px) saturate(160%);transition:background-color .3s}
.ct-copybtn[hidden]{display:none}
.ct-copybtn:hover{background:rgba(255,255,255,.24)}
.ct-copybtn-i{display:grid;place-items:center;width:15px;height:15px}
.ct-copybtn-i svg{grid-area:1/1;width:15px;height:15px;transition:opacity .35s var(--ease),transform .6s var(--ease)}
.ct-copybtn-i svg:last-child{opacity:0;transform:scale(.4);color:var(--accent)}
.ct-copybtn.is-done .ct-copybtn-i .i-copy{opacity:0;transform:scale(.4)}
.ct-copybtn.is-done .ct-copybtn-i svg:last-child{opacity:1;transform:none}
/* rows draw in: hairline from the left, then the line of type rises out of its mask */
.motion .ct-row::before,.motion .ct-row:last-child::after{transform:scaleX(0);transition:transform 1.6s var(--ease) var(--rd,0s)}
.motion .ct-row dt,.motion .ct-copybtn{opacity:0;transition:opacity 1s var(--ease) calc(var(--rd,0s) + .25s),background-color .3s}
.motion .ct-row .ct-m>span{transform:translate3d(0,108%,0);transition:transform 1.3s var(--ease) calc(var(--rd,0s) + .12s)}
.motion .ct-row .ct-m+.ct-m>span{transition-delay:calc(var(--rd,0s) + .22s)}
.motion .ct-row.is-in::before,.motion .ct-row.is-in:last-child::after{transform:none}
.motion .ct-row.is-in :is(dt,.ct-copybtn){opacity:1}
.motion .ct-row.is-in .ct-m>span{transform:none}
@media (max-width:767px){
  .ct-row{grid-template-columns:1fr;gap:10px}
  .ct-v{font-size:clamp(28px,8.6vw,40px)}
  .ct-v--hours{font-size:clamp(24px,7vw,32px)}
}

/* ---------- 3 · Write to us (glass card over the film; a switch picks the form) ---------- */
.ct-report{padding-top:clamp(96px,16vh,180px)}
.ct-report-in{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(40px,6vw,96px);align-items:start}
/* the two headings share one cell, so swapping them never moves the layout */
.ct-report-head{display:grid}
.ct-head{grid-area:1/1;transition:opacity .6s var(--ease),visibility 0s}
.ct-head .eyebrow{margin-bottom:14px}
.ct-head .lead{margin-top:clamp(18px,2vw,26px);max-width:26em}
.ct-steps{margin-top:clamp(28px,4vw,44px);max-width:26em;border-top:1px solid rgba(255,255,255,.2)}
.ct-steps li{display:flex;gap:16px;padding:14px 0;border-bottom:1px solid rgba(255,255,255,.2);font-size:16px;line-height:1.4;color:var(--text)}
.ct-steps--plain li{padding-inline:0}
.ct-steps-n{flex:none;width:22px;font-size:13px;line-height:1.75;font-weight:600;color:var(--text-meta);font-variant-numeric:tabular-nums}
.motion .ct-report-head{position:sticky;top:calc(var(--nav-h) + clamp(32px,8vh,96px))}
.ct-card{padding:clamp(24px,3.6vw,44px);border-radius:var(--r-xl);background:var(--glass-bg);color:var(--text);
  box-shadow:0 0 0 1px var(--glass-line),0 40px 120px rgba(0,0,0,.45);-webkit-backdrop-filter:blur(30px) saturate(150%);backdrop-filter:blur(30px) saturate(150%)}
/* secondary text on the glass keeps ≥4.5:1 even over the brightest patches of the film behind it */
[data-theme="dark"] .ct-card{--text-2:#b0b0b5;--text-meta:#98989d;--ct-track:rgba(255,255,255,.07);--ct-thumb:rgba(255,255,255,.16);--ct-thumb-sh:none}
[data-theme="light"] .ct-card{--text-2:#5e5e63;--text-meta:#5e5e63;--ct-track:rgba(0,0,0,.055);--ct-thumb:#fff;--ct-thumb-sh:0 1px 2px rgba(0,0,0,.08),0 4px 12px rgba(0,0,0,.08)}

/* segmented switch: two radios, one thumb that glides */
.ct-seg{position:relative;display:grid;grid-template-columns:1fr 1fr;padding:3px;margin-bottom:clamp(20px,2.6vw,28px);border-radius:var(--r-pill);background:var(--ct-track);isolation:isolate}
.ct-seg input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.ct-seg label{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;min-height:40px;padding:0 10px;border-radius:var(--r-pill);
  font-size:15px;font-weight:500;letter-spacing:-.012em;color:var(--text-2);text-align:center;cursor:pointer;transition:color .4s var(--ease)}
.ct-seg label:hover,.ct-seg input:checked+label{color:var(--text)}
.ct-seg input:focus-visible+label{outline:2px solid var(--accent);outline-offset:2px}
.ct-seg-thumb{position:absolute;z-index:0;left:3px;top:3px;bottom:3px;width:calc(50% - 3px);border-radius:var(--r-pill);background:var(--ct-thumb);box-shadow:var(--ct-thumb-sh);
  transition:transform .6s var(--ease)}
.ct-seg:has(#ct-kind-ask:checked) .ct-seg-thumb{transform:translate3d(100%,0,0)}

/* the two forms share one cell as well; only the chosen one is visible (and reachable by keyboard) */
.ct-panes{display:grid}
.ct-pane{grid-area:1/1;transition:opacity .5s var(--ease),transform .7s var(--ease),visibility 0s}
.ct-pane .f-status:empty{display:none}
.ct-report:has(#ct-kind-ask:checked) :is(.ct-head--report,.ct-pane--report),
.ct-report:not(:has(#ct-kind-ask:checked)) :is(.ct-head--ask,.ct-pane--ask){opacity:0;visibility:hidden;transition:opacity .35s var(--ease),transform .5s var(--ease),visibility 0s .35s}
.ct-report:has(#ct-kind-ask:checked) .ct-pane--report{transform:translate3d(-16px,0,0)}
.ct-report:not(:has(#ct-kind-ask:checked)) .ct-pane--ask{transform:translate3d(16px,0,0)}
@media (max-width:860px){
  .ct-report-in{grid-template-columns:1fr}
  .motion .ct-report-head{position:static}
  .ct-head{align-self:end} /* the shorter heading keeps its distance to the card; the slack goes above it */
}
@media (max-width:767px){
  .ct-seg label{font-size:14px;padding:0 6px}
  .ct-steps li{font-size:15px}
}

/* ---------- 4 · Follow us: photographs gather around one sentence ---------- */
.ct-follow{position:relative;padding-block:var(--sec)}
.ct-follow-stage{display:flex;flex-direction:column}
.ct-follow-copy{position:relative;z-index:2;width:min(860px,100% - 2*var(--gutter));margin-inline:auto;text-align:center}
.ct-follow-copy .eyebrow{margin-bottom:clamp(16px,2.6vh,28px)}
.ct-statement{font:600 clamp(28px,3.5vw,50px)/1.12 var(--f-display);letter-spacing:-.028em;color:var(--text);text-wrap:balance}
.ct-follow-copy .actions{justify-content:center;margin-top:clamp(28px,4.4vh,44px)}
.ct-follow-copy .btn .chev{width:10px;height:10px}
.ct-handle{font-size:15px;color:var(--text-meta)}
.ct-iw{display:inline}
/* static: the photographs as a quiet grid under the sentence */
.ct-tiles{order:2;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;width:min(var(--maxw),100% - 2*var(--gutter));margin:clamp(48px,7vw,88px) auto 0}
.ct-tile{position:relative;aspect-ratio:1/1;border-radius:var(--r-lg);overflow:hidden;background:var(--media-bg)}
.ct-tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:var(--img-filter)}
.ct-tile:nth-child(5){grid-column:span 2;aspect-ratio:auto}
.ct-tile:last-child{display:none} /* static grid: six photographs fill it exactly */
.ct-tile:first-child{grid-row:span 2;aspect-ratio:auto}
@media (max-width:767px){
  .ct-tiles{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:dense;gap:12px}
  .ct-tile:nth-child(5){aspect-ratio:2/1}
  .ct-tile:first-child{grid-row:auto;aspect-ratio:1/1}
  .ct-tile--wide{display:none}
}
/* motion: a pinned stage; the photographs drift in from beyond the edges and settle around the copy */
.motion .ct-follow{padding:0}
.motion .ct-follow-track{height:230vh}
.motion .ct-follow-stage{position:sticky;top:0;display:grid;place-items:center;height:100vh;height:100svh;overflow:hidden;padding-top:var(--nav-h)}
.motion .ct-follow-copy{grid-area:1/1;width:min(860px,60vw)}
.motion .ct-tiles{position:absolute;inset:0;display:block;width:auto;margin:0}
.motion .ct-tile{position:absolute;left:var(--x);top:var(--y);width:var(--w);aspect-ratio:var(--ar);grid-row:auto;opacity:0;will-change:transform,opacity}
.motion .ct-tile:last-child{display:block}
@media (max-width:767px){
  .motion .ct-follow-copy{width:calc(100% - 2*var(--gutter))}
  .motion .ct-tile{left:var(--mx);top:var(--my);width:var(--mw)}
  .motion .ct-statement{font-size:clamp(25px,7vw,30px)}
}

/* ---------- 5 · Headquarters: photograph → map ---------- */
.ct-hq-in{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(40px,6vw,96px);align-items:center}
.ct-hq-text .eyebrow{margin-bottom:14px}
.ct-addr{margin-top:clamp(28px,4vw,48px);font-style:normal}
.ct-addr span{display:block}
.ct-addr-org{margin-bottom:12px;font-size:15px;font-weight:600;letter-spacing:-.01em;color:var(--text-meta)}
.ct-addr-big{font:600 clamp(26px,2.7vw,40px)/1.1 var(--f-display);letter-spacing:-.026em;color:var(--text)}
.ct-addr-big~span{margin-top:4px;font-size:clamp(19px,1.55vw,22px);line-height:1.38;letter-spacing:-.014em;color:var(--text-2)}
.ct-hq-go{margin-top:clamp(16px,2.4vw,28px)}
.ct-map{position:relative;margin:0;aspect-ratio:1/1;max-height:min(78vh,720px);width:100%;border-radius:var(--r-xl);overflow:hidden;background:var(--media-bg);isolation:isolate}
.ct-map-photo,.ct-map-embed{position:absolute;inset:0;overflow:hidden}
.ct-map-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 62%;filter:var(--img-filter)}
.ct-map-embed iframe{display:block;width:100%;height:100%;border:0}
.ct-map-gate{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:clamp(24px,5vw,48px);text-align:center;background:var(--surface)}
.ct-map-gate p{max-width:26em;margin:0;font-size:15px;line-height:1.5;color:var(--text-2)}
[data-theme="dark"] .ct-map-embed iframe{filter:invert(.9) hue-rotate(180deg) saturate(.45) brightness(.92) contrast(.92)}
[data-theme="light"] .ct-map-embed iframe{filter:grayscale(.35) contrast(.97)}
.ct-map::after{content:"";position:absolute;inset:0;z-index:3;border-radius:inherit;box-shadow:inset 0 0 0 1px var(--line-soft);pointer-events:none}
.motion .ct-map-photo img{will-change:transform}
.motion .ct-map-embed{clip-path:circle(0% at 50% 50%)}
@media (max-width:860px){
  .ct-hq-in{grid-template-columns:1fr;gap:40px}
  .ct-map{aspect-ratio:4/5;max-height:none}
}

/* report pane: a calm reminder that this is not an emergency line */
.ct-urgent{max-width:40em;margin-top:20px;padding-top:16px;border-top:1px solid var(--line);font-size:14px;line-height:1.5;color:var(--text-2)}
.ct-urgent strong{font-weight:600;color:var(--text)}

/* ==== pages/related.css ==== */
/* "Related on MEPA": contextual links at the foot of a page (prefix rel-). Plain type and hairlines; always visible, no motion. */
.rel{padding:clamp(40px,6vh,72px) 0;border-top:1px solid var(--line)}
.rel-h{margin-bottom:clamp(16px,2.4vh,24px);font:600 15px/1.3 var(--f-text);letter-spacing:0;color:var(--text-meta)}
.rel-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:0 clamp(20px,3vw,40px);margin:0;padding:0;list-style:none}
.rel-a{display:grid;gap:4px;min-height:44px;padding:14px 0;border-top:1px solid var(--line);color:var(--text)}
.rel-k{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-meta)}
.rel-t{font:600 18px/1.3 var(--f-display);letter-spacing:-.016em}
.rel-s{font-size:15px;line-height:1.45;color:var(--text-2)}
.rel-a:hover .rel-t{text-decoration:underline;text-underline-offset:3px}
