@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Italiana&display=swap');

:root { --bg: #f3eee7; --paper: #fffaf4; --ink: #211d1b; --accent: #8d5866; --soft: #d8b7b8; --line: rgba(33, 29, 27, .2); --display: Italiana, serif; --body: 'DM Sans', sans-serif; }
body.interior { --bg: #dcd6cb; --paper: #eee9df; --ink: #1e211d; --accent: #536047; --soft: #a7a48f; --line: rgba(30, 33, 29, .22); }
* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: #d8d0c7; }
body { position: relative; margin: 0; overflow-x: hidden; background: var(--bg); color: var(--ink); font: 15px/1.65 var(--body); }
img { display: block; width: 100%; }
a { color: inherit; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { font-family: var(--display); font-weight: 400; letter-spacing: -.035em; }
h1 { max-width: 12ch; margin-bottom: 0; font-size: clamp(64px, 15vw, 190px); line-height: .78; }
h2 { font-size: clamp(48px, 9vw, 120px); line-height: .86; }
h2 em, h1 em { color: var(--accent); font-style: italic; }
.demo-kicker { margin: 0 0 18px; color: var(--accent); font-size: 10px; letter-spacing: .18em; text-transform: uppercase; }

.demo-header { position: fixed; z-index: 50; top: 0; right: 0; left: 0; display: grid; grid-template-columns: auto 1fr; align-items: center; min-height: 72px; padding: 12px 5vw; border-bottom: 1px solid rgba(255, 255, 255, .32); color: #fff; transition: color .3s ease, background .3s ease; }
.demo-header.is-scrolled { background: rgba(243, 238, 231, .92); color: var(--ink); backdrop-filter: blur(12px); }
.interior .demo-header.is-scrolled { background: rgba(220, 214, 203, .92); }
.demo-brand { font: 30px/1 var(--display); text-decoration: none; }.demo-header nav { display: flex; justify-content: flex-end; gap: clamp(14px, 2.4vw, 34px); overflow-x: auto; scrollbar-width: none; }.demo-header nav::-webkit-scrollbar { display: none; }.demo-header nav a { flex: 0 0 auto; padding: 12px 0; font-size: 10px; letter-spacing: .1em; text-decoration: none; text-transform: uppercase; }

.demo-hero { position: relative; min-height: 100svh; overflow: hidden; background: var(--ink); color: #fff; }.demo-hero picture, .demo-hero img { position: absolute; inset: 0; height: 100%; object-fit: cover; }.demo-hero img { transform: scale(1.06); animation: hero-breathe 7s cubic-bezier(.22, 1, .36, 1) forwards; }.demo-hero::after { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0, 0, 0, .14), rgba(0, 0, 0, .14) 45%, rgba(0, 0, 0, .74)); content: ''; }.demo-hero__curtain { position: absolute; z-index: 2; inset: 0; background: var(--accent); transform-origin: top; animation: curtain-open 1.8s .2s cubic-bezier(.76, 0, .24, 1) forwards; }.interior .demo-hero__curtain { transform-origin: right; }.demo-hero__copy { position: relative; z-index: 3; display: grid; align-content: end; min-height: 100svh; padding: 130px 6vw 7vw; }.demo-hero__copy p { max-width: 520px; margin: 32px 0 0 auto; font-size: clamp(15px, 1.4vw, 20px); }.demo-scroll { position: absolute; z-index: 3; right: 5vw; bottom: 5vw; font-size: 9px; letter-spacing: .16em; writing-mode: vertical-rl; }

.demo-manifesto { display: grid; gap: 38px; padding: clamp(86px, 13vw, 190px) 7vw; }.demo-manifesto h2 { max-width: 13ch; margin-bottom: 0; }.demo-manifesto__copy { max-width: 630px; margin-left: auto; font-size: clamp(17px, 2vw, 25px); }.demo-manifesto__copy p:last-child { margin-bottom: 0; color: var(--accent); }

.demo-feature { position: relative; min-height: 170svh; }.demo-feature__sticky { position: sticky; top: 0; display: grid; min-height: 100svh; overflow: hidden; background: var(--ink); color: var(--paper); }.demo-feature picture, .demo-feature img { position: absolute; inset: 0; height: 100%; object-fit: cover; }.demo-feature img { clip-path: inset(10% 10% round 45%); filter: saturate(.72); transition: clip-path 1.5s cubic-bezier(.22, 1, .36, 1), filter 1.2s ease, transform 1.5s ease; }.demo-feature.is-visible img { clip-path: inset(0 round 0); filter: saturate(1); transform: scale(1.025); }.interior .demo-feature img { clip-path: inset(0 50% 0 0); }.interior .demo-feature.is-visible img { clip-path: inset(0); }.demo-feature__copy { position: relative; z-index: 2; align-self: end; width: min(92%, 680px); margin: 0 4vw 5vw auto; padding: clamp(26px, 4vw, 58px); background: rgba(28, 24, 22, .84); backdrop-filter: blur(10px); }.demo-feature__copy h2 { margin-bottom: 24px; }.demo-feature__copy p:last-child { margin-bottom: 0; }

.demo-offer { padding: clamp(86px, 11vw, 160px) 7vw; background: var(--paper); }.demo-offer__head { display: grid; gap: 28px; margin-bottom: clamp(52px, 8vw, 100px); }.demo-offer__head h2 { max-width: 11ch; margin: 0; }.demo-offer__head p:last-child { max-width: 520px; margin-left: auto; }.demo-offer__list { border-top: 1px solid var(--line); }.demo-offer article { display: grid; grid-template-columns: 50px 1fr; gap: 8px 20px; padding: 30px 0; border-bottom: 1px solid var(--line); opacity: 0; transform: translateY(26px); transition: opacity .8s ease, transform .9s cubic-bezier(.22, 1, .36, 1); }.demo-offer article.is-visible { opacity: 1; transform: none; }.demo-offer article span { color: var(--accent); font-size: 10px; }.demo-offer article h3 { margin: 0; font-size: clamp(30px, 5vw, 62px); }.demo-offer article p { grid-column: 2; max-width: 650px; margin-bottom: 0; color: #625954; }.interior .demo-offer article p { color: #4d514a; }

.demo-process { display: grid; gap: 56px; padding: clamp(86px, 12vw, 180px) 7vw; background: var(--accent); color: var(--paper); }.demo-process h2 { max-width: 12ch; margin-bottom: 0; }.demo-process ol { margin: 0; padding: 0; list-style: none; counter-reset: steps; }.demo-process li { display: grid; grid-template-columns: 46px 1fr; gap: 20px; padding: 24px 0; border-top: 1px solid rgba(255, 255, 255, .35); counter-increment: steps; }.demo-process li::before { content: '0' counter(steps); opacity: .7; }.demo-process li b { display: block; margin-bottom: 8px; font: 400 28px/1 var(--display); }.demo-process li p { margin: 0; opacity: .82; }

.demo-gallery { display: grid; grid-template-columns: repeat(2, 1fr); min-height: 90svh; overflow: hidden; }.demo-gallery figure { position: relative; margin: 0; overflow: hidden; }.demo-gallery figure:first-child { grid-column: 1 / -1; }.demo-gallery img { height: 100%; object-fit: cover; transition: transform 1.4s cubic-bezier(.22, 1, .36, 1); }.demo-gallery figure.is-visible img { transform: scale(1.045); }.demo-gallery figcaption { position: absolute; right: 18px; bottom: 18px; left: 18px; color: #fff; font-size: 10px; letter-spacing: .12em; text-transform: uppercase; }

.demo-contact { position: relative; display: grid; gap: 46px; padding: clamp(86px, 11vw, 160px) 7vw; overflow: hidden; background: var(--ink); color: var(--paper); }.demo-contact::before { position: absolute; right: -10vw; bottom: -22vw; width: 52vw; aspect-ratio: 1; border: 1px solid var(--soft); border-radius: 50%; content: ''; opacity: .22; }.interior .demo-contact::before { border-radius: 0; transform: rotate(18deg); }.demo-contact__intro, .demo-form { position: relative; z-index: 1; }.demo-contact h2 { max-width: 12ch; }.demo-contact__intro > p:last-child { max-width: 510px; }.demo-form { display: grid; gap: 22px; }.demo-form label { display: grid; gap: 7px; color: var(--soft); font-size: 9px; letter-spacing: .12em; text-transform: uppercase; }.demo-form input, .demo-form select, .demo-form textarea { width: 100%; min-height: 48px; border: 0; border-bottom: 1px solid rgba(255, 255, 255, .42); border-radius: 0; outline: 0; background: transparent; color: var(--paper); font: 15px var(--body); }.demo-form select option { color: var(--ink); }.demo-form textarea { padding-top: 12px; resize: vertical; }.demo-form input:focus, .demo-form select:focus, .demo-form textarea:focus { border-color: var(--soft); }.demo-form button { min-height: 54px; border: 1px solid var(--soft); background: transparent; color: var(--paper); font: 600 10px var(--body); letter-spacing: .13em; cursor: pointer; }.demo-form button:hover, .demo-form button:focus-visible { background: var(--soft); color: var(--ink); }.demo-form__status { min-height: 1.5em; margin: 0; color: var(--soft); font-size: 12px; }
.demo-footer { display: flex; justify-content: space-between; gap: 20px; padding: 30px 7vw; background: var(--bg); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; }

@media (min-width: 760px) { body { width: min(calc(100% - clamp(24px, 4vw, 72px)), 1640px); margin-inline: auto; box-shadow: 0 0 54px rgba(20, 24, 21, .14); } .demo-header { right: auto; left: 50%; width: min(calc(100% - clamp(24px, 4vw, 72px)), 1640px); transform: translateX(-50%); } .demo-header { grid-template-columns: auto 1fr auto; }.demo-manifesto { grid-template-columns: 1.2fr .8fr; align-items: end; }.demo-manifesto__copy { margin: 0; }.demo-offer__head { grid-template-columns: 1fr .6fr; align-items: end; }.demo-offer article { grid-template-columns: 70px minmax(250px, .7fr) 1fr; align-items: baseline; }.demo-offer article p { grid-column: auto; }.demo-process { grid-template-columns: .8fr 1fr; }.demo-contact { grid-template-columns: .8fr 1fr; align-items: start; }.demo-form { grid-template-columns: repeat(2, 1fr); }.demo-form .wide, .demo-form button, .demo-form__status { grid-column: 1 / -1; }.demo-gallery { grid-template-columns: 1.25fr .75fr; }.demo-gallery figure:first-child { grid-column: auto; grid-row: span 2; } }
@media (max-width: 759px) { .demo-header { min-height: 88px; align-content: center; }.demo-header nav { grid-column: 1 / -1; justify-content: flex-start; }.demo-brand { font-size: 25px; }.demo-hero__copy { padding-top: 150px; }.demo-hero__copy p { margin-left: 0; }.demo-scroll { display: none; }.demo-feature { min-height: 140svh; }.demo-feature__copy { margin: 0 5vw 7vw; }.demo-gallery { min-height: 120svh; }.demo-footer { flex-wrap: wrap; } }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; }.demo-hero__curtain { display: none; }.demo-hero img, .demo-feature img, .demo-gallery img, .demo-offer article { animation: none; clip-path: none; opacity: 1; transform: none; transition: none; }.demo-feature { min-height: auto; }.demo-feature__sticky { position: relative; min-height: 100svh; } }
@keyframes curtain-open { to { transform: scaleY(0); } }
.interior .demo-hero__curtain { animation-name: curtain-open-x; }
@keyframes curtain-open-x { to { transform: scaleX(0); } }
@keyframes hero-breathe { to { transform: scale(1); } }
