/* NYV Properties — charcoal / cream, Fraunces + Inter, moss & ochre. Shares token names with the main site so portal.css works. */
:root{--bg:#151515;--bg2:#1c1c1b;--card:#1f1f1e;--line:rgba(239,232,219,.12);--fg:#efe8db;--muted:#a59f94;--accent:#c48c3a;--accent-ink:#151515;--moss:#5c6b4a;--ochre:#c48c3a;--cream:#efe8db;--ink:#1b1a18;--r:18px;--wrap:1240px;--ease:cubic-bezier(.22,.8,.12,1);--serif:"Fraunces",Georgia,"Times New Roman",serif;--sans:"Inter",system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}
body{margin:0;background:var(--bg);color:var(--fg);font:400 17px/1.65 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,video{display:block;max-width:100%}a{color:inherit}
.skip{position:absolute;left:-999px;top:8px;background:var(--ochre);color:#000;padding:8px 14px;border-radius:8px;z-index:200}.skip:focus{left:8px}
.wrap{width:min(var(--wrap),100% - 40px);margin-inline:auto}
:focus-visible{outline:2px solid var(--ochre);outline-offset:3px;border-radius:4px}
.label{font:500 12px/1.4 var(--sans);text-transform:uppercase;letter-spacing:.28em;color:var(--ochre);margin:0 0 18px}
.display,.h2{font-family:var(--serif);font-weight:300;letter-spacing:-.02em;line-height:1.02;margin:0}
.display em,.h2 em,.statement__line--it,.tf-line em,.doorway__line em{font-style:italic;font-weight:300}
.display{font-size:clamp(46px,7.4vw,112px);max-width:13ch}
.h2{font-size:clamp(38px,5.4vw,78px)}
.muted{color:var(--muted);max-width:52ch}
/* buttons */
.btn{--pad:16px 28px;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:var(--pad);border-radius:999px;font:500 13px/1 var(--sans);text-transform:uppercase;letter-spacing:.16em;text-decoration:none;border:1px solid transparent;cursor:pointer;transition:transform .5s var(--ease),background .3s,color .3s,border-color .3s;will-change:transform;background:none;color:inherit}
.btn--sm{--pad:11px 18px;font-size:11.5px}.btn--block{width:100%}
.btn--ochre{background:var(--ochre);color:var(--ink)}.btn--ochre:hover{background:#d49c48}
.btn--line{border-color:currentColor}.btn--line:hover{background:var(--fg);color:var(--ink);border-color:var(--fg)}
.btn--light{color:var(--cream)}
.cream .btn--line:hover{background:var(--ink);color:var(--cream)}
/* nav pill */
.nav{position:fixed;z-index:60;top:16px;left:50%;transform:translateX(-50%);width:min(820px,calc(100% - 24px));display:flex;align-items:center;gap:18px;padding:8px 8px 8px 16px;border-radius:999px;background:rgba(21,21,21,.74);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--line)}
.nav__brand{display:flex;align-items:center;gap:10px;text-decoration:none;font:500 15px var(--serif);letter-spacing:.01em}
.nav__links{display:flex;gap:22px;margin-left:auto}.nav__links a{text-decoration:none;font:500 11.5px var(--sans);text-transform:uppercase;letter-spacing:.18em;color:#cfc8bb}.nav__links a:hover{color:#fff}
@media(max-width:820px){.nav__links{display:none}.nav .btn{margin-left:auto}}
/* loader */
.loader{position:fixed;inset:0;z-index:100;display:none;place-items:center;background:#0e0e0d;overflow:hidden}
.js.motion .loader{display:grid}
.loader__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.loader__mask{position:absolute;inset:0;display:grid;place-items:center;background:#0e0e0d;mix-blend-mode:multiply}
.loader__word{font:300 clamp(120px,26vw,420px)/1 var(--serif);color:#fff;letter-spacing:-.04em;transform-origin:50% 55%}
.loader__arch{position:absolute;width:min(120px,22vw);top:50%;left:50%;transform:translate(-50%,-50%);fill:none;stroke:var(--cream);stroke-width:1.2;opacity:.9}
.loader__label{position:absolute;bottom:9vh;left:0;right:0;text-align:center;font:500 11px var(--sans);text-transform:uppercase;letter-spacing:.5em;color:var(--cream);margin:0}
/* hero */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;padding:120px 0 80px;overflow:hidden;isolation:isolate}
.hero__layer{position:absolute;inset:-3%;will-change:transform}
.hero__bg{z-index:-4}.hero__bg img{width:100%;height:100%;object-fit:cover}
.hero__bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(14,14,13,.55),rgba(14,14,13,.25) 45%,rgba(14,14,13,.9))}
.hero__cloth{z-index:-3;width:106%;height:106%}
.hero__fg{z-index:-2;inset:auto -3% -2% -3%;height:46%;pointer-events:none}.hero__fg img{width:100%;height:100%;object-fit:cover;object-position:bottom}
.hero__fg::after{content:"";position:absolute;inset:auto 0 0;height:50%;background:linear-gradient(180deg,transparent,#151515)}
.hero__particles{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none}
.hero__content{position:relative;z-index:2;pointer-events:none}.hero__content a{pointer-events:auto}
.hero__sub{font-size:clamp(16px,1.4vw,19px);color:#ddd5c7;max-width:54ch;margin:26px 0 32px}
.hero__cta{display:flex;flex-wrap:wrap;gap:12px}
.hero__hint{position:absolute;z-index:2;top:92px;left:50%;transform:translateX(-50%);margin:0;font:500 11px var(--sans);letter-spacing:.3em;text-transform:uppercase;color:rgba(239,232,219,.5);white-space:nowrap}
.sound{position:absolute;z-index:4;right:24px;bottom:28px;display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border-radius:999px;border:1px solid var(--line);background:rgba(21,21,21,.6);backdrop-filter:blur(10px);color:var(--cream);font:500 11px var(--sans);letter-spacing:.2em;text-transform:uppercase;cursor:pointer}
.sound__dot{width:8px;height:8px;border-radius:50%;border:1px solid currentColor}.sound[aria-pressed=true]{color:var(--ochre)}.sound[aria-pressed=true] .sound__dot{background:currentColor}
@media(max-width:640px){.sound{right:14px;bottom:16px}.sound__label{display:none}}
/* statement over video */
.statement{position:relative;min-height:100svh;display:grid;place-items:center;overflow:hidden;text-align:center}
.statement__video{position:absolute;inset:-5%;width:110%;height:110%;object-fit:cover}
.statement__shade{position:absolute;inset:0;background:rgba(14,14,13,.55)}
.statement__inner{position:relative}
.statement__line{font:300 clamp(40px,7vw,104px)/1.05 var(--serif);margin:0;letter-spacing:-.02em}
/* sections */
.section{padding:clamp(100px,13vw,180px) 0}
.cream{background:var(--cream);color:var(--ink);--line:rgba(27,26,24,.14);--muted:#6b665d}
.cream .label{color:var(--moss)}
.dark{background:var(--bg)}
.head{max-width:860px;margin-bottom:64px}.head .muted{margin-top:22px}
/* line grid */
.lines{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}
.lines__cell{padding:36px 28px 36px 0;border-right:1px solid var(--line)}.lines__cell+.lines__cell{padding-left:28px}.lines__cell:last-child{border-right:0}
.lines__n{display:block;font:300 clamp(64px,7vw,104px)/1 var(--serif);color:var(--moss);margin-bottom:18px}.lines__n--word{font-style:italic}
.lines h3{font:500 12px var(--sans);text-transform:uppercase;letter-spacing:.22em;margin:0 0 10px}.lines p{margin:0;color:var(--muted)}
@media(max-width:900px){.lines{grid-template-columns:1fr 1fr}.lines__cell:nth-child(2){border-right:0}.lines__cell:nth-child(n+3){border-top:1px solid var(--line)}.lines__cell:nth-child(3){padding-left:0}}
@media(max-width:560px){.lines{grid-template-columns:1fr}.lines__cell{border-right:0;padding-left:0!important;border-top:1px solid var(--line)}}
/* doorway */
.doorway{position:relative;height:260vh;background:#0e0e0d}
.doorway__pin{position:sticky;top:0;height:100vh;overflow:hidden;display:grid;place-items:center}
.doorway__frame{position:absolute;inset:0;clip-path:inset(0 0 0 0)}.doorway__frame video{width:100%;height:100%;object-fit:cover}
.doorway__frame::after{content:"";position:absolute;inset:0;background:rgba(14,14,13,.4)}
.doorway__text{position:relative;text-align:center}.doorway__line{font:300 clamp(34px,5.4vw,80px)/1.05 var(--serif);margin:0 0 30px}
html.no-js .doorway,.reduced .doorway{height:auto}html.no-js .doorway__pin,.reduced .doorway__pin{position:relative;min-height:90vh}
/* arch images + gallery */
.arch-img{position:relative;overflow:hidden;border-radius:50% 50% 0 0/34% 34% 0 0;aspect-ratio:4/5;background:#2a2926}
.arch-img img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
@media(max-width:900px){.gallery{grid-template-columns:repeat(2,1fr)}}
.gallery__item{text-decoration:none;display:grid;gap:16px}
.gallery__item:hover .arch-img img,.gallery__item:focus-visible .arch-img img,.gallery__item.is-on .arch-img img{transform:scale(1.05)}
.gallery__t{font:400 22px/1.2 var(--serif)}
.gallery__cap{margin:40px 0 0;font:300 clamp(22px,2.4vw,32px)/1.35 var(--serif);font-style:italic;max-width:46ch;min-height:3em;color:#ddd5c7;transition:opacity .4s}
/* sticky split */
.ssplit{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,7vw,110px);align-items:start}
.split__media{position:sticky;top:12vh}
.arch-img--tall{aspect-ratio:4/5.4}
.split__img{position:absolute;inset:0;opacity:0;transition:opacity 1s var(--ease)}.split__img.is-on{opacity:1}
.split__list .h2{margin-bottom:30px}
.split__step{padding:44px 0;border-top:1px solid var(--line);min-height:44vh}
.split__n{font:500 12px var(--sans);letter-spacing:.24em;color:var(--moss)}.split__step h3{font:400 clamp(26px,2.6vw,36px)/1.15 var(--serif);margin:14px 0 12px}.split__step p{margin:0;color:var(--muted);max-width:44ch}
@media(max-width:860px){.ssplit{grid-template-columns:1fr}.split__media{position:relative;top:0;max-width:420px}.split__step{min-height:0}}
/* transformation sequence */
.transform{position:relative;height:420vh;background:#ece4d4;color:var(--ink)}
.transform__pin{position:sticky;top:0;height:100vh;overflow:hidden}
.transform__tag{position:absolute;z-index:4;top:96px;left:50%;transform:translateX(-50%);margin:0;color:var(--moss);white-space:nowrap;font-size:10.5px}
.transform__stage{position:absolute;inset:0;display:grid;place-items:center;background:#ece4d4 radial-gradient(rgba(27,26,24,.05) 1px,transparent 1px) 0 0/6px 6px}
.bp{width:min(1200px,96vw);height:auto}
.bp-line{fill:none;stroke:#2e3a40;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.bp-dim{font:500 14px var(--sans);letter-spacing:.3em;fill:#5c6b4a}
.transform__door{position:absolute;inset:0;z-index:2;clip-path:inset(0 0 0 0)}
.transform__door img{width:100%;height:100%;object-fit:cover}
.transform__copy{position:absolute;inset:auto 0 9vh;z-index:3;text-align:center;pointer-events:none;padding:0 20px}
.tf-line{font:300 clamp(34px,5vw,74px)/1.05 var(--serif);margin:0;letter-spacing:-.02em}
.tf-line--2{position:absolute;left:0;right:0;bottom:0;color:var(--cream);text-shadow:0 2px 30px rgba(0,0,0,.35)}
.js.motion .tf-line--2{opacity:0}
html.no-js .transform,.reduced .transform{height:auto}
html.no-js .transform__pin,.reduced .transform__pin{position:relative;height:auto;display:grid}
html.no-js .transform__stage,.reduced .transform__stage,html.no-js .transform__door,.reduced .transform__door,html.no-js .transform__copy,.reduced .transform__copy{position:relative;inset:auto}
html.no-js .tf-line--2,.reduced .tf-line--2{position:relative;color:var(--ink);text-shadow:none;margin-top:16px}
html.no-js .transform__copy,.reduced .transform__copy{padding:40px 20px 70px}
/* before/after */
.ba{position:relative;overflow:hidden;border-radius:50% 50% 0 0/22% 22% 0 0;aspect-ratio:16/10;--pos:50%;user-select:none}
.ba img{width:100%;height:100%;object-fit:cover}
.ba__before{position:absolute;inset:0;clip-path:inset(0 calc(100% - var(--pos)) 0 0)}
.ba__range{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0}
.ba__handle{position:absolute;top:0;bottom:0;left:var(--pos);width:2px;background:var(--cream);pointer-events:none}
.ba__handle::after{content:"↔";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:46px;height:46px;border-radius:50%;background:var(--cream);color:var(--ink);display:grid;place-items:center;font-size:18px}
.ba__tag{position:absolute;bottom:18px;font:500 11px var(--sans);letter-spacing:.24em;text-transform:uppercase;background:rgba(21,21,21,.6);color:var(--cream);padding:6px 10px;border-radius:999px}.ba__tag--l{left:18px}.ba__tag--r{right:18px}
.deals{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:22px;margin-top:40px}
.deal{border-top:1px solid var(--line);padding-top:18px}.deal h3{font:400 24px var(--serif);margin:14px 0 4px}.deal p{margin:0;color:var(--muted)}
.cta2{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:70px}@media(max-width:800px){.cta2{grid-template-columns:1fr}}
.cta2__card{padding:40px;border:1px solid var(--line);border-radius:22px;display:grid;gap:14px;justify-items:start}
.cta2__card h3{font:300 clamp(28px,3vw,40px)/1.1 var(--serif);margin:0}.cta2__card p{margin:0;color:var(--muted)}
.cta2__card--dark{background:var(--ink);color:var(--cream);}
.cta2__card--dark p:not(.label){color:#bdb6a9}.cta2__card--dark .label{color:var(--ochre)}
/* faq */
.faq{display:grid;grid-template-columns:1fr 1.4fr;gap:60px}@media(max-width:900px){.faq{grid-template-columns:1fr;gap:30px}}
.faq__list details{border-bottom:1px solid var(--line)}
.faq__list summary{cursor:pointer;list-style:none;padding:26px 44px 26px 0;font:400 22px/1.3 var(--serif);position:relative}
.faq__list summary::-webkit-details-marker{display:none}
.faq__list summary::after{content:"+";position:absolute;right:4px;top:22px;font:300 28px var(--sans);color:var(--ochre);transition:transform .4s var(--ease)}
.faq__list details[open] summary::after{transform:rotate(45deg)}.faq__list p{margin:0 0 26px;color:var(--muted);max-width:60ch}
/* offer form */
.offer{display:grid;grid-template-columns:1fr 1.1fr;gap:70px;align-items:start}@media(max-width:900px){.offer{grid-template-columns:1fr;gap:40px}}
.offer .muted{margin:22px 0 30px}
.contact{list-style:none;margin:0;padding:0}.contact li{display:flex;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--line)}.contact span{font:500 11px var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}.contact a{text-decoration:none}
.form{display:grid;gap:16px;padding:clamp(22px,4vw,40px);border-radius:22px;background:#f7f2e8;border:1px solid var(--line)}
.form__row{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:560px){.form__row{grid-template-columns:1fr}}
.form label{display:grid;gap:8px;font:500 11.5px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:#4a463f}.form small{text-transform:none;letter-spacing:0;color:var(--muted)}
.form input,.form select,.form textarea{width:100%;font:400 16px var(--sans);text-transform:none;letter-spacing:0;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--moss);box-shadow:0 0 0 4px rgba(92,107,74,.15)}
.form .consent{display:flex;gap:12px;align-items:flex-start;text-transform:none;letter-spacing:0;font:400 13.5px/1.5 var(--sans);color:#4a463f}
.form .consent input{width:20px;height:20px;flex:none;margin-top:2px;accent-color:var(--moss)}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}
.form__status{margin:0;min-height:1.2em;font-weight:600}.form__status.ok{color:var(--moss)}.form__status.err{color:#a33}
.form__fine{margin:0;font-size:13px;color:var(--muted);text-align:center}
/* footer */
.footer{background:var(--bg);border-top:1px solid var(--line);padding:70px 0 34px;overflow:hidden}
.footer__big{font:300 clamp(64px,13vw,210px)/.9 var(--serif);font-style:italic;letter-spacing:-.03em;margin:0 0 40px;color:#2a2926;white-space:nowrap}
.footer__row{display:flex;justify-content:space-between;flex-wrap:wrap;gap:20px;color:var(--muted);font-size:14px}.footer__row nav{display:flex;gap:22px;flex-wrap:wrap}.footer__row a{text-decoration:none}.footer__row a:hover{color:var(--fg)}
/* modal */
.modal{position:fixed;inset:0;z-index:120;display:grid;place-items:center;background:rgba(10,10,9,.86);backdrop-filter:blur(8px);padding:20px}
.modal[hidden]{display:none}
.modal__inner{position:relative;width:min(1100px,100%);aspect-ratio:16/9;border-radius:18px;overflow:hidden;background:#000;box-shadow:0 40px 120px rgba(0,0,0,.6)}
.modal__inner video{width:100%;height:100%;object-fit:cover}
.modal__close{position:absolute;z-index:2;top:12px;right:12px;width:44px;height:44px;border-radius:50%;border:0;background:rgba(239,232,219,.9);color:var(--ink);font-size:26px;line-height:1;cursor:pointer}
/* motion helpers (hidden only when JS motion is active) */
.split .w,.display .w,.h2 .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.1em;margin-bottom:-.1em}.w>span{display:inline-block}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.js.motion .loader{animation:loaderFailsafe .6s 7s forwards}
@keyframes loaderFailsafe{to{opacity:0;visibility:hidden}}
/* chapters nav (hidden until past hero), progress counter */
.nav{transition:transform .7s var(--ease),opacity .5s}
.js.motion .nav{opacity:0;transform:translate(-50%,-140%);pointer-events:none}
.js.motion .nav.is-shown{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.chapters{position:relative;margin-left:auto}
.chapters summary{list-style:none;cursor:pointer;font:500 11.5px var(--sans);text-transform:uppercase;letter-spacing:.18em;color:#cfc8bb;padding:8px 10px}
.chapters summary::-webkit-details-marker{display:none}.chapters summary::after{content:" +";color:var(--ochre)}
.chapters[open] summary::after{content:" −"}
.chapters ol{position:absolute;right:0;top:calc(100% + 14px);margin:0;padding:12px;list-style:none;min-width:240px;border-radius:18px;background:rgba(21,21,21,.96);border:1px solid var(--line);counter-reset:c}
.chapters li{counter-increment:c}.chapters a{display:flex;gap:12px;padding:10px 12px;border-radius:10px;text-decoration:none;font:400 16px var(--serif)}
.chapters a::before{content:"0" counter(c);font:500 11px var(--sans);letter-spacing:.2em;color:var(--ochre);padding-top:4px}.chapters a:hover{background:rgba(239,232,219,.06)}
.progress{position:fixed;z-index:50;left:22px;top:50%;transform:translateY(-50%);display:none;flex-direction:column;align-items:center;gap:10px;font:500 10.5px var(--sans);letter-spacing:.2em;color:var(--muted);mix-blend-mode:difference}
.progress__bar{width:1px;height:120px;background:rgba(239,232,219,.25);position:relative}.progress__bar i{position:absolute;left:0;top:0;width:1px;height:100%;background:var(--cream);transform-origin:top;transform:scaleY(0)}
.chapter-no{position:fixed;z-index:50;right:24px;bottom:18px;display:none;font:300 64px/1 var(--serif);font-style:italic;color:var(--cream);mix-blend-mode:difference;opacity:.8}
@media(min-width:900px){.js.motion .progress{display:flex}.js.motion .chapter-no{display:block}}
/* curved panel rising over the video */
.curve{position:relative;z-index:2;margin-top:-14vh;border-radius:50% 50% 0 0/14vh 14vh 0 0}
/* closing wordmark with house framed in an arch */
.footer__arch{width:min(320px,60vw);margin:0 auto -40px;position:relative;z-index:1}
.footer__big{text-align:center;color:#3a3833}
.footer__note{text-align:center;color:var(--muted);font-size:13px;margin:0 0 34px}
/* keep pinned sections short */
.doorway{height:200vh}.transform{height:250vh}
.fine{font:500 10.5px var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin:14px 0 0}
.doorway__shoji{position:absolute;inset:0}.doorway__shoji img{width:100%;height:100%;object-fit:cover;filter:brightness(.55)}
.transform__src{position:absolute;z-index:4;bottom:18px;left:0;right:0;text-align:center;margin:0;font:400 11px var(--sans);color:#6b665d}
.transform__door img{position:absolute;inset:0}.door-after{opacity:0}
html.no-js .door-after,.reduced .door-after{opacity:1}
.bp-ink{stroke-width:9;fill:rgba(46,58,64,0)}
.modal__cap{position:absolute;left:14px;bottom:10px;margin:0;font:500 10.5px var(--sans);letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.7)}
.credits{min-height:100vh}.credits__list{list-style:none;padding:0;margin:40px 0;display:grid;gap:0}.credits__list li{padding:16px 0;border-top:1px solid var(--line)}.credits__list a{color:var(--moss)}
