/* ============================================================
   IMAGE STREAM — corridor of cards riding toward the viewer.
   Keyframes pre-computed from the corridor formulas at 96 stops:
   the path is exponential in z and the browser interpolates linearly
   between stops, so too few stops make the motion visibly faceted.
   exitHeight is held at 42 cqw — every extra cqw is peak
   rasterisation area on 18 simultaneously animating layers.
   ============================================================ */
.stream{position:relative;overflow:hidden;container-type:inline-size;isolation:isolate}
.stream.hero{min-height:100dvh;display:flex;align-items:center;padding-top:8rem;padding-bottom:0}
.stream.hero .stream__content{width:100%;padding-bottom:30vh}

.stream__field{
  position:absolute;inset:0;pointer-events:none;z-index:0;
  perspective:30cqw;perspective-origin:50% 71%;
}
.stream__rails{position:absolute;inset:0;transform-style:preserve-3d}
.stream__card{
  position:absolute;left:50%;top:71%;
  width:18cqw;height:25cqw;
  margin-left:-9.0cqw;margin-top:-12.5cqw;
  border-radius:0.4cqw;overflow:hidden;
  backface-visibility:hidden;
  contain:paint;
  /* earned: these animate non-stop, so the layer is rasterised once and
     scaled instead of re-rasterised each frame. Released when off screen. */
  will-change:transform;
  animation-duration:18s;animation-timing-function:linear;animation-iteration-count:infinite;
}
.stream__card img{width:100%;height:100%;object-fit:cover;display:block;user-select:none}
.stream__card--r{animation-name:stream-r}
.stream__card--l{animation-name:stream-l}

/* scrolled past: stop the work and hand the GPU memory back */
.stream.is-idle .stream__card{animation-play-state:paused;will-change:auto}

.stream__scrim{
  position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    radial-gradient(56% 42% at 50% 40%,rgba(var(--ink),.72),rgba(var(--ink),.19) 64%,transparent 82%),
    linear-gradient(180deg,var(--bg) 0%,rgba(var(--ink),.11) 20%,rgba(var(--ink),.11) 72%,var(--bg) 100%);
}
.stream__content{position:relative;z-index:2}

