/* RBTHOL Event Solutions - production stylesheet.
   Brand system per the RBTHOL brand book v0.3: paper + ink + one red,
   Glacial Indifference display, Lekton for anything numeric or labelled,
   and one motion idea everywhere: the half-turn. */

@font-face { font-family: 'Glacial Indifference'; src: url('/assets/fonts/GlacialIndifference.woff2') format('woff2'); font-weight: 400; font-display: swap; }
@font-face { font-family: 'Lekton'; src: url('/assets/fonts/Lekton-Regular.woff2') format('woff2'); font-weight: 400; font-display: swap; }
@font-face { font-family: 'Lekton'; src: url('/assets/fonts/Lekton-Bold.woff2') format('woff2'); font-weight: 700; font-display: swap; }

:root {
  --paper: #F0EEE9; --paper-2: #E8E5DE; --ink: #161514; --ink-soft: #5C5751;
  --red: #AE2221; --red-deep: #8D0614; --rose: #C05B57; --salmon: #E5806F;
  --granite: #232220; --granite-2: #2E2C2A;
  --line: rgba(22,21,20,0.15); --line-d: rgba(240,238,233,0.16);
  --measure: 54ch;
  --flip: cubic-bezier(0.22, 1, 0.36, 1);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
html, body { margin: 0; }
body {
  background: var(--paper); color: var(--ink);
  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
  font-size: 16.5px; line-height: 1.62; -webkit-font-smoothing: antialiased;
}
::selection { background: rgba(174,34,33,0.22); }
img { max-width: 100%; display: block; }
a { color: inherit; }
.wrap { max-width: 1200px; margin: 0 auto; padding: 0 32px; }
@media (max-width: 620px) { .wrap { padding: 0 22px; } }

.eyebrow { font-family: 'Lekton', monospace; font-weight: 700; font-size: 12.5px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--red); margin: 0 0 12px; }
.eyebrow .n { color: var(--ink-soft); }
h1, h2 { font-family: 'Glacial Indifference', sans-serif; font-weight: 400; line-height: 1.06; margin: 0 0 18px; text-wrap: balance; letter-spacing: -0.01em; }
h2 { font-size: clamp(30px, 4.6vw, 50px); }
.lead { font-size: clamp(18px, 2.2vw, 21px); line-height: 1.5; max-width: 60ch; color: var(--ink); }
p { max-width: var(--measure); }

:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; }

