@font-face{font-family:Manrope;src:url(assets/fonts/Manrope.ttf);font-weight:200 800;font-display:swap}
:root{--paper:#f5f1e8;--ink:#25241e;--muted:#59564d;--line:#d5ccba;--gold:#a68a5e;--soft-gold:#e1cdac;--dark:#252821;--sans:Manrope,Arial,sans-serif;--serif:"Iowan Old Style",Baskerville,Georgia,serif;--gutter:clamp(20px,4.8vw,80px)}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);background:var(--paper);font:16px/1.65 var(--sans)}
h1,h2,h3,p,figure{margin:0}
img{display:block;width:100%;height:auto}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
[hidden]{display:none!important}
:focus-visible{outline:2px solid #b27f36;outline-offset:5px}
.wrap{width:min(1450px,calc(100% - 2 * var(--gutter)));margin-inline:auto}
.skip{position:fixed;z-index:10;top:10px;left:10px;padding:12px 18px;background:var(--paper);transform:translateY(-180%)}
.skip:focus{transform:none}
.outline{border:1px solid currentColor;background:transparent;display:inline-flex;align-items:center;justify-content:center;gap:17px;min-height:46px;padding:10px 18px;font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;transition:background .2s,color .2s}
.outline:hover{background:var(--ink);color:var(--paper)}
.site-header{position:absolute;top:0;left:0;right:0;z-index:2;padding:20px var(--gutter);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;color:white}
.header-enquire,.menu-trigger{display:inline-flex;align-items:center;justify-content:center;gap:13px;min-height:44px;border:0;background:#26231a36;padding:10px 14px;font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;transition:background .2s}
.header-enquire:hover,.menu-trigger:hover{background:#26231a75}
.header-enquire{justify-self:start}
.brand-definitions{position:absolute;pointer-events:none}
.logo{display:inline-flex;align-items:center;justify-content:center;width:140px;max-width:100%}
.logo img{height:auto}
.logo svg{display:block;width:100%;height:auto;overflow:visible;filter:drop-shadow(0 2px 8px #17130e75)}
.menu-trigger{justify-self:end}
.menu-bars{display:block;position:relative;width:26px;height:16px;border-top:1px solid currentColor;border-bottom:1px solid currentColor}
.menu-bars::after{content:"";position:absolute;top:6px;right:0;width:18px;border-top:1px solid currentColor}
.hero{height:100svh;min-height:590px;position:relative;isolation:isolate;display:grid;place-items:center;background:#554938;color:white;overflow:hidden}
.hero-media,.hero-shade{position:absolute;inset:0;height:100%;width:100%;z-index:-1}
.hero-image,.project-motion{position:absolute;inset:0;height:100%;width:100%;object-fit:cover;opacity:0;transition:opacity .75s ease}
.hero-image,.hero-media .project-motion{object-position:var(--hero-position,center 57%)}
.hero-image.is-current,.hero-image.is-outgoing,.project-motion.is-visible{opacity:1}
.hero-image.is-current{z-index:1}
.hero-media.has-changed .hero-image.is-current{animation:hero-fade .75s ease}
@keyframes hero-fade{from{opacity:0}to{opacity:1}}
.hero-media .project-motion{z-index:2}
.hero-shade{background:linear-gradient(180deg,#17130fa8 0%,#18130c31 30%,#1c150e70 53%,#19140e30 75%,#1b150dbf 100%)}
.hero-copy{width:max-content;max-width:calc(100% - 2 * var(--gutter));padding:105px 0 95px;text-shadow:0 2px 19px #0005}
.eyebrow{display:flex;align-items:center;gap:12px;font-size:10px;font-weight:800;line-height:1.5;letter-spacing:.19em;text-transform:uppercase}
.eyebrow span{width:30px;height:1px;background:var(--gold);flex:none}
.hero-copy .eyebrow span{width:49px;background:var(--soft-gold)}
h1{font-family:var(--sans);font-size:clamp(46px,8.4vw,125px);line-height:1.02;font-weight:650;letter-spacing:-.055em;margin:22px 0 26px}
.hero-copy{animation:rise-in .9s ease-out both}
@keyframes rise-in{from{opacity:.28;transform:translateY(20px)}to{opacity:1;transform:none}}
.reveal-in{animation:rise-in .65s ease-out both}
.hero-location{text-align:right;font-size:clamp(9px,1.13vw,14px);font-weight:800;letter-spacing:.22em}
.hero-foot{position:absolute;inset:auto var(--gutter) 26px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.slide-tools{display:flex;gap:12px;align-items:center;font-size:11px;font-weight:800;letter-spacing:.14em}
.icon{width:44px;height:44px;display:grid;place-items:center;flex:none;border:1px solid currentColor;background:transparent;font-size:20px;line-height:1}
.hero .icon{border-color:#ffffff95;background:#26231a30}
.motion-toggle{min-height:44px;padding:8px 11px;border:1px solid #ffffff95;background:#211e18a8;color:white;font-size:10px;font-weight:800;white-space:nowrap}
.motion-toggle:hover{background:#211e18}
.icon:hover{background:#a78d6045}
.scroll-link{display:flex;align-items:center;gap:15px;text-transform:uppercase;letter-spacing:.19em;font-size:10px;font-weight:800}
.link-arrow{display:inline-block;width:1em;height:1em;flex:none;vertical-align:-.13em}
.scroll-link .link-arrow{font-size:18px}
.scroll-link .link-arrow,.text-link .link-arrow,.social-links .link-arrow{transition:transform .24s ease}
.scroll-link:hover .link-arrow{transform:translateY(4px)}
.text-link:hover .link-arrow,.social-links a:hover .link-arrow{transform:translate(3px,-3px)}
.menu-panel{position:fixed;inset:0 0 0 auto;margin:0;height:100dvh;max-height:none;width:min(540px,100vw);max-width:none;border:0;background:var(--paper);color:var(--ink);padding:0}
.menu-panel[open]{animation:menu-in .36s cubic-bezier(.2,.75,.25,1)}
@keyframes menu-in{from{transform:translateX(100%)}to{transform:none}}
dialog::backdrop{background:#15130fbf}
body:has(dialog[open]){overflow:hidden}
.menu-inner{padding:clamp(25px,6vw,66px);min-height:100%;display:flex;flex-direction:column;gap:35px}
.menu-top{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}
.menu-panel nav{display:grid}
.menu-panel nav a{font:clamp(31px,5vw,49px)/1.15 var(--serif);display:flex;gap:15px;align-items:baseline;padding:14px 0;border-top:1px solid var(--line)}
.menu-panel nav a:hover{color:#7c5c31}
.menu-panel nav a:last-child{border-bottom:1px solid var(--line)}
.menu-panel small{font:800 10px/1 var(--sans);letter-spacing:.1em;color:var(--muted)}
h2,h3{font-family:var(--serif);font-weight:400}
h2{font-size:clamp(45px,6.6vw,100px);line-height:.96;letter-spacing:-.048em}
h3{font-size:clamp(28px,3.25vw,50px);line-height:1.04;letter-spacing:-.025em}
.text-link{display:inline-flex;align-items:center;gap:13px;width:fit-content;padding-bottom:4px;border-bottom:1px solid currentColor;font-size:11px;font-weight:800;letter-spacing:.11em;text-transform:uppercase}
.text-link:hover{color:#856137}
.intro{text-align:center;padding:clamp(72px,10vw,146px) 0 clamp(56px,8vw,106px);display:grid;justify-items:center}
.intro .eyebrow{margin-bottom:25px}
.intro>p:not(.eyebrow){max-width:560px;margin:23px 0 28px;color:var(--muted)}
.statement-photo{position:relative}
.statement-media{position:relative;overflow:hidden}
.statement-photo img{aspect-ratio:2.1;object-fit:cover;object-position:center 64%}
.statement-media .project-motion{object-position:center 64%}
.statement-media .motion-toggle{position:absolute;right:12px;bottom:12px}
.statement-photo figcaption{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:11px 0;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.15em}
.section{padding-block:clamp(68px,8vw,120px)}
.section-heading{display:grid;grid-template-columns:1.3fr .7fr;align-items:end;gap:40px;margin-bottom:34px;padding-bottom:25px;border-bottom:1px solid var(--line)}
.section-heading h2,.approach h2,.contact h2{margin-top:16px}
.section-heading>p{max-width:355px;justify-self:end;color:var(--muted)}
.services{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:35px 26px}
.service{border-bottom:1px solid var(--line);scroll-margin-top:18px}
.service-image,.photo-card button{display:block;overflow:hidden;background:#c8bba7}
.service-image img{aspect-ratio:1.55;object-fit:cover;transition:transform .35s}
.service-image:hover img,.photo-card button:hover img{transform:scale(1.04)}
.service-copy{padding:16px 0 25px}
.service-copy .eyebrow{color:#6d624f}
.service-copy h3{margin:8px 0}
.service-copy>p:not(.eyebrow){color:var(--muted);max-width:490px;margin-bottom:15px}
.other-services{margin-top:25px;color:var(--muted);font-size:14px}
.other-services a{text-decoration:underline;text-underline-offset:3px;color:var(--ink);font-weight:700}
.approach{display:grid;grid-template-columns:45% 55%;background:var(--dark);color:var(--paper)}
.approach-image{--shelving-position:50% 52%;position:relative;min-height:100%;overflow:hidden}
.approach-image img{position:absolute;inset:0;height:100%;object-fit:cover;object-position:var(--shelving-position)}
.approach-pieces{display:none}
@media(prefers-reduced-motion:no-preference){
 .scroll-assembly .approach-image img{opacity:calc(.24 + .76 * var(--assembly,1))}
 .scroll-assembly .approach-pieces{display:block;position:absolute;inset:0;pointer-events:none}
 .approach-pieces i{
  --piece:clamp(0,calc((var(--assembly,1) - var(--start,0)) * 1.55),1);
  position:absolute;inset:0;background:url(assets/photos/20251114_103705.jpg) var(--shelving-position)/cover;
  opacity:var(--piece);
  transform:translate(calc(var(--travel-x,0%) * (1 - var(--piece))),calc(var(--travel-y,0%) * (1 - var(--piece))));
 }
 .approach-pieces i:nth-child(1){clip-path:inset(0 64% 0 0);--travel-x:-12%}
 .approach-pieces i:nth-child(2){clip-path:inset(0 31% 0 36%);--start:.15;--travel-y:13%}
 .approach-pieces i:nth-child(3){clip-path:inset(0 0 0 69%);--start:.3;--travel-x:12%}
 .scroll-assembly .approach-copy:not(:focus-within)>*{
  --line-in:clamp(0,calc((var(--copy-progress,1) - var(--start,0)) * 2.05),1);
  opacity:calc(.25 + .75 * var(--line-in));
  transform:translateY(calc(22px * (1 - var(--line-in))));
 }
 .approach-copy>h2{--start:.11}
 .approach-copy>p:not(.eyebrow){--start:.21}
 .approach-copy>ol{--start:.32}
 .approach-copy>.text-link{--start:.42}
}
.approach-image>span{position:absolute;inset:auto 0 0;padding:22px var(--gutter) 12px;background:linear-gradient(transparent,#16150ec4);color:white;font-size:9px;font-weight:800;letter-spacing:.15em}
.approach-copy{padding:clamp(42px,6.5vw,100px) var(--gutter);max-width:780px}
.approach-copy>p:not(.eyebrow){margin-top:22px;color:#eee7da}
.approach-copy ol{list-style:none;counter-reset:step;margin:24px 0;padding:0}
.approach-copy li{counter-increment:step;position:relative;padding:11px 0 11px 34px;border-top:1px solid #f5f1e84a}
.approach-copy li::before{content:"0" counter(step);position:absolute;left:0;top:14px;color:var(--soft-gold);font-size:10px;font-weight:800;letter-spacing:.14em}
.approach-copy li strong,.approach-copy li span{display:block}
.approach-copy li span{color:#ddd6c8;font-size:13px}
.gallery-tools{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:22px}
#filters{display:flex;flex-wrap:wrap;gap:8px}
#filters button{min-height:40px;padding:7px 12px;border:1px solid var(--line);background:transparent;font-size:12px;font-weight:800;transition:background .2s,color .2s,border-color .2s}
#filters button:hover{border-color:var(--ink)}
#filters button[aria-pressed=true]{background:var(--dark);color:var(--paper);border-color:var(--dark)}
#photo-count{white-space:nowrap;color:var(--muted);font-size:12px}
.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px 16px}
.photo-card{min-width:0;animation:photo-in .42s ease both}
.photo-card:nth-child(3n+2){animation-delay:55ms}
.photo-card:nth-child(3n){animation-delay:110ms}
@keyframes photo-in{from{opacity:.45;transform:translateY(7px)}to{opacity:1;transform:none}}
.photo-card button{width:100%;border:0;padding:0;position:relative}
.photo-card button img{aspect-ratio:1.38;object-fit:cover;transition:transform .3s}
.photo-card button span{position:absolute;right:9px;bottom:9px;width:34px;height:34px;display:grid;place-items:center;background:var(--paper);font-size:20px;transition:background .25s,color .25s,transform .25s}
.photo-card button:is(:hover,:focus-visible) span{background:var(--dark);color:var(--paper);transform:rotate(90deg)}
.photo-card figcaption{padding-top:8px;line-height:1.4;font-size:13px;font-weight:750}
.photo-card small{display:block;margin-top:3px;color:var(--muted);font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.12em}
.more-row{text-align:center;margin-top:32px}
#lightbox{width:min(1100px,95vw);max-width:none;max-height:95dvh;padding:0;border:1px solid #ffffff55;background:#22211e;color:white}
#lightbox[open]{animation:rise-in .3s ease-out}
#large-photo{width:100%;height:min(75dvh,800px);object-fit:contain}
.lightbox-close{position:absolute;right:10px;top:10px;background:#27241dd9}
.lightbox-controls{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:9px 12px;text-align:center}
.reviews{background:#eee8dc}
.reviews-link{justify-self:end}
.review-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.review-toolbar p{color:var(--muted);font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.review-controls{display:flex;gap:8px}
.review-controls button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--ink);background:transparent;transition:background .2s,color .2s}
.review-controls button:not([aria-disabled="true"]):hover{background:var(--ink);color:var(--paper)}
.review-controls button[aria-disabled="true"]{opacity:.4;cursor:default}
.review-track{--review-gap:clamp(14px,2vw,28px);display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 3 * var(--review-gap))/3.12);gap:var(--review-gap);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:#9a805a #e0d7c6;padding-bottom:12px}
.review{display:flex;flex-direction:column;align-items:flex-start;padding:clamp(20px,3vw,38px);background:var(--paper);border:1px solid var(--line)}
.review-track .review{scroll-snap-align:start}
.review-meta{display:flex;flex-wrap:wrap;align-items:center;gap:7px 14px;width:100%;color:var(--muted)}
.review-stars{font-size:16px;letter-spacing:.13em;color:#7c5c31}
.review blockquote,.review-summary{margin:18px 0 24px;font:clamp(24px,2.55vw,36px)/1.22 var(--serif)}
.review figcaption{display:grid;gap:2px;margin-top:auto;padding-top:14px;border-top:1px solid var(--line);width:100%;font-size:13px;font-weight:800}
.review figcaption small{color:var(--muted);font-size:11px;font-weight:500}
.contact{background:#e9e0cf}
.contact-inner{padding-block:clamp(62px,8vw,110px);display:grid;grid-template-columns:1fr minmax(330px,.82fr);gap:clamp(25px,7vw,110px)}
.contact-copy>p:not(.eyebrow){max-width:425px;margin:20px 0;color:var(--muted)}
.contact-details{display:grid;justify-items:start;gap:6px;font-size:14px;font-weight:800;overflow-wrap:anywhere}
.contact-details a:hover,.footer a:hover{text-decoration:underline;text-underline-offset:4px}
form{background:var(--paper);border:1px solid #d3c6ae;padding:clamp(20px,3vw,34px)}
form h3{font-size:33px;margin-bottom:18px}
.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
form label{display:block;font-size:12px;font-weight:800;margin-bottom:12px}
input,select,textarea{display:block;width:100%;margin-top:5px;background:#fcf9f3;border:1px solid #cfc4ad;border-radius:0;padding:9px 10px;min-height:44px;font-size:14px;font-weight:500}
textarea{resize:vertical}
.form-note{margin-top:9px;font-size:12px;color:var(--muted)}
.footer{background:#21231d;color:var(--paper)}
.footer-inner{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:20px;padding-block:34px}
.footer-inner p{font-size:13px;color:#e0d7c8}
.footer nav{display:flex;flex-wrap:wrap;gap:13px 22px;font-size:12px;font-weight:800}
.footer-bottom{border-top:1px solid #f5f1e84a;display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:8px 16px;padding-block:13px;color:#e0d7c8;font-size:11px}
.company-details{display:flex;flex-wrap:wrap;align-items:center;gap:3px 11px}
.company-details span:first-child{width:100%;font-weight:800;color:var(--paper)}
.social-links{display:flex;flex-wrap:wrap;gap:4px 18px;font-weight:800;font-size:12px}
.social-links a{padding-block:8px}
@media(max-width:950px){
 .review-track{grid-auto-columns:calc((100% - 2 * var(--review-gap))/2.12)}
}
@media(max-width:750px){
 .section-heading,.contact-inner{grid-template-columns:1fr;gap:16px}.section-heading>p{justify-self:start}
 .reviews-link{justify-self:start}.review-track{grid-auto-columns:84%}
 .approach{grid-template-columns:1fr}.approach-image{--shelving-position:center 49%;min-height:370px}
 .photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .gallery-tools{align-items:flex-start;flex-direction:column;gap:9px}
 .footer-inner{grid-template-columns:auto 1fr}.footer nav{grid-column:1/-1}
}
@media(max-width:475px){
 .site-header{padding:14px var(--gutter);gap:10px}.site-header .logo{width:98px}.header-enquire,.menu-trigger{min-height:39px;padding:7px;gap:7px;font-size:9px}.menu-bars{width:19px}.menu-bars::after{width:13px}
 .hero{min-height:525px}.hero-image,.hero-media .project-motion{object-position:var(--hero-mobile-position,60% 55%)}.hero-copy{width:100%;max-width:calc(100% - 2 * var(--gutter))}h1{font-size:clamp(30px,10.3vw,46px)}.hero-location{text-align:left}.hero-copy .eyebrow span{width:22px}
 .hero-foot{bottom:18px}.hero-foot .icon{width:37px;height:39px}.slide-tools{gap:7px}.scroll-link{gap:7px;letter-spacing:.09em;font-size:9px}.hero-foot .motion-toggle{position:absolute;bottom:54px;left:0;min-height:39px}
 .statement-photo img{aspect-ratio:1.33}.statement-photo figcaption{font-size:8px}
 .services{grid-template-columns:1fr;gap:22px}
 .approach-image{min-height:300px}
 .photo-grid{gap:15px 9px}.photo-card figcaption{font-size:12px}
 .fields{grid-template-columns:1fr;gap:0}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
