/* Cinematic scroll layer */
html { overflow-x:clip; }
body.is-loading { overflow:hidden; }

.site-loader { position:fixed; z-index:100; inset:0; display:grid; place-items:center; align-content:center; gap:18px; color:#fff; background:#050505; transition:opacity .8s cubic-bezier(.16,1,.3,1),visibility .8s; }
.site-loader:before,.site-loader:after { content:''; position:absolute; width:72vmax; height:72vmax; border:1px solid rgba(7,143,234,.21); border-radius:50%; transform:scale(.2); animation:loader-ring 1.5s .05s cubic-bezier(.16,1,.3,1) forwards; }
.site-loader:after { width:48vmax; height:48vmax; border-color:rgba(7,143,234,.36); animation-delay:.15s; }
.loader-mark { position:relative; z-index:1; width:152px; opacity:0; transform:translateY(18px) scale(.84); animation:loader-mark .65s .35s cubic-bezier(.16,1,.3,1) forwards; }
.loader-mark img { width:100%; height:auto; display:block; }
.site-loader p,.site-loader b { position:relative; z-index:1; margin:0; text-transform:uppercase; letter-spacing:.13em; font:10px var(--mono); opacity:0; animation:loader-copy .4s .67s ease forwards; }
.site-loader b { color:var(--brand-aqua); font-size:13px; animation-delay:.79s; }
body:not(.is-loading) .site-loader { opacity:0; visibility:hidden; pointer-events:none; }
@keyframes loader-ring { to { transform:scale(1); } }
@keyframes loader-mark { to { opacity:1; transform:none; } }
@keyframes loader-copy { to { opacity:1; } }

.cursor { position:fixed; z-index:90; top:0; left:0; display:none; width:34px; height:34px; pointer-events:none; transform:translate3d(-50%,-50%,0); mix-blend-mode:difference; transition:width .35s cubic-bezier(.16,1,.3,1),height .35s cubic-bezier(.16,1,.3,1),background .35s ease; }
.cursor i { position:absolute; inset:0; border:1px solid #fff; border-radius:50%; transition:transform .35s cubic-bezier(.16,1,.3,1); }
.cursor:after { content:''; position:absolute; width:4px; height:4px; inset:50%; border-radius:50%; background:#fff; transform:translate(-50%,-50%); transition:opacity .25s ease; }
.cursor span { position:absolute; inset:0; display:grid; place-items:center; color:#fff; font:7px var(--mono); letter-spacing:.05em; text-transform:uppercase; opacity:0; transition:opacity .2s ease; }
.cursor.is-active { width:74px; height:74px; background:rgba(7,143,234,.9); mix-blend-mode:normal; }
.cursor.is-active i { transform:scale(.84); border-color:rgba(255,255,255,.76); }
.cursor.is-active:after { opacity:0; }
.cursor.is-active span { opacity:1; }
@media (pointer:fine) { body, a, button { cursor:none; } .cursor { display:block; } }

.hero-title .line { position:relative; display:block; opacity:0; clip-path:inset(0 0 100% 0); transform:translateY(35px); }
.hero .hero-title .line:nth-child(1) { animation:line-lift .95s .2s cubic-bezier(.16,1,.3,1) forwards; }
.hero .hero-title .line:nth-child(2) { animation:line-lift .95s .34s cubic-bezier(.16,1,.3,1) forwards; }
.hero .hero-title .line:nth-child(3) { animation:line-lift .95s .48s cubic-bezier(.16,1,.3,1) forwards; }
.hero-title .accent:after { content:''; position:absolute; left:0; bottom:6%; width:61%; height:1px; background:var(--brand-aqua); transform:scaleX(0); transform-origin:left; animation:accent-line .7s .93s cubic-bezier(.16,1,.3,1) forwards; }
@keyframes line-lift { to { opacity:1; clip-path:inset(0); transform:none; } }
@keyframes accent-line { to { transform:scaleX(1); } }

.manifesto[data-story] { height:220vh; --story-progress:0; }
.manifesto[data-story] .manifesto-sticky { background:radial-gradient(circle at 50% 54%,#101c1c 0%,#050505 47%,#010101 100%); }
.manifesto[data-story] .manifesto-rail { animation:none; transform:translate3d(var(--story-rail-x,0),var(--story-rail-y,0),0) scale(var(--story-rail-scale,1)); opacity:var(--story-rail-opacity,.85); }
.manifesto[data-story] .manifesto-center { transform:translate3d(0,var(--story-center-y,0),0) scale(var(--story-center-scale,1)); opacity:var(--story-center-opacity,1); will-change:transform,opacity; }
.manifesto[data-story] .manifesto-center h2 { transition:text-shadow .5s ease; text-shadow:0 0 0 rgba(7,143,234,0); }
.manifesto[data-story] .manifesto-center h2 i { color:var(--brand-aqua); }
.manifesto[data-story] .manifesto-number { transform:translate3d(var(--story-number-x,0),var(--story-number-y,0),0) scale(var(--story-number-scale,1)) rotate(var(--story-number-rotate,0)); -webkit-text-stroke-color:var(--story-stroke,rgba(7,143,234,.16)); transition:none; }
.story-orbit { position:absolute; border:1px solid rgba(7,143,234,.36); border-radius:50%; pointer-events:none; will-change:transform; }
.story-orbit-a { width:min(61vw,910px); height:min(61vw,910px); transform:translate3d(var(--story-orbit-a-x,0),var(--story-orbit-a-y,0),0) rotate(var(--story-orbit-a-rotate,0)) scale(var(--story-orbit-a-scale,.68)); }
.story-orbit-b { width:min(35vw,530px); height:min(35vw,530px); border-color:rgba(7,143,234,.61); transform:translate3d(var(--story-orbit-b-x,0),var(--story-orbit-b-y,0),0) rotate(var(--story-orbit-b-rotate,0)) scale(var(--story-orbit-b-scale,.35)); }
.story-orbit-b:after { content:''; position:absolute; width:9px; height:9px; left:50%; top:-5px; border-radius:50%; background:var(--brand-aqua); box-shadow:0 0 25px 7px rgba(7,143,234,.4); }
.story-axis { position:absolute; z-index:1; left:9.6%; top:50%; width:1px; height:var(--story-axis-height,0); overflow:visible; background:rgba(255,255,255,.28); transform:translateY(-50%); transition:none; }
.story-axis span { position:absolute; top:0; left:-4px; width:9px; height:9px; border-radius:50%; background:var(--brand-aqua); box-shadow:0 0 0 6px rgba(7,143,234,.12); }
.story-axis i { position:absolute; left:-5px; width:11px; height:1px; background:rgba(255,255,255,.48); }.story-axis i:nth-of-type(1){top:28%}.story-axis i:nth-of-type(2){top:61%}.story-axis i:nth-of-type(3){top:100%}
.story-note { position:absolute; z-index:2; width:190px; opacity:var(--note-one-opacity,0); pointer-events:none; transition:none; }
.story-note span { display:block; margin-bottom:9px; color:var(--brand-aqua); font:10px var(--mono); letter-spacing:.09em; text-transform:uppercase; }
.story-note p { margin:0; font-size:14px; line-height:1.45; color:rgba(255,255,255,.75); }
.note-one { left:15%; bottom:23%; transform:translate3d(0,var(--note-one-y,35px),0); }.note-two { right:12%; top:27%; transform:translate3d(0,var(--note-two-y,35px),0); opacity:var(--note-two-opacity,0); }
.story-outcome { position:absolute; z-index:4; left:50%; bottom:13%; width:min(620px,calc(100% - 44px)); text-align:center; color:#fff; opacity:var(--outcome-opacity,0); transform:translate3d(-50%,var(--outcome-y,35px),0); pointer-events:var(--outcome-events,none); }
.story-outcome>p { margin:0 0 18px; color:var(--brand-aqua); text-transform:uppercase; font:10px var(--mono); letter-spacing:.1em; }
.story-outcome>div { display:flex; justify-content:center; flex-wrap:wrap; gap:7px; }
.story-outcome>div span { padding:9px 13px; border:1px solid rgba(255,255,255,.35); border-radius:50px; font-size:12px; background:rgba(255,255,255,.04); backdrop-filter:blur(5px); }
.story-outcome a { display:inline-flex; gap:12px; align-items:center; margin-top:22px; padding-bottom:4px; border-bottom:1px solid var(--brand-aqua); font-size:12px; font-weight:700; }
.story-outcome a b { display:grid; place-items:center; width:20px; height:20px; border-radius:50%; background:var(--brand-aqua); color:var(--ink); transition:transform .3s ease; }.story-outcome a:hover b { transform:rotate(45deg); }
.story-scroll { position:absolute; z-index:2; bottom:27px; left:50%; transform:translateX(-50%); opacity:var(--scroll-hint-opacity,1); display:flex; gap:14px; align-items:center; text-transform:uppercase; color:rgba(255,255,255,.6); white-space:nowrap; font:9px var(--mono); letter-spacing:.1em; }
.story-scroll i { display:block; width:34px; height:1px; background:var(--brand-aqua); animation:scroll-pulse 1.6s ease-in-out infinite alternate; }
@keyframes scroll-pulse { to { transform:scaleX(.3); transform-origin:left; } }

.case-card:before { content:''; position:absolute; z-index:0; pointer-events:none; inset:0; opacity:0; background:radial-gradient(400px circle at var(--card-x,50%) var(--card-y,50%),rgba(7,143,234,.24),transparent 52%); transition:opacity .45s ease; }
.case-card:hover:before { opacity:1; }
.capabilities { position:relative; }.capabilities:after { content:''; position:absolute; pointer-events:none; width:60vw; height:1px; bottom:0; left:-10vw; background:linear-gradient(90deg,transparent,var(--brand-aqua),transparent); transform:translateX(var(--service-glow-x,0)); opacity:.75; }

@media (max-width:800px) {
  .site-loader p { font-size:8px; }
  .loader-mark { width:130px; }
  .manifesto[data-story] { height:190vh; }
  .story-orbit-a { width:86vw; height:86vw; }
  .story-orbit-b { width:64vw; height:64vw; }
  .story-axis { left:7%; }
  .story-note { width:130px; }.note-one { left:13%; bottom:18%; }.note-two { right:8%; top:24%; }
  .story-note p { font-size:11px; }
  .story-outcome { bottom:11%; }.story-outcome>div span { font-size:10px; padding:8px 10px; }
  .story-scroll { bottom:18px; font-size:7px; }
}

@media (prefers-reduced-motion:reduce) {
  .site-loader { display:none; }.manifesto[data-story] { height:100vh; }.story-orbit { display:none; }.cursor { display:none!important; }
}