/* ---- page entrance: content rises as the page arrives ---- */
@keyframes pageIn { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.js main, .js .page-body { animation: pageIn 0.55s var(--flip) both; }
/* browsers with cross-document view transitions get vtIn on navigation;
   suppress the extra pageIn there so pages don't enter twice */
@supports (view-transition-name: root) { .js main, .js .page-body { animation: none; } }
@view-transition { navigation: auto; }
::view-transition-old(root) { animation: 0.22s ease both vtOut; }
::view-transition-new(root) { animation: 0.4s var(--flip) both vtIn; }
@keyframes vtOut { to { opacity: 0; transform: translateY(-8px); } }
@keyframes vtIn { from { opacity: 0; transform: translateY(12px); } }

/* ---- header ---- */
header.site {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  background: rgba(240,238,233,0.9); backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line);
}
.nav { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 13px 32px; max-width: 1200px; margin: 0 auto; }
.brand { display: inline-block; position: relative; font-family: 'Glacial Indifference', sans-serif; font-size: 24px; color: var(--ink); text-decoration: none; z-index: 0; line-height: 1; }
.brand i { position: absolute; left: 36%; top: -6px; bottom: -6px; width: 13px; background: linear-gradient(168deg, #C4635E, #9C403D); z-index: -1; transition: transform 0.6s var(--flip); }
.brand:hover i, .brand:focus-visible i { transform: scaleY(-1); }
.nav .links { display: flex; gap: 26px; align-items: center; font-family: 'Lekton', monospace; font-size: 13px; letter-spacing: 0.12em; text-transform: uppercase; }
.nav .links a { color: var(--ink); text-decoration: none; position: relative; padding-bottom: 3px; }
.nav .links a::after { content: ""; position: absolute; left: 0; right: 0; bottom: -2px; height: 1px; background: var(--red); transform: scaleX(0); transform-origin: left; transition: transform 0.35s var(--flip); }
.nav .links a:hover { color: var(--red); }
.nav .links a:hover::after, .nav .links a.here::after { transform: scaleX(1); }
.nav .links a.here { color: var(--red); }
.nav .wa {
  font-family: 'Lekton', monospace; font-weight: 700; font-size: 13px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--paper); background: var(--red); text-decoration: none; padding: 12px 18px;
  transition: background 0.3s ease, transform 0.3s var(--flip);
}
.nav .wa:hover { background: var(--red-deep); transform: translateY(-1px); }
@media (max-width: 860px) { .nav .links { display: none; } }

/* mobile menu button: two bars that half-turn into a cross */
.menu-btn { display: none; background: none; border: 0; padding: 10px; cursor: pointer; }
.menu-btn span { display: block; width: 22px; height: 2px; background: var(--ink); margin: 5px 0; transition: transform 0.45s var(--flip), opacity 0.3s ease; }
.menu-open .menu-btn span:first-child { transform: translateY(3.5px) rotate(180deg) rotate(45deg); }
.menu-open .menu-btn span:last-child { transform: translateY(-3.5px) rotate(180deg) rotate(-45deg); }
@media (max-width: 860px) { .menu-btn { display: block; } }

.mobile-menu {
  position: fixed; inset: 0; z-index: 90; background: var(--paper);
  display: flex; flex-direction: column; justify-content: center; padding: 90px 32px 40px;
  opacity: 0; visibility: hidden; transition: opacity 0.35s ease, visibility 0s linear 0.35s;
}
.menu-open .mobile-menu { opacity: 1; visibility: visible; transition: opacity 0.35s ease; }
.mobile-menu a.mm {
  font-family: 'Glacial Indifference', sans-serif; font-size: clamp(34px, 9vw, 52px);
  color: var(--ink); text-decoration: none; padding: 10px 0; border-bottom: 1px solid var(--line);
  opacity: 0; transform: translateY(16px); transition: opacity 0.4s ease, transform 0.5s var(--flip), color 0.3s ease;
}
.mobile-menu a.mm:hover { color: var(--red); }
.menu-open .mobile-menu a.mm { opacity: 1; transform: none; }
.menu-open .mobile-menu a.mm:nth-child(1) { transition-delay: 0.05s; }
.menu-open .mobile-menu a.mm:nth-child(2) { transition-delay: 0.1s; }
.menu-open .mobile-menu a.mm:nth-child(3) { transition-delay: 0.15s; }
.menu-open .mobile-menu a.mm:nth-child(4) { transition-delay: 0.2s; }
.menu-open .mobile-menu a.mm:nth-child(5) { transition-delay: 0.25s; }
.mobile-menu .mm-wa { margin-top: 26px; opacity: 0; transition: opacity 0.4s ease 0.3s; }
.menu-open .mobile-menu .mm-wa { opacity: 1; }
.menu-open { overflow: hidden; }

/* ---- ambient video loops (Higgsfield): sit over their poster still ---- */
video.amb { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.case .img { position: relative; }
@media (prefers-reduced-motion: reduce) { video.amb { display: none !important; } }

/* ---- fog + motion primitives ---- */
.fog { position: absolute; inset: -12%; background: url('/assets/img/cloud.webp') -35% 120% / 85% auto no-repeat; opacity: 0.8; filter: blur(7px); pointer-events: none; will-change: transform; }
.fog.b { inset: -20%; background-position: 130% -10%; background-size: 120% auto; opacity: 0.5; filter: blur(14px); }
@keyframes fogDriftA { 0% { transform: translate3d(0,0,0) scale(1); } 100% { transform: translate3d(8%, -4%, 0) scale(1.1); } }
@keyframes fogDriftB { 0% { transform: translate3d(0,0,0) scale(1.06); } 100% { transform: translate3d(-9%, 3.5%, 0) scale(1); } }
@keyframes kenBurns { 0% { transform: scale(1.02) translate(0,0); } 100% { transform: scale(1.1) translate(-1.6%, -1.2%); } }
.anim-fogA { animation: fogDriftA 16s ease-in-out infinite alternate; }
.anim-fogB { animation: fogDriftB 22s ease-in-out infinite alternate; }
.anim-ken { animation: kenBurns 44s ease-in-out infinite alternate; }

/* ---- home hero ---- */
.hero { position: relative; min-height: 96vh; display: flex; align-items: center; overflow: hidden; }
.hero img.bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; will-change: transform; }
.hero .inner { position: relative; width: 100%; z-index: 2; }
.hero .kicker { position: relative; z-index: 4; font-family: 'Lekton', monospace; font-size: 13px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ink-soft); margin-bottom: 14px; }
.hero .dive { font-family: 'Glacial Indifference', sans-serif; color: var(--salmon); font-size: clamp(52px, 9vw, 120px); line-height: 1.0; }
.hero .dive span { display: block; }
.hero .dive span:nth-child(2) { margin-left: 1.2em; }
.hero .dive span:nth-child(3) { margin-left: 0.5em; }
.hero .veil { z-index: 3; }
.hero .sub { position: relative; z-index: 4; margin-top: 22px; font-family: 'Lekton', monospace; font-weight: 700; font-size: 15.5px; letter-spacing: 0.04em; color: var(--ink); max-width: 40ch; }
.hero .down { position: absolute; left: 32px; bottom: 26px; z-index: 4; font-family: 'Lekton', monospace; font-size: 12.5px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-soft); text-decoration: none; }
.hero .down b { display: inline-block; color: var(--red); font-weight: 400; margin-right: 8px; transition: transform 0.5s var(--flip); }
.hero .down:hover b { transform: rotate(180deg); }

/* hero load sequence: transform-only on the big type so LCP paints immediately */
@keyframes heroRise { from { transform: translateY(0.35em); } to { transform: none; } }
@keyframes heroFade { from { opacity: 0; } to { opacity: 1; } }
.js .hero .dive span { animation: heroRise 0.9s var(--flip) both; }
.js .hero .dive span:nth-child(2) { animation-delay: 0.08s; }
.js .hero .dive span:nth-child(3) { animation-delay: 0.16s; }
.js .hero .kicker { animation: heroFade 0.7s ease 0.1s both; }
.js .hero .sub { animation: heroFade 0.7s ease 0.45s both; }
.js .hero .down { animation: heroFade 0.7s ease 0.8s both; }

