/* =========================================================
   AV — Photo / Film / Edit — dark chrome design system
   ========================================================= */

:root{
  --bg:        #050505;
  --bg-alt:    #0c0c0c;
  --line:      rgba(255,255,255,.08);
  --fg:        #f5f5f5;
  --grey:      #6f6f6f;
  --grey-lite: #9a9a9a;
  --chrome: linear-gradient(115deg,#5c5c5c 0%,#f4f4f4 22%,#8a8a8a 38%,#ffffff 52%,#4a4a4a 68%,#e8e8e8 84%,#3a3a3a 100%);
  --ease: cubic-bezier(.22,1,.36,1);
  --maxw: 1320px;
  --gutter: clamp(20px, 5vw, 72px);
  --nav-h: 84px;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; background:var(--bg); overscroll-behavior-x:none; }
body{
  margin:0;
  background:var(--bg);
  color:var(--fg);
  font-family:'Helvetica Neue', Arial, sans-serif;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  overscroll-behavior-x:none;
}
img,video{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul{ list-style:none; margin:0; padding:0; }
button{ font-family:inherit; cursor:pointer; }
::selection{ background:#fff; color:#000; }

.wrap{ max-width:var(--maxw); margin:0 auto; padding:0 var(--gutter); }

/* ---------- scrollbar ---------- */
::-webkit-scrollbar{ width:8px; }
::-webkit-scrollbar-track{ background:var(--bg); }
::-webkit-scrollbar-thumb{ background:#2a2a2a; border-radius:4px; }

/* ---------- typography ---------- */
.eyebrow{
  display:inline-flex; align-items:center; gap:.6em;
  font-size:12px; letter-spacing:.32em; text-transform:uppercase;
  color:var(--grey-lite); margin:0 0 22px;
}
.eyebrow::before{
  content:''; width:26px; height:1px; background:var(--chrome);
}
h1,h2,h3{ margin:0; font-weight:600; letter-spacing:-.02em; line-height:1.02; }
h2{ font-size:clamp(34px,4.6vw,64px); }
h3{ font-size:clamp(20px,2vw,26px); }
p{ margin:0; line-height:1.7; color:var(--grey-lite); font-size:16px; }
.lead{ font-size:clamp(18px,1.6vw,22px); line-height:1.55; }

.chrome-text{
  background-image:var(--chrome);
  background-size:220% 220%;
  -webkit-background-clip:text; background-clip:text; color:transparent;
  animation:chromeShift 9s ease-in-out infinite;
}
@keyframes chromeShift{
  0%,100%{ background-position:0% 50%; }
  50%{ background-position:100% 50%; }
}

/* ---------- fill-on-scroll text (word by word) ---------- */
.fill-text{ color:var(--grey); }
.fill-text .w{
  display:inline-block; color:var(--grey);
  transition:color .35s var(--ease);
}
.fill-text .w.on{ color:var(--fg); }
.fill-block{ display:block; }

/* ---------- buttons ---------- */
.btn{
  --pad-y:16px; --pad-x:30px;
  position:relative; display:inline-flex; align-items:center; gap:10px;
  padding:var(--pad-y) var(--pad-x);
  border:1px solid rgba(255,255,255,.22);
  background:#0a0a0a; color:var(--fg);
  font-size:13px; letter-spacing:.14em; text-transform:uppercase;
  border-radius:999px; overflow:hidden; isolation:isolate;
  transition:border-color .4s var(--ease), color .4s var(--ease);
}
.btn::before{
  content:''; position:absolute; z-index:-1; pointer-events:none;
  left:var(--x,50%); top:var(--y,50%); width:220px; height:220px;
  transform:translate(-50%,-50%); border-radius:50%;
  background:radial-gradient(circle, rgba(255,255,255,.55), rgba(255,255,255,0) 68%);
  opacity:0; transition:opacity .45s var(--ease);
}
.btn:hover{ border-color:rgba(255,255,255,.55); }
.btn:hover::before{ opacity:1; }
.btn-solid{ background:var(--fg); color:#000; border-color:var(--fg); }
.btn-solid::before{ background:radial-gradient(circle, rgba(0,0,0,.28), rgba(0,0,0,0) 68%); }
.btn-solid:hover{ color:#000; }
.btn svg{ width:14px; height:14px; transition:transform .4s var(--ease); }
.btn:hover svg{ transform:translateX(4px); }

/* ---------- nav ---------- */
.site-nav{
  position:fixed; inset:0 0 auto 0; height:var(--nav-h); z-index:200;
  display:flex; align-items:center;
  background:linear-gradient(to bottom, rgba(5,5,5,.85), rgba(5,5,5,0));
  transition:background .4s var(--ease);
}
.site-nav.solid{ background:rgba(5,5,5,.92); backdrop-filter:blur(10px); border-bottom:1px solid var(--line); }
.site-nav .wrap{ display:flex; align-items:center; justify-content:space-between; width:100%; }
.brand{ display:flex; align-items:center; gap:12px; font-size:15px; letter-spacing:.28em; text-transform:uppercase; z-index:210; }
.footer-top .brand{ z-index:auto; }
.brand img{ height:30px; width:auto; }
.brand small{ display:block; font-size:9px; letter-spacing:.24em; color:var(--grey-lite); text-transform:uppercase; margin-top:2px; }

.nav-trigger{
  position:relative; z-index:210; width:52px; height:52px; border-radius:50%;
  border:1px solid rgba(255,255,255,.22); background:transparent;
  display:flex; align-items:center; justify-content:center;
}
.nav-trigger span, .nav-trigger span::before, .nav-trigger span::after{
  content:''; position:absolute; width:20px; height:1px; background:var(--fg);
  transition:transform .35s var(--ease), opacity .35s var(--ease), top .35s var(--ease);
}
.nav-trigger span{ top:23px; }
.nav-trigger span::before{ top:-6px; }
.nav-trigger span::after{ top:6px; }
.nav-trigger.open span{ background:transparent; }
.nav-trigger.open span::before{ top:0; transform:rotate(45deg); }
.nav-trigger.open span::after{ top:0; transform:rotate(-45deg); }

.nav-overlay{
  position:fixed; inset:0; z-index:190; background:#050505;
  clip-path:circle(0px at calc(100% - 46px) 46px);
  transition:clip-path .7s var(--ease);
  display:flex; flex-direction:column; justify-content:center;
}
.nav-overlay.open{ clip-path:circle(150% at calc(100% - 46px) 46px); }
.nav-overlay .wrap{ display:grid; grid-template-columns:1.3fr 1fr; gap:60px; width:100%; }
.nav-links{ display:flex; flex-direction:column; gap:6px; }
.nav-links li{ overflow:hidden; }
.nav-links a{
  display:block; font-size:clamp(34px,6vw,84px); font-weight:600; letter-spacing:-.02em;
  color:var(--grey); padding:6px 0; transition:color .4s var(--ease), transform .5s var(--ease);
  transform:translateY(110%); opacity:0;
}
.nav-overlay.open .nav-links a{ transform:translateY(0); opacity:1; }
.nav-links a:hover, .nav-links a.active{ color:var(--fg); }
.nav-links small{ font-size:12px; vertical-align:super; letter-spacing:.2em; color:var(--grey); margin-left:14px; }
.nav-meta{ display:flex; flex-direction:column; justify-content:center; gap:28px; border-left:1px solid var(--line); padding-left:50px; }
.nav-meta .eyebrow{ margin-bottom:8px; }
.nav-meta a{ color:var(--grey-lite); font-size:15px; }
.nav-meta a:hover{ color:var(--fg); }
.nav-social{ display:flex; gap:16px; margin-top:6px; }
.nav-social a{ font-size:12px; letter-spacing:.1em; text-transform:uppercase; border-bottom:1px solid var(--line); padding-bottom:2px; }
.nav-social a:hover{ border-color:var(--fg); }

@media (max-width:820px){
  .nav-overlay .wrap{ grid-template-columns:1fr; gap:32px; }
  .nav-meta{ border-left:none; padding-left:0; border-top:1px solid var(--line); padding-top:24px; }
}

/* ---------- hero ---------- */
.hero{
  position:relative; height:100svh; min-height:560px; display:flex; align-items:flex-end;
  overflow:hidden; background:#000;
}
.hero-video-wrap{
  position:absolute; inset:0; z-index:0; overflow:hidden;
  display:flex; align-items:center; justify-content:center;
}
.hero-video-wrap video{
  width:clamp(480px, 82vw, 1250px); height:auto; object-fit:contain;
  opacity:.26; mix-blend-mode:screen;
}
@media (max-width:700px){
  .hero-video-wrap{ align-items:flex-start; padding-top:calc(var(--nav-h) + 60px); }
  .hero-video-wrap video{ width:clamp(216px, 70vw, 408px); opacity:.22; }
}
.hero-video-wrap::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(to bottom, rgba(0,0,0,.35) 0%, rgba(0,0,0,.35) 40%, rgba(0,0,0,.92) 96%),
             linear-gradient(to right, rgba(0,0,0,.55), rgba(0,0,0,.1) 40%, rgba(0,0,0,.55));
}
.hero-inner{ position:relative; z-index:1; width:100%; padding-bottom:clamp(40px,6vw,84px); }
.hero-title{
  font-size:clamp(52px,11vw,168px); line-height:.88; font-weight:700; letter-spacing:-.03em;
  margin:0 0 26px; text-transform:uppercase;
}

/* ---------- masked heading (reactbits.dev "Masked Heading", vanilla port) ----------
   Base layer: real, accessible heading text with the site's animated chrome
   fill (always visible, no dependency on video/autoplay). On top of it, a
   video is clipped into the exact same letter shapes via an SVG clip-path —
   when it plays it enriches the title with footage; if a browser ever pauses
   autoplaying video (power-saving, etc.) the chrome text underneath still
   reads perfectly, so the heading is never at risk of going blank. */
.masked-heading{ position:relative; }
.masked-heading .mh-measure{
  display:block; pointer-events:none;
  background-image:var(--chrome); background-size:220% 220%;
  -webkit-background-clip:text; background-clip:text; color:transparent;
  animation:chromeShift 9s ease-in-out infinite;
}
.masked-heading .mh-line{ display:block; }
.masked-heading .mh-baseline{ display:inline-block; width:0; }
.masked-heading .mh-defs{ position:absolute; width:0; height:0; overflow:hidden; }
.masked-heading .mh-reveal{
  position:absolute; inset:0;
  clip-path:inset(0 100% 0 0);
}
.masked-heading .mh-clip{ position:absolute; inset:0; overflow:hidden; }
.masked-heading .mh-media{ position:absolute; inset:0; }
.masked-heading .mh-media video{
  position:absolute; top:50%; left:50%; width:100%; height:100%; object-fit:cover;
  transform:translate(-50%,-50%) scale(1.25);
  filter:brightness(1.3) contrast(1.05) saturate(1.1);
}
.hero-foot{ display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:24px; }
.hero-foot p{ max-width:420px; }
.scroll-cue{
  display:flex; align-items:center; gap:12px; font-size:11px; letter-spacing:.28em; text-transform:uppercase; color:var(--grey-lite);
}
.scroll-cue .line{ width:1px; height:46px; background:linear-gradient(to bottom, var(--fg), transparent); position:relative; overflow:hidden; }
.scroll-cue .line::after{
  content:''; position:absolute; left:0; top:-40%; width:100%; height:40%; background:var(--fg);
  animation:cueDrop 2.2s var(--ease) infinite;
}
@keyframes cueDrop{ 0%{ top:-40%; } 100%{ top:100%; } }

/* ---------- sections ---------- */
section{ position:relative; padding:clamp(80px,10vw,160px) 0; }
.section-tight{ padding:clamp(50px,6vw,90px) 0; }
.divider{ height:1px; background:var(--line); }
.grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,6vw,90px); align-items:start; }
@media (max-width:880px){ .grid-2{ grid-template-columns:1fr; } }

.section-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:30px; margin-bottom:clamp(36px,5vw,64px); flex-wrap:wrap; }
.section-head p{ max-width:360px; }

/* ---------- specular / chrome frame ---------- */
.frame{
  position:relative; border:1px solid var(--line); border-radius:2px; overflow:hidden;
}
.frame::before{
  content:''; position:absolute; inset:0; z-index:2; pointer-events:none;
  background:linear-gradient(120deg, transparent 40%, rgba(255,255,255,.08) 50%, transparent 60%);
  transform:translateX(-120%);
}
.frame:hover::before{ transition:transform 1.1s var(--ease); transform:translateX(120%); }

/* ---------- highlight reel ---------- */
.reel{ position:relative; aspect-ratio:16/9; background:#000; }
.reel video{ width:100%; height:100%; object-fit:cover; }
.reel .tag{
  position:absolute; left:22px; bottom:22px; z-index:3; font-size:11px; letter-spacing:.24em;
  text-transform:uppercase; color:#fff; background:rgba(0,0,0,.5); padding:8px 14px; border:1px solid var(--line);
}

/* ---------- service teaser cards ---------- */
.card-row{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
@media (max-width:820px){ .card-row{ grid-template-columns:1fr; } }
.mini-card{ background:var(--bg); padding:clamp(28px,3vw,44px); transition:background .45s var(--ease); }
.mini-card .num{ font-size:12px; color:var(--grey); letter-spacing:.2em; transition:color .45s var(--ease); }
.mini-card h3{ margin:18px 0 14px; transition:color .45s var(--ease); }
.mini-card p{ font-size:14px; transition:color .45s var(--ease); }
.mini-card a{ display:inline-flex; align-items:center; gap:8px; margin-top:22px; font-size:12px; letter-spacing:.18em; text-transform:uppercase; color:var(--grey-lite); transition:color .45s var(--ease); }
.mini-card:hover, .mini-card.is-flipped{ background:#fff; }
.mini-card:hover .num, .mini-card.is-flipped .num{ color:rgba(0,0,0,.55); }
.mini-card:hover h3, .mini-card.is-flipped h3{ color:#000; }
.mini-card:hover p, .mini-card.is-flipped p{ color:rgba(0,0,0,.7); }
.mini-card:hover a, .mini-card.is-flipped a{ color:#000; }

/* ---------- accordion gallery ---------- */
.accordion{ display:flex; gap:6px; height:min(70vh,620px); }
.acc-item{
  position:relative; flex:1; min-width:0; cursor:pointer; overflow:hidden;
  transition:flex .6s var(--ease); border:1px solid var(--line);
}
.acc-item.active{ flex:5; }
.acc-item img,.acc-item video{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:grayscale(35%) contrast(1.05); transition:filter .6s var(--ease), transform 1.2s var(--ease); }
.acc-item.active img,.acc-item.active video{ filter:grayscale(0%) contrast(1.02); }
.acc-item::after{ content:''; position:absolute; inset:0; background:linear-gradient(to top, rgba(0,0,0,.85), rgba(0,0,0,.05) 55%); }
.acc-caption{
  position:absolute; left:20px; right:20px; bottom:18px; z-index:2; color:#fff;
}
.acc-caption .idx{ font-size:11px; letter-spacing:.2em; color:var(--grey-lite); display:block; margin-bottom:6px; }
.acc-caption h3{
  font-size:clamp(15px,2.4vw,22px); writing-mode:vertical-rl; text-orientation:mixed; transform:rotate(180deg);
  height:120px; transition:all .5s var(--ease);
}
.acc-item.active .acc-caption h3{ writing-mode:horizontal-tb; transform:none; height:auto; }
@media (max-width:760px), (hover:none){
  .accordion{ flex-direction:column; height:auto; }
  .acc-item{ height:90px; flex:none !important; transition:height .18s var(--ease), filter .18s var(--ease); }
  .acc-item.active{ height:360px; }
  .acc-caption h3{ writing-mode:horizontal-tb !important; transform:none !important; height:auto !important; }
}

/* ---------- depth carousel (reactbits.dev) ---------- */
.depth-carousel-wrap{ position:relative; height:460px; max-width:var(--maxw); margin:0 auto; padding:0 var(--gutter); overflow:hidden; overscroll-behavior-x:none; }
@media (max-width:700px){ .depth-carousel-wrap{ height:340px; } }

.depth-carousel{
  position:relative; width:100%; height:100%; min-height:280px;
  display:flex; align-items:center; justify-content:center;
  perspective:1400px; perspective-origin:50% 50%;
  touch-action:pan-y; outline:none; user-select:none; -webkit-user-select:none;
  cursor:grab;
}
.depth-carousel:active{ cursor:grabbing; }
.depth-carousel:focus-visible{ outline:2px solid rgba(255,255,255,.5); outline-offset:4px; border-radius:12px; }

.depth-carousel__stage{ position:absolute; inset:0; transform-style:preserve-3d; }

.depth-carousel__card{
  position:absolute; top:50%; left:50%; width:280px; height:190px; transform-origin:center center;
  overflow:hidden; background:#0b0d12; border-radius:14px;
  box-shadow:0 30px 60px -20px rgba(0,0,0,.65), 0 8px 20px -10px rgba(0,0,0,.5);
  will-change:transform,opacity,filter; cursor:pointer;
  transform:translate(-50%,-50%);
}
.depth-carousel__img{ width:100%; height:100%; object-fit:cover; display:block; pointer-events:none; -webkit-user-drag:none; }
.depth-carousel__tint{ position:absolute; inset:0; opacity:0; pointer-events:none; background:var(--bg); mix-blend-mode:multiply; }

.depth-carousel__arrow{
  position:absolute; top:50%; transform:translateY(-50%); z-index:3000;
  width:42px; height:42px; display:grid; place-items:center;
  border:1px solid rgba(255,255,255,.18); border-radius:999px;
  background:rgba(18,20,26,.55); backdrop-filter:blur(8px); color:#fff; cursor:pointer;
  transition:background .2s ease, border-color .2s ease, transform .2s ease;
}
.depth-carousel__arrow:hover{ background:rgba(28,31,40,.85); border-color:rgba(255,255,255,.4); }
.depth-carousel__arrow:active{ transform:translateY(-50%) scale(.94); }
.depth-carousel__arrow--prev{ left:0; }
.depth-carousel__arrow--next{ right:0; }

.depth-carousel__dots{
  position:absolute; bottom:10px; left:50%; transform:translateX(-50%); z-index:3000;
  display:flex; gap:8px; padding:8px 12px; border-radius:999px;
  background:rgba(14,16,22,.4); backdrop-filter:blur(6px);
}
.depth-carousel__dot{
  width:7px; height:7px; padding:0; border:none; border-radius:999px;
  background:rgba(255,255,255,.32); cursor:pointer;
  transition:width .25s ease, background .25s ease;
}
.depth-carousel__dot.is-active{ width:20px; background:#fff; }

/* ---------- lightbox ---------- */
.lightbox{
  position:fixed; inset:0; z-index:300; background:rgba(3,3,3,.96);
  display:flex; align-items:center; justify-content:center; padding:40px;
  opacity:0; pointer-events:none; transition:opacity .4s var(--ease);
}
.lightbox.open{ opacity:1; pointer-events:auto; }
.lightbox figure{ max-width:min(90vw,1100px); max-height:82vh; margin:0; position:relative; }
.lightbox img,.lightbox video{ max-width:100%; max-height:82vh; border:1px solid var(--line); -webkit-user-drag:none; user-select:none; }
.lightbox{ touch-action:none; }
.lightbox figure{ touch-action:none; }
.lightbox figcaption{ margin-top:14px; font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--grey-lite); text-align:center; }
.lightbox-close, .lightbox-prev, .lightbox-next{
  position:absolute; background:transparent; border:1px solid rgba(255,255,255,.22); color:#fff;
  width:46px; height:46px; border-radius:50%; display:flex; align-items:center; justify-content:center;
}
.lightbox-close{ top:28px; right:28px; }
.lightbox-prev{ left:-70px; top:50%; transform:translateY(-50%); }
.lightbox-next{ right:-70px; top:50%; transform:translateY(-50%); }
@media (max-width:900px){ .lightbox-prev{ left:8px; } .lightbox-next{ right:8px; } }

/* ---------- scroll stack (services) ---------- */
.stack{ display:flex; flex-direction:column; gap:0; }
.stack-item{
  position:sticky; top:110px; border:1px solid var(--line); background:var(--bg);
  padding:clamp(30px,4vw,56px); margin-bottom:16px; min-height:56vh;
  display:grid; grid-template-columns:.7fr 1fr .8fr; gap:30px; align-items:center;
}
@media (max-width:900px){ .stack-item{ grid-template-columns:1fr; } }
.stack-item .idx{ font-size:60px; font-weight:700; color:transparent; -webkit-text-stroke:1px var(--grey); line-height:1; }
.stack-item ul{ display:flex; flex-direction:column; gap:8px; }
.stack-item ul li{ font-size:13px; color:var(--grey-lite); display:flex; gap:10px; align-items:center; }
.stack-item ul li::before{ content:''; width:5px; height:5px; background:var(--fg); border-radius:50%; }

/* ---------- 3D reveal tagline ---------- */
.tagline3d{ text-align:center; padding:0 var(--gutter); }
.tagline3d .txt{
  display:inline-block; font-size:clamp(30px,6vw,88px); font-weight:700; letter-spacing:-.02em;
  color:#111; -webkit-text-stroke:1px rgba(255,255,255,.5);
  text-shadow:0 1px 0 #222,0 2px 0 #1c1c1c,0 3px 0 #161616,0 4px 0 #101010,0 14px 26px rgba(0,0,0,.6);
  clip-path:inset(0 100% 0 0); transition:clip-path 1.1s var(--ease);
}
.tagline3d.in-view .txt{ clip-path:inset(0 0 0 0); }

/* ---------- tech text (letters) ---------- */
.tech-title{ display:flex; flex-wrap:wrap; }
.tech-title span{
  display:inline-block; opacity:0; transform:translateY(60%) skewY(6deg);
  animation:techIn .7s var(--ease) forwards; animation-delay:calc(var(--i) * 35ms);
}
@keyframes techIn{ to{ opacity:1; transform:translateY(0) skewY(0); } }

/* ---------- steps ---------- */
.steps{ counter-reset:step; display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
@media (max-width:900px){ .steps{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .steps{ grid-template-columns:1fr; } }
.step{ background:var(--bg); padding:30px 26px; transition:background .45s var(--ease); }
.step::before{ counter-increment:step; content:counter(step,decimal-leading-zero); font-size:12px; color:var(--grey); letter-spacing:.2em; transition:color .45s var(--ease); }
.step h3{ font-size:17px; margin:16px 0 10px; transition:color .45s var(--ease); }
.step p{ font-size:13px; transition:color .45s var(--ease); }
.step:hover, .step.is-flipped{ background:#fff; }
.step:hover::before, .step.is-flipped::before{ color:rgba(0,0,0,.6); }
.step:hover h3, .step.is-flipped h3{ color:#000; }
.step:hover p, .step.is-flipped p{ color:rgba(0,0,0,.7); }

/* ---------- contact ---------- */
.info-list{ display:flex; flex-direction:column; gap:26px; }
.info-list dt{ font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:var(--grey); margin-bottom:8px; }
.info-list dd{ margin:0; font-size:18px; }
.info-list a:hover{ color:var(--grey-lite); }

/* ---------- footer ---------- */
footer{ border-top:1px solid var(--line); padding:60px 0 30px; }
.footer-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:40px; flex-wrap:wrap; margin-bottom:60px; }
.footer-top .footer-logo{ height:38px; width:auto; }
.footer-top .footer-logo-video{ mix-blend-mode:screen; object-fit:contain; }
@media (min-width:821px){ .footer-top .footer-logo{ height:120px; } }
.footer-cols{ display:contents; }
@media (max-width:700px){
  .footer-top{ flex-direction:column; align-items:center; text-align:center; gap:32px; }
  .footer-col-nav{ display:none; }
}
.footer-col h4{ font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:var(--grey); margin:0 0 16px; }
.footer-col a, .footer-col span{ display:block; font-size:14px; color:var(--grey-lite); margin-bottom:10px; }
.footer-col a:hover{ color:var(--fg); }
.footer-bottom{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; font-size:12px; color:var(--grey); border-top:1px solid var(--line); padding-top:24px; }

/* ---------- reveal-up (generic scroll-in) ---------- */
.reveal-up{ opacity:0; transform:translateY(36px); transition:opacity .8s var(--ease), transform .8s var(--ease); }
.reveal-up.in-view{ opacity:1; transform:translateY(0); }

/* ---------- page hero (sub pages) ---------- */
.page-hero{ padding:calc(var(--nav-h) + 90px) 0 60px; }
.page-hero h1{ font-size:clamp(44px,8vw,120px); text-transform:uppercase; letter-spacing:-.02em; }

/* ---------- utility ---------- */
.mt-lg{ margin-top:clamp(40px,6vw,80px); }
.center{ text-align:center; }
.small{ font-size:12px; color:var(--grey); letter-spacing:.08em; }

/* ---------- custom cursor ring ---------- */
.cursor-ring{
  position:fixed; top:0; left:0; width:30px; height:30px;
  border:1px solid rgba(255,255,255,.7); border-radius:50%;
  pointer-events:none; z-index:400; mix-blend-mode:difference;
  transform:translate3d(-50%,-50%,0); opacity:0;
  transition:width .3s var(--ease), height .3s var(--ease), background-color .3s var(--ease), opacity .3s var(--ease);
}
.cursor-ring.active{ opacity:1; }
.cursor-ring.hover{ width:64px; height:64px; background:rgba(255,255,255,.14); }
@media (hover:none), (pointer:coarse){
  .cursor-ring{ display:none; }
}
