:root{
  --paper:#f3eee6;
  --surface:#fffdf9;
  --ink:#181512;
  --espresso:#2b2521;
  --muted:#70675f;
  --line:#d5ccc1;
  --accent:#80685b;
  --focus:#315ea8;
  --dark-line:#5b514b;
  --radius-small:4px;
  --radius-medium:12px;
  --space-1:.5rem;
  --space-2:.75rem;
  --space-3:1rem;
  --space-4:1.5rem;
  --space-5:2rem;
  --space-6:3rem;
  --space-7:4.5rem;
  --space-8:7rem;
  --space-9:10rem;
  --duration-fast:160ms;
  --duration-normal:320ms;
  --duration-slow:650ms;
  --ease-standard:cubic-bezier(.22,1,.36,1);
  --serif:"Iowan Old Style","Palatino Linotype",Baskerville,"Times New Roman",serif;
  --sans:"Avenir Next",Avenir,"Segoe UI",Arial,sans-serif;
}

html{overflow-x:clip;background:var(--paper);scroll-padding-top:96px}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:clamp(1rem,.96rem + .2vw,1.125rem);line-height:1.65}
section{scroll-margin-top:96px}
img{width:100%;height:auto}
button,a{touch-action:manipulation}
button{cursor:pointer}
:focus-visible{outline:3px solid var(--focus);outline-offset:4px}
::selection{background:var(--espresso);color:var(--surface)}

.container{width:min(calc(100% - 40px),1280px);margin-inline:auto}
.section{padding-block:clamp(4.5rem,10vw,10rem)}
.prose{max-width:62ch}
.eyebrow{font-size:.72rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase}
.section-index{font-family:var(--serif);font-size:1rem;color:var(--muted);padding-top:.55rem}
.content-note,.gallery-disclaimer{font-size:.76rem;color:var(--muted);max-width:70ch}

.skip-link{position:fixed;z-index:1000;top:10px;left:10px;padding:.75rem 1rem;background:var(--ink);color:var(--surface);transform:translateY(-160%);transition:transform var(--duration-fast)}
.skip-link:focus{transform:translateY(0)}

