@import url('https://fonts.googleapis.com/css2?family=Bodoni+Moda:ital,opsz,wght@0,6..96,400;0,6..96,500;1,6..96,400&family=Sora:wght@400;500&display=swap');

:root {
  --mist: #d7ddea;
  --milk: #f1eee8;
  --ink: #28232b;
  --wine: #7e415b;
  --blush: #c497aa;
  --moss: #cdd8c4;
  --gallery: #f6f7f3;
  --line: rgba(40, 35, 43, .25);
  --serif: 'Bodoni Moda', Georgia, serif;
  --sans: 'Sora', Arial, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--mist); color: var(--ink); font-family: var(--sans); cursor: none; }
body::after { content: ''; position: fixed; inset: 0; z-index: 100; opacity: .15; pointer-events: none; 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='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.12'/%3E%3C/svg%3E"); }
a, button, input, textarea { cursor: none; }
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
button, input, textarea { font: inherit; }

.site-header { height: 72px; padding: 0 28px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 30; background: color-mix(in srgb, var(--mist) 82%, transparent); backdrop-filter: blur(12px); transition: transform .35s ease, background .35s ease; }
.site-header.is-scrolled { background: color-mix(in srgb, var(--mist) 94%, transparent); }
.brand { font-size: 11px; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; }
.nav { display: flex; gap: 32px; font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }
.nav a, .header-cta { position: relative; }
.nav a::after, .header-cta::after { content: ''; position: absolute; left: 0; bottom: -5px; width: 100%; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform .3s; }
.nav a:hover::after, .nav a[aria-current='page']::after, .header-cta:hover::after { transform: scaleX(1); transform-origin: left; }
.header-cta { justify-self: end; font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }
.menu-button { display: none; border: 0; background: transparent; text-transform: uppercase; letter-spacing: .1em; }

.cursor { width: 40px; height: 40px; position: fixed; left: 50vw; top: 50vh; z-index: 700; pointer-events: none; transform: translate(-50%, -50%); color: var(--blush); opacity: 1; transition: opacity .15s, color .2s, transform .2s; }
.cursor::before, .cursor::after { content: ''; position: absolute; background: currentColor; }
.cursor::before { left: 0; right: 0; top: 50%; height: 1px; }
.cursor::after { top: 0; bottom: 0; left: 50%; width: 1px; }
.cursor span { position: absolute; left: 27px; top: 24px; color: var(--ink); font-size: 8px; letter-spacing: .1em; }
.cursor.is-link { color: var(--wine); transform: translate(-50%, -50%) rotate(45deg) scale(.78); }

.hero { min-height: calc(100svh - 72px); position: relative; overflow: hidden; padding: 24px 3vw 44px; }
.hero::before { content: ''; position: absolute; width: 45vw; height: 70vh; left: -12vw; top: 8vh; border-radius: 48% 52% 40% 60% / 38% 44% 56% 62%; background: color-mix(in srgb, var(--wine) 25%, transparent); transform: rotate(12deg); }
.hero-kicker { position: relative; z-index: 5; font-size: 10px; letter-spacing: .12em; text-transform: uppercase; }
.hero-title { position: relative; z-index: 5; margin: 34px 0 0; font: 400 clamp(80px, 12.5vw, 180px)/.72 var(--serif); letter-spacing: -.055em; transition: transform .6s cubic-bezier(.2,.8,.2,1); will-change: transform; }
.hero-title span { display: block; }
.hero-title em { display: block; margin-left: 15vw; color: var(--milk); text-shadow: 1px 1px 0 var(--ink); }
.hero-media { position: absolute; z-index: 2; right: 7vw; top: 24px; width: min(42vw, 620px); height: calc(100% - 48px); box-shadow: 0 35px 80px rgba(40, 35, 43, .24); overflow: hidden; transition: transform .8s cubic-bezier(.2,.8,.2,1); will-change: transform; }
.hero-media img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.035); transition: transform 1.2s cubic-bezier(.2,.8,.2,1); }
.hero:hover .hero-media img { transform: scale(1.075); }
.hero-slide { position: absolute; inset: 0; opacity: 0; transform: scale(1.075) !important; transition: opacity 1.15s ease, transform 5.2s cubic-bezier(.2,.7,.2,1) !important; }
.hero-slide.is-active { z-index: 1; opacity: 1; transform: scale(1.025) !important; }
.hero-carousel-simple .hero-media { width: min(46vw, 700px); right: 6vw; }
.hero-carousel-simple { background: radial-gradient(ellipse at 73% 28%, #fff 0, var(--gallery) 38%, #ebece7 100%); }
.hero-carousel-simple::before { display: none; }
.hero-carousel-simple::after { content: ''; position: absolute; z-index: 0; left: 0; right: 0; top: 68%; height: 1px; background: rgba(126, 65, 91, .22); box-shadow: 0 16px 35px rgba(40,35,43,.08); }
.hero-carousel-simple .hero-kicker { color: var(--wine); }
.hero-carousel-simple .hero-title { pointer-events: none; color: var(--wine); }
.hero-carousel-simple .hero-title em { color: var(--gallery); text-shadow: 1px 1px 0 var(--wine), -1px -1px 0 var(--wine); }
.hero-carousel-simple .hero-media { padding: 15px 11px; background: #fbfbf8; border: 1px solid rgba(126, 65, 91, .72); box-shadow: 0 0 0 5px #fbfbf8, 0 0 0 6px rgba(126,65,91,.32), 0 32px 80px rgba(40,35,43,.18); }
.hero-carousel-simple .hero-slide { inset: 15px 11px; width: calc(100% - 22px); height: calc(100% - 30px); }
.gallery-note { position: absolute; z-index: 7; right: 1.6vw; bottom: 34px; width: 132px; padding: 14px 12px; background: #fbfbf8; border: 1px solid rgba(40,35,43,.42); box-shadow: 5px 7px 0 rgba(126,65,91,.18); transform: rotate(-1.5deg); }
.gallery-note span, .gallery-note small { display: block; font-size: 7px; letter-spacing: .12em; text-transform: uppercase; }
.gallery-note strong { display: block; margin: 16px 0 13px; font: italic 400 21px/1 var(--serif); color: var(--wine); }
.hero-carousel-simple .carousel-controls { bottom: 26px; }
.scroll-cue { position: absolute; z-index: 8; left: 3vw; bottom: 28px; padding-bottom: 5px; border-bottom: 1px solid currentColor; color: var(--wine); font-size: 9px; letter-spacing: .12em; text-transform: uppercase; }
.scroll-section { scroll-margin-top: 72px; }
.section-heading { min-height: 410px; padding: 52px 4vw; display: grid; grid-template-columns: 150px 1fr minmax(220px, 30%); align-items: end; gap: 30px; background: var(--gallery); border-top: 8px double rgba(126,65,91,.62); }
.section-heading > span, .section-label { align-self: start; font-size: 9px; letter-spacing: .12em; text-transform: uppercase; }
.section-heading h2 { margin: 0; font: 400 clamp(64px, 9.5vw, 138px)/.78 var(--serif); letter-spacing: -.05em; }
.section-heading h2 em { color: var(--wine); }
.section-heading p { margin: 0 0 8px; font-size: 13px; line-height: 1.65; }
.about-section .section-heading { background: var(--mist); }
.services-section .section-heading { background: var(--wine); color: var(--gallery); }
.services-section .section-heading h2 em { color: var(--blush); }
.service-offer { padding: 5vw 4vw 7vw; background: var(--gallery); }
.offer-summary { display: grid; grid-template-columns: 1fr 300px; gap: 6vw; align-items: end; padding-bottom: 55px; border-bottom: 1px solid var(--wine); }
.offer-label, .offer-terms span { display: block; color: var(--wine); font-size: 9px; letter-spacing: .12em; text-transform: uppercase; }
.offer-summary h3 { margin: 30px 0 22px; max-width: 820px; font: 400 clamp(56px, 7.5vw, 112px)/.82 var(--serif); letter-spacing: -.045em; }
.offer-summary p { max-width: 570px; font-size: 13px; line-height: 1.7; }
.price-ticket { min-height: 270px; display: flex; flex-direction: column; justify-content: space-between; padding: 28px; background: var(--wine); color: var(--gallery); box-shadow: 10px 12px 0 var(--blush); transform: rotate(1deg); }
.price-ticket small, .price-ticket span { font-size: 9px; letter-spacing: .12em; text-transform: uppercase; }
.price-ticket strong { font: italic 400 94px/.8 var(--serif); }
.included { display: grid; grid-template-columns: 220px 1fr; gap: 40px; padding: 58px 0; border-bottom: 1px solid var(--line); }
.included ul { margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; column-gap: 7vw; list-style: none; }
.included li { position: relative; padding: 14px 0 14px 30px; border-top: 1px solid var(--line); font-size: 13px; line-height: 1.5; }
.included li::before { content: ''; position: absolute; left: 0; top: 23px; width: 14px; height: 1px; background: var(--wine); }
.offer-terms { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; padding: 55px 0; }
.offer-terms article { padding: 0 28px; border-left: 1px solid var(--line); }
.offer-terms article:first-child { padding-left: 0; border-left: 0; }
.offer-terms p { margin: 18px 0 0; font-size: 12px; line-height: 1.7; }
.estimate-note { display: grid; grid-template-columns: 1fr auto; gap: 40px; align-items: end; padding: 38px; background: var(--mist); border: 1px solid rgba(126,65,91,.35); }
.estimate-note p { max-width: 750px; margin: 0; font: 400 clamp(28px, 3.2vw, 48px)/1 var(--serif); }
.estimate-note a { padding-bottom: 6px; border-bottom: 1px solid currentColor; color: var(--wine); font-size: 9px; letter-spacing: .12em; text-transform: uppercase; }
.carousel-controls { position: absolute; z-index: 12; right: 2vw; bottom: 20px; display: flex; align-items: stretch; background: var(--milk); border: 1px solid var(--ink); }
.carousel-controls button { min-width: 54px; border: 0; border-right: 1px solid var(--ink); background: transparent; color: var(--ink); padding: 12px 14px; }
.carousel-controls button:last-child { border-right: 0; }
.carousel-controls > button:first-child, .carousel-controls > button:last-child { font-size: 20px; }
.carousel-tab { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 10px; min-width: 175px !important; text-align: left; }
.carousel-tab b { font: 400 28px var(--serif); }
.carousel-tab span { font-size: 9px; letter-spacing: .07em; text-transform: uppercase; }
.carousel-tab.is-active { background: var(--wine); color: var(--milk); }
.carousel-controls-simple .carousel-tab { min-width: 108px !important; grid-template-columns: 1fr; text-align: center; }
.carousel-controls-simple .carousel-tab span { display: none; }

.project-portals { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; padding: 4vw; background: var(--wine); border-block: 1px solid var(--wine); }
.project-portals a { min-height: 590px; position: relative; display: grid; grid-template-rows: 1fr auto; align-items: end; gap: 22px; padding: 26px; overflow: hidden; background: var(--gallery); border-right: 0; }
.project-portals a:last-child { border-right: 0; }
.project-portals span { position: relative; z-index: 2; display: grid; grid-template-columns: 56px minmax(0, 1fr); align-items: end; gap: 18px; padding: 0 150px 0 0; order: 2; }
.project-portals b { display: block; font: 400 44px/1 var(--serif); color: var(--wine); }
.project-portals strong { display: block; font: 400 32px/1 var(--serif); }
.project-portals small { position: absolute; right: 0; bottom: 4px; display: block; margin: 0; white-space: nowrap; font-size: 9px; letter-spacing: .1em; text-transform: uppercase; }
.project-portals img { order: 1; width: 100%; height: 430px; object-fit: cover; border: 11px solid #fff; outline: 1px solid rgba(126,65,91,.45); box-shadow: 0 18px 36px rgba(40,35,43,.15); transition: transform .7s cubic-bezier(.2,.8,.2,1), box-shadow .5s ease; }
.project-portals a:hover img { transform: translateY(-7px) rotate(.35deg); box-shadow: 0 27px 55px rgba(40,35,43,.22); }
.hero-copy { position: absolute; z-index: 6; left: 5vw; bottom: 52px; max-width: 275px; }
.hero-copy h2 { margin: 0; font: 400 34px/1 var(--serif); }
.hero-copy p { margin: 12px 0 0; font-size: 12px; line-height: 1.6; }
.text-link { display: inline-block; margin-top: 18px; padding-bottom: 4px; border-bottom: 1px solid currentColor; font-size: 9px; letter-spacing: .11em; text-transform: uppercase; }
.detail-lens { position: absolute; z-index: 7; right: 41vw; bottom: 54px; width: 165px; aspect-ratio: 1; border-radius: 50%; border: 8px solid var(--blush); overflow: hidden; box-shadow: 0 18px 38px rgba(40,35,43,.18); transition: transform .7s cubic-bezier(.2,.8,.2,1); will-change: transform; }
.detail-lens img { width: 240%; max-width: none; transform: translate(-30%, -44%); }
.lens-label { position: absolute; z-index: 8; right: 40vw; bottom: 33px; padding: 8px 12px; background: var(--blush); transform: rotate(-4deg); font-size: 9px; letter-spacing: .1em; text-transform: uppercase; }

.next-project { min-height: 180px; display: grid; grid-template-columns: 1fr minmax(300px, 42%); background: var(--wine); color: var(--milk); border-block: 1px solid var(--ink); overflow: hidden; }
.next-copy { padding: 20px 30px; display: grid; grid-template-columns: auto 1fr auto; gap: 28px; align-items: center; }
.next-copy b { font: 400 72px/1 var(--serif); }
.next-copy strong { display: block; font: 400 38px/1 var(--serif); }
.next-copy small { display: block; margin-top: 8px; font-size: 9px; letter-spacing: .12em; text-transform: uppercase; }
.next-copy em { font-style: normal; font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }
.next-preview { min-height: 180px; overflow: hidden; clip-path: ellipse(80% 100% at var(--preview-x, 70%) 50%); transition: clip-path .6s ease; }
.next-preview img { width: 100%; height: 100%; object-fit: cover; }
.next-project:hover .next-preview { clip-path: ellipse(105% 130% at 50% 50%); }
.next-project .next-copy b, .next-project .next-copy strong { transition: transform .45s cubic-bezier(.2,.8,.2,1); }
.next-project:hover .next-copy b { transform: translateX(8px) rotate(-5deg); }
.next-project:hover .next-copy strong { transform: translateX(10px); }

.intro { padding: 100px 5vw; background: var(--milk); }
.intro p { max-width: 1100px; margin: 0 auto; font: 400 clamp(48px, 7vw, 102px)/.95 var(--serif); text-align: center; }
.intro em { color: var(--wine); }
.home-about { display: grid; grid-template-columns: .45fr 1.1fr .75fr; gap: 5vw; padding: 90px 5vw 110px; background: var(--mist); border-top: 1px solid var(--line); }
.home-about-label { font-size: 9px; letter-spacing: .12em; text-transform: uppercase; }
.home-about h2 { margin: 0; font: 400 clamp(46px, 6vw, 84px)/.94 var(--serif); }
.home-about p { max-width: 650px; margin: 28px 0 0; font-size: 13px; line-height: 1.7; }
.home-about aside { align-self: end; padding: 30px; background: var(--wine); color: var(--milk); font: italic 400 clamp(28px, 3vw, 45px)/1.05 var(--serif); transform: rotate(1deg); }
.project-list { background: var(--milk); }
.project-row { position: relative; display: grid; grid-template-columns: 100px 1fr 38%; align-items: center; min-height: 190px; padding: 20px 3vw; border-top: 1px solid var(--line); overflow: hidden; }
.project-row:last-child { border-bottom: 1px solid var(--line); }
.project-row b { font: 400 70px var(--serif); }
.project-row h2 { margin: 0; font: 400 clamp(40px, 5vw, 74px)/.9 var(--serif); }
.project-row p { margin: 10px 0 0; font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }
.project-row figure { height: 150px; margin: 0; overflow: hidden; transform: rotate(1deg); transition: transform .4s; }
.project-row figure img { width: 100%; height: 100%; object-fit: cover; }
.project-row:hover figure { transform: rotate(-1deg) scale(1.04); }
.project-row figure img { transition: transform .75s cubic-bezier(.2,.8,.2,1); will-change: transform; }
.project-row:hover figure img { transform: scale(1.06); }

.motion-ready .hero-kicker, .motion-ready .hero-title, .motion-ready .hero-copy, .motion-ready .detail-lens { animation: hero-in .9s both cubic-bezier(.2,.8,.2,1); }
.motion-ready .hero-title { animation-delay: .08s; }
.motion-ready .hero-copy { animation-delay: .18s; }
.motion-ready .detail-lens { animation-delay: .28s; }
.motion-ready .hero-media { animation: image-in 1.1s .08s both cubic-bezier(.2,.8,.2,1); }
@keyframes hero-in { from { opacity: 0; transform: translateY(36px); } to { opacity: 1; transform: translateY(0); } }
@keyframes image-in { from { opacity: 0; clip-path: inset(0 0 100% 0); } to { opacity: 1; clip-path: inset(0); } }

.motion-ready [data-reveal] { opacity: 0; transform: translateY(52px); transition: opacity .9s ease, transform .9s cubic-bezier(.2,.8,.2,1); }
.motion-ready [data-reveal].is-visible { opacity: 1; transform: translateY(0); }
.motion-ready [data-reveal='image'] { clip-path: inset(12% 0 0 0); transform: translateY(34px) scale(.98); }
.motion-ready [data-reveal='image'].is-visible { clip-path: inset(0); transform: translateY(0) scale(1); }

.page-wipe { position: fixed; inset: 0; z-index: 300; background: var(--wine); color: var(--milk); display: grid; place-items: center; transform: translateY(101%); transition: transform .62s cubic-bezier(.77,0,.18,1); pointer-events: none; }
.page-wipe.is-loading { transform: translateY(0); transition: none; }
.loader-rendering, .loader-ready { grid-area: 1 / 1; display: flex; align-items: baseline; transition: opacity .32s ease, transform .42s cubic-bezier(.2,.8,.2,1); }
.loader-rendering { gap: 16px; font: 500 clamp(24px, 4.3vw, 62px)/1 var(--sans); letter-spacing: .1em; text-transform: uppercase; }
.loader-ready { opacity: 0; transform: translateY(18px); font: italic 400 clamp(72px, 11vw, 156px)/1 var(--serif); }
.loading-dots { display: flex; gap: 7px; }
.loading-dots i { width: 8px; height: 8px; border-radius: 50%; background: var(--blush); animation: loading-dot .9s infinite ease-in-out; }
.loading-dots i:nth-child(2) { animation-delay: .15s; }
.loading-dots i:nth-child(3) { animation-delay: .3s; }
.page-wipe.is-ready .loader-rendering { opacity: 0; transform: translateY(-18px); }
.page-wipe.is-ready .loader-ready { opacity: 1; transform: translateY(0); }
@keyframes loading-dot { 0%, 60%, 100% { opacity: .25; transform: translateY(0); } 30% { opacity: 1; transform: translateY(-8px); } }
.page-wipe.is-leaving { transform: translateY(0); }
.page-wipe.is-entering { animation: wipe-enter .58s both cubic-bezier(.77,0,.18,1); }
@keyframes wipe-enter { from { transform: translateY(0); } to { transform: translateY(-101%); } }

.page-hero { min-height: 520px; padding: 52px 4vw; display: flex; flex-direction: column; justify-content: space-between; position: relative; overflow: hidden; }
.page-hero h1 { margin: 0; max-width: 1100px; font: 400 clamp(74px, 12vw, 170px)/.76 var(--serif); letter-spacing: -.055em; }
.page-hero h1 em { color: var(--wine); }
.page-hero p { max-width: 500px; font-size: 13px; line-height: 1.6; }
.page-hero::after { content: ''; position: absolute; right: -80px; bottom: -180px; width: 480px; height: 480px; border-radius: 50%; border: 75px solid var(--blush); opacity: .65; }

.project-cover { position: relative; background: var(--milk); padding: 4vw; }
.project-cover img { width: 100%; max-height: 86svh; object-fit: contain; }
.project-meta { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; padding: 28px 4vw 80px; background: var(--milk); }
.project-meta span { border-top: 1px solid var(--line); padding-top: 10px; font-size: 9px; letter-spacing: .1em; text-transform: uppercase; }
.project-meta strong { display: block; margin-top: 6px; font-size: 12px; letter-spacing: 0; text-transform: none; }
.project-notes { display: grid; grid-template-columns: minmax(280px, .85fr) minmax(360px, 1.15fr); column-gap: clamp(48px, 8vw, 140px); row-gap: clamp(64px, 8vw, 128px); padding: clamp(72px, 9vw, 150px) 5vw; background: var(--milk); border-top: 1px solid var(--ink); }
.project-notes header span { display: block; margin-bottom: 34px; font-size: 11px; letter-spacing: .18em; text-transform: uppercase; }
.project-notes h2 { margin: 0; font: 400 clamp(42px, 5.8vw, 84px)/.94 var(--serif); }
.project-notes h2 em { color: var(--wine); font-weight: 400; }
.project-notes-copy { max-width: 720px; font: 400 clamp(18px, 1.65vw, 25px)/1.45 var(--sans); }
.project-notes-copy p { margin: 0; }
.project-notes-copy p + p { margin-top: 1.5em; }
.project-credits { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); margin: 0; border-block: 1px solid var(--ink); }
.project-credits div { min-height: 180px; padding: 24px 28px 30px 0; }
.project-credits div + div { padding-left: 28px; border-left: 1px solid var(--ink); }
.project-credits dt { margin-bottom: 48px; font-size: 11px; letter-spacing: .16em; text-transform: uppercase; }
.project-credits dd { margin: 0; font: 400 clamp(23px, 2.5vw, 38px)/1.05 var(--serif); }
.project-credits.credits-four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.project-credits.credits-four dd { overflow-wrap: anywhere; font-size: clamp(19px, 1.9vw, 30px); }
.project-statement { padding: 90px 5vw; background: var(--mist); }
.project-statement p { max-width: 1000px; margin: auto; font: 400 clamp(44px, 7vw, 98px)/.95 var(--serif); }
.project-gallery { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(18px, 2.25vw, 38px); padding: clamp(28px, 4vw, 72px); background: var(--wine); }
.project-gallery figure { grid-column: span 6; margin: 0; padding: 11px; overflow: hidden; background: var(--milk); box-shadow: 0 22px 65px rgba(44, 14, 27, .2); }
.project-gallery figure.gallery-wide { grid-column: 1 / -1; }
.project-gallery figure.gallery-solo { grid-column: 4 / 10; }
.project-gallery img { display: block; width: 100%; height: auto; }
.lighting-scenario { padding: clamp(72px, 9vw, 150px) clamp(28px, 4vw, 72px) clamp(28px, 4vw, 72px); background: #b9a99e; }
.lighting-scenario header { display: grid; grid-template-columns: .7fr 1.3fr; gap: 28px; margin-bottom: clamp(56px, 7vw, 110px); }
.lighting-scenario header > span { font-size: 11px; letter-spacing: .17em; text-transform: uppercase; }
.lighting-scenario h2 { margin: 0; font: 400 clamp(50px, 7.5vw, 108px)/.88 var(--serif); }
.lighting-scenario h2 em { color: var(--wine); font-weight: 400; }
.lighting-scenario header p { grid-column: 2; max-width: 590px; margin: 0; font-size: 14px; line-height: 1.65; }
.lighting-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(18px, 2.25vw, 38px); }
.lighting-gallery figure { margin: 0; padding: 11px; background: var(--milk); box-shadow: 0 22px 65px rgba(44, 14, 27, .2); }
.lighting-gallery figure.lighting-wide { grid-column: 1 / -1; }
.lighting-gallery img { display: block; width: 100%; height: auto; }
.custom-models { padding: clamp(72px, 9vw, 150px) clamp(28px, 4vw, 72px); background: var(--milk); }
.custom-models header { display: grid; grid-template-columns: .7fr 1.3fr; gap: 28px; margin-bottom: clamp(56px, 7vw, 110px); }
.custom-models header > span { font-size: 11px; letter-spacing: .17em; text-transform: uppercase; }
.custom-models h2 { margin: 0; font: 400 clamp(50px, 7.5vw, 108px)/.88 var(--serif); }
.custom-models h2 em { color: var(--wine); font-weight: 400; }
.custom-models header p { grid-column: 2; max-width: 590px; margin: 0; font-size: 14px; line-height: 1.65; }
.models-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(26px, 3vw, 50px) clamp(18px, 2.25vw, 38px); }
.models-grid figure { grid-column: span 6; margin: 0; }
.models-grid figure:nth-child(n+3) { grid-column: span 4; }
.model-image { padding: 11px; background: var(--wine); overflow: hidden; }
.model-image img { display: block; width: 100%; height: auto; transition: transform .8s cubic-bezier(.2,.8,.2,1); }
.models-grid figure:hover .model-image img { transform: scale(1.025); }
.models-grid figcaption { display: grid; grid-template-columns: 46px 1fr; gap: 12px; padding: 18px 0 22px; border-bottom: 1px solid var(--ink); }
.models-grid figcaption span { font-size: 10px; letter-spacing: .14em; }
.models-grid figcaption strong { font: 400 clamp(20px, 2vw, 31px)/1.08 var(--serif); }
.project-cover img, .project-gallery img, .models-grid img, .lighting-gallery img { cursor: none; user-select: none; -webkit-user-drag: none; }
.project-cover img:focus-visible, .project-gallery img:focus-visible, .models-grid img:focus-visible, .lighting-gallery img:focus-visible { outline: 2px solid var(--wine); outline-offset: 5px; }
.quiet-hero, .quiet-statement { background: #d8d1d8; }
.quiet-page .page-hero::after { border-color: var(--wine); opacity: .18; }
.zone-section { padding: clamp(72px, 9vw, 150px) clamp(28px, 4vw, 72px) clamp(28px, 4vw, 72px); background: var(--milk); }
.zone-office { background: #d8d1d8; }
.zone-section header { display: grid; grid-template-columns: .65fr 1.35fr; gap: 28px; margin-bottom: clamp(56px, 7vw, 110px); }
.zone-section header > span { font-size: 11px; letter-spacing: .17em; text-transform: uppercase; }
.zone-section h2 { margin: 0; font: 400 clamp(50px, 7.5vw, 108px)/.88 var(--serif); }
.zone-section h2 em { color: var(--wine); font-weight: 400; }
.zone-section header p { grid-column: 2; max-width: 580px; margin: 0; font-size: 14px; line-height: 1.65; }
.zone-gallery { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); align-items: start; gap: clamp(18px, 2.25vw, 38px); }
.zone-gallery figure { grid-column: span 6; margin: 0; padding: 11px; background: var(--gallery); box-shadow: 0 22px 65px rgba(44, 14, 27, .16); }
.zone-gallery figure.zone-wide { grid-column: 1 / -1; }
.zone-gallery figure.zone-solo { grid-column: 4 / 10; }
.zone-gallery img { display: block; width: 100%; height: auto; }
.project-cover img, .project-gallery img, .models-grid img, .lighting-gallery img, .zone-gallery img { cursor: none; user-select: none; -webkit-user-drag: none; }
.project-cover img:focus-visible, .project-gallery img:focus-visible, .models-grid img:focus-visible, .lighting-gallery img:focus-visible, .zone-gallery img:focus-visible { outline: 2px solid var(--wine); outline-offset: 5px; }
body.lightbox-open { overflow: hidden; }
body.lightbox-open .cursor { color: var(--milk); mix-blend-mode: difference; }
body.lightbox-open .cursor span { color: var(--milk); }
.lightbox { position: fixed; inset: 0; z-index: 500; display: grid; place-items: center; padding: 42px 7vw; background: rgba(24, 17, 21, .96); color: var(--milk); opacity: 0; visibility: hidden; transition: opacity .35s ease, visibility .35s; }
.lightbox.is-open { opacity: 1; visibility: visible; }
.lightbox figure { width: 100%; height: 100%; margin: 0; display: grid; place-items: center; }
.lightbox img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; user-select: none; -webkit-user-drag: none; transform: scale(.975); transition: transform .45s cubic-bezier(.2,.8,.2,1); }
.lightbox.is-open img { transform: scale(1); }
.lightbox button { position: absolute; z-index: 2; border: 0; padding: 0; background: transparent; color: inherit; text-transform: uppercase; letter-spacing: .14em; }
.lightbox-close { top: 24px; right: 28px; font-size: 10px; }
.lightbox-step { top: 50%; width: 52px; height: 52px; border: 1px solid rgba(241,238,232,.5) !important; border-radius: 50% !important; transform: translateY(-50%); font-size: 20px; transition: background .25s, color .25s; }
.lightbox-step:hover { background: var(--milk); color: var(--ink); }
.lightbox-prev { left: 22px; }
.lightbox-next { right: 22px; }
.lightbox-count { position: absolute; left: 28px; bottom: 24px; font-size: 10px; letter-spacing: .16em; }

.about-grid { display: grid; grid-template-columns: 1.1fr .9fr; background: var(--milk); }
.about-copy { padding: 80px 6vw; }
.about-copy h2 { margin: 0 0 28px; font: 400 clamp(50px, 7vw, 100px)/.9 var(--serif); }
.about-copy p { max-width: 620px; font-size: 14px; line-height: 1.75; }
.about-portrait { min-height: 700px; margin: 36px 4vw 36px 0; padding: 11px; background: var(--wine); border: 1px solid var(--wine); box-shadow: 0 22px 55px rgba(40,35,43,.17); overflow: hidden; }
.about-portrait img { width: 100%; height: 100%; object-fit: cover; object-position: 58% center; filter: contrast(1.02); transition: transform 1s cubic-bezier(.2,.8,.2,1); }
.about-portrait:hover img { transform: scale(1.025); }
.about-art { grid-column: 1 / -1; min-height: 300px; background: var(--wine); color: var(--milk); display: grid; place-items: center; padding: 40px; }
.about-art blockquote { margin: 0; font: italic 400 clamp(42px, 5vw, 80px)/1 var(--serif); }
.practice-index { width: 100%; align-self: stretch; display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid rgba(246,247,243,.55); }
.practice-index span { display: flex; flex-direction: column; justify-content: space-between; padding: 28px; border-right: 1px solid rgba(246,247,243,.38); }
.practice-index span:last-child { border-right: 0; }
.practice-index small { font-size: 8px; letter-spacing: .14em; text-transform: uppercase; }
.practice-index strong { font: italic 400 clamp(34px, 4vw, 62px)/.95 var(--serif); }

.services { background: var(--milk); padding: 30px 4vw 100px; }
.service { display: grid; grid-template-columns: 90px 1fr 1fr; gap: 30px; padding: 40px 0; border-top: 1px solid var(--line); }
.service b { font: 400 58px var(--serif); }
.service h2 { margin: 0; font: 400 clamp(36px, 4vw, 62px) var(--serif); }
.service p { margin: 0; max-width: 520px; font-size: 13px; line-height: 1.7; }

.contact { min-height: calc(100svh - 72px); display: grid; grid-template-columns: 1fr 1fr; }
.contact-copy { padding: 60px 5vw; background: var(--wine); color: var(--milk); }
.contact-copy h1 { margin: 0 0 30px; font: 400 clamp(70px, 9vw, 130px)/.78 var(--serif); }
.contact-methods { margin-top: clamp(38px, 6vw, 82px); border-block: 1px solid rgba(241, 238, 232, .55); }
.contact-methods a { display: grid; grid-template-columns: minmax(68px, .32fr) 1fr auto; gap: 18px; align-items: center; min-height: 72px; padding: 16px 12px; border-bottom: 1px solid rgba(241, 238, 232, .32); transition: background .3s ease, color .3s ease, padding .3s ease; }
.contact-methods a:last-child { border-bottom: 0; }
.contact-methods a:hover, .contact-methods a:focus-visible { padding-inline: 20px; background: var(--milk); color: var(--wine); }
.contact-methods span { font-size: 9px; letter-spacing: .15em; text-transform: uppercase; opacity: .72; }
.contact-methods strong { min-width: 0; overflow-wrap: anywhere; font: 400 clamp(18px, 1.65vw, 25px)/1.08 var(--serif); }
.contact-methods em { font-style: normal; font-size: 18px; transition: transform .3s ease; }
.contact-methods a:hover em, .contact-methods a:focus-visible em { transform: translate(3px, -3px); }
.contact-form { padding: 60px 5vw; background: var(--milk); }
.field { margin-bottom: 26px; }
.field label { display: block; margin-bottom: 8px; font-size: 9px; letter-spacing: .12em; text-transform: uppercase; }
.field input, .field textarea { width: 100%; padding: 14px 0; border: 0; border-bottom: 1px solid var(--ink); border-radius: 0; background: transparent; color: var(--ink); outline: none; }
.field textarea { min-height: 120px; resize: vertical; }
.upload-field { margin: 8px 0 28px; }
.upload-heading { display: block; margin-bottom: 9px; font-size: 9px; letter-spacing: .12em; text-transform: uppercase; }
.file-drop { min-height: 118px; display: grid; grid-template-columns: 48px 1fr; gap: 18px; align-items: center; padding: 20px; border: 1px solid var(--wine); background: color-mix(in srgb, var(--gallery) 72%, transparent); transition: background .25s ease, color .25s ease, transform .25s ease; }
.file-drop:hover, .file-drop.is-dragging { background: var(--wine); color: var(--gallery); transform: translateY(-2px); }
.file-drop input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.upload-mark { font: 400 42px/1 var(--serif); color: var(--wine); transition: color .25s ease, transform .25s ease; }
.file-drop:hover .upload-mark, .file-drop.is-dragging .upload-mark { color: var(--blush); transform: rotate(45deg); }
.file-drop strong { display: block; font: 400 22px/1.05 var(--serif); }
.file-drop small { display: block; margin-top: 9px; font-size: 8px; letter-spacing: .08em; text-transform: uppercase; }
.file-list { min-height: 18px; margin: 9px 0 0; color: var(--wine); font-size: 9px; line-height: 1.5; }
.submit { border: 0; padding: 16px 24px; background: var(--wine); color: var(--milk); text-transform: uppercase; letter-spacing: .1em; }
.form-status { min-height: 24px; margin-top: 16px; font-size: 12px; }

.site-footer { min-height: 180px; padding: 38px 28px; display: grid; grid-template-columns: 1fr auto; align-items: end; background: var(--ink); color: var(--milk); }
.site-footer strong { font: italic 400 clamp(38px, 5vw, 70px) var(--serif); }
.footer-links { display: flex; gap: 20px; font-size: 9px; letter-spacing: .1em; text-transform: uppercase; }

@media (min-width: 1300px) {
  .hero-carousel-simple .hero-media { width: min(40vw, 580px); }
}

@media (max-width: 800px) {
  body { cursor: auto; } .cursor { display: none; }
  .site-header { grid-template-columns: 1fr auto; padding: 0 18px; } .nav, .header-cta { display: none; } .menu-button { display: block; }
  .site-header.is-open { position: fixed; inset: 0 0 auto; height: auto; min-height: 100svh; align-content: start; padding-top: 28px; background: var(--wine); color: var(--milk); }
  .site-header.is-open .nav { display: flex; position: absolute; left: 18px; top: 120px; flex-direction: column; gap: 22px; font: 400 48px/1 var(--serif); letter-spacing: 0; text-transform: none; }
  .hero { min-height: 720px; padding-inline: 18px; } .hero-title { font-size: clamp(68px, 20vw, 78px); margin-top: 24px; letter-spacing: -.065em; } .hero-title em { margin-left: 5vw; }
  .hero-media { right: 5%; top: 170px; width: 62%; height: 460px; } .hero-copy { left: 18px; bottom: 20px; max-width: 190px; } .hero-copy p { display: none; } .detail-lens, .lens-label { display: none; }
  .scroll-cue { left: 18px; bottom: 18px; }
  .gallery-note { display: none; }
  .section-heading { min-height: 360px; padding: 38px 18px; grid-template-columns: 1fr; align-content: space-between; gap: 20px; }
  .section-heading h2 { font-size: clamp(58px, 18vw, 82px); }
  .service-offer { padding: 45px 18px 65px; }
  .offer-summary { grid-template-columns: 1fr; }
  .price-ticket { min-height: 220px; }
  .included { grid-template-columns: 1fr; gap: 24px; }
  .included ul { grid-template-columns: 1fr; }
  .offer-terms { grid-template-columns: 1fr; padding: 35px 0; }
  .offer-terms article, .offer-terms article:first-child { padding: 24px 0; border-left: 0; border-top: 1px solid var(--line); }
  .estimate-note { grid-template-columns: 1fr; padding: 24px; }
  .carousel-controls { left: 10px; right: 10px; bottom: 8px; } .carousel-controls > button:first-child, .carousel-controls > button:last-child { min-width: 42px; } .carousel-tab { min-width: 0 !important; flex: 1; grid-template-columns: auto; gap: 0; } .carousel-tab span { display: none; }
  .project-portals { grid-template-columns: 1fr; padding: 18px; } .project-portals a { min-height: 480px; padding: 16px; border-right: 0; border-bottom: 1px solid var(--wine); } .project-portals a:last-child { border-bottom: 0; } .project-portals img { height: 340px; } .project-portals span { grid-template-columns: 44px 1fr; padding-right: 0; } .project-portals small { position: static; grid-column: 2; margin-top: 14px; } .project-portals b { font-size: 38px; } .project-portals strong { font-size: 25px; }
  .next-project { grid-template-columns: 1fr 32%; min-height: 140px; } .next-copy { grid-template-columns: 48px 1fr; padding: 12px 16px; gap: 10px; } .next-copy b { font-size: 46px; } .next-copy strong { font-size: 24px; } .next-copy em { display: none; } .next-preview { min-height: 140px; }
  .project-gallery { grid-template-columns: 1fr; padding: 18px; gap: 18px; }
  .project-gallery figure, .project-gallery figure.gallery-wide, .project-gallery figure.gallery-solo { grid-column: 1; }
  .project-notes { grid-template-columns: 1fr; padding: 64px 22px; row-gap: 48px; }
  .project-notes-copy { font-size: 18px; }
  .project-credits { grid-template-columns: 1fr; }
  .project-credits.credits-four { grid-template-columns: 1fr; }
  .project-credits div { min-height: 0; padding: 22px 0 28px; }
  .project-credits div + div { padding-left: 0; border-left: 0; border-top: 1px solid var(--ink); }
  .project-credits dt { margin-bottom: 22px; }
  .lightbox { padding: 58px 14px 76px; }
  .lightbox-step { top: auto; bottom: 16px; transform: none; }
  .lightbox-prev { left: calc(50% - 62px); }
  .lightbox-next { right: calc(50% - 62px); }
  .lightbox-count { left: 16px; bottom: 34px; }
  .lightbox-close { top: 20px; right: 16px; }
  .lighting-scenario { padding: 64px 18px 18px; }
  .lighting-scenario header { grid-template-columns: 1fr; margin-bottom: 44px; }
  .lighting-scenario header p { grid-column: 1; }
  .lighting-gallery { grid-template-columns: 1fr; gap: 18px; }
  .lighting-gallery figure.lighting-wide { grid-column: 1; }
  .custom-models { padding: 64px 18px; }
  .custom-models header { grid-template-columns: 1fr; margin-bottom: 44px; }
  .custom-models header p { grid-column: 1; }
  .models-grid { grid-template-columns: 1fr; gap: 32px; }
  .models-grid figure, .models-grid figure:nth-child(n+3) { grid-column: 1; }
  .zone-section { padding: 64px 18px 18px; }
  .zone-section header { grid-template-columns: 1fr; margin-bottom: 44px; }
  .zone-section header p { grid-column: 1; }
  .zone-gallery { grid-template-columns: 1fr; gap: 18px; }
  .zone-gallery figure, .zone-gallery figure.zone-wide, .zone-gallery figure.zone-solo { grid-column: 1; }
  .project-row { grid-template-columns: 55px 1fr; } .project-row b { font-size: 44px; } .project-row figure { grid-column: 1 / -1; width: 100%; margin-top: 18px; }
  .home-about { grid-template-columns: 1fr; padding: 65px 18px; } .home-about aside { margin-top: 18px; }
  .page-hero { min-height: 430px; padding-inline: 18px; } .page-hero h1 { font-size: 78px; }
  .project-meta { grid-template-columns: 1fr 1fr; }
  .about-grid, .contact { grid-template-columns: 1fr; } .about-portrait { min-height: 560px; margin: 0 18px 38px; } .about-art { min-height: auto; padding: 18px; } .practice-index { grid-template-columns: 1fr; } .practice-index span { min-height: 190px; border-right: 0; border-bottom: 1px solid rgba(246,247,243,.38); } .practice-index span:last-child { border-bottom: 0; }
  .service { grid-template-columns: 55px 1fr; } .service p { grid-column: 2; }
  .site-footer { grid-template-columns: 1fr; gap: 30px; }
}

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; } }
