/* Comme il faut — Framer-style layer: historical logo, sketch lens, scroll walkthrough. */

/* ---------- Logo ---------- */
.logo { display: block; height: 2.25rem; width: calc(2.25rem * 5.056); fill: currentColor; stroke: none; color: var(--rose); }
.logo use { fill: currentColor; }

/* ---------- Header ---------- */
.site-header { position: fixed; inset: 0 0 auto; z-index: 50; color: var(--primary); transition: transform .5s var(--ease-out), background-color .35s ease, color .35s ease, border-color .35s ease; border-bottom: var(--stroke) solid transparent; }
.header-inner { display: flex; align-items: center; gap: var(--space-12); min-height: 5.5rem; }
.site-header .wordmark { display: flex; align-items: center; gap: var(--space-5); }
.site-header .wordmark span { font-family: var(--font-mono); font-size: .6875rem; letter-spacing: .08em; text-transform: uppercase; color: var(--secondary); padding-left: var(--space-5); border-left: var(--stroke) solid var(--default); line-height: 1.2; transition: color .35s ease, border-color .35s ease; }
.site-header.is-solid { background: color-mix(in srgb, var(--page) 84%, transparent); -webkit-backdrop-filter: blur(16px) saturate(1.2); backdrop-filter: blur(16px) saturate(1.2); border-bottom-color: var(--default); }
.site-header.is-hidden { transform: translateY(-100%); }
body:not(.tpl-home) main { padding-top: 5.5rem; }
.tpl-home .site-header:not(.is-solid) { color: #fff; }
.tpl-home .site-header:not(.is-solid) .wordmark span { color: rgb(255 255 255 / .75); border-color: rgb(255 255 255 / .35); }
.tpl-home .site-header:not(.is-solid) .language-switch a { color: rgb(255 255 255 / .75); }
.tpl-home .site-header:not(.is-solid) .language-switch a[aria-current] { color: #fff; }
.tpl-home .site-header .wordmark .logo { transition: opacity .5s ease, transform .6s var(--ease-out); }
.tpl-home .site-header:not(.is-solid) .wordmark .logo { opacity: 0; transform: translateY(.5rem); }
.primary-nav a { position: relative; border-bottom: 0; }
.primary-nav a::after { content: ""; position: absolute; left: 0; right: 0; bottom: .55rem; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform .45s var(--ease-out); }
.primary-nav a:hover::after, .primary-nav a[aria-current]::after { transform: scaleX(1); transform-origin: left; }

/* ---------- Shared type accents ---------- */
.eyebrow { font-family: var(--font-mono); font-weight: 500; font-size: .6875rem; letter-spacing: .12em; }
.small-line { display: inline-block; width: var(--space-8); height: var(--stroke); background: currentColor; opacity: .6; }
h1 em, h2 em { color: var(--rose-ink); }
.button { border-radius: 999px; padding-inline: var(--space-8); transition: background .3s ease, color .3s ease, border-color .3s ease, transform .4s var(--ease-out); }
.button:hover { transform: translateY(-2px); }
.button-light { background: #fff; border-color: #fff; color: #1a1916; }
.button-light:hover { background: transparent; color: #fff; }

/* ---------- Hero ---------- */
.hero { --logo-w: min(100vw - 2 * var(--gutter), var(--container) - 2 * var(--gutter), 22svh * 5.056); position: relative; min-height: 100svh; overflow: hidden; color: #fff; background: #12110f; isolation: isolate; cursor: crosshair; }
.hero-media { position: absolute; inset: 0; z-index: 0; }
.hero-media > img { width: 100%; height: 100%; object-fit: cover; object-position: center 55%; }
.hero-media > img, .hero-media > .lens-canvas { transform: scale(calc(1.06 - var(--hp, 0) * .02)) translateY(calc(var(--hp, 0) * 6%)); transform-origin: center 60%; }
.js-motion .hero-media[data-intro]:not(.is-revealed) { background: var(--paper); }
.js-motion .hero-media[data-intro]:not(.is-revealed) > img { opacity: 0; }
.hero-shade { transition: opacity 1.4s ease; }
.js-motion .hero-media[data-intro]:not(.is-revealed) .hero-shade, .hero-media.is-intro .hero-shade { opacity: .28; }
.tpl-home .site-header:not(.is-solid) .wordmark span { opacity: 0; }
.hero-shade { position: absolute; inset: 0; z-index: 2; pointer-events: none; background: linear-gradient(180deg, rgb(18 17 15 / .55) 0%, rgb(18 17 15 / 0) 24%, rgb(18 17 15 / 0) 42%, rgb(18 17 15 / .78) 100%), radial-gradient(ellipse 70% 60% at 0% 70%, rgb(18 17 15 / .55), transparent 70%); }
.hero-content { position: relative; z-index: 3; min-height: 100svh; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: var(--space-12); padding-top: 8rem; padding-bottom: calc(var(--logo-w) * .198 + var(--space-10)); pointer-events: none; }
.hero-content a, .hero-content button { pointer-events: auto; cursor: pointer; }
.hero .eyebrow { color: rgb(255 255 255 / .82); display: flex; align-items: center; gap: var(--space-3); }
.hero h1 { color: #fff; font-size: clamp(3rem, 6vw, 6.5rem); margin-block: var(--space-5) var(--space-5); }
.hero-intro { max-width: 30rem; color: rgb(255 255 255 / .84); margin-bottom: var(--space-8); }
.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-8); }
.hero .text-link { border-color: rgb(255 255 255 / .5); }
.hero .text-link:hover { color: #fff; border-color: #fff; }
.hero-side { display: grid; justify-items: end; gap: var(--space-4); text-align: right; font-family: var(--font-mono); font-size: .6875rem; letter-spacing: .06em; text-transform: uppercase; color: rgb(255 255 255 / .8); }
.hero-hint { display: flex; align-items: center; gap: var(--space-3); max-width: 19rem; line-height: 1.5; }
.hint-cross { position: relative; flex: none; width: 1.75rem; height: 1.75rem; border: 1px solid var(--rose); border-radius: 50%; animation: hint-pulse 2.4s ease-in-out infinite; }
.hint-cross::before, .hint-cross::after { content: ""; position: absolute; background: var(--rose); left: 50%; top: 50%; }
.hint-cross::before { width: 1px; height: 2.4rem; transform: translate(-50%, -50%); }
.hint-cross::after { height: 1px; width: 2.4rem; transform: translate(-50%, -50%); }
@keyframes hint-pulse { 50% { transform: scale(.82); } }
.hint-touch { display: none; }
@media (hover: none) { .hint-fine { display: none; } .hint-touch { display: inline; } }
.hero-caption { display: inline-flex; gap: var(--space-3); align-items: center; border-bottom: 1px solid rgb(255 255 255 / .35); padding-block: var(--space-2); }
.hero-caption:hover { border-color: #fff; }
.hero-progress { color: var(--rose); min-width: 4ch; }
.hero-progress:empty { display: none; }
.hero-logo { position: absolute; left: 0; right: 0; bottom: var(--space-6); z-index: 3; pointer-events: none; transform: translateY(calc(var(--hp, 0) * -40%)) scale(calc(1 - var(--hp, 0) * .12)); transform-origin: 50% 100%; opacity: calc(1 - var(--hp, 0) * 1.4); }
.logo-giant { width: var(--logo-w); height: auto; aspect-ratio: 3524 / 697; color: var(--rose); filter: drop-shadow(0 .6rem 2.2rem rgb(0 0 0 / .35)); }
.js-motion .logo-giant { -webkit-mask-image: linear-gradient(100deg, #000 42%, transparent 58%); mask-image: linear-gradient(100deg, #000 42%, transparent 58%); -webkit-mask-size: 320% 100%; mask-size: 320% 100%; -webkit-mask-position: 100% 0; mask-position: 100% 0; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; animation: logo-draw 2.8s var(--ease-inout) .5s forwards; }
@keyframes logo-draw { to { -webkit-mask-position: 0 0; mask-position: 0 0; } }

/* ---------- Sketch lens ---------- */
.lens-canvas { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; pointer-events: none; }
.hero-media .lens-canvas { z-index: 1; }
@media (hover: hover) and (pointer: fine) {
  [data-sketch], .hero { cursor: none; }
  .hero a, .walk a { cursor: pointer; }
}
.lens-cursor { position: fixed; left: 0; top: 0; z-index: 90; pointer-events: none; opacity: 0; transition: opacity .3s ease; }
.lens-cursor.is-on { opacity: 1; }
.lens-ring { position: absolute; left: -2.6rem; top: -2.6rem; width: 5.2rem; height: 5.2rem; border: 1px solid var(--rose); border-radius: 50%; }
.lens-ring::before, .lens-ring::after { content: ""; position: absolute; background: var(--rose); left: 50%; top: 50%; }
.lens-ring::before { width: 1px; height: 1.4rem; transform: translate(-50%, -50%); }
.lens-ring::after { height: 1px; width: 1.4rem; transform: translate(-50%, -50%); }
.lens-label { position: absolute; left: 3.2rem; top: 1.6rem; white-space: nowrap; font-family: var(--font-mono); font-size: .625rem; letter-spacing: .08em; color: #fff; background: rgb(20 19 15 / .72); padding: .2rem .45rem; }

/* ---------- Walkthrough ---------- */
.walk-intro { display: grid; grid-template-columns: 1.1fr .9fr; gap: var(--space-16); align-items: end; padding-block: var(--section) var(--space-16); }
.walk-intro h2 { max-width: 14ch; }
.walk-intro-side .lead { margin-bottom: var(--space-8); max-width: 32rem; }
.walk { position: relative; height: calc(var(--rooms) * 80svh + 100svh); background: #12110f; color: #fff; }
.walk-sticky { position: sticky; top: 0; height: 100svh; overflow: hidden; }
.walk-stage { position: absolute; inset: 0; }
.walk-room { position: absolute; inset: 0; margin: 0; opacity: 0; visibility: hidden; will-change: opacity, transform; transform-origin: 50% 55%; }
.walk-room.is-near { visibility: visible; }
.walk-room::after { content: ""; position: absolute; inset: 0; background: #0b0a09; opacity: var(--dim, 0); pointer-events: none; z-index: 2; }
.walk-room > img { width: 100%; height: 100%; object-fit: cover; }
.walk-room.is-drawing { display: flex; align-items: center; justify-content: center; padding: 6.5rem var(--gutter) 12.5rem; background-color: var(--paper); background-image: linear-gradient(rgb(120 140 160 / .14) 1px, transparent 1px), linear-gradient(90deg, rgb(120 140 160 / .14) 1px, transparent 1px); background-size: 2rem 2rem; }
.walk-room.is-drawing > img { width: auto; height: auto; max-width: 100%; max-height: 100%; box-shadow: 0 2rem 4rem -1.5rem rgb(20 19 15 / .35); }
.walk-shade { position: absolute; inset: 0; z-index: 2; pointer-events: none; background: linear-gradient(180deg, rgb(18 17 15 / .6) 0%, transparent 22%, transparent 55%, rgb(18 17 15 / .8) 100%); transition: opacity .6s ease; }
.walk.is-light .walk-shade { opacity: 0; }
.walk-ui { position: absolute; inset: 0; z-index: 3; display: grid; grid-template-rows: auto 1fr auto; padding-top: 7rem; padding-bottom: var(--space-8); pointer-events: none; transition: color .6s ease; }
.walk.is-light .walk-ui { color: var(--ink); }
.walk-ui a { pointer-events: auto; }
.walk-top { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-6); }
.walk-top .eyebrow { color: inherit; opacity: .85; margin: 0; }
.walk-count { font-family: var(--font-mono); font-size: .8125rem; letter-spacing: .08em; }
.walk-count span { color: var(--rose); }
.walk-captions { list-style: none; margin: 0; padding: 0; position: relative; align-self: end; min-height: 9rem; }
.walk-caption { position: absolute; left: 0; bottom: 0; display: grid; gap: var(--space-3); opacity: 0; transform: translateY(1.5rem); transition: opacity .6s ease, transform .9s var(--ease-out); }
.walk-caption.is-active { opacity: 1; transform: none; }
.walk-meta { font-family: var(--font-mono); font-size: .6875rem; letter-spacing: .1em; text-transform: uppercase; opacity: .85; }
.walk-title { font-family: var(--font-display); font-size: clamp(2.6rem, 6.4vw, 6rem); line-height: 1; letter-spacing: -.03em; }
.walk-title span { font-size: .5em; vertical-align: .6em; color: var(--rose); transition: transform .4s var(--ease-out); display: inline-block; }
a.walk-title:hover span { transform: translate(.15em, -.15em); }
.walk-bottom { display: flex; justify-content: space-between; align-items: center; gap: var(--space-6); padding-top: var(--space-6); }
.walk-hint { font-family: var(--font-mono); font-size: .6875rem; letter-spacing: .08em; text-transform: uppercase; opacity: .75; display: flex; align-items: center; gap: var(--space-3); }
.walk-hint::before { content: ""; width: 1px; height: 1.5rem; background: currentColor; animation: walk-tick 1.8s ease-in-out infinite; transform-origin: top; }

.walk-hint { transition: opacity .4s ease; }
.walk.is-last .walk-hint { opacity: 0; }
@keyframes walk-tick { 0% { transform: scaleY(0); } 50% { transform: scaleY(1); transform-origin: top; } 51% { transform-origin: bottom; } 100% { transform: scaleY(0); transform-origin: bottom; } }
.walk-rail { display: flex; gap: .375rem; }
.walk-rail span { position: relative; width: clamp(1rem, 3vw, 2.75rem); height: 2px; background: color-mix(in srgb, currentColor 25%, transparent); overflow: hidden; }
.walk-rail i { position: absolute; inset: 0; background: var(--rose); transform: scaleX(var(--fill, 0)); transform-origin: left; }
.skip-walk { position: absolute; left: var(--gutter); top: 6rem; z-index: 6; padding: var(--space-2) var(--space-4); background: #fff; color: #12110f; clip-path: inset(50%); width: 1px; height: 1px; overflow: hidden; white-space: nowrap; }
.skip-walk:focus { position: sticky; clip-path: none; width: auto; height: auto; overflow: visible; }
.walk-end { display: block; height: 0; }
.tpl-project .walk { margin-top: var(--space-8); }

/* ---------- Cards, gallery, next project ---------- */
.project-grid { column-gap: var(--space-8); }
.project-image { border-radius: 2px; }
.project-image img { transition: transform 1.1s var(--ease-out); }
.project-image:hover img { transform: scale(1.04); }
.image-arrow { z-index: 2; border-radius: 50%; background: #fff; color: #12110f; transform: scale(0); transition: transform .45s var(--ease-out); }
.project-image:hover .image-arrow, .project-image:focus-visible .image-arrow { transform: scale(1); }
.project-info h2, .project-info h3 { font-size: clamp(1.6rem, 2.4vw, 2.2rem); }
.project-number { font-family: var(--font-mono); }
.gallery-section { padding-top: var(--section); }
.project-description { margin-bottom: var(--space-16); }
.gallery { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-4); }
.gallery-item { overflow: hidden; }
.gallery-item img { aspect-ratio: 3 / 2; object-fit: cover; transition: transform .9s var(--ease-out); }
.gallery-item:hover img { transform: scale(1.05); }
.gallery-item > span { font-family: var(--font-mono); font-size: .6875rem; letter-spacing: .04em; min-height: 2.75rem; }
.next-project { position: relative; display: block; overflow: hidden; color: #fff; background: #12110f; min-height: 70svh; isolation: isolate; }
.next-media { position: absolute; inset: 0; z-index: -1; }
.next-media img { width: 100%; height: 100%; object-fit: cover; opacity: .55; transition: transform 1.4s var(--ease-out), opacity .6s ease; }
.next-project:hover .next-media img { transform: scale(1.05); opacity: .7; }
.next-copy { min-height: 70svh; display: flex; flex-direction: column; justify-content: flex-end; padding-bottom: var(--space-16); }
.next-copy .eyebrow { color: rgb(255 255 255 / .8); }
.next-title { font-family: var(--font-display); font-size: clamp(3rem, 9vw, 8.5rem); line-height: .95; letter-spacing: -.035em; }
.next-title span { color: var(--rose); display: inline-block; transition: transform .5s var(--ease-out); }
.next-project:hover .next-title span { transform: translateX(.2em); }

/* ---------- Footer & contact band ---------- */
.contact-band { position: relative; overflow: hidden; }
.round-link { transition: transform .6s var(--ease-out), background .3s ease, color .3s ease; }
.round-link:hover { background: var(--rose); border-color: var(--rose); color: #12110f; }
.site-footer .footer-top .logo { height: 3rem; width: calc(3rem * 5.056); }

/* ---------- Reveal ---------- */
.js-motion [data-reveal] { opacity: 0; transform: translateY(1.75rem); transition: opacity .9s ease, transform 1.2s var(--ease-out); transition-delay: var(--d, 0s); }
.js-motion [data-reveal].is-in { opacity: 1; transform: none; }
.split-word { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .12em; margin-bottom: -.12em; }
.split-word > span { display: inline-block; transform: translateY(105%); transition: transform 1.1s var(--ease-out); transition-delay: calc(var(--i) * 70ms + var(--d, 0s)); }
.is-in .split-word > span, .split-word.is-in > span { transform: none; }

/* ---------- Responsive ---------- */
@media (max-width: 1000px) {
  .header-inner { gap: var(--space-6); }
  .site-header .wordmark span { display: none; }
  .walk-intro { grid-template-columns: 1fr; gap: var(--space-8); }
  .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .header-inner { min-height: 4.5rem; gap: var(--space-2); flex-wrap: wrap; padding-block: var(--space-3); }
  body:not(.tpl-home) main { padding-top: 4.5rem; }
  .logo { height: 1.75rem; width: calc(1.75rem * 5.056); }
  .site-header .primary-nav.is-open { color: var(--primary); }
  .site-header:has(.primary-nav.is-open) { background: var(--page); color: var(--primary); }
  .site-header:has(.primary-nav.is-open) .wordmark .logo { opacity: 1; transform: none; }
  .hero-content { grid-template-columns: 1fr; padding-top: 7rem; gap: var(--space-8); }
  .hero-shade { background: linear-gradient(180deg, rgb(18 17 15 / .6) 0%, rgb(18 17 15 / .5) 45%, rgb(18 17 15 / .82) 100%); }
  .hero-media > img { object-position: 30% 55%; }
  .hero h1 { font-size: clamp(3rem, 13vw, 4.5rem); }
  .hero-side { justify-items: start; text-align: left; }
  .hero-actions { gap: var(--space-5); }
  .walk { height: calc(var(--rooms) * 70svh + 100svh); }
  .walk-ui { padding-top: 5.5rem; padding-bottom: var(--space-5); }
  .walk-hint { display: none; }
  .walk-bottom { justify-content: flex-start; }
  .walk-room.is-drawing { padding: 5.5rem var(--space-3) 11rem; }
  .project-grid { column-gap: var(--space-5); }
  .next-copy, .next-project { min-height: 50svh; }
}
@media (max-width: 420px) {
  .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (prefers-reduced-motion: reduce) {
  .js-motion [data-reveal], .split-word > span { opacity: 1; transform: none; }
  .hero-media > img, .hero-logo { transform: none; }
}
.tpl-home:has(.hero-media.is-intro) .site-header:not(.is-solid) { color: var(--ink); }