.site-header{position:sticky;top:0;z-index:50;background:var(--paper);border-bottom:1px solid var(--line)}
.header-inner{height:76px;display:flex;align-items:center;justify-content:space-between;gap:var(--space-5)}
.brand{display:inline-flex;align-items:baseline;gap:.35rem;font-family:var(--serif);font-size:1.16rem;line-height:1;white-space:nowrap}
.brand span:last-child{font-family:var(--sans);font-size:.64rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase}
.desktop-nav{display:flex;align-items:center;gap:clamp(1.25rem,2.3vw,2.5rem);margin-left:auto}
.desktop-nav a,.header-contact,.language-link{position:relative;font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.desktop-nav a::after,.header-contact::after,.language-link::after,.footer-links a::after{content:"";position:absolute;left:0;right:100%;bottom:-5px;height:1px;background:currentColor;transition:right var(--duration-normal) var(--ease-standard)}
.desktop-nav a:hover::after,.desktop-nav a:focus-visible::after,.header-contact:hover::after,.header-contact:focus-visible::after,.language-link:hover::after,.language-link:focus-visible::after,.footer-links a:hover::after,.footer-links a:focus-visible::after{right:0}
.header-actions{display:flex;align-items:center;gap:1.25rem}
.menu-toggle{display:none;width:44px;height:44px;align-items:center;justify-content:center;flex-direction:column;gap:7px}
.menu-toggle span{display:block;width:24px;height:1px;background:var(--ink);transition:transform var(--duration-normal) var(--ease-standard)}
.menu-toggle[aria-expanded="true"] span:first-child{transform:translateY(4px) rotate(45deg)}
.menu-toggle[aria-expanded="true"] span:last-child{transform:translateY(-4px) rotate(-45deg)}
.mobile-nav{border-top:1px solid var(--line);background:var(--surface)}
.mobile-nav-inner{display:grid;padding-block:1rem 1.5rem}
.mobile-nav a{display:flex;align-items:center;min-height:52px;border-bottom:1px solid var(--line);font-family:var(--serif);font-size:1.35rem}
.mobile-nav a:last-child{font-family:var(--sans);font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;border-bottom:0}

.hero{min-height:min(860px,calc(100svh - 76px));display:flex;align-items:stretch}
.hero-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(2rem,6vw,7.5rem);align-items:stretch;padding-block:clamp(2.5rem,5vw,5rem)}
.hero-copy{display:flex;flex-direction:column;justify-content:center;padding-block:2rem;animation:hero-copy-in var(--duration-slow) var(--ease-standard) both}
.hero h1{font-family:var(--serif);font-size:clamp(3.3rem,5.8vw,7.6rem);font-weight:400;letter-spacing:-.052em;line-height:.91;max-width:11ch;margin-top:clamp(1.5rem,3vw,3rem)}
.hero-lead{max-width:48ch;margin-top:clamp(1.5rem,3vw,2.5rem);color:var(--muted)}
.button-row{display:flex;align-items:center;gap:clamp(1.25rem,3vw,2.5rem);margin-top:2.5rem;flex-wrap:wrap}
.button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:.8rem 1.2rem;border:1px solid var(--ink);border-radius:var(--radius-small);font-size:.8rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;transition:background var(--duration-fast),color var(--duration-fast)}
.button-primary{background:var(--ink);color:var(--surface)}
.button-primary:hover,.button-primary:focus-visible{background:transparent;color:var(--ink)}
.text-link{display:inline-flex;align-items:center;gap:.65rem;min-height:44px;font-size:.82rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;border-bottom:1px solid var(--ink)}
.text-link span{transition:transform var(--duration-normal) var(--ease-standard)}
.text-link:hover span{transform:translate(4px,4px)}
.hero-signature{display:grid;grid-template-columns:auto 1fr;gap:1rem;margin-top:auto;padding-top:3rem;font-size:.73rem;letter-spacing:.08em;text-transform:uppercase;border-top:1px solid var(--line)}
.hero-signature span:last-child{color:var(--muted)}
.hero-media{min-height:630px;animation:hero-image-in var(--duration-slow) var(--ease-standard) 80ms both}
.media-frame{position:relative;overflow:hidden;background:#d8c7b7}
.media-frame img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-slow) var(--ease-standard),opacity var(--duration-normal)}
.media-frame:hover img{transform:scale(1.012)}
.hero-media img{object-position:50% 50%}
.demo-label{position:absolute;right:0;bottom:0;padding:.45rem .65rem;background:var(--surface);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}

