@font-face{font-family:Inter;src:url('/assets/fonts/Inter-Regular.woff2');font-display:swap}@font-face{font-family:Inter;src:url('/assets/fonts/Inter-Medium.woff2');font-weight:500;font-display:swap}@font-face{font-family:Inter;src:url('/assets/fonts/Inter-Bold.woff2');font-weight:600 800;font-display:swap}@font-face{font-family:Playfair;src:url('/assets/fonts/Playfair-MediumItalic.ttf');font-weight:500;font-style:italic;font-display:swap}
:root{--green:#253125;--heading:#3a613a;--sand:#e7c68b;--muted:#f4f4f4;--gutter:6.25vw;--ease:cubic-bezier(.22,1,.36,1)}*{box-sizing:border-box}html{scrollbar-gutter:stable}body{margin:0;color:#111;background:#fff;font-family:Inter,Arial,sans-serif;font-size:16px;-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0}a{color:inherit;text-decoration:none}img{display:block}p,h1,h2,h3{margin:0}p{line-height:1.4}button{background:none}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid #b68b47;outline-offset:5px}h2{font-size:clamp(28px,2.0833vw,40px);font-weight:400;line-height:1.1;letter-spacing:-.04em;color:var(--heading)}h3{font-size:clamp(22px,1.46vw,28px);font-weight:400;line-height:1.1;letter-spacing:-.04em}.section{padding-left:var(--gutter);padding-right:var(--gutter)}.section-heading{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}.section-heading>div>p{font-size:18px;max-width:678px}.pill{display:inline-flex;align-items:center;justify-content:center;gap:12px;padding:12px 12px 12px 24px;background:var(--muted);border-radius:56px;min-height:56px;line-height:1.1;font-weight:500;letter-spacing:-.02em;transition:background .25s,transform .4s var(--ease);white-space:nowrap}.pill:hover{background:#E7E0D4}.pill .arrow{width:40px;height:32px}.pill.sand{background:var(--sand)}.pill.green{background:var(--heading);color:white}.pill.green .arrow{filter:invert(1)}.pill.white{background:#fff}.eyebrow{text-transform:uppercase;font-size:13px;font-weight:600;letter-spacing:-.02em}.center{text-align:center;margin-top:60px}.skip{position:fixed;left:15px;top:-70px;z-index:100;background:#fff;padding:15px}.skip:focus{top:15px}
.hero{height:100svh;min-height:640px;width:100%;position:relative;background:#4c4c4c;color:#fff;overflow:hidden}.hero-video,.hero-shade{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero-shade{background:linear-gradient(180deg,#0006,transparent 30%,#0001 55%,#0006)}header{position:absolute;top:12px;left:var(--gutter);right:var(--gutter);display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}.logo{display:flex;flex-direction:column;align-items:center;width:161px;gap:9px}.logo img:first-child{width:161px;height:101px}.logo img:last-child{width:63px;height:10px}.hover-nav{display:flex;flex-direction:column;align-items:flex-start;position:relative;width:max-content;max-width:100%}.hover-nav a{display:block;padding:5px 10px;font-weight:500;line-height:19px;letter-spacing:-.02em;position:relative;z-index:1;transition:opacity .3s}.hover-nav.active a{opacity:.6}.hover-nav.active a.is-hovered{opacity:1}.nav-marker{position:absolute;top:0;left:0;border-radius:24px;background:#ffffff29;backdrop-filter:blur(18px);opacity:0;transition:transform .45s var(--ease),width .45s var(--ease),height .45s var(--ease),opacity .25s;pointer-events:none}.active .nav-marker{opacity:1}.header-contact{position:absolute;right:0;top:0;display:flex;gap:4px;align-items:center}.header-contact a,.header-contact button{padding:5px 10px;font-weight:500;font-size:16px;white-space:nowrap;display:flex;align-items:center;gap:4px}.header-contact img{width:14px;height:14px}.hero h1{position:absolute;left:var(--gutter);top:46%;transform:translateY(-50%);font-size:clamp(38px,3.177vw,61px);font-weight:400;line-height:1.1;letter-spacing:-.04em}.hero h1 em{display:block;font-family:Playfair,Georgia,serif;font-weight:500;font-size:1.246em;letter-spacing:-.06em;line-height:1.1;margin-top:-3px}.hero-bottom{position:absolute;left:var(--gutter);right:var(--gutter);bottom:9%;display:grid;grid-template-columns:1fr 1fr;gap:10px}.hero-cta hr{border:0;border-top:1px solid white;margin:20px 0}.news>.eyebrow{margin-bottom:20px}.news-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.news-grid>a{display:flex;padding:4px;gap:10px;background:#fff;color:#111;min-width:0}.news-grid img{width:36%;height:120px;object-fit:cover}.news-grid span{padding:8px 0;display:flex;flex-direction:column;justify-content:space-between;font-size:15px;line-height:1.1;letter-spacing:-.02em}.news-grid small{font-size:14px;color:#777}
.works{padding-top:100px;padding-bottom:100px}.filters{display:flex;gap:2px;margin-top:30px}.filters button{background:var(--muted);padding:12px 20px;border-radius:24px;font-weight:500;min-height:44px;transition:background .3s}.filters .selected{background:var(--sand)}.work-rows{margin-top:60px;display:flex;flex-direction:column;gap:120px}.work-row{display:grid;grid-template-columns:2fr 1fr 1fr;gap:11px;align-items:start}.work-row:nth-child(2){grid-template-columns:1fr 1fr}.work-row:nth-child(3){grid-template-columns:1fr 2fr 1fr}.work-card{padding:0;display:block;text-align:left;min-width:0}.work-image{display:block;width:100%;aspect-ratio:835/560;position:relative;background:#f7f6f5;overflow:hidden}.work-image img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .5s ease}.work-image .sketch{opacity:0}.work-image .live-photo{opacity:1}.work-rows.has-active .work-card:not(.is-active) .sketch{opacity:.7}.work-rows.has-active .work-card:not(.is-active) .live-photo{opacity:0}.caption{display:flex;align-items:center;gap:6px;font-size:18px;letter-spacing:-.02em;margin-top:20px}.caption i{width:4px;height:4px;background:#d9d9d9;border-radius:50%}.forest{display:grid;grid-template-columns:1fr 1fr;background:var(--green);color:#eed19d;min-height:56.25vw;position:relative}.forest-copy{padding:120px var(--gutter) 100px;position:relative}.forest h2{color:var(--sand);margin-bottom:40px}.forest-copy>p:not(.film-caption){max-width:416px;font-size:18px;margin-bottom:40px}.forest>video{width:100%;height:100%;position:absolute;inset:0 0 0 auto;max-width:50%;object-fit:cover}.forest .branch{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:237px;height:340px;display:grid;place-items:center;pointer-events:none}.branch img{max-width:100%;max-height:100%}.film{position:relative;display:block;width:min(416px,100%);aspect-ratio:416/234;margin-top:100px;padding:0;overflow:hidden}.film>img:first-child{width:100%;height:100%;object-fit:cover}.film .play{position:absolute;width:35px;height:40px;top:50%;left:50%;transform:translate(-50%,-50%)}.film-caption{font-size:18px;margin-top:15px}
.catalog{padding-top:100px;padding-bottom:70px}.catalog-grid{display:grid;grid-template-columns:repeat(5,minmax(0,220px));justify-content:space-between;gap:90px 40px;margin-top:60px}.catalog-card{padding:0;position:relative;aspect-ratio:220/145;min-width:0;z-index:1}.catalog-visual{display:block;position:absolute;inset:0;overflow:hidden;background:#f9f9f8;transform-origin:top left;transition:transform .65s var(--ease),box-shadow .65s;will-change:transform}.catalog-visual>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .55s ease}.catalog-sketch{opacity:.5}.catalog-photo{opacity:1}.catalog-grid.has-active .catalog-card:not(.is-active) .catalog-photo{opacity:0}.catalog-card.is-active{z-index:5}.catalog-card.is-active .catalog-visual{transform:scale(2.045);box-shadow:0 18px 40px #0001}.catalog-card:nth-child(5n) .catalog-visual{transform-origin:top right}.project-tags{position:absolute;left:5px;top:5px;display:flex;gap:2px;opacity:0;transition:opacity .3s}.project-tags span{font-size:6.5px;background:#000;color:#fff;padding:3px 4px;text-transform:uppercase;font-weight:600}.is-active .project-tags{opacity:1}.faq{margin-top:120px;padding-bottom:60px}.faq>div:first-child>p{max-width:430px;margin:30px 0}.questions{border-top:1px solid #f4f4f4}.questions details{border-bottom:1px solid #f4f4f4}.questions summary{list-style:none;display:flex;gap:20px;align-items:center;justify-content:space-between;padding:20px 0;font-size:18px;line-height:1.4;cursor:pointer;border-radius:12px;transition:padding .4s var(--ease),background .4s}.questions summary::-webkit-details-marker{display:none}.questions summary>span{display:grid;place-items:center;flex-shrink:0;width:40px;height:32px;border-radius:63px;transition:background .3s}.questions summary img{width:24px;height:24px;transition:transform .4s}.questions summary:hover,.questions details[open] summary{background:#f4f4f4;padding:17px 20px}.questions summary:hover>span,.questions details[open] summary>span{background:#fff}.questions details[open] summary img{transform:rotate(45deg)}.answer{padding:18px 20px 25px;font-size:16px;max-width:720px;animation:fade-in .4s ease}.services{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding-top:0;padding-bottom:140px}.service{position:relative;aspect-ratio:554/640;text-align:left;overflow:hidden;padding:24px;color:#fff;display:flex;align-items:start}.service>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1s var(--ease)}.service:after{content:'';position:absolute;inset:0;background:linear-gradient(#0006,transparent 35%)}.service>span{position:relative;z-index:1;font-size:28px;letter-spacing:-.04em}.service .service-cta{position:absolute;bottom:24px;left:24px;font-size:18px;opacity:0;transform:translateY(10px);transition:.4s}.service:hover>img{transform:scale(1.04)}.service:hover .service-cta,.service:focus-visible .service-cta{opacity:1;transform:none}.family{height:91.6667vw;min-height:1000px;background:#2b1b14;position:relative;padding-top:6.25vw;overflow:hidden}.family-card{position:relative;z-index:2;margin:auto;background:#e1d5b4;width:28.854vw;min-width:430px;padding:40px 20px;text-align:center;color:#394d39;display:flex;align-items:center;flex-direction:column;gap:40px}.family-card h2{font-size:clamp(30px,2.344vw,45px);color:inherit;line-height:1.1;white-space:nowrap}.family-card h2 em{display:block;font-family:Playfair,Georgia,serif;font-size:1.244em;font-weight:500;letter-spacing:-.05em;line-height:1}.endgrain{width:193px;height:220px;display:grid;place-items:center}.endgrain img{max-width:100%;max-height:100%}.family-card p{max-width:419px;font-size:18px}.family-photo{position:absolute;object-fit:cover;border-radius:20px}.fp0{left:6.72%;top:27.44%;width:15.26%;height:11.2%}.fp1{left:31.4%;top:76.76%;width:15.78%;height:12.44%}.fp2{left:11.72%;top:69.72%;width:11.4%;height:8.98%}.fp3{left:77.97%;top:26.2%;width:15.26%;height:22.9%}.fp4{left:64.95%;top:69.1%;width:19.74%;height:15.28%}.visit{padding-top:140px;padding-bottom:70px;display:grid;grid-template-columns:2fr 1fr 1fr;gap:10px}.visit-card,.meeting-card{position:relative;min-height:460px;padding:24px;background:#eed19d;overflow:hidden}.visit-card{color:#fff}.visit-card video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.visit-card:after{content:'';position:absolute;inset:0;background:linear-gradient(#0005,transparent,#0005);pointer-events:none}.visit h3,.visit .eyebrow,.visit .pill{position:relative;z-index:1}.visit .pill{position:absolute;bottom:24px;right:24px}.visit .eyebrow{position:absolute;bottom:24px;left:24px;max-width:40%}.stage{padding:240px 20px;text-align:center}.stage p{font-size:18px;margin-bottom:20px}.stage-stack{position:relative;isolation:isolate;font-size:28px;font-weight:500;padding:24px 80px;background:#f4f4f4;border-radius:56px;min-width:335px;box-shadow:0 17px 0 -7px #dfdfdf,0 29px 0 -16px #f2f2f2;transition:transform .4s,box-shadow .4s}.stage-stack:hover{transform:translateY(-5px);box-shadow:0 22px 0 -7px #dfdfdf,0 38px 0 -16px #f2f2f2}
footer{position:relative;min-height:950px;background:var(--green);color:var(--sand);padding:60px var(--gutter);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.birds{position:absolute;inset:24% 0 0;width:100%;height:55%;border:0;pointer-events:none}.footer-top,.footer-bottom{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:10px}.footer-top>div>p{font-size:28px;max-width:488px;line-height:1.4;margin-bottom:40px}.footer-top .pill{font-size:18px;padding:20px 20px 20px 40px}.footer-top .nav-marker{background:#0008}.footer-bottom{align-items:end}.footer-bottom p{margin-top:15px}.footer-bottom address{font-style:normal}.footer-bottom address>a{display:inline-block;margin-top:15px}.text-button{padding:0;margin-top:15px;text-align:left}.text-button:hover{text-decoration:underline}.footer-tree{position:absolute;bottom:0;left:34%;width:191px;height:400px;display:flex;align-items:end;justify-content:center;pointer-events:none}.footer-tree img{max-height:100%;max-width:100%}.floating-tools{position:fixed;left:20px;bottom:20px;z-index:20;display:flex;flex-direction:column;gap:10px}.round{position:relative;display:grid;place-items:center;width:56px;height:56px;background:#f4f4f4;border-radius:50%;box-shadow:none}.up-arrow{width:32px;height:32px;transform:rotate(-90deg)}.messenger-icon{position:absolute;width:28px;height:28px;object-fit:contain;animation:messenger-cycle 9s infinite;opacity:0}.messenger-1{animation-delay:3s}.messenger-2{animation-delay:6s}.messenger-panel{position:absolute;left:66px;bottom:0;background:#fff;padding:8px;border-radius:18px;box-shadow:0 8px 40px #0002;color:#111;min-width:180px}.messenger-panel a{display:flex;align-items:center;gap:12px;padding:12px;border-radius:10px}.messenger-panel a:hover{background:#f4f4f4}.messenger-panel img{width:24px;height:24px;object-fit:contain}dialog{border:0;border-radius:20px;padding:44px;max-width:min(720px,calc(100vw - 32px));width:100%;max-height:90svh;overflow:auto;background:#fff;color:var(--green)}dialog::backdrop{background:#10180f99;backdrop-filter:blur(8px)}.modal-close{position:absolute;right:12px;top:8px;font-size:32px;min-width:44px;min-height:44px;z-index:2}.modal-body h2{margin-bottom:24px}.modal-body p{margin-bottom:20px}.modal-links{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0}.modal-links a{padding:14px 20px;background:var(--muted);border-radius:30px}.modal-body form{display:grid;gap:16px}.modal-body label{display:grid;gap:8px}.modal-body input,.modal-body textarea{font:inherit;padding:14px;border:1px solid #ccc;border-radius:8px;width:100%}.modal-body small{line-height:1.5}.modal-gallery{position:relative}.modal-gallery>img{width:100%;aspect-ratio:1.5;object-fit:cover;margin-bottom:20px}.gallery-controls{display:flex;justify-content:space-between;margin-bottom:20px}.gallery-controls button{padding:12px 18px;border-radius:30px;background:var(--muted)}.modal-body video{width:100%}.stage-choices{display:flex;flex-direction:column;gap:12px}.stage-choices button{padding:20px;background:var(--muted);border-radius:40px;text-align:left}.filtered-out{display:none!important}@keyframes messenger-cycle{0%{opacity:0;transform:translateY(15px) scale(.65);filter:blur(4px)}5%,27%{opacity:1;transform:none;filter:blur(0)}33%,100%{opacity:0;transform:translateY(-15px) scale(.65);filter:blur(4px)}}@keyframes fade-in{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
@media(min-width:1921px){.catalog-grid{grid-template-columns:repeat(5,minmax(0,1fr));column-gap:8vw}.forest{min-height:1080px}}@media(max-width:1400px){.header-contact{flex-direction:column;align-items:flex-end}.news-grid img{height:100px}.news-grid span{font-size:12px}.news-grid small{font-size:12px}.forest-copy{padding-top:80px;padding-bottom:70px}.film{margin-top:65px}.catalog-grid{column-gap:5vw;row-gap:70px}.visit-card,.meeting-card{min-height:360px}.visit .pill{font-size:13px;gap:6px;padding-left:16px}.visit .eyebrow{font-size:10px;bottom:100px}.service>span{font-size:22px}.footer-tree{left:29%}}@media(max-width:900px){:root{--gutter:5vw}.hero h1{font-size:44px;max-width:85%}.hero-bottom{bottom:8%;grid-template-columns:1fr}.hero-cta{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.hero-cta hr{display:none}.header-contact{font-size:14px}.header-contact a,.header-contact button{font-size:14px}.logo{width:120px}.logo img:first-child{width:120px;height:auto}.logo img:last-child{width:48px;height:auto}.hero header .hover-nav{margin-left:-15px}.section-heading{gap:30px}.section-heading>div>p,.forest-copy>p:not(.film-caption){font-size:16px}.work-rows{gap:70px}.caption{font-size:13px;flex-wrap:wrap}.forest-copy{padding:60px 5vw}.forest .branch{width:150px;height:230px}.film{margin-top:60px}.catalog-grid{grid-template-columns:repeat(3,1fr);gap:55px 40px}.catalog-card.is-active .catalog-visual{transform:scale(1.65)}.catalog-card:nth-child(5n) .catalog-visual{transform-origin:top left}.catalog-card:nth-child(3n) .catalog-visual{transform-origin:top right}.questions summary{font-size:16px}.family{min-height:1100px}.family-card{min-width:360px;gap:30px}.family-card p{font-size:16px}.services{padding-bottom:80px}.service{padding:15px}.service>span{font-size:19px}.visit{grid-template-columns:1fr 1fr;padding-top:80px}.visit-card{grid-column:span 2;min-height:440px}.meeting-card{min-height:300px}.visit .eyebrow{bottom:24px}.stage{padding:160px 20px}footer{min-height:800px}.footer-tree{width:140px;height:300px;left:30%}.footer-top>div>p{font-size:23px;max-width:310px}.footer-bottom{font-size:14px}}
@media(max-width:600px){:root{--gutter:20px}.hero{min-height:700px}header{grid-template-columns:1fr auto;top:20px}.logo{width:90px;gap:4px}.logo img:first-child{width:90px;height:57px}.logo img:last-child{width:38px;height:6px}.hero header .hover-nav{margin-left:0;margin-right:0}.hover-nav a{font-size:14px;min-height:30px}.header-contact{top:140px;left:0;right:auto;align-items:start;gap:3px}.header-contact a,.header-contact button{padding-left:0;font-size:13px}.hero h1{font-size:32px;top:45%;max-width:calc(100% - 40px);line-height:1.1}.hero h1 em{font-size:40px;margin-top:7px}.hero-bottom{bottom:50px}.hero-cta{align-items:start;gap:15px}.hero-cta .eyebrow{max-width:100px;font-size:10px;padding-top:10px}.pill{font-size:14px;min-height:48px;padding:8px 8px 8px 18px;gap:8px}.news>.eyebrow{font-size:10px;margin-bottom:10px}.news-grid{gap:6px}.news-grid>a{gap:6px}.news-grid img{height:72px;width:34%}.news-grid span{font-size:10px}.news-grid small{font-size:10px}.floating-tools{left:12px;bottom:12px;gap:8px}.round{width:44px;height:44px}.round .messenger-icon{width:24px;height:24px}.messenger-panel{left:54px}.section-heading{grid-template-columns:1fr;gap:24px}h2{font-size:28px}.works,.catalog{padding-top:60px;padding-bottom:60px}.filters{margin-top:20px}.work-rows{margin-top:30px;gap:40px}.work-row,.work-row:nth-child(3){grid-template-columns:1fr 1fr;gap:24px 10px}.work-row:nth-child(2){gap:10px}.caption{font-size:11px;margin-top:10px;gap:4px}.center{margin-top:35px}.forest{grid-template-columns:1fr;min-height:0}.forest-copy{padding:60px 20px 45px}.forest h2{margin-bottom:24px}.forest-copy>p:not(.film-caption){max-width:90%;margin-bottom:24px}.forest>video{position:relative;max-width:100%;height:500px;grid-row:2}.forest .branch{left:auto;right:10px;top:auto;bottom:400px;transform:none;width:110px;height:160px}.film{margin-top:40px;width:70%}.film-caption{font-size:14px}.catalog-grid{grid-template-columns:repeat(2,1fr);gap:36px 20px;margin-top:35px}.catalog-card.is-active .catalog-visual{transform:scale(1.15)}.catalog-card:nth-child(n) .catalog-visual{transform-origin:center}.faq{margin-top:75px;padding-bottom:0}.questions summary{font-size:14px;gap:5px;padding:18px 0}.questions summary:hover,.questions details[open] summary{padding:17px 10px}.faq>div:first-child>p{margin:24px 0}.services{grid-template-columns:1fr;gap:12px;padding-bottom:60px}.service{aspect-ratio:1.1;padding:20px}.service>span{font-size:24px}.service .service-cta{opacity:1;transform:none;font-size:15px}.family{height:auto;min-height:1050px;padding:60px 20px 380px}.family-card{width:100%;min-width:0;padding:30px 20px;gap:25px}.family-card h2{font-size:30px}.endgrain{width:150px;height:170px}.family-photo{border-radius:10px}.fp0{left:5%;top:auto;bottom:205px;width:30%;height:90px}.fp3{left:auto;right:5%;top:auto;bottom:165px;width:28%;height:145px}.fp1{left:38%;top:auto;bottom:40px;width:31%;height:110px}.fp2{left:7%;top:auto;bottom:80px;width:25%;height:80px}.fp4{left:auto;right:5%;top:auto;bottom:30px;width:23%;height:100px}.visit{padding-top:60px;padding-bottom:30px;gap:10px}.visit-card{min-height:380px}.meeting-card{min-height:250px;padding:15px}.meeting-card h3{font-size:20px}.visit .pill{right:15px;bottom:15px;font-size:12px}.visit-card .eyebrow{bottom:80px;font-size:11px;max-width:80%}.stage{padding:120px 20px}.stage p{font-size:15px}.stage-stack{min-width:0;font-size:24px;padding:22px 60px}footer{min-height:900px;padding:45px 20px 80px}.footer-top{grid-template-columns:1fr;gap:35px}.footer-top>div>p{font-size:24px;max-width:340px;margin-bottom:24px}.footer-top .pill{font-size:15px;padding:12px 12px 12px 24px}.footer-top .hover-nav{margin-left:-10px}.footer-bottom{grid-template-columns:1fr;gap:10px;font-size:12px}.footer-bottom address{grid-row:1}.footer-tree{right:0;left:auto;bottom:10px;width:95px;height:200px}.footer-bottom>div:first-child{max-width:220px}.birds{top:38%;height:30%}.modal-body h2{font-size:25px}dialog{padding:45px 22px 25px}.modal-links a{font-size:13px;padding:12px}.project-tags span{font-size:8px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.messenger-0{opacity:1}.catalog-card.is-active .catalog-visual{transform:none}.birds{display:none}}
.pill{color:#111}.pill.green{color:#fff}
@media(min-width:901px){.hero-bottom{bottom:6.4%}}
[hidden]{display:none!important}
@keyframes messenger-cycle{0%{opacity:0;transform:translateY(15px) scale(.65);filter:blur(4px)}5%,32%{opacity:1;transform:none;filter:blur(0)}38%,100%{opacity:0;transform:translateY(-15px) scale(.65);filter:blur(4px)}}
.messenger-0{animation-delay:-.45s}.messenger-1{animation-delay:2.55s}.messenger-2{animation-delay:5.55s}
@media(max-width:600px){footer{min-height:1050px}.birds{top:48%;height:20%}}
.hero{min-height:0}
@media(max-height:650px){.hero h1{font-size:clamp(26px,3vw,44px);top:43%}.hero h1 em{font-size:1.18em}.hero-bottom{bottom:30px}.news-grid img{height:64px}.hero-cta .pill{min-height:44px;padding-top:6px;padding-bottom:6px}.hero-cta hr{margin:10px 0}.news>.eyebrow{margin-bottom:10px}}
@media(max-width:600px) and (max-height:650px){.header-contact{top:120px}.hero h1{font-size:26px;top:46%}.hero h1 em{font-size:32px}.hero-bottom{bottom:45px}.news-grid img{height:50px}.news-grid span{padding:3px 0}.hero-cta{margin-bottom:10px}.hero .eyebrow{font-size:9px}}
.catalog-sketch{opacity:.7}.catalog-visual{transform-origin:top center}.catalog-card:nth-child(5n+1) .catalog-visual{transform-origin:top left}
@media(max-width:900px){.catalog-card:nth-child(n) .catalog-visual{transform-origin:top center}.catalog-card:nth-child(3n+1) .catalog-visual{transform-origin:top left}.catalog-card:nth-child(3n) .catalog-visual{transform-origin:top right}}
@media(max-width:600px){.catalog-card:nth-child(n) .catalog-visual{transform-origin:center}}
/* Content follows the 1680 px Figma grid; extra viewport width becomes margins. */
:root{--gutter:max(40px,calc((var(--page-width,100vw) - 1680px)/2))}
@media(max-width:900px){:root{--gutter:32px}}
@media(max-width:600px){:root{--gutter:20px}}
@media(min-width:1921px){.catalog-grid{grid-template-columns:repeat(5,minmax(0,220px));column-gap:40px}.family-card{width:554px}.family{height:1760px;padding-top:120px}}
/* Full-height forest split, with the film anchored toward the bottom. */
@media(min-width:601px){
 .forest{height:100svh;min-height:0}
 .forest-copy{height:100%;min-height:0;padding:clamp(28px,7.5svh,100px) 40px clamp(28px,7.5svh,100px) var(--gutter);display:flex;flex-direction:column;align-items:flex-start}
 .forest h2{margin-bottom:clamp(16px,3svh,40px)}
 .forest-copy>p:not(.film-caption){margin-bottom:clamp(16px,3svh,40px)}
 .forest-copy>.pill{flex-shrink:0}
 .forest .film{margin-top:auto;max-height:22svh;flex-shrink:1;min-height:80px}
 .forest .film-caption{margin-top:15px}
}
/* Cursor-origin circles overlap during a move between category buttons. */
.filters button{position:relative;isolation:isolate;overflow:hidden;transition:background .35s}
.filters button:before{content:'';position:absolute;z-index:-1;pointer-events:none;left:var(--fill-x,50%);top:var(--fill-y,50%);width:var(--fill-size,240px);height:var(--fill-size,240px);border-radius:50%;background:#E7E0D4;transform:translate(-50%,-50%) scale(0);transition:transform .55s var(--ease);}
.filters button.is-filled:not(.selected):before{transform:translate(-50%,-50%) scale(1)}
.filters button.selected:before{transform:translate(-50%,-50%) scale(0)}
/* Row-aware zoom origin is set from the actual visible grid, including filters. */
.catalog-grid .catalog-card:nth-child(n) .catalog-visual{transform-origin:var(--zoom-x,center) var(--zoom-y,top)}
.floating-tools{left:auto;right:20px;bottom:20px}
.floating-tools>a{order:2}.floating-tools>.messenger-toggle{order:1}
.messenger-panel{left:auto;right:66px}

@media(max-width:600px){.floating-tools{left:auto;right:12px;bottom:12px}.messenger-panel{left:auto;right:54px}}
@media(max-width:600px){
 .forest{height:100svh;min-height:0;grid-template-rows:74% 26%}
 .forest-copy{height:100%;min-height:0;padding:24px 20px 90px}
 .forest h2{margin-bottom:16px;font-size:28px}
 .forest-copy>p:not(.film-caption){font-size:14px;line-height:1.4;max-width:100%;margin-bottom:16px}
 .forest>video{height:100%;min-height:0}
 .forest .film{position:absolute;left:20px;bottom:24px;width:100px;height:56px;min-height:0;margin:0}
 .forest .film-caption{position:absolute;left:135px;right:20px;bottom:30px;margin:0;font-size:13px}
 .forest .branch{bottom:calc(26svh - 40px);height:120px;width:85px}
}
@media(min-width:601px){.work-row{grid-template-columns:calc((100% - 10px)/2) minmax(0,1fr) minmax(0,1fr)}.work-row:nth-child(2){grid-template-columns:1fr 1fr;gap:10px}.work-row:nth-child(3){grid-template-columns:minmax(0,1fr) calc((100% - 10px)/2) minmax(0,1fr)}}
@media(max-width:600px){.forest .film-caption{right:90px}}
/* Shared moving highlight for the header contact controls. */
.header-contact>a,.header-contact>button{position:relative;z-index:1;transition:opacity .3s}
.header-contact.active>a,.header-contact.active>button{opacity:.6}
.header-contact.active>.is-hovered{opacity:1}
/* Keep identical geometry in every FAQ hover state. */
.questions{border:0}
.questions details{border:0;border-top:1px solid #f4f4f4}
.questions details:last-child{border-bottom:1px solid #f4f4f4}
.questions details:hover,.questions details[open],.questions details:focus-within,
.questions details:hover+details,.questions details[open]+details,.questions details:focus-within+details{border-color:transparent}
.questions summary,.questions summary:hover,.questions details[open] summary{padding:20px;transition:background .4s}
/* Inline stage wheel: one selected pill, a folded stack, and scaled neighbours. */
.stage{height:640px;padding:0 20px;display:grid;place-items:center;overflow:hidden}
.stage-picker{position:relative;width:min(100%,680px);height:440px;touch-action:pan-y}
.stage.is-open .stage-picker{touch-action:none}
.stage #stage-title{position:absolute;top:50%;left:0;width:100%;margin:0;transform:translateY(var(--caption-y,-88px));transition:transform .65s var(--ease);pointer-events:none}
.stage-option,.stage-back{position:absolute;left:50%;top:50%;border-radius:80px;background:#f4f4f4}
.stage-option{font-size:24px;font-weight:500;white-space:nowrap;padding:18px 42px;line-height:1.3;max-width:95%;transform:translate(-50%,-50%) translateY(var(--y,0px)) scale(var(--s,1));opacity:var(--o,0);pointer-events:none;transition:transform .65s var(--ease),opacity .45s,background .3s;will-change:transform}
.stage-option[data-visible]{pointer-events:auto}
.stage-option[aria-pressed=true]{background:#ededed}
.stage-option:focus-visible{outline:2px solid var(--green);outline-offset:4px}
.stage-back{width:255px;height:62px;background:#e7e7e7;transform:translate(-50%,-50%) translateY(24px);transition:transform .65s var(--ease),opacity .4s}
.stage-back-far{width:182px;height:44px;background:#f2f2f2;transform:translate(-50%,-50%) translateY(45px)}
.stage.is-open .stage-back{opacity:0;transform:translate(-50%,-50%) scale(.7)}
.stage-close{position:absolute;left:50%;top:50%;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:#f4f4f4;font-size:28px;color:#888;transform:translate(-50%,-50%) translateY(var(--close-y,175px));transition:transform .65s var(--ease)}
.stage-close[hidden]{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(max-width:600px){.header-contact a,.header-contact button{padding-inline:10px}.header-contact{margin-left:-10px}.questions summary,.questions summary:hover,.questions details[open] summary{padding:18px 10px}.stage{height:510px}.stage-picker{height:410px}.stage-option{font-size:18px;padding:18px 24px}.stage #stage-title{font-size:14px}.stage-back{width:215px}.stage-back-far{width:160px}}
@media(prefers-reduced-motion:reduce){.stage-option,.stage-back,.stage #stage-title,.stage-close{transition:none}}
/* Animate only horizontal offsets so FAQ line wrapping and height stay stable. */
.questions summary>.question-text{display:block;flex:1;min-width:0;width:auto;height:auto;border-radius:0;transform:translateX(-20px);transition:transform .4s var(--ease)}
.questions summary>.question-icon{transform:translateX(20px);transition:transform .4s var(--ease),background .3s}
.questions summary:hover>.question-text,.questions details[open] .question-text,.questions summary:focus-visible>.question-text{background:transparent;transform:translateX(0)}
.questions summary:hover>.question-icon,.questions details[open] .question-icon,.questions summary:focus-visible>.question-icon{transform:translateX(0)}
.stage{height:760px}.stage-picker{height:620px}
.stage-option{max-width:86%;white-space:normal;width:max-content;user-select:none;-webkit-user-select:none}
.stage.is-dragging .stage-option,.stage.is-dragging #stage-title,.stage.is-dragging .stage-close{transition:none}
@media(max-width:600px){.questions summary>.question-text{transform:translateX(-10px)}.questions summary>.question-icon{transform:translateX(10px)}.questions summary:hover>.question-text,.questions details[open] .question-text,.questions summary:hover>.question-icon,.questions details[open] .question-icon{transform:translateX(0)}.stage{height:650px}.stage-picker{height:560px}.stage-option{padding-inline:22px;font-size:17px}}

/* Keep catalog hover height independent of the base card size. */
.catalog-card{--catalog-zoom:2.045}
.catalog-card.is-active .catalog-visual{transform:scale(var(--catalog-zoom))}
@media(max-width:900px){.catalog-card{--catalog-zoom:1.65}}
@media(max-width:600px){.catalog-card{--catalog-zoom:1.15}}

/* The far card sits behind the middle card; both follow the selected pill size. */
.stage-picker{isolation:isolate}
.stage-option{z-index:3}
.stage-back{z-index:2;pointer-events:none;width:calc(var(--stack-width) * .82);height:calc(var(--stack-height) * .74);background:#f3f3f3;transform:translate(-50%,-50%) translateY(calc(var(--stack-height) * .28));transition:transform .65s var(--ease),opacity .4s,width .65s var(--ease),height .65s var(--ease)}
.stage-back-far{z-index:1;width:calc(var(--stack-width) * .59);height:calc(var(--stack-height) * .53);background:#f8f8f8;transform:translate(-50%,-50%) translateY(calc(var(--stack-height) * .53))}
.stage-close{z-index:4}
@media(prefers-reduced-motion:reduce){.stage-back{transition:none}}

.hero-birds{position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent;pointer-events:none;z-index:1}
.hero>header,.hero>h1,.hero>.hero-bottom{z-index:2}
.questions .answer{animation:none}
.questions details.faq-animating{overflow:hidden}
.questions details.is-closing summary img{transform:rotate(0deg)}

.film>img:first-child{position:absolute;left:0;top:0;width:100%;height:100%;transition:width .45s var(--ease),height .45s var(--ease),left .45s var(--ease),top .45s var(--ease)}
.film::after{content:'';position:absolute;inset:0;background:#000;opacity:0;z-index:1;pointer-events:none;transition:opacity .45s var(--ease)}
.film .play{z-index:2}
.film:hover>img:first-child,.film:focus-visible>img:first-child{width:calc(100% + 15px);height:calc(100% + 15px);left:-7.5px;top:-7.5px}
.film:hover::after,.film:focus-visible::after{opacity:.2}
dialog.film-modal{inset:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:0;border-radius:0;background:#000;overflow:hidden}
.film-modal::backdrop{background:#000;backdrop-filter:none}
.film-modal>.modal-close{display:none}
.film-modal .modal-body,.film-player{width:100%;height:100%;background:#000}
.film-player{position:relative;display:grid;place-items:center}
.film-modal .film-player video{display:block;width:100%;height:100%;max-height:none;object-fit:cover}
.film-exit{position:absolute;top:max(16px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));width:48px;height:48px;border-radius:50%;background:#0009;color:#fff;font-size:32px;z-index:2}
@media(prefers-reduced-motion:reduce){.film>img:first-child,.film::after{transition:none}}

@media(max-width:600px){.film-exit{top:8px;right:8px;width:40px;height:40px;font-size:28px}}

/* Controls live outside the cropped video and remain visible on mouse and touch. */
.film-controls{position:absolute;left:0;right:0;bottom:0;z-index:3;display:flex;align-items:center;gap:16px;padding:40px max(24px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));background:linear-gradient(transparent,#000c);color:#fff}
.film-controls button{display:grid;place-items:center;width:44px;height:44px;flex-shrink:0;border-radius:50%;background:#ffffff1a;color:#fff;font-size:22px}
.film-controls button:hover{background:#ffffff30}
.film-time{font-size:14px;white-space:nowrap;font-variant-numeric:tabular-nums}
.film-seek{flex:1;min-width:0;height:32px;accent-color:#fff;cursor:pointer}
.film-sound svg{width:24px;height:24px}.film-sound .sound-off{display:none}.film-sound.is-muted .sound-off{display:block}.film-sound.is-muted .sound-waves{display:none}
@media(max-width:600px){.film-controls{gap:10px;flex-wrap:wrap;padding:36px 16px max(16px,env(safe-area-inset-bottom))}.film-seek{flex:1 0 100%;order:4}.film-sound{margin-left:auto}}

/* Labels follow the photo corner without inheriting its scale. */
.catalog-card>.project-tags{left:10px;top:10px;gap:4px;z-index:2;pointer-events:none;transform:translate(0,0);transition:transform .65s var(--ease),opacity .3s;white-space:nowrap}
.catalog-card>.project-tags span{font-size:13px;line-height:1.2;padding:6px 8px}
.catalog-card.is-active>.project-tags{transform:translate(var(--tag-shift-x,0px),var(--tag-shift-y,0px))}

/* Updated ready-made homes: three equal pairs, matching Figma 67:793. */
.works .work-row:nth-child(n){grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.works .work-card:nth-child(n){grid-column:auto;grid-row:auto}
@media(max-width:600px){.works .work-row:nth-child(n){grid-template-columns:1fr;gap:40px}.works .caption{font-size:14px}}

/* Figma photo / plan switch: fixed-size controls inside both card variants. */
.work-card,.catalog-card{cursor:pointer}
.work-card:focus-visible,.catalog-card:focus-visible{outline:2px solid #b68b47;outline-offset:5px}
.media-switch{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);display:flex;gap:2px;background:#fff;padding:4px;border-radius:32px;z-index:4;white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}
.media-switch button{padding:8px 16px;border-radius:24px;font-size:14px;line-height:1.1;letter-spacing:-.02em;font-weight:500;background:transparent;transition:background .25s;color:#111}
.media-switch button[aria-pressed="true"]{background:#e7c68b;color:#1e281e}
.work-card.is-active .media-switch,.catalog-card.is-active .media-switch{opacity:1;visibility:visible}
.catalog-card>.media-switch{transform:translate(-50%,0);transition:transform .65s var(--ease),opacity .25s,visibility .25s}
.catalog-card.is-active>.media-switch{transform:translate(calc(-50% + var(--switch-shift-x,0px)),var(--switch-shift-y,0px))}
.plan-panel{position:absolute;inset:0;display:grid;place-items:center;background:#f7f6f5;z-index:2;pointer-events:none;text-align:center}
.plan-panel[hidden]{display:none}
.plan-panel>span{font-size:14px;color:#777;padding:20px;max-width:100%}
.catalog-card.is-active .plan-panel>span{transform:scale(calc(1 / var(--catalog-zoom)));white-space:nowrap}
.plan-panel>img{width:100%;height:100%;object-fit:contain!important}
.work-rows.has-active .work-card:not(.is-active) .plan-panel,.catalog-grid.has-active .catalog-card:not(.is-active) .plan-panel{visibility:hidden}
@media(hover:none){.media-switch{opacity:1;visibility:visible}.catalog-card .media-switch{bottom:5px;padding:3px}.catalog-card .media-switch button{font-size:11px;padding:7px 9px}}

/* Shared animated selection and pointer-origin hover fill. */
.filters.animated-switch{position:relative;isolation:isolate;width:max-content;max-width:100%}
.media-switch.animated-switch{isolation:isolate}
.animated-switch .switch-marker{position:absolute;left:0;top:0;z-index:0;border-radius:24px;background:var(--sand);pointer-events:none}
.animated-switch.switch-ready .switch-marker{transition:transform .4s var(--ease),width .4s var(--ease),height .4s var(--ease)}
.animated-switch .switch-base{position:absolute;z-index:-1;border-radius:24px;pointer-events:none}
.filters.animated-switch .switch-base{background:var(--muted)}
.filters.animated-switch button,.media-switch.animated-switch button{position:relative;z-index:1;isolation:isolate;overflow:hidden;background:transparent}
.media-switch button:before{content:'';position:absolute;z-index:-1;pointer-events:none;left:var(--fill-x,50%);top:var(--fill-y,50%);width:var(--fill-size,240px);height:var(--fill-size,240px);border-radius:50%;background:#E7E0D4;transform:translate(-50%,-50%) scale(0);transition:transform .55s var(--ease)}
.media-switch button.is-filled:not([aria-pressed="true"]):before{transform:translate(-50%,-50%) scale(1)}
.media-switch button[aria-pressed="true"]:before{transform:translate(-50%,-50%) scale(0)}

/* Exact Figma crops; only the watercolor mask moves, never the source photograph. */
.service{aspect-ratio:635/734}
.service>img.service-photo{inset:auto;transform:none;transition:none}
.service-0>img.service-photo{left:-61.3386%;top:-8.8556%;width:169.1339%;height:109.6730%}
.service-1>img.service-photo{left:-61.8898%;top:-5.7221%;width:226.7717%;height:110.4905%}
.service-2>img.service-photo{left:-15.1181%;top:-6.4033%;width:173.7008%;height:112.6703%}
.service-watercolor{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.service:after{pointer-events:none}
.service .service-cta{background:#fffffff0;color:var(--green);padding:8px 12px;border-radius:24px;font-size:16px;letter-spacing:-.02em}

/* Family archive: native sticky scene, photographs driven by page scroll. */
.family{height:auto;min-height:0;padding:70px 0;overflow:visible}
.family-viewport{position:relative}
.family .family-card{width:min(36vw,510px);min-width:360px;max-width:calc(100% - 40px);padding:30px 24px;gap:24px}
.family .family-card h2{font-size:clamp(28px,2.344vw,40px)}
.family .family-card p{font-size:16px;line-height:1.4}
.family .endgrain{width:150px;height:170px}
.family-gallery{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:24px;max-width:1500px;padding:40px;margin:auto}
.family .family-photo{position:relative;inset:auto;width:100%;height:auto;aspect-ratio:3/4;object-fit:contain;border-radius:12px}
.family.family-scroll{height:calc(100svh + min(120svh,1050px));min-height:0;padding:0}
.family-scroll .family-viewport{position:sticky;top:0;height:100svh;display:grid;place-items:center;overflow:clip;isolation:isolate}
.family-scroll .family-card{z-index:20;margin:0;box-shadow:0 12px 60px #160e081a}
.family-scroll .family-gallery{position:absolute;inset:0;display:block;padding:0;max-width:none;pointer-events:none}
.family-scroll .family-photo{position:absolute;left:50%;top:50%;width:min(20vw,290px);height:auto;max-height:none;opacity:0;will-change:transform,opacity;box-shadow:0 16px 44px #0003}
@media(min-width:701px) and (max-height:860px){
 .family .family-card{padding:22px;gap:16px}
 .family .endgrain{width:110px;height:110px}
 .family .family-card p{font-size:14px;max-width:390px}
 .family .family-card h2{font-size:30px}
}
@media(max-width:700px){
 .family .family-card{width:calc(100% - 40px);min-width:0;padding:20px;gap:14px}
 .family .family-card h2{font-size:26px}
 .family .family-card p{font-size:14px;line-height:1.4}
 .family .endgrain{width:75px;height:80px}
 .family-gallery{grid-template-columns:repeat(2,minmax(0,1fr));padding:20px;gap:12px}
 .family.family-scroll{height:calc(100svh + min(120svh,1050px))}
 .family-scroll .family-viewport{display:flex;align-items:flex-start;justify-content:center;padding-top:84px;min-height:0}
 .family-scroll .family-photo{top:auto;bottom:0;left:50%;width:min(35vw,calc((100svh - var(--family-card-bottom) - 24px)*.55));transform-origin:center;}
 .family-scroll .family-gallery{top:calc(var(--family-card-bottom) + 24px);bottom:0}
 .family-scroll .family-photo{top:50%;bottom:auto}
}
@media(prefers-reduced-motion:reduce){.family .family-photo{will-change:auto}}

.family .family-photo.family-landscape{aspect-ratio:4/3}
@media(min-width:701px){.family-scroll .family-photo.family-landscape{width:min(26vw,365px)}}

/* Fixed-size photo indicators live outside the catalog image scaling. */
.photo-indicator{position:absolute;left:50%;bottom:12px;display:flex;gap:4px;padding:8px;border-radius:26px;background:#fff;z-index:4;pointer-events:none;opacity:0;visibility:hidden;transform:translateX(-50%);transition:opacity .2s,visibility .2s}
.photo-indicator[hidden]{display:none}
.photo-indicator i,.photo-indicator b{display:block;width:4px;height:4px;border-radius:50%;background:#000}
.photo-indicator i{opacity:.2}
.photo-indicator b{position:absolute;left:8px;top:8px;transform:translateX(calc(var(--photo-index,0)*8px));transition:transform .18s cubic-bezier(.22,1,.36,1)}
.work-card.is-active .photo-indicator,.catalog-card.is-active .photo-indicator{opacity:1;visibility:visible}
.catalog-card>.photo-indicator{transition:transform .65s var(--ease),opacity .2s,visibility .2s}
.catalog-card.is-active>.photo-indicator{transform:translate(calc(-50% + var(--switch-shift-x,0px)),var(--switch-shift-y,0px))}
@media(hover:none){.photo-indicator{opacity:1;visibility:visible}}
/* Figma 137:6875 / 137:6992: 60px bar, 169px expanded white surface. */
.fixed-header{position:fixed;inset:0 auto auto 0;width:var(--page-width,100%);display:block;height:60px;padding:0;margin:0;background:#fff;color:#000;z-index:80;transform:translateY(-100%);visibility:hidden;transition:transform .55s var(--ease),height .4s var(--ease),visibility .55s;overflow:clip}
.fixed-header.is-visible{transform:translateY(0);visibility:visible}
.fixed-header.menu-open{height:169px}
.fixed-header-inner{position:relative;max-width:1680px;width:calc(100% - 2*var(--gutter));height:100%;margin:0 auto;padding:10px 0}
.fixed-logo{display:block;width:138px;height:40px}
.fixed-logo img{display:block}
.fixed-menu{position:absolute;left:calc(50% + 5px);top:10px}
.fixed-menu-toggle{display:block;padding:5px 10px;font-size:16px;line-height:19px;font-weight:500;letter-spacing:-.02em;border-radius:24px;transition:background .25s}
.menu-open .fixed-menu-toggle,.fixed-menu-toggle:hover{background:#f4f4f4}
.fixed-menu-links{padding-top:4px;opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .25s,transform .4s var(--ease),visibility .25s}
.menu-open .fixed-menu-links{opacity:1;visibility:visible;transform:none}
.fixed-menu-links .hover-nav a{font-size:16px;line-height:19px;min-height:29px}
.fixed-header .nav-marker{background:#f4f4f4;backdrop-filter:none}
.fixed-header .fixed-contact{position:absolute;left:auto;right:0;top:10px;margin:0;display:flex;flex-direction:row;gap:4px;align-items:center}
.fixed-contact a,.fixed-contact button{font-size:16px;line-height:19px;padding:5px 10px;letter-spacing:-.02em}
.header-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.1);z-index:79;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .4s,visibility .4s}
.header-backdrop.is-visible{opacity:1;visibility:visible;pointer-events:auto}
@media(max-width:1100px){.fixed-menu{left:40%}.fixed-contact a,.fixed-contact button{font-size:14px;padding-inline:7px}}
@media(max-width:700px){
 .fixed-menu{left:76px}
 .fixed-header .fixed-contact{gap:0;align-items:flex-end;flex-direction:column;top:6px}
 .fixed-contact a,.fixed-contact button{font-size:12px;line-height:18px;padding:3px 0 3px 8px}
 .fixed-menu-toggle{min-height:40px;font-size:14px}
 .fixed-menu-links{padding-top:0}
 .fixed-menu-links .hover-nav a{font-size:14px;line-height:20px;min-height:32px}
 .fixed-header.menu-open{height:190px}
}
@media(prefers-reduced-motion:reduce){.fixed-header,.fixed-menu-links,.header-backdrop,.photo-indicator,.photo-indicator b{transition:none}}
/* Customer stories — Figma 67:948 and 137:6758. */
.reviews{padding-top:140px;padding-bottom:70px}.reviews .section-heading{margin:0 0 60px;grid-template-columns:1fr 1fr;gap:10px}.reviews .section-heading p{max-width:678px}.reviews-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.review-card{position:relative;display:block;height:440px;overflow:hidden;background:#4c4c4c;color:white;text-align:left}.review-preview{position:absolute;inset:0;display:block;transition:inset .5s var(--ease)}.review-preview img{width:100%;height:100%;object-fit:cover}.review-card:hover .review-preview,.review-card:focus-visible .review-preview{inset:-7.5px}.review-card:after{content:'';position:absolute;inset:auto 0 0;height:160px;background:linear-gradient(transparent,#0006 70%);pointer-events:none}.review-label{position:absolute;z-index:1;bottom:16px;left:16px;font-size:16px;font-weight:500;letter-spacing:-.02em}.review-play{position:absolute;z-index:2;inset:50% auto auto 50%;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s}.review-play img{width:35px;height:40px}.review-card:hover .review-play,.review-card:focus-visible .review-play{opacity:1}.review-card:focus-visible{outline:3px solid var(--green);outline-offset:4px}
.visit{padding-top:70px;padding-bottom:70px}
.review-dialog{inset:0;max-width:none;max-height:none;width:100%;height:100dvh;margin:0;border:0;padding:0;background:#fff;color:#fff;overflow:hidden}.review-dialog::backdrop{background:#fff;backdrop-filter:none}.review-dialog[open]{display:grid;place-items:center}.review-layout{--story-h:min(80dvh,900px);--story-w:calc(var(--story-h)*9/16);position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:32px;perspective:1200px}.review-screen{position:relative;width:var(--story-w);height:var(--story-h);flex:none;border-radius:16px;overflow:hidden;background:#171717;touch-action:pan-y}.review-screen video{display:block;width:100%;height:100%;object-fit:contain}.review-top{position:absolute;inset:0 0 auto;padding:16px;background:linear-gradient(#0009,transparent);z-index:3}.review-progress{display:flex;gap:4px;margin-bottom:12px}.review-progress span{height:3px;background:#ffffff66;flex:1;overflow:hidden;border-radius:2px}.review-progress i{display:block;background:#fff;height:100%;transform-origin:left;transform:scaleX(0)}.review-head{display:flex;align-items:center;gap:8px}.review-head img{width:36px;height:36px;border-radius:50%;object-fit:cover}.review-head h2{color:#fff;font-size:15px;letter-spacing:-.02em;line-height:1.2;flex:1}.review-head small{display:block;font-size:12px;font-weight:400;margin-top:4px}.review-icon{flex:none;display:grid;place-items:center;width:40px;height:40px;color:inherit;background:transparent}.review-icon svg{width:22px;height:22px}.review-dialog button:focus-visible{outline:2px solid #c49d5c;outline-offset:3px}.review-close{position:absolute;right:24px;top:20px;z-index:5;color:#253125;border-radius:50%;background:#f1f1ef;width:44px;height:44px}.review-side{position:relative;width:calc(var(--story-w)*.6);height:calc(var(--story-h)*.6);border-radius:12px;overflow:hidden;flex:none;color:#fff;background:#253125}.review-side>img{width:100%;height:100%;object-fit:cover;filter:brightness(.7)}.review-side span{position:absolute;left:12px;right:12px;top:50%;text-align:center;font-size:16px;line-height:1.3}.review-arrow{color:#253125;background:#f1f1ef;border-radius:50%;width:44px;height:44px;font-size:25px;flex:none}.review-side[hidden],.review-arrow[hidden]{visibility:hidden;display:block}.review-hit{position:absolute;top:90px;bottom:70px;width:30%;z-index:2;background:transparent}.review-hit.prev{left:0}.review-hit.next{right:0}.review-message{position:absolute;inset:45% 12px auto;text-align:center;font-size:14px;pointer-events:none;text-shadow:0 1px 4px #000}.review-bottom{position:absolute;bottom:16px;left:16px;right:16px;z-index:3;display:flex;align-items:center;gap:10px}.review-seek{width:100%;accent-color:white;cursor:pointer}.review-time{font-size:12px;white-space:nowrap}.review-dialog .review-screen.is-changing{animation:review-enter .35s var(--ease)}@keyframes review-enter{from{transform:translateX(var(--review-direction,25px)) rotateY(var(--review-angle,-8deg));opacity:.65}to{transform:none;opacity:1}}
@media(min-width:1401px){.visit-card,.meeting-card{min-height:460px}}
@media(max-width:1100px){.reviews-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.review-card{height:400px}.review-layout{gap:16px}.review-side{width:calc(var(--story-w)*.4);height:calc(var(--story-h)*.5)}}
@media(max-width:700px){.reviews{padding-top:70px;padding-bottom:35px}.reviews .section-heading{grid-template-columns:1fr;gap:24px;margin-bottom:30px}.reviews-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.review-card{height:auto;aspect-ratio:272/440}.review-label{font-size:12px;left:12px;bottom:12px}.visit{padding-top:35px;padding-bottom:35px}.review-play img{width:26px;height:30px}.review-layout{--story-h:min(86dvh,calc((var(--review-viewport-width,100vw) - 24px)*16/9));--story-w:calc(var(--story-h)*9/16);gap:0}.review-side,.review-arrow,.review-side[hidden],.review-arrow[hidden]{display:none}.review-close{top:8px;right:8px}.review-screen{border-radius:12px}.review-top{padding:12px}.review-head h2{font-size:13px}}
@media(hover:none){.review-play{opacity:1}}
@media(prefers-reduced-motion:reduce){.review-preview,.review-play{transition:none}.review-dialog .review-screen.is-changing{animation:none}}
/* Keep the current story centred even at either end of the sequence. */
.review-screen{position:absolute;left:calc(50% - var(--story-w)/2);top:calc(50% - var(--story-h)/2)}.review-side,.review-arrow{position:absolute;padding:0;border:0;top:50%;transform:translateY(-50%)}.review-side.prev{right:calc(50% + var(--story-w)/2 + 108px)}.review-side.next{left:calc(50% + var(--story-w)/2 + 108px)}.review-arrow.prev{right:calc(50% + var(--story-w)/2 + 32px)}.review-arrow.next{left:calc(50% + var(--story-w)/2 + 32px)}.review-card{padding:0;border:0}
@media(min-width:701px){.stage{height:709px}}
@media(min-width:701px) and (max-width:1100px){.review-side.prev{right:calc(50% + var(--story-w)/2 + 80px)}.review-side.next{left:calc(50% + var(--story-w)/2 + 80px)}.review-arrow.prev{right:calc(50% + var(--story-w)/2 + 16px)}.review-arrow.next{left:calc(50% + var(--story-w)/2 + 16px)}}

/* White timeline over a soft lower scrim; no native dark range styling. */
.review-screen:after{content:'';position:absolute;inset:auto 0 0;height:150px;background:linear-gradient(to bottom,transparent,rgba(0,0,0,.58));pointer-events:none;z-index:1}
.review-seek{appearance:none;-webkit-appearance:none;min-width:0;height:28px;margin:0;padding:0;border:0;box-shadow:none;background:transparent;color:#fff;cursor:pointer}
.review-seek::-webkit-slider-runnable-track{height:3px;border:0;border-radius:3px;box-shadow:none;background:linear-gradient(to right,#fff 0%,#fff var(--seek-progress,0%),rgba(255,255,255,.35) var(--seek-progress,0%),rgba(255,255,255,.35) 100%)}
.review-seek::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:9px;height:9px;margin-top:-3px;border:0;border-radius:50%;background:#fff;box-shadow:none}
.review-seek::-moz-range-track{height:3px;border:0;border-radius:3px;background:rgba(255,255,255,.35);box-shadow:none}
.review-seek::-moz-range-progress{height:3px;border:0;border-radius:3px;background:#fff}
.review-seek::-moz-range-thumb{width:9px;height:9px;border:0;border-radius:50%;background:#fff;box-shadow:none}
.review-seek:focus{outline:none}.review-seek:focus-visible{outline:1px solid rgba(255,255,255,.7);outline-offset:3px;border-radius:4px}
.review-time{color:#fff}

/* Keep catalog labels inside narrow cards without changing their hover scale. */
@media(max-width:600px){.catalog-card>.project-tags{left:6px;right:6px;top:6px;flex-wrap:wrap;white-space:normal;gap:3px}.catalog-card>.project-tags span{font-size:10px;padding:4px 6px;max-width:100%;overflow-wrap:anywhere}}
/* Shared supplied icons: 24px close / 32px arrows; padding 16px / 8px. */
.icon-button.icon-close,.icon-button.icon-arrow{display:grid;place-items:center;flex:none;min-width:0;min-height:0;margin:0;border:0;border-radius:50%;background:#F4F4F4;color:#000;isolation:isolate;overflow:hidden;box-sizing:border-box}
.icon-button.icon-close{width:56px;height:56px;padding:16px}
.icon-button.icon-arrow{width:48px;height:48px;padding:8px}
.icon-button img{display:block;position:relative;z-index:1;width:24px;height:24px;max-width:none;pointer-events:none}
.icon-button.icon-arrow img{width:32px;height:32px}
.icon-button:before{content:'';position:absolute;z-index:0;pointer-events:none;left:var(--fill-x,50%);top:var(--fill-y,50%);width:var(--fill-size,170px);height:var(--fill-size,170px);border-radius:50%;background:#E7E0D4;transform:translate(-50%,-50%) scale(0);transition:transform .55s var(--ease)}
.icon-button.is-filled:before{transform:translate(-50%,-50%) scale(1)}
.gallery-controls .icon-button{position:relative}
.stage-close.icon-button[hidden],.film-modal>.modal-close.icon-button{display:none}
.review-arrow.icon-button.prev{right:calc(50% + var(--story-w)/2 + 30px)}.review-arrow.icon-button.next{left:calc(50% + var(--story-w)/2 + 30px)}
@media(min-width:701px) and (max-width:1100px){.review-arrow.icon-button.prev{right:calc(50% + var(--story-w)/2 + 16px)}.review-arrow.icon-button.next{left:calc(50% + var(--story-w)/2 + 16px)}}
@media(max-width:700px){.review-arrow.icon-button{display:none}}
@media(prefers-reduced-motion:reduce){.icon-button:before{transition:none}}

/* Construction sketches share the card paper and keep exact breathing space. */
.family .family-card{gap:0}
.family-construction{position:relative;width:100%;aspect-ratio:1684/846;margin:60px 0;flex-shrink:0;background:#e1d5b4;isolation:isolate}
@media(max-height:900px){.family-construction{margin-top:40px;margin-bottom:40px}}
.family-construction .construction-frame{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0}
.family-construction .construction-frame:first-child{opacity:1}
.family .family-card>p+.pill{margin-top:24px}
.family-scroll .family-viewport{padding-top:60px}
@media(max-width:700px){.family-construction{max-width:260px}.family-scroll .family-viewport{padding-top:84px}}

/* Match the service column; the card settles from the section top into its sticky position. */
.family{padding-top:140px;padding-bottom:140px}
.family .family-card{width:var(--family-card-width,510px);min-width:0;max-width:calc(100% - 40px)}
.family .family-card h2{font-size:clamp(22px,calc(var(--family-card-width,510px)*.078),40px)}
.family-scroll .family-viewport{display:block;padding-top:0}
.family-scroll .family-card{margin:0 auto;will-change:transform}
@media(prefers-reduced-motion:reduce){.family .family-card{will-change:auto}}

.film-seek.review-seek{width:auto;flex:1;height:28px;background:transparent;border:0;box-shadow:none}

.review-label{right:16px;line-height:1.3;text-wrap:pretty}.review-head h2{min-width:0;overflow-wrap:break-word}
@media(max-width:700px){.review-label{right:12px}}

#reviews-title{white-space:nowrap;font-size:clamp(18px,2.0833vw,40px)}
@media(max-width:700px){#reviews-title{font-size:clamp(18px,5vw,28px)}}

/* Services intro: 200px after the previous content, 60px before the cards. */
.catalog{padding-bottom:0}.catalog>.faq{padding-bottom:0}
.services{padding-top:200px}
.services-heading{grid-column:1/-1;margin-bottom:50px}
@media(max-width:600px){.services-heading{margin-bottom:48px}}

/* Keep the discussion action 20px below the active review, within short screens. */
.review-layout{--story-h:min(80dvh,900px,calc(100dvh - 160px))}
.review-discuss{position:absolute;top:calc(50% + var(--story-h)/2 + 20px);left:50%;translate:-50% 0;max-width:calc(100% - 24px)}
@media(max-width:700px){.review-layout{--story-h:min(86dvh,calc((var(--review-viewport-width,100vw) - 24px)*16/9),calc(100dvh - 160px))}}

/* Shared CTA hover: stationary button, expanding icon capsule and passing arrows. */
.pill{transition:background .35s var(--ease)}
.pill:hover,.pill:focus-visible{background:#E7E0D4}
.pill.green:hover,.pill.green:focus-visible{background:#1C481C}
.pill.sand:hover,.pill.sand:focus-visible{background:#FFC968}
.pill-arrow{position:relative;display:block;flex:none;width:40px;height:32px;overflow:hidden;border-radius:32px;background:#fff;color:#000;transition:width .45s var(--ease)}
.pill.green .pill-arrow{background:#000;color:#fff}
.pill-arrow svg{position:absolute;left:calc(50% - 12px);top:4px;width:24px;height:24px;transition:transform .45s var(--ease)}
.pill-arrow svg+svg{transform:translateX(-40px)}
.pill:hover .pill-arrow,.pill:focus-visible .pill-arrow{width:52px}
.pill:hover .pill-arrow svg:first-child,.pill:focus-visible .pill-arrow svg:first-child{transform:translateX(40px)}
.pill:hover .pill-arrow svg+svg,.pill:focus-visible .pill-arrow svg+svg{transform:translateX(0)}
.review-discuss{width:var(--story-w);justify-content:space-between}
@media(prefers-reduced-motion:reduce){.pill,.pill-arrow,.pill-arrow svg{transition:none}}
/* Icon capsules echo the surrounding section surface. */
.forest-copy>.pill .pill-arrow{background:var(--green);color:#fff}
.family-card .pill .pill-arrow{background:#e1d5b4;color:#394d39}
footer .pill .pill-arrow{background:var(--green);color:var(--sand)}
.review-discuss.pill .pill-arrow{background:#fff;color:var(--heading)}

/* Life at Kelo: reports open in a full-height editorial drawer. */
.news-grid>.news-card{display:flex;padding:4px;gap:10px;background:#fff;color:#111;min-width:0;text-align:left}
.news-card:hover,.news-card:focus-visible{background:#fff}
.news-card>img{object-fit:cover;flex-shrink:0}
.news-grid .news-card>span{gap:12px}
.news-dialog{position:fixed;inset:0 0 0 auto;margin:0;width:min(760px,100%);height:100dvh;max-width:100%;max-height:100dvh;padding:0;border:0;border-radius:0;background:#fff;color:#111;overflow-y:auto;overscroll-behavior:contain;box-shadow:-20px 0 80px #0002}
.news-dialog::backdrop{background:#0006;backdrop-filter:blur(3px)}
.news-toolbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 40px;background:#fff}
.news-toolbar>span{font-size:13px;text-transform:uppercase;letter-spacing:.02em;color:#687168}
.news-dialog .modal-close{position:relative;inset:auto;flex:none}
.news-content{padding:32px 40px 60px}
.news-meta{font-size:14px;color:#777;margin-bottom:20px}
.news-content h2{font-size:clamp(28px,3vw,40px);line-height:1.1;max-width:600px}
.news-description{font-size:18px;line-height:1.5;margin-top:28px}
.news-photos{display:grid;gap:32px;margin-top:40px}
.news-photos figure{margin:0}.news-photos img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;background:#f4f4f4}
.news-photos figcaption{font-size:13px;color:#777;margin-top:12px}
@media(max-width:600px){.news-grid>.news-card{gap:6px}.news-toolbar{padding:16px 20px}.news-content{padding:24px 20px 40px}.news-description{font-size:16px}.news-photos{gap:24px;margin-top:32px}}

.news-grid .news-thumbnail{position:relative;display:block;padding:0;flex:none;width:36%;height:120px;overflow:hidden}
.news-grid .news-thumbnail img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover;transition:width .5s var(--ease),height .5s var(--ease),inset .5s var(--ease)}
.news-card:hover .news-thumbnail img,.news-card:focus-visible .news-thumbnail img{inset:-6px;width:calc(100% + 12px);height:calc(100% + 12px)}
@media(max-width:1400px){.news-grid .news-thumbnail{height:100px}}
@media(max-width:600px){.news-grid .news-thumbnail{width:34%;height:72px}}
@media(max-height:650px){.news-grid .news-thumbnail{height:64px}}
@media(max-width:600px) and (max-height:650px){.news-grid .news-thumbnail{height:50px}}
@media(prefers-reduced-motion:reduce){.news-grid .news-thumbnail img{transition:none}}

/* Figma 176:56 — trial category switcher, second completed object only. */
.object-photo-tabs{position:absolute;z-index:3;left:50%;bottom:12px;transform:translateX(-50%) translateY(6px);display:flex;align-items:center;gap:4px;padding:4px;border-radius:32px;background:#fff;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .25s,transform .3s var(--ease),visibility .25s}
.work-card.is-active .object-photo-tabs,.work-card:has(:focus-visible) .object-photo-tabs{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%)}
.object-photo-tabs button{border-radius:24px;padding:8px 16px;font-size:14px;font-weight:500;line-height:1.1;letter-spacing:-.28px;color:#1e281e;background:#fff;transition:background .25s}
.object-photo-tabs button:hover{background:#E7E0D4}.object-photo-tabs button[aria-pressed="true"]{background:#e7c68b}
.work-card.showing-plan .live-photo{object-fit:contain;background:#f7f6f5}
@media(max-width:1100px){.object-photo-tabs{gap:2px;max-width:calc(100% - 16px)}.object-photo-tabs button{padding:8px 9px;font-size:12px}}
@media(max-width:600px){.object-photo-tabs{gap:0;padding:3px;bottom:8px;width:calc(100% - 12px)}.object-photo-tabs button{padding:8px 3px;font-size:10px;flex:1;letter-spacing:-.2px}}
@media(hover:none){.object-photo-tabs{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.object-photo-tabs{transition:none}}

/* Reuse the same marker and cursor-origin fill as the project filters. */
.object-photo-tabs.animated-switch button,.object-photo-tabs.animated-switch button:hover,.object-photo-tabs.animated-switch button[aria-pressed="true"]{background:transparent}
@media(prefers-reduced-motion:reduce){.object-photo-tabs .switch-marker,.object-photo-tabs button:before{transition:none}}

/* News dates and compact reveal arrow, using the shared button chevron. */
.news-grid>.news-card{position:relative}
.news-grid .news-card-copy{flex:1;min-width:0}
.news-card-copy small{min-height:1.1em;padding-right:44px}
.news-grid .news-card-arrow{position:absolute;right:12px;bottom:12px;display:grid;place-items:center;place-content:center;gap:0;padding:0;width:36px;height:28px;flex:none;border-radius:24px;background:#EED19D;color:#111;opacity:0;transform:scale(0);transform-origin:center;transition:transform .4s var(--ease),opacity .25s;pointer-events:none}
.news-grid .news-card-arrow svg{display:block;width:24px;height:24px}
.news-card:hover .news-card-arrow,.news-card:focus-visible .news-card-arrow{opacity:1;transform:scale(1)}
@media(hover:none){.news-grid .news-card-arrow{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.news-grid .news-card-arrow{transition:none}}

/* Horizontal logo supplied for the navigation shown on scroll. */
@media(max-width:700px){.fixed-logo{width:110.4px;height:32px;margin-top:4px}.fixed-logo img{width:110.4px;height:32px}.fixed-menu{left:120px}}
@media(max-width:380px){.fixed-logo{width:96.6px;height:28px;margin-top:6px}.fixed-logo img{width:96.6px;height:28px}.fixed-menu{left:104px}}
/* Header contact/social dropdowns share navigation hover markers. */
.header-actions{flex-direction:row;align-items:flex-start;z-index:5}
.header-dropdown{position:relative;flex:none}
.header-dropdown-toggle{border-radius:24px;transition:background .25s}
.header-dropdown-toggle:hover,.header-dropdown.is-open>.header-dropdown-toggle{background:#ffffff29}
.header-dropdown-panel{position:absolute;top:100%;left:0;padding-top:4px;opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .25s,transform .4s var(--ease),visibility .25s;pointer-events:none;min-width:max-content}
.header-dropdown.is-open .header-dropdown-panel{opacity:1;visibility:visible;transform:none;pointer-events:auto}
.header-actions .hover-nav{margin:0}
.header-actions .hover-nav a,.header-actions .hover-nav button{position:relative;z-index:1;display:block;padding:5px 10px;min-height:29px;font-size:16px;line-height:19px;font-weight:500;letter-spacing:-.02em;white-space:nowrap;text-align:left;transition:opacity .3s}
.header-actions .hover-nav.active button{opacity:.6}.header-actions .hover-nav.active button.is-hovered{opacity:1}
.fixed-header.contact-menu-open{height:169px}
.fixed-header .header-actions{align-items:flex-start}
.fixed-header .header-dropdown-toggle:hover,.fixed-header .header-dropdown.is-open>.header-dropdown-toggle,.gallery-hero-header .header-dropdown-toggle:hover,.gallery-hero-header .header-dropdown.is-open>.header-dropdown-toggle{background:#f4f4f4}
@media(max-width:1100px){.header-actions>a,.header-actions .header-dropdown-toggle,.header-actions .hover-nav a,.header-actions .hover-nav button{font-size:14px;padding-inline:7px}}
@media(max-width:700px){
 .fixed-header{height:104px}.fixed-header .fixed-contact.header-actions{top:58px;left:0;right:0;display:flex;flex-direction:row;justify-content:space-between;align-items:flex-start;gap:0}
 .fixed-header.contact-menu-open,.fixed-header.menu-open{height:230px}
 .fixed-contact.header-actions>a,.fixed-contact.header-actions .header-dropdown-toggle{font-size:12px;line-height:18px;padding:5px 4px}
 .fixed-contact .header-dropdown-panel{padding-top:4px}.fixed-contact .header-actions .hover-nav{margin:0}
 .header-actions .hover-nav a,.header-actions .hover-nav button{font-size:12px;padding:6px 8px;min-height:30px}
 .header-actions .header-dropdown:last-of-type .header-dropdown-panel{left:auto;right:0}
}
@media(max-width:600px){header:not(.fixed-header) .header-actions{display:flex;flex-direction:row;align-items:flex-start;gap:4px;flex-wrap:wrap;max-width:100%}header:not(.fixed-header) .header-actions>a,header:not(.fixed-header) .header-actions .header-dropdown-toggle{padding:5px 8px;font-size:12px;line-height:18px}}
@media(prefers-reduced-motion:reduce){.header-dropdown-panel,.header-dropdown-toggle{transition:none}}

/* Shared disclosure caret for menu, contact and social controls. */
.fixed-menu-toggle{display:flex;align-items:center;gap:4px}
.header-caret{display:block;width:14px;height:14px;flex:none;transform:rotate(0);transform-origin:center;transition:transform .3s var(--ease)}
.header-dropdown-toggle[aria-expanded="true"]>.header-caret,.fixed-menu-toggle[aria-expanded="true"]>.header-caret{transform:rotate(180deg)}
@media(prefers-reduced-motion:reduce){.header-caret{transition:none}}

/* Two invitations after the reviews. */
.visit{grid-template-columns:repeat(2,minmax(0,1fr))}
.meeting-card h3{max-width:540px}
.meeting-actions{position:absolute;right:24px;bottom:24px;z-index:1;display:flex;justify-content:flex-end;gap:10px;max-width:calc(100% - 48px)}
.visit .meeting-actions .pill{position:relative;inset:auto}
.meeting-actions .pill .pill-arrow{background:#EED19D;color:#111}
.meeting-actions .pill{transition:background .35s var(--ease),color .35s var(--ease)}
.meeting-actions .pill:hover,.meeting-actions .pill:focus-visible{background:#3A613A;color:#fff}
@media(max-width:900px){.visit{grid-template-columns:1fr}.visit-card{grid-column:auto}.meeting-card{min-height:300px}}
@media(max-width:600px){.meeting-actions{right:15px;bottom:15px;max-width:calc(100% - 30px);flex-direction:column;align-items:flex-end;gap:8px}}
/* Cut through the button surface so the actual video shows behind the arrow. */
@property --cutout-width{syntax:'<length>';inherits:true;initial-value:40px}
.pill.cutout{--cutout-width:40px;--cutout-inset:12px;position:relative;isolation:isolate;background:transparent;transition:--cutout-width .45s var(--ease)}
.pill.cutout:hover,.pill.cutout:focus-visible{--cutout-width:52px;background:transparent}
.pill.cutout:before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;background:#fff;transition:background .35s var(--ease);
 -webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0),radial-gradient(circle closest-side,#000 98%,transparent 100%),radial-gradient(circle closest-side,#000 98%,transparent 100%);
 mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0),radial-gradient(circle closest-side,#000 98%,transparent 100%),radial-gradient(circle closest-side,#000 98%,transparent 100%);
 -webkit-mask-size:100% 100%,calc(var(--cutout-width) - 32px) 32px,32px 32px,32px 32px;
 mask-size:100% 100%,calc(var(--cutout-width) - 32px) 32px,32px 32px,32px 32px;
 -webkit-mask-position:center,calc(100% - var(--cutout-inset) - 16px) 50%,calc(100% - var(--cutout-inset) - var(--cutout-width) + 32px) 50%,calc(100% - var(--cutout-inset)) 50%;
 mask-position:center,calc(100% - var(--cutout-inset) - 16px) 50%,calc(100% - var(--cutout-inset) - var(--cutout-width) + 32px) 50%,calc(100% - var(--cutout-inset)) 50%;
 -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-composite:source-out,source-over,source-over;mask-composite:subtract,add,add;
}
.pill.cutout:hover:before,.pill.cutout:focus-visible:before{background:#E7E0D4}
.pill.cutout .pill-arrow{background:transparent;color:#fff}
@media(max-width:600px){.pill.cutout{--cutout-inset:8px}}
@media(prefers-reduced-motion:reduce){.pill.cutout,.pill.cutout:before{transition:none}}
.visit-card>.pill.cutout{position:absolute}

/* Scale vertical rhythm to the content grid (1680 px) and the 1080 px viewport. */
@property --layout-unit{syntax:'<length>';inherits:true;initial-value:1px}
:root{
 --layout-unit:min(1px,max(.5px,calc((var(--page-width,100vw) - 2 * var(--gutter)) / 1680)),calc(100svh / 1080));
 --space-v-200:calc(200 * var(--layout-unit));
 --space-v-140:calc(140 * var(--layout-unit));
 --space-v-120:calc(120 * var(--layout-unit));
 --space-v-100:calc(100 * var(--layout-unit));
 --space-v-90:calc(90 * var(--layout-unit));
 --space-v-80:calc(80 * var(--layout-unit));
 --space-v-75:calc(75 * var(--layout-unit));
 --space-v-70:calc(70 * var(--layout-unit));
 --space-v-60:calc(60 * var(--layout-unit));
 --space-v-55:calc(55 * var(--layout-unit));
 --space-v-50:calc(50 * var(--layout-unit));
 --space-v-48:calc(48 * var(--layout-unit));
 --space-v-40:calc(40 * var(--layout-unit));
 --space-v-36:calc(36 * var(--layout-unit));
 --space-v-35:calc(35 * var(--layout-unit));
 --space-v-30:calc(30 * var(--layout-unit));
 --space-v-24:calc(24 * var(--layout-unit));
 --space-v-20:calc(20 * var(--layout-unit));
 --space-v-15:calc(15 * var(--layout-unit));
 --space-v-12:calc(12 * var(--layout-unit));
 --space-v-10:calc(10 * var(--layout-unit));
}
.works{padding-top:var(--space-v-100);padding-bottom:var(--space-v-100)}
.filters{margin-top:var(--space-v-30)}
.work-rows{margin-top:var(--space-v-60);row-gap:var(--space-v-120)}
.caption{margin-top:var(--space-v-20)}
.center{margin-top:var(--space-v-60)}
.catalog{padding-top:var(--space-v-100);padding-bottom:0}
.catalog-grid{margin-top:var(--space-v-60);row-gap:var(--space-v-90)}
.faq{margin-top:var(--space-v-120);padding-bottom:0}
.faq>div:first-child>p{margin-top:var(--space-v-30);margin-bottom:var(--space-v-30)}
.services{padding-top:var(--space-v-200);padding-bottom:var(--space-v-140);row-gap:0}
.services-heading{margin-bottom:var(--space-v-60)}
.forest .film-caption{margin-top:var(--space-v-15)}
.family{--family-edge-gap:var(--space-v-140);padding-top:var(--family-edge-gap);padding-bottom:var(--family-edge-gap)}
.family.family-scroll{padding:0}
.family-gallery{row-gap:var(--space-v-24)}
.reviews{padding-top:var(--space-v-140);padding-bottom:var(--space-v-70)}
.reviews .section-heading{margin-bottom:var(--space-v-60)}
.review-card{height:auto;aspect-ratio:272/440}
.visit{padding-top:var(--space-v-70);padding-bottom:var(--space-v-70)}
.visit-card,.meeting-card{height:auto;min-height:280px;aspect-ratio:835/460}
@media(min-width:701px){.stage{height:max(460px,calc(709 * var(--layout-unit)))}}
@media(min-width:601px){
 /* Equal width/height scaling, anchored by the automatic flex spacer above. */
 .forest .film{width:min(100%,calc(416 * var(--layout-unit)),39.111111svh);height:auto;aspect-ratio:16/9;max-height:none;min-height:0;flex:none;margin-top:auto}
}
@media(max-width:1400px){.catalog-grid{row-gap:var(--space-v-70)}}
@media(max-width:900px){
 .work-rows{row-gap:var(--space-v-70)}
 .catalog-grid{row-gap:var(--space-v-55)}
 .services{padding-bottom:var(--space-v-80)}
 .visit{row-gap:var(--space-v-10)}
}
@media(max-width:700px){
 .reviews{padding-top:var(--space-v-70);padding-bottom:var(--space-v-35)}
 .reviews .section-heading{row-gap:var(--space-v-24);margin-bottom:var(--space-v-30)}
 .visit{padding-top:var(--space-v-35);padding-bottom:var(--space-v-35)}
 .family-gallery{row-gap:var(--space-v-12)}
 .stage{height:max(600px,calc(760 * var(--layout-unit)))}
}
@media(max-width:600px){
 .works,.catalog{padding-top:var(--space-v-60)}
 .works{padding-bottom:var(--space-v-60)}
 .filters{margin-top:var(--space-v-20)}
 .work-rows{margin-top:var(--space-v-30);row-gap:var(--space-v-40)}
 .works .work-row:nth-child(n){row-gap:var(--space-v-40)}
 .center{margin-top:var(--space-v-35)}
 .catalog-grid{margin-top:var(--space-v-35);row-gap:var(--space-v-36)}
 .faq{margin-top:var(--space-v-75)}
 .faq>div:first-child>p{margin-top:var(--space-v-24);margin-bottom:var(--space-v-24)}
 .services{padding-bottom:var(--space-v-60);row-gap:var(--space-v-12)}
 .services-heading{margin-bottom:var(--space-v-48)}
 .section-heading{row-gap:var(--space-v-24)}
 .forest .film{bottom:var(--space-v-24)}
 .forest .film-caption{bottom:var(--space-v-30);margin:0}
}
@media(max-height:950px){footer{min-height:750px}}
@media(max-width:600px) and (max-height:950px){
 footer{padding-top:30px;padding-bottom:30px}
 .footer-top{row-gap:20px}
 .footer-top>div>p{margin-bottom:16px}
 .footer-top .hover-nav a{min-height:26px;padding-top:3px;padding-bottom:3px}
 .footer-bottom{row-gap:8px}
 .footer-bottom p,.footer-bottom address>a{margin-top:10px}
}

/* Family photographs keep their original proportions at every animation stage. */
@media(min-width:701px){
 .family-scroll .family-photo{width:calc(290 * var(--layout-unit))}
 .family-scroll .family-photo.family-landscape{width:calc(365 * var(--layout-unit))}
}

/* Keep keyboard focus discoverable without a ring on taps or mouse clicks. */
html[data-input="pointer"] :is(button,a,summary,[role="button"]):focus{outline:none!important;box-shadow:none!important}
button,[role="button"],summary{-webkit-tap-highlight-color:transparent}
button{-webkit-appearance:none;appearance:none}