@keyframes stream-r{0.000%{transform:translate3d(-11.000cqw,0,-258.462cqw) rotateY(-6.00deg)}1.042%{transform:translate3d(-9.132cqw,0,-250.222cqw) rotateY(-6.23deg)}2.083%{transform:translate3d(-7.309cqw,0,-242.217cqw) rotateY(-6.46deg)}3.125%{transform:translate3d(-5.529cqw,0,-234.441cqw) rotateY(-6.69deg)}4.167%{transform:translate3d(-3.793cqw,0,-226.888cqw) rotateY(-6.92deg)}5.208%{transform:translate3d(-2.100cqw,0,-219.550cqw) rotateY(-7.15deg)}6.250%{transform:translate3d(-0.450cqw,0,-212.421cqw) rotateY(-7.38deg)}7.292%{transform:translate3d(1.159cqw,0,-205.497cqw) rotateY(-7.60deg)}8.333%{transform:translate3d(2.728cqw,0,-198.770cqw) rotateY(-7.83deg)}9.375%{transform:translate3d(4.255cqw,0,-192.235cqw) rotateY(-8.06deg)}10.417%{transform:translate3d(5.743cqw,0,-185.887cqw) rotateY(-8.29deg)}11.458%{transform:translate3d(7.191cqw,0,-179.720cqw) rotateY(-8.52deg)}12.500%{transform:translate3d(8.601cqw,0,-173.729cqw) rotateY(-8.75deg)}13.542%{transform:translate3d(9.973cqw,0,-167.910cqw) rotateY(-8.98deg)}14.583%{transform:translate3d(11.307cqw,0,-162.256cqw) rotateY(-9.21deg)}15.625%{transform:translate3d(12.604cqw,0,-156.765cqw) rotateY(-9.44deg)}16.667%{transform:translate3d(13.865cqw,0,-151.430cqw) rotateY(-9.67deg)}17.708%{transform:translate3d(15.091cqw,0,-146.247cqw) rotateY(-9.90deg)}18.750%{transform:translate3d(16.281cqw,0,-141.213cqw) rotateY(-10.12deg)}19.792%{transform:translate3d(17.436cqw,0,-136.322cqw) rotateY(-10.35deg)}20.833%{transform:translate3d(18.558cqw,0,-131.571cqw) rotateY(-10.58deg)}21.875%{transform:translate3d(19.646cqw,0,-126.956cqw) rotateY(-10.81deg)}22.917%{transform:translate3d(20.701cqw,0,-122.472cqw) rotateY(-11.04deg)}23.958%{transform:translate3d(21.724cqw,0,-118.117cqw) rotateY(-11.27deg)}25.000%{transform:translate3d(22.715cqw,0,-113.886cqw) rotateY(-11.50deg)}26.042%{transform:translate3d(23.675cqw,0,-109.776cqw) rotateY(-11.73deg)}27.083%{transform:translate3d(24.605cqw,0,-105.783cqw) rotateY(-11.96deg)}28.125%{transform:translate3d(25.504cqw,0,-101.905cqw) rotateY(-12.19deg)}29.167%{transform:translate3d(26.374cqw,0,-98.137cqw) rotateY(-12.42deg)}30.208%{transform:translate3d(27.215cqw,0,-94.477cqw) rotateY(-12.65deg)}31.250%{transform:translate3d(28.028cqw,0,-90.921cqw) rotateY(-12.88deg)}32.292%{transform:translate3d(28.813cqw,0,-87.467cqw) rotateY(-13.10deg)}33.333%{transform:translate3d(29.570cqw,0,-84.111cqw) rotateY(-13.33deg)}34.375%{transform:translate3d(30.301cqw,0,-80.852cqw) rotateY(-13.56deg)}35.417%{transform:translate3d(31.005cqw,0,-77.685cqw) rotateY(-13.79deg)}36.458%{transform:translate3d(31.684cqw,0,-74.609cqw) rotateY(-14.02deg)}37.500%{transform:translate3d(32.338cqw,0,-71.621cqw) rotateY(-14.25deg)}38.542%{transform:translate3d(32.967cqw,0,-68.718cqw) rotateY(-14.48deg)}39.583%{transform:translate3d(33.573cqw,0,-65.899cqw) rotateY(-14.71deg)}40.625%{transform:translate3d(34.154cqw,0,-63.159cqw) rotateY(-14.94deg)}41.667%{transform:translate3d(34.713cqw,0,-60.498cqw) rotateY(-15.17deg)}42.708%{transform:translate3d(35.249cqw,0,-57.913cqw) rotateY(-15.40deg)}43.750%{transform:translate3d(35.763cqw,0,-55.402cqw) rotateY(-15.62deg)}44.792%{transform:translate3d(36.256cqw,0,-52.962cqw) rotateY(-15.85deg)}45.833%{transform:translate3d(36.728cqw,0,-50.593cqw) rotateY(-16.08deg)}46.875%{transform:translate3d(37.179cqw,0,-48.290cqw) rotateY(-16.31deg)}47.917%{transform:translate3d(37.610cqw,0,-46.054cqw) rotateY(-16.54deg)}48.958%{transform:translate3d(38.023cqw,0,-43.882cqw) rotateY(-16.77deg)}50.000%{transform:translate3d(38.416cqw,0,-41.771cqw) rotateY(-17.00deg)}51.042%{transform:translate3d(38.791cqw,0,-39.721cqw) rotateY(-17.23deg)}52.083%{transform:translate3d(39.147cqw,0,-37.729cqw) rotateY(-17.46deg)}53.125%{transform:translate3d(39.487cqw,0,-35.795cqw) rotateY(-17.69deg)}54.167%{transform:translate3d(39.810cqw,0,-33.915cqw) rotateY(-17.92deg)}55.208%{transform:translate3d(40.116cqw,0,-32.090cqw) rotateY(-18.15deg)}56.250%{transform:translate3d(40.406cqw,0,-30.316cqw) rotateY(-18.38deg)}57.292%{transform:translate3d(40.681cqw,0,-28.593cqw) rotateY(-18.60deg)}58.333%{transform:translate3d(40.940cqw,0,-26.919cqw) rotateY(-18.83deg)}59.375%{transform:translate3d(41.186cqw,0,-25.293cqw) rotateY(-19.06deg)}60.417%{transform:translate3d(41.417cqw,0,-23.714cqw) rotateY(-19.29deg)}61.458%{transform:translate3d(41.634cqw,0,-22.180cqw) rotateY(-19.52deg)}62.500%{transform:translate3d(41.839cqw,0,-20.689cqw) rotateY(-19.75deg)}63.542%{transform:translate3d(42.031cqw,0,-19.241cqw) rotateY(-19.98deg)}64.583%{transform:translate3d(42.210cqw,0,-17.835cqw) rotateY(-20.21deg)}65.625%{transform:translate3d(42.378cqw,0,-16.468cqw) rotateY(-20.44deg)}66.667%{transform:translate3d(42.535cqw,0,-15.141cqw) rotateY(-20.67deg)}67.708%{transform:translate3d(42.681cqw,0,-13.851cqw) rotateY(-20.90deg)}68.750%{transform:translate3d(42.816cqw,0,-12.599cqw) rotateY(-21.12deg)}69.792%{transform:translate3d(42.941cqw,0,-11.382cqw) rotateY(-21.35deg)}70.833%{transform:translate3d(43.057cqw,0,-10.200cqw) rotateY(-21.58deg)}71.875%{transform:translate3d(43.164cqw,0,-9.052cqw) rotateY(-21.81deg)}72.917%{transform:translate3d(43.262cqw,0,-7.936cqw) rotateY(-22.04deg)}73.958%{transform:translate3d(43.351cqw,0,-6.853cqw) rotateY(-22.27deg)}75.000%{transform:translate3d(43.433cqw,0,-5.800cqw) rotateY(-22.50deg)}76.042%{transform:translate3d(43.507cqw,0,-4.777cqw) rotateY(-22.73deg)}77.083%{transform:translate3d(43.575cqw,0,-3.784cqw) rotateY(-22.96deg)}78.125%{transform:translate3d(43.635cqw,0,-2.819cqw) rotateY(-23.19deg)}79.167%{transform:translate3d(43.689cqw,0,-1.881cqw) rotateY(-23.42deg)}80.208%{transform:translate3d(43.738cqw,0,-0.971cqw) rotateY(-23.65deg)}81.250%{transform:translate3d(43.781cqw,0,-0.086cqw) rotateY(-23.88deg)}82.292%{transform:translate3d(43.818cqw,0,0.773cqw) rotateY(-24.10deg)}83.333%{transform:translate3d(43.851cqw,0,1.608cqw) rotateY(-24.33deg)}84.375%{transform:translate3d(43.880cqw,0,2.419cqw) rotateY(-24.56deg)}85.417%{transform:translate3d(43.904cqw,0,3.207cqw) rotateY(-24.79deg)}86.458%{transform:translate3d(43.925cqw,0,3.972cqw) rotateY(-25.02deg)}87.500%{transform:translate3d(43.942cqw,0,4.716cqw) rotateY(-25.25deg)}88.542%{transform:translate3d(43.957cqw,0,5.438cqw) rotateY(-25.48deg)}89.583%{transform:translate3d(43.968cqw,0,6.140cqw) rotateY(-25.71deg)}90.625%{transform:translate3d(43.978cqw,0,6.821cqw) rotateY(-25.94deg)}91.667%{transform:translate3d(43.985cqw,0,7.483cqw) rotateY(-26.17deg)}92.708%{transform:translate3d(43.990cqw,0,8.127cqw) rotateY(-26.40deg)}93.750%{transform:translate3d(43.994cqw,0,8.751cqw) rotateY(-26.62deg)}94.792%{transform:translate3d(43.997cqw,0,9.358cqw) rotateY(-26.85deg)}95.833%{transform:translate3d(43.998cqw,0,9.948cqw) rotateY(-27.08deg)}96.875%{transform:translate3d(43.999cqw,0,10.521cqw) rotateY(-27.31deg)}97.917%{transform:translate3d(44.000cqw,0,11.077cqw) rotateY(-27.54deg)}98.958%{transform:translate3d(44.000cqw,0,11.618cqw) rotateY(-27.77deg)}100.000%{transform:translate3d(44.000cqw,0,12.143cqw) rotateY(-28.00deg)}}
@keyframes stream-l{0.000%{transform:translate3d(11.000cqw,0,-258.462cqw) rotateY(6.00deg)}1.042%{transform:translate3d(9.132cqw,0,-250.222cqw) rotateY(6.23deg)}2.083%{transform:translate3d(7.309cqw,0,-242.217cqw) rotateY(6.46deg)}3.125%{transform:translate3d(5.529cqw,0,-234.441cqw) rotateY(6.69deg)}4.167%{transform:translate3d(3.793cqw,0,-226.888cqw) rotateY(6.92deg)}5.208%{transform:translate3d(2.100cqw,0,-219.550cqw) rotateY(7.15deg)}6.250%{transform:translate3d(0.450cqw,0,-212.421cqw) rotateY(7.38deg)}7.292%{transform:translate3d(-1.159cqw,0,-205.497cqw) rotateY(7.60deg)}8.333%{transform:translate3d(-2.728cqw,0,-198.770cqw) rotateY(7.83deg)}9.375%{transform:translate3d(-4.255cqw,0,-192.235cqw) rotateY(8.06deg)}10.417%{transform:translate3d(-5.743cqw,0,-185.887cqw) rotateY(8.29deg)}11.458%{transform:translate3d(-7.191cqw,0,-179.720cqw) rotateY(8.52deg)}12.500%{transform:translate3d(-8.601cqw,0,-173.729cqw) rotateY(8.75deg)}13.542%{transform:translate3d(-9.973cqw,0,-167.910cqw) rotateY(8.98deg)}14.583%{transform:translate3d(-11.307cqw,0,-162.256cqw) rotateY(9.21deg)}15.625%{transform:translate3d(-12.604cqw,0,-156.765cqw) rotateY(9.44deg)}16.667%{transform:translate3d(-13.865cqw,0,-151.430cqw) rotateY(9.67deg)}17.708%{transform:translate3d(-15.091cqw,0,-146.247cqw) rotateY(9.90deg)}18.750%{transform:translate3d(-16.281cqw,0,-141.213cqw) rotateY(10.12deg)}19.792%{transform:translate3d(-17.436cqw,0,-136.322cqw) rotateY(10.35deg)}20.833%{transform:translate3d(-18.558cqw,0,-131.571cqw) rotateY(10.58deg)}21.875%{transform:translate3d(-19.646cqw,0,-126.956cqw) rotateY(10.81deg)}22.917%{transform:translate3d(-20.701cqw,0,-122.472cqw) rotateY(11.04deg)}23.958%{transform:translate3d(-21.724cqw,0,-118.117cqw) rotateY(11.27deg)}25.000%{transform:translate3d(-22.715cqw,0,-113.886cqw) rotateY(11.50deg)}26.042%{transform:translate3d(-23.675cqw,0,-109.776cqw) rotateY(11.73deg)}27.083%{transform:translate3d(-24.605cqw,0,-105.783cqw) rotateY(11.96deg)}28.125%{transform:translate3d(-25.504cqw,0,-101.905cqw) rotateY(12.19deg)}29.167%{transform:translate3d(-26.374cqw,0,-98.137cqw) rotateY(12.42deg)}30.208%{transform:translate3d(-27.215cqw,0,-94.477cqw) rotateY(12.65deg)}31.250%{transform:translate3d(-28.028cqw,0,-90.921cqw) rotateY(12.88deg)}32.292%{transform:translate3d(-28.813cqw,0,-87.467cqw) rotateY(13.10deg)}33.333%{transform:translate3d(-29.570cqw,0,-84.111cqw) rotateY(13.33deg)}34.375%{transform:translate3d(-30.301cqw,0,-80.852cqw) rotateY(13.56deg)}35.417%{transform:translate3d(-31.005cqw,0,-77.685cqw) rotateY(13.79deg)}36.458%{transform:translate3d(-31.684cqw,0,-74.609cqw) rotateY(14.02deg)}37.500%{transform:translate3d(-32.338cqw,0,-71.621cqw) rotateY(14.25deg)}38.542%{transform:translate3d(-32.967cqw,0,-68.718cqw) rotateY(14.48deg)}39.583%{transform:translate3d(-33.573cqw,0,-65.899cqw) rotateY(14.71deg)}40.625%{transform:translate3d(-34.154cqw,0,-63.159cqw) rotateY(14.94deg)}41.667%{transform:translate3d(-34.713cqw,0,-60.498cqw) rotateY(15.17deg)}42.708%{transform:translate3d(-35.249cqw,0,-57.913cqw) rotateY(15.40deg)}43.750%{transform:translate3d(-35.763cqw,0,-55.402cqw) rotateY(15.62deg)}44.792%{transform:translate3d(-36.256cqw,0,-52.962cqw) rotateY(15.85deg)}45.833%{transform:translate3d(-36.728cqw,0,-50.593cqw) rotateY(16.08deg)}46.875%{transform:translate3d(-37.179cqw,0,-48.290cqw) rotateY(16.31deg)}47.917%{transform:translate3d(-37.610cqw,0,-46.054cqw) rotateY(16.54deg)}48.958%{transform:translate3d(-38.023cqw,0,-43.882cqw) rotateY(16.77deg)}50.000%{transform:translate3d(-38.416cqw,0,-41.771cqw) rotateY(17.00deg)}51.042%{transform:translate3d(-38.791cqw,0,-39.721cqw) rotateY(17.23deg)}52.083%{transform:translate3d(-39.147cqw,0,-37.729cqw) rotateY(17.46deg)}53.125%{transform:translate3d(-39.487cqw,0,-35.795cqw) rotateY(17.69deg)}54.167%{transform:translate3d(-39.810cqw,0,-33.915cqw) rotateY(17.92deg)}55.208%{transform:translate3d(-40.116cqw,0,-32.090cqw) rotateY(18.15deg)}56.250%{transform:translate3d(-40.406cqw,0,-30.316cqw) rotateY(18.38deg)}57.292%{transform:translate3d(-40.681cqw,0,-28.593cqw) rotateY(18.60deg)}58.333%{transform:translate3d(-40.940cqw,0,-26.919cqw) rotateY(18.83deg)}59.375%{transform:translate3d(-41.186cqw,0,-25.293cqw) rotateY(19.06deg)}60.417%{transform:translate3d(-41.417cqw,0,-23.714cqw) rotateY(19.29deg)}61.458%{transform:translate3d(-41.634cqw,0,-22.180cqw) rotateY(19.52deg)}62.500%{transform:translate3d(-41.839cqw,0,-20.689cqw) rotateY(19.75deg)}63.542%{transform:translate3d(-42.031cqw,0,-19.241cqw) rotateY(19.98deg)}64.583%{transform:translate3d(-42.210cqw,0,-17.835cqw) rotateY(20.21deg)}65.625%{transform:translate3d(-42.378cqw,0,-16.468cqw) rotateY(20.44deg)}66.667%{transform:translate3d(-42.535cqw,0,-15.141cqw) rotateY(20.67deg)}67.708%{transform:translate3d(-42.681cqw,0,-13.851cqw) rotateY(20.90deg)}68.750%{transform:translate3d(-42.816cqw,0,-12.599cqw) rotateY(21.12deg)}69.792%{transform:translate3d(-42.941cqw,0,-11.382cqw) rotateY(21.35deg)}70.833%{transform:translate3d(-43.057cqw,0,-10.200cqw) rotateY(21.58deg)}71.875%{transform:translate3d(-43.164cqw,0,-9.052cqw) rotateY(21.81deg)}72.917%{transform:translate3d(-43.262cqw,0,-7.936cqw) rotateY(22.04deg)}73.958%{transform:translate3d(-43.351cqw,0,-6.853cqw) rotateY(22.27deg)}75.000%{transform:translate3d(-43.433cqw,0,-5.800cqw) rotateY(22.50deg)}76.042%{transform:translate3d(-43.507cqw,0,-4.777cqw) rotateY(22.73deg)}77.083%{transform:translate3d(-43.575cqw,0,-3.784cqw) rotateY(22.96deg)}78.125%{transform:translate3d(-43.635cqw,0,-2.819cqw) rotateY(23.19deg)}79.167%{transform:translate3d(-43.689cqw,0,-1.881cqw) rotateY(23.42deg)}80.208%{transform:translate3d(-43.738cqw,0,-0.971cqw) rotateY(23.65deg)}81.250%{transform:translate3d(-43.781cqw,0,-0.086cqw) rotateY(23.88deg)}82.292%{transform:translate3d(-43.818cqw,0,0.773cqw) rotateY(24.10deg)}83.333%{transform:translate3d(-43.851cqw,0,1.608cqw) rotateY(24.33deg)}84.375%{transform:translate3d(-43.880cqw,0,2.419cqw) rotateY(24.56deg)}85.417%{transform:translate3d(-43.904cqw,0,3.207cqw) rotateY(24.79deg)}86.458%{transform:translate3d(-43.925cqw,0,3.972cqw) rotateY(25.02deg)}87.500%{transform:translate3d(-43.942cqw,0,4.716cqw) rotateY(25.25deg)}88.542%{transform:translate3d(-43.957cqw,0,5.438cqw) rotateY(25.48deg)}89.583%{transform:translate3d(-43.968cqw,0,6.140cqw) rotateY(25.71deg)}90.625%{transform:translate3d(-43.978cqw,0,6.821cqw) rotateY(25.94deg)}91.667%{transform:translate3d(-43.985cqw,0,7.483cqw) rotateY(26.17deg)}92.708%{transform:translate3d(-43.990cqw,0,8.127cqw) rotateY(26.40deg)}93.750%{transform:translate3d(-43.994cqw,0,8.751cqw) rotateY(26.62deg)}94.792%{transform:translate3d(-43.997cqw,0,9.358cqw) rotateY(26.85deg)}95.833%{transform:translate3d(-43.998cqw,0,9.948cqw) rotateY(27.08deg)}96.875%{transform:translate3d(-43.999cqw,0,10.521cqw) rotateY(27.31deg)}97.917%{transform:translate3d(-44.000cqw,0,11.077cqw) rotateY(27.54deg)}98.958%{transform:translate3d(-44.000cqw,0,11.618cqw) rotateY(27.77deg)}100.000%{transform:translate3d(-44.000cqw,0,12.143cqw) rotateY(28.00deg)}}

@media (prefers-reduced-motion:reduce){
  /* pause rather than disable: each card is already dropped mid-flight by its
     negative delay, so it freezes as a finished still instead of collapsing */
  .stream__card{animation-play-state:paused;will-change:auto}
}
@media (max-width:640px){
  .stream.hero{min-height:82dvh;padding-top:7rem}
  .stream.hero .stream__content{padding-bottom:26vh}
  /* 18cqw of a phone is a ~70px thumbnail — the corridor reads as confetti.
     Margins stay at half the box so the cards keep riding the same path. */
  .stream__card{width:31cqw;height:43cqw;margin-left:-15.5cqw;margin-top:-21.5cqw}
  /* and with cards this size the heavy wash was burying them */
  .stream__scrim{background:
    radial-gradient(88% 46% at 50% 38%,rgba(var(--ink),.66),rgba(var(--ink),.18) 60%,transparent 84%),
    linear-gradient(180deg,var(--bg) 0%,rgba(var(--ink),.14) 20%,rgba(var(--ink),.14) 72%,var(--bg) 100%)}
}