.manifest{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.manifest-grid{display:grid;grid-template-columns:1fr 11fr;gap:var(--space-5)}
.manifest h2{font-family:var(--serif);font-size:clamp(2.35rem,4.8vw,5.8rem);font-weight:400;line-height:1.01;letter-spacing:-.042em;max-width:19ch}
.discipline-list{display:grid;grid-template-columns:repeat(3,1fr);margin-top:clamp(3rem,7vw,6rem);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.discipline-list li{display:flex;gap:1rem;padding:1.15rem 0;font-size:.86rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.discipline-list li+li{border-left:1px solid var(--line);padding-left:1.5rem}
.discipline-list span{color:var(--muted);font-family:var(--serif)}

.about{background:var(--surface)}
.about-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(3rem,8vw,8rem);align-items:center}
.about-media{aspect-ratio:4/5;max-height:820px}
.about-media img{object-position:48% 45%}
.about-copy h2{font-family:var(--serif);font-size:clamp(2.5rem,4.5vw,5.5rem);font-weight:400;letter-spacing:-.04em;line-height:1;margin-top:1.25rem;max-width:12ch}
.about-copy .prose{margin-top:2.5rem}
.about-copy .prose p+p{margin-top:1.2rem}
.editorial-quote{font-family:var(--serif);font-size:clamp(1.3rem,2vw,1.85rem);font-style:italic;line-height:1.35;padding-left:1.25rem;border-left:1px solid var(--accent)}
.about-copy .content-note{margin-top:2rem}

.section-heading{display:grid;grid-template-columns:1fr 11fr;gap:var(--space-5);margin-bottom:clamp(3rem,7vw,6rem)}
.section-heading h2,.gallery-heading h2{font-family:var(--serif);font-size:clamp(2.6rem,5vw,6rem);font-weight:400;letter-spacing:-.045em;line-height:.98;max-width:14ch;margin-top:1rem}
.service-list{border-top:1px solid var(--line)}
.service-list li{display:grid;grid-template-columns:1fr 4fr 5fr;gap:clamp(1rem,3vw,3rem);padding:clamp(1.5rem,3.5vw,3rem) 0;border-bottom:1px solid var(--line);align-items:start}
.service-number{font-family:var(--serif);color:var(--muted)}
.service-list h3{font-family:var(--serif);font-size:clamp(1.55rem,2.5vw,2.6rem);font-weight:400;line-height:1.05}
.service-list p{max-width:50ch;color:var(--muted)}
.service-note{max-width:62ch;margin-top:2rem;color:var(--muted);font-size:.92rem}

.gallery-section{position:relative;overflow:hidden;background:var(--espresso);color:var(--surface)}
.gallery-word{position:absolute;top:2.5rem;left:-.04em;font-family:var(--serif);font-size:clamp(8rem,22vw,24rem);letter-spacing:-.08em;line-height:.72;color:transparent;-webkit-text-stroke:1px rgba(255,253,249,.18);white-space:nowrap;pointer-events:none;user-select:none}
.gallery-content{position:relative}
.gallery-heading{display:grid;grid-template-columns:1fr 7fr 4fr;gap:var(--space-5);align-items:end;margin-bottom:clamp(5rem,13vw,12rem)}
.gallery-heading .section-index,.gallery-heading .gallery-intro{color:#bfb4aa}
.gallery-intro{max-width:34ch;font-size:.88rem}
.gallery-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(1rem,2vw,2rem);align-items:start}
.gallery-item{position:relative;display:block;text-align:left;overflow:hidden;background:#8a7468;color:var(--surface)}
.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-slow) var(--ease-standard)}
.gallery-item:hover img,.gallery-item:focus-visible img{transform:scale(1.015)}
.gallery-item span{position:absolute;left:0;bottom:0;padding:.45rem .65rem;background:var(--espresso);font-size:.65rem;letter-spacing:.1em;text-transform:uppercase}
.gallery-item-1{grid-column:1/span 7;aspect-ratio:4/5}
.gallery-item-2{grid-column:9/span 4;aspect-ratio:3/4;margin-top:7rem}
.gallery-item-3{grid-column:2/span 6;aspect-ratio:16/10;margin-top:3rem}
.gallery-item-4{grid-column:9/span 4;aspect-ratio:4/5;margin-top:-2rem}
.gallery-item-5{grid-column:1/span 5;aspect-ratio:4/3;margin-top:4rem}
.gallery-item-6{grid-column:7/span 6;aspect-ratio:5/4;margin-top:8rem}
.gallery-disclaimer{color:#bfb4aa;margin-top:4rem}

.testimonials{background:var(--surface)}
.testimonial-grid{display:grid;grid-template-columns:2fr 1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.testimonial{padding:2rem}
.testimonial+.testimonial{border-left:1px solid var(--line)}
.testimonial blockquote{font-family:var(--serif);font-size:clamp(1.3rem,2vw,2rem);line-height:1.35}
.testimonial cite{display:block;margin-top:1.5rem;font-size:.75rem;font-style:normal;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}

.contact{background:var(--ink);color:var(--surface)}
.contact-grid{display:grid;grid-template-columns:5fr 3fr 4fr;gap:clamp(2rem,5vw,5rem);align-items:start}
.contact .eyebrow{color:#bfb4aa}
.contact h2{font-family:var(--serif);font-size:clamp(3rem,6vw,7rem);font-weight:400;line-height:.92;letter-spacing:-.05em;max-width:8ch;margin-top:1rem}
.contact-intro>p:last-child{max-width:44ch;margin-top:2rem;color:#d0c6bd}
.contact-details{border-top:1px solid var(--dark-line)}
.contact-placeholder{padding-top:1.5rem;color:#d0c6bd;font-size:.9rem}
.contact-placeholder code{color:var(--surface);overflow-wrap:anywhere}
.contact-list li{display:grid;gap:.35rem;padding:1.2rem 0;border-bottom:1px solid var(--dark-line)}
.contact-list span{font-size:.67rem;letter-spacing:.12em;text-transform:uppercase;color:#a99d94}
.contact-list a{width:max-content;max-width:100%;font-family:var(--serif);font-size:1.25rem;overflow-wrap:anywhere}
.contact-list a:hover{text-decoration:underline;text-underline-offset:5px}
.location-media{aspect-ratio:4/5;min-height:480px}
.media-frame-dark{background:#5c4e47}
.media-frame-dark .demo-label{background:var(--ink);color:#bfb4aa}

.site-footer{padding-block:2.5rem;background:var(--paper);border-top:1px solid var(--line)}
.footer-grid{display:grid;grid-template-columns:4fr 4fr 4fr;gap:2rem;align-items:end;font-size:.78rem;color:var(--muted)}
.footer-brand{font-family:var(--serif);font-size:1.4rem;color:var(--ink)}
.footer-links{display:flex;gap:1.5rem;flex-wrap:wrap}
.footer-links a{position:relative;color:var(--ink)}
.footer-meta{text-align:right}

.mobile-contact-bar{position:fixed;left:12px;right:12px;bottom:12px;z-index:40;display:none;transform:translateY(calc(100% + 30px));transition:transform var(--duration-normal) var(--ease-standard)}
.mobile-contact-bar.is-visible{transform:translateY(0)}
.mobile-contact-bar a{display:flex;align-items:center;justify-content:center;min-height:52px;background:var(--ink);color:var(--surface);border:1px solid var(--surface);font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}

.gallery-dialog{width:min(92vw,1000px);max-height:90vh;margin:auto;padding:0;border:0;background:var(--espresso);color:var(--surface)}
.gallery-dialog::backdrop{background:rgba(24,21,18,.84)}
.gallery-dialog figure{display:grid;grid-template-rows:minmax(0,1fr) auto;max-height:90vh}
.gallery-dialog img{width:100%;height:min(76vh,900px);object-fit:contain;background:var(--espresso)}
.gallery-dialog figcaption{padding:1rem 1.25rem;border-top:1px solid var(--dark-line);font-size:.78rem;letter-spacing:.05em}
.dialog-close{position:absolute;z-index:2;top:10px;right:10px;width:44px;height:44px;background:var(--surface);color:var(--ink);font-size:2rem;line-height:1}

.privacy-main{padding-block:clamp(4rem,9vw,8rem)}
.privacy-wrap{max-width:820px}
.privacy-wrap h1{font-family:var(--serif);font-size:clamp(3rem,7vw,7rem);font-weight:400;line-height:.92;letter-spacing:-.05em}
.privacy-wrap h2{font-family:var(--serif);font-size:2rem;font-weight:400;margin-top:3rem}
.privacy-wrap p,.privacy-wrap ul{margin-top:1rem}
.privacy-wrap ul{padding-left:1.2rem;list-style:disc}
.privacy-back{display:inline-flex;margin-bottom:3rem;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid currentColor}

@keyframes hero-copy-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes hero-image-in{from{opacity:0;clip-path:inset(0 0 100% 0)}to{opacity:1;clip-path:inset(0)}}

@media (min-width:1200px){.container{width:min(calc(100% - 96px),1360px)}}

@media (max-width:980px){
  .desktop-nav,.header-contact{display:none}
  .menu-toggle{display:flex}
  .hero-grid{grid-template-columns:1fr;gap:2.5rem}
  .hero-copy{padding-bottom:0}
  .hero h1{max-width:12ch}
  .hero-signature{margin-top:3rem}
  .hero-media{min-height:0;aspect-ratio:4/5}
  .about-grid{grid-template-columns:1fr;gap:3.5rem}
  .about-media{max-width:720px}
  .about-copy{max-width:720px;margin-left:auto}
  .contact-grid{grid-template-columns:1fr 1fr}
  .contact-intro{grid-column:1/-1}
  .location-media{min-height:0}
  .gallery-heading{grid-template-columns:1fr 8fr 3fr}
}

@media (max-width:720px){
  .container{width:min(calc(100% - 40px),1280px)}
  .header-inner{height:66px}
  .language-link{display:none}
  .hero{min-height:auto}
  .hero-grid{padding-block:2.25rem 0}
  .hero h1{font-size:clamp(3.15rem,14.5vw,5.4rem);max-width:11ch;margin-top:1.4rem}
  .hero-lead{font-size:.98rem}
  .button-row{align-items:stretch;flex-direction:column;gap:1rem}
  .button,.text-link{width:100%}
  .text-link{justify-content:space-between}
  .hero-signature{grid-template-columns:1fr;gap:.2rem;padding-top:1.2rem;margin-top:2.5rem}
  .hero-media{margin-inline:-20px;aspect-ratio:4/5}
  .demo-label{font-size:.54rem}
  .manifest-grid,.section-heading{grid-template-columns:1fr;gap:1.2rem}
  .manifest h2{font-size:clamp(2.35rem,10vw,3.65rem)}
  .discipline-list{grid-template-columns:1fr;margin-top:3rem}
  .discipline-list li+li{border-left:0;border-top:1px solid var(--line);padding-left:0}
  .about-media{margin-inline:-20px;aspect-ratio:4/5}
  .about-copy h2{font-size:clamp(2.55rem,11vw,4rem)}
  .service-list li{grid-template-columns:46px 1fr;gap:1rem}
  .service-list p{grid-column:2}
  .gallery-word{top:3.5rem;font-size:38vw}
  .gallery-heading{grid-template-columns:1fr;gap:1rem;margin-bottom:5rem}
  .gallery-heading h2{font-size:clamp(2.75rem,12vw,4.5rem)}
  .gallery-intro{margin-top:1rem}
  .gallery-grid{grid-template-columns:1fr;gap:2rem}
  .gallery-item-1,.gallery-item-2,.gallery-item-3,.gallery-item-4,.gallery-item-5,.gallery-item-6{grid-column:1;margin-top:0}
  .gallery-item-1,.gallery-item-4{aspect-ratio:4/5}
  .gallery-item-2{aspect-ratio:3/4;margin-left:16%}
  .gallery-item-3{aspect-ratio:16/11;margin-right:8%}
  .gallery-item-5{aspect-ratio:4/3;margin-right:14%}
  .gallery-item-6{aspect-ratio:5/4;margin-left:9%}
  .testimonial-grid{grid-template-columns:1fr}
  .testimonial+.testimonial{border-left:0;border-top:1px solid var(--line)}
  .contact-grid{grid-template-columns:1fr}
  .contact h2{font-size:clamp(3.2rem,15vw,5.5rem)}
  .location-media{aspect-ratio:4/5;margin-inline:-20px}
  .footer-grid{grid-template-columns:1fr;align-items:start}
  .footer-meta{text-align:left}
  .mobile-contact-bar{display:block}
  .gallery-dialog{width:100vw;max-height:100dvh}
  .gallery-dialog figure{max-height:100dvh}
  .gallery-dialog img{height:calc(100dvh - 64px)}
}

@media (max-width:360px){
  .container{width:min(calc(100% - 32px),1280px)}
  .hero-media,.about-media,.location-media{margin-inline:-16px}
  .brand{font-size:1.04rem}
  .brand span:last-child{display:none}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
