/* From drawing to building: a scroll-linked reveal (section#emerge, emerge.js).
   Default state, with no script or with reduced motion: the finished photo, with the
   line drawing as a small inset. emerge.js adds .is-live to pin the stage and scrub it. */
.emerge{--em-top:88px;--d:1;--r:0;--lo:1;--p:0;--fo:0;position:relative;background:var(--navy);color:#fff;padding:clamp(72px,9vw,136px) 0;margin-bottom:clamp(56px,7vw,112px)}
.emerge :focus-visible{outline-color:#fff}
.emerge-grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:clamp(32px,5vw,96px);align-items:center}
.emerge-copy{display:flex;flex-direction:column;align-items:flex-start;gap:24px;min-width:0}
.emerge-eyebrow{color:#78b9e0}
.emerge h2{margin:0;font:500 clamp(38px,4.4vw,72px)/1 'Hanken Grotesk',system-ui,sans-serif;letter-spacing:-.045em;text-wrap:balance}
.emerge h2 em{display:block;color:#78b9e0;font-size:1.06em;letter-spacing:-.02em}
.emerge-copy p{margin:0;font-size:clamp(17px,1.4vw,20px);line-height:1.6;color:rgba(255,255,255,.84);max-width:24em}
.emerge-link{color:#fff;font-weight:600;font-size:15px;padding-bottom:5px;border-bottom:1px solid rgba(255,255,255,.7);transition:border-color .2s}
.emerge-link:hover{color:#fff;border-color:#fff}
.emerge-link span{display:inline-block;transition:transform .25s}
.emerge-link:hover span{transform:translateX(4px)}

.emerge-fig{margin:0;min-width:0}
.emerge-art{position:relative;aspect-ratio:3/2;overflow:hidden;
  background:
    linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px) 0 0/120px 120px,
    linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px) 0 0/120px 120px,
    linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px) 0 0/24px 24px,
    linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px) 0 0/24px 24px,
    #0b3f66}
.emerge-layers{position:absolute;inset:0}
.emerge-photo,.emerge-draw{position:absolute;display:block;object-fit:cover}
.emerge-photo{inset:0;width:100%;height:100%}
.emerge-draw{right:14px;top:14px;width:min(24%,260px);height:auto;aspect-ratio:3/2;background:#0b3f66;border:1px solid rgba(255,255,255,.45)}
.emerge-front{display:none}

.emerge-cap{display:flex;justify-content:space-between;align-items:center;gap:10px 24px;flex-wrap:wrap;padding-top:14px;color:rgba(255,255,255,.8)}
.emerge-note{font-size:13px;line-height:1.4;color:rgba(255,255,255,.7)}
.emerge-meter{display:none}

/* live: the stage pins and the scroll drives --d (lines sweep in), --r (photo rises), --lo (lines fade) */
.emerge.is-live{padding:0}
.is-live .emerge-track{height:calc(100vh + 140vh);height:calc(100svh + 140svh)}
.is-live .emerge-stick{position:sticky;top:0;box-sizing:border-box;height:100vh;height:100svh;padding:calc(var(--em-top) + 16px) 0 24px;display:flex;align-items:center}
.is-live .emerge-grid{width:100%}
.is-live .emerge-fig{width:min(100%,calc((100vh - var(--em-top) - 120px) * 1.5));width:min(100%,calc((100svh - var(--em-top) - 120px) * 1.5));margin-left:auto}
.is-live .emerge-layers{transform:scale(calc(1.05 - .05 * var(--r)));transform-origin:50% 62%;will-change:transform}
.is-live .emerge-photo{-webkit-mask-image:linear-gradient(to top,#000 calc(var(--r) * 118% - 18%),transparent calc(var(--r) * 118%));mask-image:linear-gradient(to top,#000 calc(var(--r) * 118% - 18%),transparent calc(var(--r) * 118%))}
.is-live .emerge-draw{inset:0;width:100%;height:100%;aspect-ratio:auto;border:0;background:none;opacity:var(--lo);
  -webkit-mask-image:linear-gradient(to right,#000 calc(var(--d) * 118% - 18%),transparent calc(var(--d) * 118%));
  mask-image:linear-gradient(to right,#000 calc(var(--d) * 118% - 18%),transparent calc(var(--d) * 118%))}
.is-live .emerge-front{display:block;position:absolute;left:0;right:0;bottom:calc(var(--r) * 118% - 9%);height:1px;opacity:var(--fo);pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(120,185,224,.95) 18%,rgba(120,185,224,.95) 82%,transparent);box-shadow:0 0 14px rgba(120,185,224,.65)}
.is-live .emerge-note{display:none}
.is-live .emerge-meter{display:flex;align-items:center;gap:12px;flex:1 1 220px;max-width:340px;font:600 11px/1 'Hanken Grotesk',sans-serif;letter-spacing:.1em;text-transform:uppercase}
.emerge-meter span:first-child{opacity:calc(.4 + .6 * (1 - var(--r)))}
.emerge-meter span:last-child{opacity:calc(.4 + .6 * var(--r))}
.emerge-meter i{position:relative;flex:1;height:1px;background:rgba(255,255,255,.3)}
.emerge-meter b{position:absolute;left:0;top:0;width:100%;height:1px;background:#78b9e0;transform-origin:0 50%;transform:scaleX(var(--p))}

@media (max-width:900px){
  .emerge{--em-top:68px}
  .emerge-grid{grid-template-columns:minmax(0,1fr);gap:24px}
  .emerge-copy{gap:14px}
  .emerge h2{font-size:clamp(32px,9vw,46px)}
  .emerge-art{aspect-ratio:5/4}
  .emerge-draw{width:min(34%,220px)}
  .is-live .emerge-stick{padding-top:calc(var(--em-top) + 12px);padding-bottom:16px}
  /* pinned, one column: the copy keeps the height it needs and the figure gets the rest of the screen.
     The art shrinks to fit (the photo and the lines are cover-cropped), so nothing leaves the viewport. */
  .is-live .emerge-grid{height:100%;grid-template-rows:auto minmax(0,auto);align-content:center;align-items:start}
  .is-live .emerge-fig{width:100%;height:100%;min-height:0;display:flex;flex-direction:column}
  .is-live .emerge-art{flex:0 1 auto;min-height:0}
  .is-live .emerge-cap{flex:none}
}
@media (max-width:900px) and (max-height:720px){.is-live .emerge-copy p{display:none}}
/* wide and short (a small landscape tablet): keep two columns, with the figure capped by the screen height like the desktop rule */
@media (min-width:760px) and (max-width:900px) and (min-aspect-ratio:11/10){
  .emerge-grid{grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:clamp(24px,4vw,48px)}
  .emerge-copy{gap:18px}
  .emerge h2{font-size:clamp(30px,4.4vw,40px)}
  .emerge-art{aspect-ratio:3/2}
  .emerge-draw{width:min(24%,260px)}
  .is-live .emerge-grid{height:auto;grid-template-rows:none;align-content:normal;align-items:center}
  .is-live .emerge-fig{display:block;height:auto;width:min(100%,calc((100vh - var(--em-top) - 120px) * 1.5));width:min(100%,calc((100svh - var(--em-top) - 120px) * 1.5));margin-left:auto}
  .is-live .emerge-art{flex:none}
}
