:root {
  --ink: #11100f;
  --paper: #f1eee8;
  --paper-2: #e7e1d8;
  --line: rgba(17,16,15,.18);
  --muted: #706c66;
  --white: #fbfaf7;
  --serif: "Italiana", Georgia, serif;
  --sans: "DM Sans", Arial, sans-serif;
  --pad: clamp(22px, 4vw, 64px);
  --radius: 2px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.5;
  overflow-x: hidden;
}
body.menu-open { overflow: hidden; }
img { display: block; width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
::selection { background: var(--ink); color: var(--paper); }

.noise {
  position: fixed;
  inset: 0;
  z-index: 999;
  pointer-events: none;
  opacity: .045;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.86' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
}
.cursor-dot {
  position: fixed;
  width: 10px; height: 10px;
  background: var(--ink);
  border-radius: 50%;
  pointer-events: none;
  z-index: 1000;
  transform: translate(-50%, -50%);
  transition: width .18s, height .18s, opacity .18s;
  mix-blend-mode: difference;
  opacity: 0;
}

.site-header {
  position: fixed;
  z-index: 90;
  top: 0; left: 0; right: 0;
  min-height: 76px;
  padding: 0 var(--pad);
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  border-bottom: 1px solid transparent;
  transition: background .35s, border-color .35s, transform .35s;
}
.site-header.scrolled {
  background: rgba(241,238,232,.88);
  backdrop-filter: blur(16px);
  border-color: var(--line);
}
.brand { display: inline-flex; align-items: center; gap: 12px; width: fit-content; }
.brand-mark {
  width: 30px; height: 30px; border: 1px solid currentColor;
  display: grid; place-items: center; border-radius: 50%; font-family: var(--serif); font-size: 18px;
}
.brand-copy { font-size: 13px; font-weight: 600; letter-spacing: .13em; line-height: .9; }
.brand-copy small { display: block; font-size: 8px; letter-spacing: .2em; margin-top: 6px; font-weight: 500; }
.desktop-nav { display: flex; gap: 34px; font-size: 13px; }
.desktop-nav a { position: relative; }
.desktop-nav a::after { content:""; position:absolute; left:0; right:100%; bottom:-5px; height:1px; background:currentColor; transition:right .3s; }
.desktop-nav a:hover::after { right:0; }
.header-cta { justify-self: end; font-size: 13px; border-bottom: 1px solid currentColor; padding-bottom: 3px; }
.menu-toggle { display:none; justify-self:end; width:40px; height:40px; border:0; background:none; padding:8px; cursor:pointer; }
.menu-toggle span { display:block; width:100%; height:1px; background:currentColor; margin:7px 0; transition:.3s; }
.menu-toggle.active span:first-child { transform: translateY(4px) rotate(45deg); }
.menu-toggle.active span:last-child { transform: translateY(-4px) rotate(-45deg); }

.mobile-menu {
  position: fixed; inset: 0; z-index: 80;
  background: var(--ink); color: var(--paper);
  padding: 110px var(--pad) 40px;
  display: flex; flex-direction:column; justify-content:space-between;
  opacity:0; visibility:hidden; transform:translateY(-12px); transition:.35s ease;
}
.mobile-menu.open { opacity:1; visibility:visible; transform:none; }
.mobile-menu nav { display:flex; flex-direction:column; }
.mobile-menu nav a { font-family:var(--serif); font-size:clamp(42px,12vw,72px); line-height:1.05; border-bottom:1px solid rgba(255,255,255,.16); padding:12px 0; }
.mobile-menu-meta { display:flex; justify-content:space-between; gap:20px; font-size:13px; opacity:.72; }

.hero {
  min-height: 100svh;
  padding: 128px var(--pad) 46px;
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  gap: clamp(30px, 5vw, 90px);
  align-items: center;
  position: relative;
}
.hero-copy { align-self:center; max-width: 760px; }
.eyebrow, .section-label { text-transform:uppercase; letter-spacing:.18em; font-size:11px; font-weight:600; }
.hero h1, .display { font-family: var(--serif); font-weight:400; margin:0; letter-spacing:-.045em; }
.hero h1 { font-size: clamp(64px, 8vw, 138px); line-height:.82; margin-top:28px; }
em { font-style: italic; font-weight:400; }
.hero-intro { max-width: 520px; font-size: clamp(16px,1.4vw,20px); color:var(--muted); margin: 42px 0 32px; }
.hero-actions { display:flex; align-items:center; gap:26px; flex-wrap:wrap; }
.btn { display:inline-flex; align-items:center; justify-content:center; gap:24px; padding:14px 18px; min-height:52px; border:1px solid var(--ink); text-transform:uppercase; font-size:11px; letter-spacing:.14em; transition:.3s; cursor:pointer; }
.btn span { font-size:16px; transition:transform .3s; }
.btn:hover span { transform:translate(4px, 3px); }
.btn-dark { background:var(--ink); color:var(--paper); }
.btn-dark:hover { background:transparent; color:var(--ink); }
.btn-outline:hover { background:var(--ink); color:var(--paper); }
.btn-light { background:var(--paper); color:var(--ink); border-color:var(--paper); }
.btn-light:hover { background:transparent; color:var(--paper); }
.text-link { font-size:13px; border-bottom:1px solid currentColor; padding-bottom:3px; }
.hero-visual { position:relative; align-self:stretch; min-height:620px; display:flex; align-items:center; justify-content:flex-end; }
.hero-photo { width:min(100%, 620px); height:min(75vh, 780px); margin:0; overflow:hidden; position:relative; background:#c7beb4; }
.hero-photo img { height:112%; object-fit:cover; object-position:center; transform:translateY(-5%); }
.hero-photo::after { content:""; position:absolute; inset:0; box-shadow:inset 0 0 0 1px rgba(255,255,255,.14); }
.hero-photo figcaption { position:absolute; left:0; right:0; bottom:0; padding:18px; display:flex; justify-content:space-between; color:#fff; font-size:10px; letter-spacing:.12em; text-transform:uppercase; background:linear-gradient(transparent,rgba(0,0,0,.45)); }
.hero-stamp { position:absolute; left:-48px; bottom:13%; width:108px; height:108px; border-radius:50%; background:var(--paper); border:1px solid var(--ink); display:grid; place-items:center; text-align:center; font-size:9px; letter-spacing:.15em; line-height:1.3; transform:rotate(-8deg); }
.hero-stamp strong { display:block; font-family:var(--serif); font-size:27px; letter-spacing:0; font-weight:400; }
.scroll-note { position:absolute; left:var(--pad); bottom:26px; display:flex; align-items:center; gap:12px; text-transform:uppercase; font-size:9px; letter-spacing:.16em; }
.scroll-note span { width:54px; height:1px; background:var(--ink); transform-origin:left; animation:pulseLine 1.8s ease-in-out infinite; }
@keyframes pulseLine { 0%,100%{transform:scaleX(.35)} 50%{transform:scaleX(1)} }

.ticker { border-top:1px solid var(--line); border-bottom:1px solid var(--line); overflow:hidden; padding:14px 0; }
.ticker-track { display:flex; width:max-content; gap:24px; align-items:center; animation:marquee 28s linear infinite; }
.ticker span { font-family:var(--serif); font-size:22px; }
.ticker i { font-style:normal; font-size:10px; }
@keyframes marquee { to { transform:translateX(-50%); } }

.section-pad { padding: clamp(88px, 11vw, 170px) var(--pad); }
.intro { border-bottom:1px solid var(--line); }
.intro-grid { margin-top:48px; display:grid; grid-template-columns:1.15fr .85fr; gap:8vw; align-items:start; }
.display { font-size:clamp(48px,6.8vw,110px); line-height:.93; }
.intro-copy { max-width:580px; padding-top:16px; font-size:clamp(16px,1.5vw,20px); color:var(--muted); }
.intro-copy p { margin:0 0 24px; }
.arrow-link { color:var(--ink); display:inline-flex; gap:18px; align-items:center; font-size:13px; padding-bottom:4px; border-bottom:1px solid var(--ink); margin-top:8px; }
.arrow-link span { transition:.3s; }
.arrow-link:hover span { transform:translate(4px,-4px); }

.section-head { display:flex; align-items:end; justify-content:space-between; gap:40px; margin-bottom:56px; }
.section-head p:last-child { width:min(390px,35vw); color:var(--muted); font-size:14px; }
.section-head .display, .services-heading .display, .process-head .display { margin-top:18px; }
.masonry-gallery { display:grid; grid-template-columns:repeat(12,1fr); grid-auto-rows:40px; gap:16px; }
.gallery-card { margin:0; overflow:hidden; position:relative; background:#d6cfc4; }
.gallery-card.tall { grid-column:span 5; grid-row:span 16; }
.gallery-card.wide { grid-column:span 7; grid-row:span 10; }
.gallery-card.square { grid-column:span 7; grid-row:span 13; }
.gallery-card:nth-child(4) { grid-column:span 5; grid-row:span 12; }
.gallery-card:nth-child(5) { grid-column:span 7; grid-row:span 11; }
.gallery-card:nth-child(6) { grid-column:span 5; grid-row:span 15; }
.gallery-card img { height:100%; object-fit:cover; transition:transform .8s cubic-bezier(.2,.75,.2,1), filter .5s; }
.gallery-card:hover img { transform:scale(1.035); filter:saturate(.88); }
.gallery-card::after { content:""; position:absolute; inset:0; background:linear-gradient(transparent 55%,rgba(0,0,0,.55)); opacity:.72; }
.gallery-card figcaption { position:absolute; left:18px; right:18px; bottom:16px; z-index:2; color:#fff; display:flex; justify-content:space-between; align-items:end; gap:20px; }
.gallery-card figcaption span { font-size:9px; letter-spacing:.16em; text-transform:uppercase; }
.gallery-card figcaption strong { font-family:var(--serif); font-size:20px; font-weight:400; }
.center-link { display:flex; justify-content:center; margin-top:44px; }

.services { background:var(--ink); color:var(--paper); }
.services-heading { max-width:900px; margin-bottom:62px; }
.service-list { border-top:1px solid rgba(255,255,255,.18); }
.service-row { display:grid; grid-template-columns:70px 1.1fr 1fr 42px; gap:28px; align-items:center; border-bottom:1px solid rgba(255,255,255,.18); padding:28px 0; transition:padding .3s, background .3s; }
.service-row:hover { padding-left:14px; padding-right:14px; background:rgba(255,255,255,.035); }
.service-no { font-size:10px; opacity:.55; }
.service-row h3 { font-family:var(--serif); font-size:clamp(28px,3vw,48px); font-weight:400; margin:0; }
.service-row p { margin:0; color:rgba(241,238,232,.62); max-width:520px; font-size:14px; }
.service-icon { justify-self:end; font-size:24px; transition:transform .3s; }
.service-row:hover .service-icon { transform:translate(4px,4px); }

.quote-section { min-height:90svh; display:grid; grid-template-columns:1fr 1fr; background:#d9d2c7; }
.quote-image { overflow:hidden; min-height:650px; }
.quote-image img { height:112%; object-fit:cover; transform:translateY(-5%); filter:saturate(.8) contrast(1.04); }
.quote-copy { padding:var(--pad); display:flex; flex-direction:column; justify-content:center; }
.quote-copy blockquote { font-family:var(--serif); font-size:clamp(42px,5vw,82px); line-height:1; margin:36px 0; letter-spacing:-.035em; }
.quote-copy > p:last-child { color:var(--muted); }

.process-head { max-width:900px; }
.process-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:0; margin-top:64px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.process-grid article { padding:28px 26px 36px 0; min-height:260px; border-right:1px solid var(--line); }
.process-grid article:not(:first-child) { padding-left:26px; }
.process-grid article:last-child { border-right:0; }
.process-grid span { font-size:10px; letter-spacing:.14em; }
.process-grid h3 { font-family:var(--serif); font-size:28px; font-weight:400; margin:64px 0 15px; }
.process-grid p { font-size:13px; color:var(--muted); margin:0; }

.contact { padding-top:0; }
.contact-card { background:var(--ink); color:var(--paper); padding:clamp(28px,5vw,72px); display:grid; grid-template-columns:.9fr 1.1fr; gap:7vw; }
.contact-copy h2 { font-family:var(--serif); font-size:clamp(58px,7vw,110px); font-weight:400; line-height:.86; letter-spacing:-.04em; margin:48px 0 26px; }
.contact-copy > p:last-child { color:rgba(241,238,232,.62); max-width:340px; }
.inquiry-form { display:grid; grid-template-columns:1fr 1fr; gap:28px 20px; align-content:start; }
.inquiry-form label { display:flex; flex-direction:column; gap:9px; }
.inquiry-form label > span { font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:rgba(241,238,232,.55); }
.inquiry-form input, .inquiry-form select, .inquiry-form textarea { width:100%; color:var(--paper); background:transparent; border:0; border-bottom:1px solid rgba(255,255,255,.3); border-radius:0; padding:12px 0 13px; outline:none; resize:vertical; }
.inquiry-form input:focus, .inquiry-form select:focus, .inquiry-form textarea:focus { border-color:var(--paper); }
.inquiry-form select option { color:var(--ink); }
.inquiry-form input[type="date"] { color-scheme:dark; }
.inquiry-form .full { grid-column:1/-1; }
.form-note { font-size:10px; color:rgba(241,238,232,.42); margin:0; }
.contact-meta { display:grid; grid-template-columns:1.35fr .65fr .65fr; gap:48px; padding:42px 0 0; }
.contact-meta > div { display:flex; flex-direction:column; align-items:flex-start; gap:8px; }
.contact-meta span { font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); }
.contact-meta a { font-family:var(--serif); font-size:clamp(18px,2vw,26px); line-height:1.25; }

footer { background:#cfc6b9; padding:80px var(--pad) 26px; }
.footer-brand { font-family:var(--serif); font-size:clamp(56px,10.2vw,190px); letter-spacing:-.055em; line-height:.82; white-space:nowrap; }
.footer-bottom { margin-top:70px; border-top:1px solid rgba(17,16,15,.22); padding-top:18px; display:grid; grid-template-columns:1fr 1fr 1fr; font-size:10px; text-transform:uppercase; letter-spacing:.12em; }
.footer-bottom span:nth-child(2) { text-align:center; }
.footer-bottom a { justify-self:end; }

.reveal { opacity:0; transform:translateY(28px); transition:opacity .8s ease, transform .8s cubic-bezier(.2,.75,.2,1); transition-delay:var(--delay,0ms); }
.reveal.in-view { opacity:1; transform:none; }

@media (max-width: 1000px) {
  .desktop-nav, .header-cta { display:none; }
  .menu-toggle { display:block; }
  .site-header { grid-template-columns:1fr auto; }
  .hero { grid-template-columns:1fr; padding-top:118px; gap:54px; }
  .hero-copy { max-width:none; }
  .hero-visual { min-height:auto; justify-content:center; }
  .hero-photo { width:100%; height:70svh; max-height:760px; }
  .hero-stamp { left:auto; right:18px; bottom:18px; }
  .scroll-note { display:none; }
  .intro-grid { grid-template-columns:1fr; }
  .intro-copy { justify-self:end; }
  .service-row { grid-template-columns:50px 1fr 42px; }
  .service-row p { grid-column:2/3; }
  .service-icon { grid-column:3; grid-row:1/3; }
  .process-grid { grid-template-columns:1fr 1fr; }
  .process-grid article:nth-child(2) { border-right:0; }
  .process-grid article:nth-child(1), .process-grid article:nth-child(2) { border-bottom:1px solid var(--line); }
  .contact-card { grid-template-columns:1fr; }
  .contact-meta { grid-template-columns:1fr 1fr; }
  .contact-meta > div:first-child { grid-column:1/-1; }
}

@media (max-width: 720px) {
  :root { --pad: 20px; }
  .cursor-dot { display:none; }
  .site-header { min-height:68px; }
  .hero { min-height:auto; padding-top:104px; padding-bottom:70px; }
  .hero h1 { font-size:clamp(60px,20vw,96px); }
  .hero-intro { margin-top:28px; }
  .hero-actions { align-items:flex-start; flex-direction:column; }
  .hero-photo { height:62svh; min-height:470px; }
  .hero-stamp { width:90px; height:90px; }
  .section-pad { padding-top:84px; padding-bottom:84px; }
  .display { font-size:clamp(48px,15vw,80px); }
  .section-head { align-items:flex-start; flex-direction:column; }
  .section-head p:last-child { width:100%; }
  .masonry-gallery { display:grid; grid-template-columns:1fr 1fr; grid-auto-rows:auto; gap:10px; }
  .gallery-card, .gallery-card.tall, .gallery-card.wide, .gallery-card.square, .gallery-card:nth-child(4), .gallery-card:nth-child(5), .gallery-card:nth-child(6) { grid-column:auto; grid-row:auto; aspect-ratio:3/4; }
  .gallery-card:nth-child(2), .gallery-card:nth-child(5) { grid-column:1/-1; aspect-ratio:16/10; }
  .gallery-card figcaption { left:12px; right:12px; bottom:10px; }
  .gallery-card figcaption strong { font-size:15px; }
  .gallery-card figcaption span { font-size:8px; }
  .services-heading { margin-bottom:38px; }
  .service-row { grid-template-columns:36px 1fr 28px; gap:12px; padding:22px 0; }
  .service-row h3 { font-size:29px; }
  .service-row p { font-size:12px; padding-right:8px; }
  .quote-section { grid-template-columns:1fr; min-height:auto; }
  .quote-image { min-height:58svh; }
  .quote-copy { padding-top:72px; padding-bottom:72px; }
  .process-grid { grid-template-columns:1fr; }
  .process-grid article, .process-grid article:not(:first-child) { padding:24px 0 32px; border-right:0; border-bottom:1px solid var(--line); min-height:auto; }
  .process-grid article:last-child { border-bottom:0; }
  .process-grid h3 { margin-top:34px; }
  .inquiry-form { grid-template-columns:1fr; }
  .inquiry-form .full { grid-column:1; }
  .contact-meta { grid-template-columns:1fr; gap:30px; }
  .contact-meta > div:first-child { grid-column:auto; }
  .footer-brand { font-size:15vw; white-space:normal; }
  .footer-bottom { grid-template-columns:1fr; gap:10px; }
  .footer-bottom span:nth-child(2) { text-align:left; }
  .footer-bottom a { justify-self:start; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
  .reveal { opacity:1; transform:none; }
  .parallax-media img { transform:none !important; }
}

/* Motion refresh — September 2026 */
.scroll-progress {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 2px;
  z-index: 300;
  pointer-events: none;
  background: transparent;
}
.scroll-progress span {
  display: block;
  width: 100%;
  height: 100%;
  background: var(--ink);
  transform: scaleX(0);
  transform-origin: left center;
  will-change: transform;
}

/* Hero entrance has a cinematic image wipe and staggered text. */
.hero-copy.in-view .eyebrow { animation: heroRise .7s .06s both cubic-bezier(.2,.75,.2,1); }
.hero-copy.in-view h1 { animation: heroRise .95s .14s both cubic-bezier(.16,.8,.18,1); }
.hero-copy.in-view .hero-intro { animation: heroRise .8s .28s both cubic-bezier(.2,.75,.2,1); }
.hero-copy.in-view .hero-actions { animation: heroRise .8s .38s both cubic-bezier(.2,.75,.2,1); }
.hero-visual.in-view .hero-photo { animation: heroClip 1.15s .08s both cubic-bezier(.2,.8,.2,1); }
.hero-visual.in-view .hero-stamp { animation: stampIn .9s .7s both cubic-bezier(.15,.9,.2,1), stampFloat 7s 1.6s ease-in-out infinite; }
@keyframes heroRise {
  from { opacity:0; transform:translateY(34px); }
  to { opacity:1; transform:translateY(0); }
}
@keyframes heroClip {
  from { clip-path: inset(0 0 100% 0); transform:translateY(20px) scale(.985); }
  to { clip-path: inset(0 0 0 0); transform:none; }
}
@keyframes stampIn {
  from { opacity:0; transform:rotate(-24deg) scale(.55); }
  to { opacity:1; transform:rotate(-8deg) scale(1); }
}
@keyframes stampFloat {
  0%,100% { transform:rotate(-8deg) translateY(0); }
  50% { transform:rotate(-4deg) translateY(-9px); }
}

/* Gallery curtain reveal plus slightly more dimensional hover motion. */
.gallery-card::before {
  content:"";
  position:absolute;
  inset:0;
  z-index:4;
  background:var(--ink);
  transform:scaleY(1);
  transform-origin:bottom;
  transition:transform 1s cubic-bezier(.76,0,.24,1);
  pointer-events:none;
}
.gallery-card.in-view::before {
  transform:scaleY(0);
  transform-origin:top;
}
.gallery-card img {
  transform-origin:center;
  will-change:transform, filter;
}
.gallery-card:hover img {
  transform:scale(1.055) rotate(.15deg);
  filter:saturate(.94) contrast(1.03);
}
.gallery-card figcaption {
  transform:translateY(8px);
  opacity:.86;
  transition:transform .4s ease, opacity .4s ease;
}
.gallery-card:hover figcaption {
  transform:translateY(0);
  opacity:1;
}

/* Animated section labels and links. */
.section-label,
.eyebrow { position:relative; }
.section-label::after,
.eyebrow::after {
  content:"";
  display:inline-block;
  width:28px;
  height:1px;
  margin-left:10px;
  vertical-align:middle;
  background:currentColor;
  transform:scaleX(.35);
  transform-origin:left;
  transition:transform .55s cubic-bezier(.2,.75,.2,1);
}
.reveal.in-view.section-label::after,
.reveal.in-view .section-label::after,
.hero-copy.in-view .eyebrow::after,
.quote-copy.in-view .eyebrow::after { transform:scaleX(1); }

.desktop-nav a,
.text-link,
.arrow-link { position:relative; }
.desktop-nav a::after,
.text-link::after,
.arrow-link::after {
  content:"";
  position:absolute;
  left:0;
  bottom:-5px;
  width:100%;
  height:1px;
  background:currentColor;
  transform:scaleX(0);
  transform-origin:right;
  transition:transform .35s ease;
}
.desktop-nav a:hover::after,
.text-link:hover::after,
.arrow-link:hover::after {
  transform:scaleX(1);
  transform-origin:left;
}

/* Service rows gain a directional sweep without changing the layout. */
.service-row { position:relative; overflow:hidden; isolation:isolate; }
.service-row::before {
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg, rgba(255,255,255,.055), transparent 68%);
  transform:translateX(-103%);
  transition:transform .65s cubic-bezier(.2,.75,.2,1);
  z-index:-1;
}
.service-row:hover::before { transform:translateX(0); }
.service-row .service-icon { transition:transform .35s ease; }
.service-row:hover .service-icon { transform:translate(5px,5px) rotate(-8deg); }

/* Quote copy floats in from the side while the image retains scroll parallax. */
.quote-copy.reveal { transform:translateX(34px); }
.quote-copy.reveal.in-view { transform:none; }
.quote-copy blockquote { transition:letter-spacing .8s cubic-bezier(.2,.75,.2,1); }
.quote-copy.in-view blockquote { letter-spacing:-.045em; }

/* Button magnetic motion is driven by CSS variables from JS. */
.btn,
.header-cta {
  transform:translate3d(var(--mx,0px), var(--my,0px), 0);
  will-change:transform;
}
.btn:active,
.header-cta:active { transform:translate3d(var(--mx,0px), calc(var(--my,0px) + 1px), 0) scale(.985); }

/* Menu links arrive in sequence on smaller screens. */
.mobile-menu nav a {
  opacity:0;
  transform:translateY(24px);
  transition:opacity .45s ease, transform .55s cubic-bezier(.2,.75,.2,1);
}
.mobile-menu.open nav a { opacity:1; transform:none; }
.mobile-menu.open nav a:nth-child(1) { transition-delay:.08s; }
.mobile-menu.open nav a:nth-child(2) { transition-delay:.13s; }
.mobile-menu.open nav a:nth-child(3) { transition-delay:.18s; }
.mobile-menu.open nav a:nth-child(4) { transition-delay:.23s; }
.mobile-menu-meta {
  opacity:0;
  transform:translateY(14px);
  transition:opacity .45s .28s ease, transform .55s .28s cubic-bezier(.2,.75,.2,1);
}
.mobile-menu.open .mobile-menu-meta { opacity:.72; transform:none; }

/* Slightly livelier ticker while preserving continuous motion. */
.ticker-track { animation-duration:34s; }
.ticker:hover .ticker-track { animation-play-state:paused; }
.ticker i { animation:sparkPulse 2.8s ease-in-out infinite; }
@keyframes sparkPulse {
  0%,100% { opacity:.45; transform:scale(.8) rotate(0); }
  50% { opacity:1; transform:scale(1.18) rotate(45deg); }
}

@media (max-width:720px) {
  .gallery-card::before { transition-duration:.82s; }
  .hero-visual.in-view .hero-stamp { animation: stampIn .8s .55s both cubic-bezier(.15,.9,.2,1), stampFloat 7s 1.4s ease-in-out infinite; }
}

@media (prefers-reduced-motion: reduce) {
  .scroll-progress { display:none; }
  .hero-copy.in-view .eyebrow,
  .hero-copy.in-view h1,
  .hero-copy.in-view .hero-intro,
  .hero-copy.in-view .hero-actions,
  .hero-visual.in-view .hero-photo,
  .hero-visual.in-view .hero-stamp,
  .ticker i { animation:none !important; }
  .gallery-card::before { display:none; }
  .mobile-menu nav a,
  .mobile-menu-meta { opacity:1; transform:none; }
}