/* ---- inner page hero ---- */
.page-hero { position: relative; overflow: hidden; padding: 150px 0 60px; background: var(--paper); }
.page-hero .fog { opacity: 0.5; }
.page-hero .inner { position: relative; z-index: 2; }
.page-hero h1 { font-size: clamp(40px, 7vw, 82px); }
.page-hero .lead { margin-top: 16px; color: var(--ink-soft); }
.page-hero.dark { background: var(--granite); color: #EDEAE3; }
.page-hero.dark h1 { color: #F0EEE9; }
.page-hero.dark .eyebrow { color: var(--salmon); }
.page-hero.dark .lead { color: #B7B2AA; }

/* ---- USP: transparent pricing centrepiece ---- */
.usp { background: var(--granite); color: #EDEAE3; padding: 104px 0; overflow: hidden; }
.usp .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; }
@media (max-width: 900px) { .usp .grid { grid-template-columns: 1fr; gap: 40px; } }
.usp .eyebrow { color: var(--salmon); }
.usp .eyebrow .n { color: rgba(240,238,233,0.5); }
.usp h2 { color: #F0EEE9; }
.usp h2 em { font-style: normal; color: var(--salmon); }
.usp p { color: #B7B2AA; max-width: 44ch; }
.usp .usp-cta { display: inline-block; margin-top: 8px; font-size: 15.5px; color: var(--salmon); text-decoration: none; border-bottom: 1px solid var(--salmon); padding-bottom: 2px; transition: color 0.3s ease, border-color 0.3s ease; }
.usp .usp-cta:hover { color: #F5F3EE; border-color: #F5F3EE; }
.quote-doc { background: #F7F5F0; color: #161514; box-shadow: 0 26px 60px rgba(0,0,0,0.4); padding: 30px 30px 26px; font-family: 'Lekton', monospace; font-size: 13.5px; }
.quote-doc .qhead { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 8px; }
.quote-doc .qmk { font-family: 'Glacial Indifference', sans-serif; font-size: 19px; position: relative; display: inline-block; z-index: 0; }
.quote-doc .qmk i { position: absolute; left: 34%; top: -5px; bottom: -5px; width: 13px; background: linear-gradient(168deg, #C4635E, #9C403D); z-index: -1; }
.quote-doc .qref { text-align: right; color: #6E6961; font-size: 12px; }
.quote-doc .qtitle { font-family: 'Glacial Indifference', sans-serif; font-size: 22px; margin: 6px 0 2px; }
.quote-doc .qfor { color: #6E6961; font-size: 12px; margin-bottom: 12px; }
.qline { display: grid; grid-template-columns: 1fr auto; gap: 8px 16px; padding: 12px 0; border-bottom: 1px solid rgba(22,21,20,0.12); transition: opacity 0.5s ease, transform 0.5s var(--flip); }
.js .qline { opacity: 0; transform: translateY(8px); }
.quote-doc.in .qline { opacity: 1; transform: none; }
.quote-doc.in .qline:nth-child(4) { transition-delay: 0.05s; }
.quote-doc.in .qline:nth-child(5) { transition-delay: 0.17s; }
.quote-doc.in .qline:nth-child(6) { transition-delay: 0.29s; }
.quote-doc.in .qline:nth-child(7) { transition-delay: 0.41s; }
.qline .qi { font-weight: 700; }
.qline .qamt { font-weight: 700; text-align: right; font-variant-numeric: tabular-nums; }
.qline .qnote { grid-column: 1 / -1; color: #6E6961; font-size: 12px; margin-top: -2px; }
.qtotal { display: grid; grid-template-columns: 1fr auto; padding: 14px 0 2px; color: var(--red); font-weight: 700; font-size: 16px; transition: opacity 0.5s ease 0.55s, transform 0.5s var(--flip) 0.55s; }
.js .qtotal { opacity: 0; transform: translateY(8px); }
.quote-doc.in .qtotal { opacity: 1; transform: none; }
.qtotal .qamt { text-align: right; font-variant-numeric: tabular-nums; }
.quote-doc .qfine { color: #6E6961; font-size: 11.5px; margin-top: 14px; }

/* ---- true-numbers band: split-flap digits, every figure honest ---- */
.truths { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.truths .grid { display: grid; grid-template-columns: repeat(4, 1fr); }
@media (max-width: 720px) { .truths .grid { grid-template-columns: 1fr 1fr; } }
.truth { padding: 40px 24px; border-left: 1px solid var(--line); }
.truth:first-child { border-left: none; }
@media (max-width: 720px) { .truth:nth-child(odd) { border-left: none; } .truth:nth-child(n+3) { border-top: 1px solid var(--line); } }
.truth .num { font-family: 'Glacial Indifference', sans-serif; font-size: clamp(38px, 5vw, 58px); line-height: 1; font-variant-numeric: tabular-nums; display: inline-block; perspective: 400px; }
.truth .num b { display: inline-block; font-weight: 400; transition: transform 0.8s var(--flip); }
.js .truth:not(.in) .num b { transform: rotateX(180deg); }
.truth.in:nth-child(2) .num b { transition-delay: 0.1s; }
.truth.in:nth-child(3) .num b { transition-delay: 0.2s; }
.truth.in:nth-child(4) .num b { transition-delay: 0.3s; }
.truth .lbl { font-family: 'Lekton', monospace; font-size: 12.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-soft); margin-top: 12px; }

/* ---- services ---- */
.sol { padding: 100px 0 40px; }
.sol .row { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; margin-bottom: 104px; }
.sol .row.rev .visual { order: 2; }
@media (max-width: 880px) { .sol .row, .sol .row.rev .visual { grid-template-columns: 1fr; order: 0; } .sol .row { gap: 30px; margin-bottom: 76px; } }
.visual { aspect-ratio: 1; max-width: 460px; margin: 0 auto; width: 100%; position: relative; }
.visual img.ph { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.visual .stamp-chip { position: absolute; left: 16px; bottom: 16px; width: 84px; height: 84px; background: var(--paper); border: 1px solid var(--line); display: flex; align-items: center; justify-content: center; box-shadow: 0 10px 26px rgba(22,21,20,0.3); }
.visual .stamp-chip .mask-mark.stamp { position: relative; inset: auto; width: 54px; height: 54px; background: var(--red); }
@media (max-width: 620px) { .visual .stamp-chip { width: 64px; height: 64px; left: 12px; bottom: 12px; } .visual .stamp-chip .mask-mark.stamp { width: 42px; height: 42px; } }
.mask-mark { position: absolute; inset: 0; background: linear-gradient(160deg, rgba(217,67,50,0.9), rgba(141,6,20,0.94)), url('/assets/img/vortex.jpg') center / cover; background-blend-mode: multiply; -webkit-mask-size: contain; mask-size: contain; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: center; mask-position: center; transition: transform 0.9s var(--flip); }
.visual:hover .mask-mark { transform: rotate(180deg); }
.js .reveal .mask-mark { transform: rotate(-90deg); opacity: 0; }
.js .reveal.in .mask-mark { transform: none; opacity: 1; transition: transform 0.9s var(--flip), opacity 0.6s ease; }
.js .reveal.in .visual:hover .mask-mark { transform: rotate(180deg); }
.mask-pin { -webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><g><path d="M50 50 C38 38 36 18 50 8 C64 18 62 38 50 50Z" fill="black" transform="rotate(45 50 50)"/><path d="M50 50 C38 38 36 18 50 8 C64 18 62 38 50 50Z" fill="black" transform="rotate(135 50 50)"/><path d="M50 50 C38 38 36 18 50 8 C64 18 62 38 50 50Z" fill="black" transform="rotate(225 50 50)"/><path d="M50 50 C38 38 36 18 50 8 C64 18 62 38 50 50Z" fill="black" transform="rotate(315 50 50)"/></g></svg>'); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><g><path d="M50 50 C38 38 36 18 50 8 C64 18 62 38 50 50Z" fill="black" transform="rotate(45 50 50)"/><path d="M50 50 C38 38 36 18 50 8 C64 18 62 38 50 50Z" fill="black" transform="rotate(135 50 50)"/><path d="M50 50 C38 38 36 18 50 8 C64 18 62 38 50 50Z" fill="black" transform="rotate(225 50 50)"/><path d="M50 50 C38 38 36 18 50 8 C64 18 62 38 50 50Z" fill="black" transform="rotate(315 50 50)"/></g></svg>'); }
.mask-fig { -webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><g><rect x="44" y="42" width="12" height="52" fill="black"/><rect x="44" y="4" width="12" height="46" fill="black" transform="rotate(58 50 50)"/><rect x="44" y="4" width="12" height="46" fill="black" transform="rotate(-58 50 50)"/><rect x="44" y="4" width="12" height="46" fill="black" transform="rotate(115 50 50)"/><rect x="44" y="4" width="12" height="46" fill="black" transform="rotate(-115 50 50)"/><rect x="44" y="4" width="12" height="46" fill="black"/></g></svg>'); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><g><rect x="44" y="42" width="12" height="52" fill="black"/><rect x="44" y="4" width="12" height="46" fill="black" transform="rotate(58 50 50)"/><rect x="44" y="4" width="12" height="46" fill="black" transform="rotate(-58 50 50)"/><rect x="44" y="4" width="12" height="46" fill="black" transform="rotate(115 50 50)"/><rect x="44" y="4" width="12" height="46" fill="black" transform="rotate(-115 50 50)"/><rect x="44" y="4" width="12" height="46" fill="black"/></g></svg>'); }
.mask-ves { -webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="black" d="M28 6 H72 Q80 6 78 16 C74 32 66 36 66 48 C66 60 80 64 82 78 Q84 94 72 94 H28 Q16 94 18 78 C20 64 34 60 34 48 C34 36 26 32 22 16 Q20 6 28 6 Z"/></svg>'); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="black" d="M28 6 H72 Q80 6 78 16 C74 32 66 36 66 48 C66 60 80 64 82 78 Q84 94 72 94 H28 Q16 94 18 78 C20 64 34 60 34 48 C34 36 26 32 22 16 Q20 6 28 6 Z"/></svg>'); }
.sol h2 { margin-bottom: 14px; }
.sol p { margin: 0 0 22px; color: var(--ink); }
.sol p b { font-family: 'Lekton', monospace; font-weight: 700; font-size: 0.92em; }
.formats { list-style: none; padding: 0; margin: 0 0 26px; display: flex; flex-wrap: wrap; gap: 8px; }
.formats li { font-family: 'Lekton', monospace; font-size: 12.5px; letter-spacing: 0.05em; color: var(--ink-soft); border: 1px solid var(--line); padding: 6px 12px; }
.incl { list-style: none; padding: 0; margin: 0 0 26px; }
.incl li { position: relative; padding: 7px 0 7px 26px; border-bottom: 1px solid var(--line); font-size: 14.5px; }
.incl li::before { content: "\2726"; position: absolute; left: 0; top: 7px; color: var(--red); font-size: 11px; transition: transform 0.5s var(--flip); }
.incl li:hover::before { transform: rotate(180deg); }
.cta { display: inline-block; font-size: 15.5px; color: var(--red); text-decoration: none; border-bottom: 1px solid var(--red); padding-bottom: 2px; transition: color 0.3s ease, border-color 0.3s ease; }
.cta:hover { color: var(--red-deep); border-color: var(--red-deep); }
.cta .glyph { display: inline-block; font-style: normal; color: var(--red); margin-right: 9px; transition: transform 0.5s var(--flip); }
.cta:hover .glyph { transform: rotate(180deg); }
.cta .arr { display: inline-block; transition: transform 0.3s var(--flip); }
.cta:hover .arr { transform: translateX(4px); }

/* ---- work ---- */
.work { background: var(--granite); color: #EDEAE3; padding: 100px 0; }
.work.paper { background: var(--paper); color: var(--ink); }
.work .eyebrow { color: var(--salmon); }
.work.paper .eyebrow { color: var(--red); }
.work .eyebrow .n { color: rgba(240,238,233,0.5); }
.work.paper .eyebrow .n { color: var(--ink-soft); }
.work h2 { color: #F0EEE9; }
.work.paper h2 { color: var(--ink); }
.work .intro { display: flex; justify-content: space-between; align-items: flex-end; gap: 30px; flex-wrap: wrap; margin-bottom: 40px; }
.work .intro p { color: #B7B2AA; max-width: 44ch; margin: 0; }
.work.paper .intro p { color: var(--ink-soft); }
.case { display: block; text-decoration: none; color: inherit; position: relative; }
.case .img { overflow: hidden; }
/* no hover zoom: slow scaling makes the photos' film grain crawl ("vibrate"),
   and the half-turn is the brand's only transition anyway */
.case img { width: 100%; height: 100%; object-fit: cover; }
.case .tag { font-family: 'Lekton', monospace; font-size: 11.5px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--salmon); margin: 18px 0 8px; transition: letter-spacing 0.4s var(--flip); }
.case:hover .tag { letter-spacing: 0.2em; }
.work.paper .case .tag { color: var(--red); }
.case h3 { font-family: 'Glacial Indifference', sans-serif; font-weight: 400; font-size: clamp(21px, 2.6vw, 28px); line-height: 1.14; margin: 0 0 10px; color: #F0EEE9; }
.work.paper .case h3 { color: var(--ink); }
.case p { color: #A9A49C; font-size: 14.5px; margin: 0; max-width: 46ch; }
.work.paper .case p { color: var(--ink-soft); }
.case .metric { font-family: 'Lekton', monospace; font-size: 12.5px; color: #EDEAE3; margin-top: 12px; letter-spacing: 0.03em; }
.work.paper .case .metric { color: var(--ink); }
.case .metric b { color: var(--salmon); font-weight: 700; }
.work.paper .case .metric b { color: var(--red); }
.feature { margin-bottom: 20px; }
.feature .img { aspect-ratio: 21 / 9; }
@media (max-width: 720px) { .feature .img { aspect-ratio: 16 / 10; } }
.case-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
@media (max-width: 820px) { .case-row { grid-template-columns: 1fr; gap: 40px; } }
.case-row.two { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 820px) { .case-row.two { grid-template-columns: 1fr; } }
.case-row .img { aspect-ratio: 4 / 3; }
.work .disclaimer { font-family: 'Lekton', monospace; font-size: 12px; color: rgba(240,238,233,0.68); margin: 0 0 26px; max-width: 64ch; }
.work.paper .disclaimer { color: var(--ink-soft); }

/* ---- process ---- */
.process { padding: 104px 0 60px; }
.process .head { max-width: 620px; margin-bottom: 52px; }
.process .head p { color: var(--ink-soft); margin: 0; }
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; background: var(--line); border: 1px solid var(--line); }
@media (max-width: 820px) { .steps { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .steps { grid-template-columns: 1fr; } }
.step { background: var(--paper); padding: 28px 26px 34px; transition: background 0.35s ease; }
.step:hover { background: #F5F3EE; }
.step .idx { display: inline-block; font-family: 'Lekton', monospace; font-weight: 700; font-size: 12.5px; letter-spacing: 0.1em; color: var(--red); transition: transform 0.5s var(--flip); }
.step:hover .idx { transform: translateX(4px); }
.step h4 { font-family: 'Glacial Indifference', sans-serif; font-weight: 400; font-size: 23px; margin: 14px 0 8px; }
.step p { font-size: 14.5px; color: var(--ink-soft); margin: 0; }
.dayarc { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 44px; }
@media (max-width: 820px) { .dayarc { grid-template-columns: 1fr 1fr; } }
.dayarc figure { margin: 0; }
.dayarc .img { aspect-ratio: 3 / 2; overflow: hidden; border: 1px solid var(--line); }
.dayarc img { width: 100%; height: 100%; object-fit: cover; }
.dayarc figcaption { font-family: 'Lekton', monospace; font-weight: 700; font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-soft); margin-top: 10px; }
.dayarc figcaption b { color: var(--red); font-weight: 700; margin-right: 8px; }
.process .foot { margin-top: 34px; font-family: 'Lekton', monospace; font-size: 13.5px; color: var(--ink-soft); }
.process .foot b { color: var(--ink); font-weight: 700; }

/* ---- why ---- */
.why { padding: 60px 0 40px; }
.why-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 60px; }
@media (max-width: 760px) { .why-grid { grid-template-columns: 1fr; gap: 0; } }
.why-item { padding: 30px 0; border-top: 1px solid var(--line); display: grid; grid-template-columns: 44px 1fr; gap: 8px; }
.why-item.lead-usp { border-top: 2px solid var(--red); }
/* letters don't half-turn: a flipped "B" reads as a glitch, and the grid
   cell stretches row-height so the rotation also displaced it. Colour only. */
.why-item .k { font-family: 'Lekton', monospace; font-weight: 700; font-size: 13px; color: var(--red); padding-top: 4px; align-self: start; transition: color 0.3s ease; }
.why-item:hover .k { color: var(--red-deep); }
.why-item h4 { font-family: 'Glacial Indifference', sans-serif; font-weight: 400; font-size: 22px; margin: 0 0 8px; }
.why-item h4 .badge { font-family: 'Lekton', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--red); border: 1px solid var(--red); padding: 2px 7px; vertical-align: 3px; margin-left: 10px; }
.why-item p { font-size: 14.5px; color: var(--ink-soft); margin: 0; }

/* ---- story ---- */
.story { background: var(--granite-2); color: #EDEAE3; padding: 100px 0; overflow: hidden; }
.story .grid { display: grid; grid-template-columns: 0.9fr 1.1fr; gap: 60px; align-items: center; }
@media (max-width: 880px) { .story .grid { grid-template-columns: 1fr; gap: 34px; } }
.story .fr { position: relative; max-width: 380px; margin: 0 auto; overflow: hidden; box-shadow: 0 18px 44px rgba(0,0,0,0.45); }
.story .fr img { width: 100%; will-change: transform; }
.story .eyebrow { color: var(--salmon); }
.story h2 { color: #F0EEE9; }
.story p { max-width: 52ch; color: #C9C4BC; margin: 0 0 16px; }
.story .pull { font-family: 'Glacial Indifference', sans-serif; font-size: clamp(20px, 2.6vw, 26px); line-height: 1.35; color: #F0EEE9; margin: 0 0 24px; max-width: 26ch; }
.story .founders { display: flex; align-items: center; gap: 18px; margin-top: 26px; padding-top: 22px; border-top: 1px solid var(--line-d); }
.story .founders img { height: 92px; width: auto; }
.story .founders img.m { transform: rotate(180deg); margin-left: -12px; }
.story .founders .who { font-family: 'Lekton', monospace; font-size: 13.5px; line-height: 1.7; color: #EDEAE3; }
.story .founders .who b { font-weight: 700; }

/* ---- CTA band ---- */
.cta-band { background: var(--red); color: #F5F3EE; padding: 84px 0; }
.cta-band .inner { display: flex; justify-content: space-between; align-items: center; gap: 30px; flex-wrap: wrap; }
.cta-band h2 { color: #F5F3EE; margin: 0; max-width: 18ch; }
.cta-band .acts { display: flex; gap: 14px; flex-wrap: wrap; }
.cta-band a { font-family: 'Lekton', monospace; font-weight: 700; font-size: 14px; letter-spacing: 0.12em; text-transform: uppercase; background: #F5F3EE; color: var(--red); text-decoration: none; padding: 15px 26px; white-space: nowrap; transition: background 0.3s ease, color 0.3s ease, transform 0.3s var(--flip); }
.cta-band a:hover { background: var(--ink); color: #F5F3EE; transform: translateY(-2px); }
.cta-band a.ghost { background: none; color: #F5F3EE; box-shadow: inset 0 0 0 1px rgba(245,243,238,0.55); }
.cta-band a.ghost:hover { background: rgba(245,243,238,0.12); transform: translateY(-2px); }

/* ---- contact ---- */
.contact { padding: 100px 0 96px; }
.contact.p2 { background: var(--paper-2); border-top: 1px solid var(--line); }
.contact .grid { display: grid; grid-template-columns: 1fr 1.1fr; gap: 60px; align-items: start; }
@media (max-width: 880px) { .contact .grid { grid-template-columns: 1fr; gap: 34px; } }
.contact h2 { margin-bottom: 16px; }
.contact .side p { max-width: 42ch; color: var(--ink-soft); }
.contact .direct { font-family: 'Lekton', monospace; font-size: 14px; line-height: 2; color: var(--ink); margin-top: 26px; }
.contact .direct a { color: var(--red); text-decoration: none; border-bottom: 1px solid transparent; transition: border-color 0.3s ease; }
.contact .direct a:hover { border-color: var(--red); }
.wa-card { margin-top: 26px; border: 1px solid var(--line); background: #F5F3EE; padding: 20px 22px; max-width: 400px; }
.wa-card .t { font-family: 'Glacial Indifference', sans-serif; font-size: 20px; margin-bottom: 6px; }
.wa-card p { font-size: 14px; color: var(--ink-soft); margin: 0 0 14px; }
.wa-card a.go { font-family: 'Lekton', monospace; font-weight: 700; font-size: 13px; letter-spacing: 0.1em; text-transform: uppercase; color: #F5F3EE; background: var(--red); text-decoration: none; padding: 11px 18px; display: inline-block; transition: background 0.3s ease, transform 0.3s var(--flip); }
.wa-card a.go:hover { background: var(--red-deep); transform: translateY(-1px); }
.chips { display: flex; flex-wrap: wrap; gap: 10px; margin: 22px 0 6px; }
.chips button { font-family: 'Lekton', monospace; font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; background: none; border: 1px solid var(--line); color: var(--ink); padding: 12px 18px; cursor: pointer; transition: border-color 0.3s ease, color 0.3s ease, transform 0.2s var(--flip); }
.chips button:active { transform: scale(0.96); }
.chips button.on { border-color: var(--red); color: var(--red); }

/* ---- the Donut brief: step one of their own pipeline ---- */
.donut-head { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; margin-bottom: 14px; }
.d-logo { font-family: 'Glacial Indifference', sans-serif; font-size: 24px; color: var(--ink); display: inline-flex; align-items: center; }
.d-logo .ring { display: inline-block; width: 14px; height: 14px; border-radius: 50%; border: 4px solid var(--red); margin: 0 1px; box-sizing: border-box; transition: transform 0.6s var(--flip); }
.form-stage:hover .d-logo .ring { transform: rotate(180deg) translateY(1px); }
.d-sub { font-family: 'Lekton', monospace; font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-soft); }
.d-track { display: flex; align-items: center; gap: 5px; margin-bottom: 22px; }
.d-track .dotp { width: 10px; height: 10px; border-radius: 50%; background: var(--paper-2); border: 1px solid var(--line); flex: none; }
.d-track .dotp.now { background: var(--red); border-color: var(--red); }
@media (prefers-reduced-motion: no-preference) { .d-track .dotp.now { animation: dpulse 2.4s ease-in-out infinite; } }
@keyframes dpulse { 0%, 100% { box-shadow: 0 0 0 3px rgba(174,34,33,0.18); } 50% { box-shadow: 0 0 0 6px rgba(174,34,33,0.06); } }
.d-track .barp { width: 16px; height: 1px; background: var(--line); flex: none; }
.d-track .lbl { margin-left: 10px; font-family: 'Lekton', monospace; font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ink-soft); }
.dstep { border: 0; padding: 0; margin: 0; min-width: 0; display: none; }
.dstep.on { display: grid; gap: 14px; animation: stepIn 0.5s var(--flip) both; transform-origin: 50% 30%; }
@keyframes stepIn { from { opacity: 0; transform: rotateX(-18deg) translateY(10px); } to { opacity: 1; transform: none; } }
.dstep legend { font-family: 'Lekton', monospace; font-weight: 700; font-size: 12.5px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--red); padding: 0; margin-bottom: 2px; }
.dnext { font-family: 'Lekton', monospace; font-weight: 700; font-size: 14px; letter-spacing: 0.12em; text-transform: uppercase; background: var(--ink); color: var(--paper); border: none; padding: 15px 24px; cursor: pointer; justify-self: start; display: inline-flex; align-items: center; gap: 10px; transition: background 0.3s ease, transform 0.3s var(--flip); }
.dnext:hover { background: var(--red); transform: translateY(-1px); }
.dback { font-family: 'Lekton', monospace; font-size: 12.5px; letter-spacing: 0.08em; text-transform: uppercase; background: none; border: none; color: var(--ink-soft); cursor: pointer; padding: 0; justify-self: start; text-decoration: underline; text-underline-offset: 3px; }
.dback:hover { color: var(--red); }
.d-fine { font-family: 'Lekton', monospace; font-size: 12px; color: var(--ink-soft); }

/* form: perspective stage so success can arrive as a half-turn */
.form-stage { perspective: 1200px; position: relative; }
form.enquiry { display: grid; gap: 14px; transition: transform 0.6s var(--flip), opacity 0.45s ease; transform-origin: 50% 40%; }
.form-stage.sent form.enquiry { transform: rotateX(-90deg); opacity: 0; pointer-events: none; position: absolute; inset: 0; }
form.enquiry .two { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 520px) { form.enquiry .two { grid-template-columns: 1fr; } }
form.enquiry label { font-family: 'Lekton', monospace; font-size: 12.5px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-soft); display: grid; gap: 6px; }
form.enquiry input, form.enquiry textarea {
  font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 16px; color: var(--ink);
  background: #F5F3EE; border: 1px solid var(--line); border-bottom: 2px solid var(--line);
  padding: 12px 14px; width: 100%; transition: border-color 0.3s ease, background 0.3s ease;
}
form.enquiry input:focus, form.enquiry textarea:focus { outline: none; border-bottom-color: var(--red); background: #F7F5F0; }
form.enquiry input[aria-invalid="true"] { border-bottom-color: var(--red-deep); background: rgba(174,34,33,0.05); }
form.enquiry textarea { min-height: 110px; resize: vertical; }
form.enquiry button[type=submit] {
  font-family: 'Lekton', monospace; font-weight: 700; font-size: 14px; letter-spacing: 0.12em; text-transform: uppercase;
  background: var(--red); color: #F5F3EE; border: none; padding: 15px 24px; cursor: pointer; justify-self: start;
  display: inline-flex; align-items: center; gap: 10px;
  transition: background 0.3s ease, transform 0.3s var(--flip);
}
form.enquiry button[type=submit]:hover { background: var(--red-deep); transform: translateY(-1px); }
form.enquiry button[type=submit] .spark { display: inline-block; transition: transform 0.5s var(--flip); }
form.enquiry button[type=submit]:hover .spark { transform: rotate(180deg); }
form.enquiry button[type=submit].busy .spark { animation: spin 0.9s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
form.enquiry .fine { font-family: 'Lekton', monospace; font-size: 12px; color: var(--ink-soft); }
form.enquiry .err { font-family: 'Lekton', monospace; font-size: 12.5px; color: var(--red-deep); display: none; }
form.enquiry.show-err .err { display: block; }
.form-done {
  position: absolute; inset: 0; display: none; flex-direction: column; justify-content: center; align-items: flex-start;
  background: var(--granite); color: #EDEAE3; padding: 34px 32px;
  transform: rotateX(90deg); opacity: 0; transform-origin: 50% 60%;
  transition: transform 0.7s var(--flip) 0.15s, opacity 0.5s ease 0.15s;
}
.form-stage.sent .form-done { display: flex; position: relative; transform: none; opacity: 1; }
.form-done .t { font-family: 'Glacial Indifference', sans-serif; font-size: clamp(24px, 3.2vw, 32px); margin-bottom: 10px; color: #F0EEE9; }
.form-done p { color: #B7B2AA; font-size: 15px; margin: 0 0 18px; max-width: 40ch; }
.form-done a.go { font-family: 'Lekton', monospace; font-weight: 700; font-size: 13px; letter-spacing: 0.1em; text-transform: uppercase; color: #F5F3EE; background: var(--red); text-decoration: none; padding: 12px 20px; display: inline-block; transition: background 0.3s ease; }
.form-done a.go:hover { background: var(--red-deep); }

/* ---- faq ---- */
.faq { max-width: 780px; }
.faq details { border-bottom: 1px solid var(--line); padding: 6px 0; }
.faq summary { cursor: pointer; list-style: none; padding: 16px 0; font-family: 'Glacial Indifference', sans-serif; font-size: 20px; display: flex; justify-content: space-between; align-items: center; gap: 16px; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary .ind { color: var(--red); font-family: 'Lekton', monospace; font-size: 22px; line-height: 1; }
.faq summary .ind::before { content: "+"; display: inline-block; transition: transform 0.5s var(--flip); }
.faq details[open] summary .ind::before { content: "\2212"; transform: rotate(180deg); }
.faq details p { color: var(--ink-soft); font-size: 15px; margin: 0 0 18px; }
.faq details[open] p { animation: pageIn 0.45s var(--flip) both; }

/* ---- footer ---- */
footer.site { background: var(--granite); color: #B7B2AA; padding: 56px 0 44px; }
.foot { display: flex; flex-wrap: wrap; gap: 30px 60px; justify-content: space-between; align-items: flex-start; }
.foot .brandcol .brand { font-size: 32px; color: #F0EEE9; }
.foot .brandcol .brand i { background: linear-gradient(168deg, #C4635E, #9C403D); }
.foot .brandcol p { font-family: 'Lekton', monospace; font-size: 12.5px; color: #98938B; margin: 16px 0 0; max-width: 30ch; }
.foot .col { font-family: 'Lekton', monospace; font-size: 13.5px; line-height: 1.95; }
.foot .col a { color: #B7B2AA; text-decoration: none; display: inline-block; transition: color 0.3s ease, transform 0.3s var(--flip); }
.foot .col a:hover { color: var(--salmon); transform: translateX(3px); }
.foot .col .t { font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; font-size: 11.5px; color: #F0EEE9; }
.legal { margin-top: 40px; padding-top: 20px; border-top: 1px solid var(--line-d); font-family: 'Lekton', monospace; font-size: 11.5px; color: #98938B; display: flex; flex-wrap: wrap; gap: 8px 24px; justify-content: space-between; }
.legal a { color: #B7B2AA; text-decoration: none; }
.legal a:hover { color: var(--salmon); }
.legal .aphyx-credit a { color: #C9C4BC; }

/* ---- 404 ---- */
.lost { min-height: 78vh; display: flex; align-items: center; text-align: center; padding: 140px 0 60px; }
.lost .inner { width: 100%; }
.lost .digits { font-family: 'Glacial Indifference', sans-serif; font-size: clamp(90px, 22vw, 220px); line-height: 1; display: flex; justify-content: center; align-items: center; gap: 0.06em; color: var(--ink); }
.lost .digits .flip { display: inline-block; transform: scaleY(-1); color: var(--red); animation: reflip 3.4s var(--flip) infinite; }
@keyframes reflip { 0%, 42% { transform: scaleY(-1); } 50%, 92% { transform: scaleY(1); } 100% { transform: scaleY(-1); } }
.lost p { max-width: 44ch; margin: 18px auto 26px; color: var(--ink-soft); }

/* ---- reveal (gated by .js so no-JS renders everything visible) ---- */
.reveal { transition: opacity 0.7s ease, transform 0.7s var(--flip); }
.js .reveal { opacity: 0; transform: translateY(18px); }
.js .reveal.in { opacity: 1; transform: none; }

/* ---- reduced motion: the site holds still ---- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .anim-fogA, .anim-fogB, .anim-ken { animation: none; }
  .js main, .js .page-body, .js .hero .dive span, .js .hero .kicker, .js .hero .sub, .js .hero .down { animation: none; }
  ::view-transition-old(root), ::view-transition-new(root) { animation: none; }
  .reveal, .js .reveal { opacity: 1; transform: none; transition: none; }
  .qline, .qtotal, .js .qline, .js .qtotal { opacity: 1; transform: none; transition: none; }
  .js .truth:not(.in) .num b { transform: none; }
  .truth .num b, .mask-mark, .case img, .story .fr img, .case .tag,
  .brand i, .why-item .k, .step .idx, .incl li::before, .cta .glyph,
  .faq summary .ind, .menu-btn span, .mobile-menu a.mm { transition: none; }
  .js .reveal .mask-mark { transform: none; opacity: 1; }
  .visual:hover .mask-mark, .case:hover img, .why-item:hover .k, .brand:hover i { transform: none; }
  .lost .digits .flip { animation: none; }
  .dstep.on { animation: none; }
  .d-logo .ring, .form-stage:hover .d-logo .ring { transition: none; transform: none; }
  form.enquiry, .form-done { transition: none; }
  .form-stage.sent form.enquiry { display: none; }
  .form-stage.sent .form-done { transform: none; opacity: 1; }
}
