/* Herraiz: shared design rules, followed by responsive layouts. */
:root{--paper:#f7f6f2;--ink:#23251f;--muted:#686b61;--olive:#414b38;--olive-hover:#293023;--surface:#eceee7;--dark:#343e2f;--on-dark:#f7f6f2;--muted-dark:#c8cebf;--line:#d9dcd2;--line-dark:#86917e;--gutter:clamp(24px,5vw,80px);--section-space:clamp(80px,9vw,144px);--heading-gap:clamp(32px,4vw,56px);--column-gap:40px;--body-size:1rem;--small-size:.875rem;--label-size:.75rem;--title-size:clamp(2rem,4.4vw,4rem);--reading-width:34rem;--radius:6px;--image-radius:10px;--underline-offset:.28em;--underline-width:1px;--focus:#414b38}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased;font-size:var(--body-size);line-height:1.65}body.modal-open{overflow:hidden}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{color:inherit}button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}button,summary{cursor:pointer}img{display:block;width:100%;height:100%;object-fit:cover}figure,p,h1,h2,h3{margin:0}h1,h2,h3{font-weight:400}h1,h2{letter-spacing:-.043em;line-height:1.08}h2{font-size:var(--title-size)}h3{font-size:1.5rem;letter-spacing:-.025em;line-height:1.3}em{font-style:normal;color:var(--muted)}.container{width:100%;max-width:1600px;margin:auto;padding-inline:var(--gutter)}.section{padding-block:var(--section-space)}.eyebrow{font-size:var(--label-size);letter-spacing:.13em;font-weight:600;line-height:1.5}
/* Links: one actual text underline across the whole site. */
.text-link,.contact-meta a,.form-privacy a,.footer-bottom a,.legal-content a{text-decoration-line:underline;text-decoration-thickness:var(--underline-width);text-underline-offset:var(--underline-offset);text-decoration-skip-ink:auto}.text-link{font-size:var(--small-size)}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--focus);outline-offset:5px}.skip{position:fixed;top:-100px;left:24px;background:var(--paper);padding:16px;z-index:30}.skip:focus{top:8px}
/* Header */
.header{position:sticky;top:0;z-index:10;background:rgba(247,246,242,.97);transition:box-shadow .3s}.header.scrolled{box-shadow:0 1px 0 var(--line)}.header-inner{max-width:1600px;margin:auto;padding:24px var(--gutter);display:flex;align-items:center;gap:32px}.brand{font-size:36px;letter-spacing:-.045em;font-weight:600;line-height:.9;display:inline-flex;flex-direction:column;flex-shrink:0}.brand span{font-size:10px;letter-spacing:.17em;font-weight:400;margin:8px 0 0 2px}.header nav{display:flex;gap:24px;margin-left:auto;font-size:var(--small-size)}.header nav a{padding:8px 0;text-decoration:underline;text-decoration-thickness:var(--underline-width);text-underline-offset:var(--underline-offset);text-decoration-color:transparent;transition:text-decoration-color .25s}.header nav a:hover,.header nav a:focus-visible{text-decoration-color:currentColor}.menu-toggle{display:none}
.button{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:16px 24px;background:var(--olive);border:1px solid var(--olive);color:var(--on-dark);border-radius:var(--radius);font-size:var(--small-size);line-height:1.3;transition:background .25s,transform .25s;cursor:pointer}.button:hover{background:var(--olive-hover);transform:translateY(-2px)}.button.small{min-height:44px;padding:12px 16px}.button.light{background:var(--paper);color:var(--ink);border-color:var(--paper)}.button.light:hover{background:var(--surface)}
/* Hero */
.hero{padding-top:64px}.hero>.eyebrow{display:flex;justify-content:space-between;margin-bottom:32px}.hero h1{font-size:clamp(2rem,6.6vw,6.2rem);max-width:1250px;line-height:1.05}.hero h1>span,.hero h1>em,.contact h2>span,.contact h2>em{display:block}.hero-bottom{display:flex;justify-content:space-between;align-items:center;margin:32px 0 48px;gap:32px}.hero-bottom>p{max-width:var(--reading-width);color:var(--muted)}.hero-actions{display:flex;align-items:center;gap:24px;flex-shrink:0}.hero-image{position:relative;height:clamp(340px,46vw,700px);overflow:hidden;border-radius:var(--image-radius)}.hero-image img{object-position:center 55%}.hero-image figcaption{position:absolute;bottom:0;left:0;right:0;padding:64px 24px 24px;background:linear-gradient(transparent,rgba(0,0,0,.65));color:white;font-size:var(--label-size);letter-spacing:.1em;display:flex;justify-content:space-between;gap:16px}.hero-image figcaption span{letter-spacing:0}.values{display:flex;justify-content:space-between;padding:24px 0;border-bottom:1px solid var(--line);font-size:var(--small-size);color:var(--muted)}
/* Shared section heading and service grid */
.section-heading{display:grid;grid-template-columns:1fr 2.1fr;gap:var(--column-gap);margin-bottom:var(--heading-gap)}.section-heading>.eyebrow{padding-top:8px}.intro{max-width:var(--reading-width);margin-top:24px;color:var(--muted)}.services{display:grid;grid-template-columns:1fr 2.1fr;column-gap:var(--column-gap)}.services details{grid-column:2;border-top:1px solid var(--line)}.services details:last-child{border-bottom:1px solid var(--line)}summary{list-style:none;display:flex;align-items:center;padding:24px 0;gap:24px}summary::-webkit-details-marker{display:none}.number{font-size:var(--label-size);color:var(--muted);min-width:20px}summary h3{font-size:clamp(1.5rem,2.5vw,2rem)}.plus{margin-left:auto;position:relative;width:16px;height:16px;flex-shrink:0}.plus:before,.plus:after{content:'';position:absolute;background:var(--ink);left:0;top:7px;width:16px;height:1px}.plus:after{transform:rotate(90deg);transition:transform .25s}details[open] .plus:after{transform:rotate(0)}.services details p{color:var(--muted);max-width:calc(var(--reading-width) + 44px);padding:0 24px 24px 44px}
/* Spaces */
.projects{background:var(--surface)}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px var(--column-gap)}.project{background:none;border:0;text-align:left;padding:0;min-width:0}.project-wide{grid-column:1/-1}.image-wrap{display:block;position:relative;overflow:hidden;aspect-ratio:4/5;border-radius:var(--image-radius)}.project-wide .image-wrap{aspect-ratio:2/1}.project-detail .image-wrap{aspect-ratio:2.5/1}.image-wrap img{transition:transform .7s}.project:hover img{transform:scale(1.025)}.image-tag,.about-image>span{position:absolute;bottom:24px;background:rgba(247,246,242,.96);font-size:var(--label-size);line-height:1.4;padding:10px 16px;border-radius:var(--radius)}.image-tag{right:24px;letter-spacing:.06em}.about-image>span{left:24px}.project-caption{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding-top:24px}.project-caption strong{font-size:1.25rem;font-weight:400;letter-spacing:-.025em;line-height:1.4}.project-caption>span{font-size:var(--small-size);color:var(--muted)}.project:not(.project-wide) .project-caption{display:block}.project:not(.project-wide) .project-caption>span{display:block;margin-top:8px}.project-offset{padding-top:96px}.editorial-note{font-size:var(--small-size);color:var(--muted);margin-top:32px}
/* Process */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}.steps article{border-top:1px solid var(--line);padding-top:24px}.step-number{font-size:56px;letter-spacing:-.043em;color:var(--muted);display:block;margin-bottom:48px;line-height:1}.steps h3{font-size:1.375rem;margin-bottom:16px}.steps p{color:var(--muted);max-width:var(--reading-width)}
/* About: consistent section padding, distinct editorial composition. */
.about{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"photo heading" "photo body";column-gap:clamp(40px,6vw,96px);row-gap:0;align-items:center}.about-heading{grid-area:heading;align-self:end}.about-heading h2{margin:24px 0}.about-image{grid-area:photo;position:relative;height:640px;overflow:hidden;border-radius:var(--image-radius)}.about-image img{object-position:center 24%}.about-copy{grid-area:body;align-self:start}.about-copy>p{color:var(--muted);max-width:var(--reading-width)}.about-copy>p+p{margin-top:24px}.about-signoff{margin-top:32px}.about-signoff a{display:inline-block;margin-top:16px}
/* Contact */
.contact{background:var(--dark);color:var(--on-dark);--focus:var(--on-dark)}.contact-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:64px}.contact h2{font-size:clamp(2rem,3.7vw,3.625rem);margin:24px 0}.contact em,.contact p{color:var(--muted-dark)}.contact-grid>div>p:not(.eyebrow){max-width:var(--reading-width)}.contact .eyebrow{color:var(--on-dark)}.contact-meta{display:grid;gap:8px;margin-top:32px;font-size:var(--body-size)}.contact-meta>span{color:var(--muted-dark);margin-top:16px;font-size:var(--small-size)}.contact-meta strong{font-weight:400}.contact-meta a{width:fit-content;overflow-wrap:anywhere}.contact form h3{margin-bottom:16px}.contact .form-note{font-size:var(--small-size);margin-bottom:32px;max-width:var(--reading-width)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:24px}label{display:block;font-size:var(--small-size);margin-bottom:24px}input,select,textarea{display:block;width:100%;border:0;border-bottom:1px solid var(--line-dark);border-radius:0;background:transparent;color:var(--on-dark);padding:12px 0;font-size:var(--body-size)}input::placeholder,textarea::placeholder{color:var(--muted-dark);opacity:1}select option{background:var(--dark)}textarea{resize:vertical}.contact .form-privacy{font-size:var(--small-size);margin-bottom:24px}#form-status{font-size:var(--small-size);margin-top:16px}
/* Footer and overlays */
.footer{padding-top:64px;padding-bottom:32px}.footer-top{display:flex;align-items:center;justify-content:space-between;gap:32px;padding-bottom:48px}.footer-top p{color:var(--muted)}.footer-bottom{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:24px;font-size:var(--small-size);color:var(--muted)}.footer-bottom>div{display:flex;gap:24px;flex-wrap:wrap}dialog{border:0;border-radius:var(--image-radius);background:var(--paper);color:var(--ink);padding:56px 24px 24px;max-width:1100px;width:90vw;max-height:90vh}dialog::backdrop{background:#111c}dialog img{max-height:70vh;object-fit:contain}dialog p{margin-top:16px;font-size:var(--small-size)}dialog .dialog-close{position:absolute;right:16px;top:8px;border:0;background:transparent;padding:8px;font-size:var(--small-size);min-height:40px}
/* Legal pages */
.legal-content{max-width:900px;padding-top:64px;padding-bottom:96px}.legal-content h1{font-size:clamp(2.25rem,6vw,4rem);margin:24px 0 32px}.legal-content h2{font-size:1.5rem;letter-spacing:-.025em;margin:40px 0 16px}.legal-content p,.legal-content li{margin-bottom:24px}.legal-content .draft-note{background:var(--surface);border-left:3px solid var(--olive);padding:24px;font-size:var(--small-size)}.legal-content table{border-collapse:collapse;width:100%;font-size:var(--small-size)}.legal-content td,.legal-content th{padding:12px;text-align:left;border-bottom:1px solid var(--line)}
/* Intermediate widths */
@media(max-width:1200px){.header-cta{display:none}.header nav{gap:16px}.hero-bottom{align-items:flex-start;flex-direction:column}.about-image{height:560px}.project-caption{display:block}.project-caption>span{display:block;margin-top:8px}.contact-grid{gap:40px}}
@media(max-width:850px){:root{--title-size:clamp(2rem,5vw,2.625rem)}.header-inner{padding-block:20px}.brand{font-size:32px}.menu-toggle{display:flex;align-items:center;gap:12px;margin-left:auto;background:none;border:0;font-size:var(--small-size);min-height:44px}.menu-icon{position:relative;width:20px;height:20px}.menu-icon:before,.menu-icon:after{content:'';position:absolute;left:0;width:20px;height:1px;background:currentColor;transition:transform .3s,top .3s;top:6px}.menu-icon:after{top:13px}.menu-toggle[aria-expanded=true] .menu-icon:before{top:9px;transform:rotate(45deg)}.menu-toggle[aria-expanded=true] .menu-icon:after{top:9px;transform:rotate(-45deg)}.header nav{display:grid;gap:8px;position:absolute;top:100%;left:0;right:0;background:var(--paper);padding:16px var(--gutter) 32px;border-bottom:1px solid var(--line);margin:0;opacity:0;visibility:hidden;transform:translateY(-12px);pointer-events:none;transition:opacity .25s,transform .3s,visibility .3s;box-shadow:0 16px 25px #23251f08}.header nav.open{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.header nav a{font-size:1.25rem;padding-block:8px;width:fit-content}.hero{padding-top:40px}.hero>.eyebrow span:last-child{display:none}.hero h1{font-size:clamp(1.875rem,7.7vw,4.125rem)}.hero-image{height:460px}.hero-image figcaption{display:block}.hero-image figcaption span{display:block;margin-top:8px}.section-heading{grid-template-columns:1fr;gap:24px}.section-heading>.eyebrow{padding-top:0}.services{grid-template-columns:1fr}.services details{grid-column:1}.steps{grid-template-columns:1fr;gap:32px}.steps article{display:grid;grid-template-columns:56px 1fr;column-gap:24px}.step-number{grid-row:1/3;margin:0;font-size:44px}.steps p{max-width:var(--reading-width)}.about{grid-template-columns:1fr;grid-template-areas:"heading" "photo" "body";gap:32px}.about-heading h2{margin-bottom:0}.about-image{height:auto;aspect-ratio:4/5;width:100%;max-width:560px}.contact-grid{grid-template-columns:1fr;gap:56px}.contact h2{font-size:var(--title-size)}.contact form{max-width:600px}}
@media(max-width:560px){:root{--title-size:clamp(1.75rem,7.5vw,2.625rem);--image-radius:8px}.hero h1{font-size:clamp(1.5625rem,7.7vw,2.7rem)}.hero>.eyebrow{margin-bottom:24px}.hero-bottom{margin:24px 0 32px;gap:24px}.hero-actions{gap:24px;flex-wrap:wrap;flex-shrink:1}.hero-image{height:390px}.hero-image figcaption{padding:64px 16px 16px;letter-spacing:.06em}.values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;align-items:center;text-align:center;font-size:.8125rem}.values span{padding:4px 8px}.values span+span{border-left:1px solid var(--line)}summary{gap:16px}summary h3{font-size:1.375rem}.services details p{padding-left:36px;padding-right:0}.project-grid{grid-template-columns:1fr;gap:40px}.project-wide{grid-column:auto}.project-wide .image-wrap,.image-wrap{aspect-ratio:1/1.15}.project-detail .image-wrap{aspect-ratio:1/1}.project-offset{padding-top:0}.image-tag,.about-image>span{bottom:16px;padding:9px 12px}.image-tag{right:16px}.about-image>span{left:16px}.project-caption{padding-top:16px}.steps article{grid-template-columns:48px 1fr;column-gap:16px}.step-number{font-size:40px}.steps h3{font-size:1.375rem}.form-row{grid-template-columns:1fr;gap:0}.footer{padding-top:48px}.footer-top{align-items:flex-start;flex-wrap:wrap;padding-bottom:32px;gap:24px}.footer-top p{display:none}dialog{width:96vw;padding-inline:16px}.legal-content td,.legal-content th{padding:8px;overflow-wrap:anywhere}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

/* Work in progress: retain each supplied photograph's complete frame. */
.work-item{min-width:0}.work-gallery .project{display:block;width:100%}.work-gallery .image-wrap{aspect-ratio:auto}.work-gallery .image-wrap img{height:auto;object-fit:contain}.work-gallery .project:hover img{transform:none}.work-gallery .project:hover .image-tag{background:var(--paper)}.work-gallery .project-offset{padding-top:64px}.work-caption{padding-top:24px}.work-meta{font-size:var(--small-size);color:var(--muted)}.work-caption h3{margin-top:8px}.work-caption p{margin-top:16px;color:var(--muted);max-width:var(--reading-width)}.work-gallery .project-wide .work-caption{display:grid;grid-template-columns:1fr 1fr;column-gap:40px}.work-gallery .project-wide .work-caption p{grid-column:2;grid-row:1/3;margin-top:0}.work-gallery .project-wide .work-caption h3{grid-column:1}.work-gallery .project:focus-visible{outline-offset:6px}@media(max-width:560px){.work-gallery .project-offset{padding-top:0}.work-caption{padding-top:16px}.work-gallery .project-wide .work-caption{display:block}.work-gallery .project-wide .work-caption p{margin-top:16px}}

.form-trap{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.button:disabled{opacity:.65;cursor:not-allowed;transform:none}.hero-image img{object-position:center 44%}

/* Subtle emphasis preserves the original process layout and dividers. */
.steps .step-number,.steps h3{transition:color .3s ease,text-shadow .3s ease}
.steps article.is-active .step-number,.steps article.is-active h3{color:var(--olive);text-shadow:0.5px 0 currentColor}
.work-item.reveal-pending{opacity:0;transform:translateY(20px)}
.work-item.reveal-ready{transition:opacity .65s ease,transform .65s cubic-bezier(.2,.65,.3,1)}
.work-item.is-revealed,.work-item:focus-within{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.work-item.reveal-pending{opacity:1;transform:none}}

/* Mobile navigation: preserve page position while the backdrop fades. */
.menu-backdrop{position:fixed;inset:0;z-index:9;background:rgba(35,37,31,.2);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .25s ease,visibility .25s ease}
body.menu-open{position:fixed;width:100%;overflow:hidden}
body.menu-open .menu-backdrop{opacity:1;visibility:visible;pointer-events:auto}
body.menu-closing .menu-backdrop{opacity:0;visibility:hidden;pointer-events:none}
@media(max-width:850px){.header nav{max-height:calc(100dvh - 90px);overflow-y:auto;overscroll-behavior:contain}.header nav a{min-height:44px}}
/* Informational privacy notice; no optional trackers are installed. */
.cookie-notice{position:fixed;bottom:24px;left:var(--gutter);right:var(--gutter);max-width:900px;margin-inline:auto;z-index:8;display:flex;align-items:center;gap:32px;padding:24px;background:var(--paper);border:1px solid var(--line);border-radius:var(--image-radius);box-shadow:0 8px 40px #23251f1a;max-height:calc(100dvh - 48px);overflow:auto}
.cookie-notice[hidden],.privacy-reopen[hidden]{display:none}
.cookie-notice h2{font-size:1.25rem;letter-spacing:-.025em;margin-bottom:8px;line-height:1.3}
.cookie-notice p{font-size:var(--small-size);color:var(--muted);line-height:1.6}
.cookie-actions{display:flex;gap:24px;align-items:center;flex-shrink:0}
.cookie-actions .text-link{max-width:8rem}
.privacy-reopen{border:0;padding:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
@media(max-width:850px){.cookie-notice{align-items:flex-start;flex-direction:column;gap:20px}.cookie-actions{width:100%;justify-content:space-between}.cookie-actions .text-link{max-width:none}}
@media(max-width:560px){.cookie-notice{bottom:16px;padding:20px;max-height:calc(100dvh - 32px)}}

.cookie-notice{flex-wrap:wrap}.cookie-notice>div:first-child{flex:1 1 100%}
.cookie-actions{flex-wrap:wrap;flex-shrink:1;width:100%}
.cookie-actions .button{flex:1 1 190px;background:var(--olive);color:var(--on-dark)}
.cookie-settings{width:100%;border-top:1px solid var(--line);padding-top:24px}
.cookie-settings[hidden]{display:none}.cookie-settings h3{font-size:1.125rem;margin-bottom:16px}
.cookie-settings p+p{margin-top:12px}.cookie-settings .button{margin-top:24px}
.cookie-notice .cookie-actions .privacy-reopen{min-height:44px;padding-inline:8px}

/* Client messages, abbreviated with permission; no platform ratings. */
.reviews{background:var(--surface)}
.review-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px var(--column-gap)}
.review-message{display:flex;flex-direction:column;min-width:0;padding:32px;background:var(--paper);border:1px solid var(--line);border-radius:var(--image-radius)}
.review-message figcaption{display:flex;justify-content:space-between;align-items:baseline;gap:8px 24px;flex-wrap:wrap}
.review-name{font-size:var(--body-size);font-weight:600;color:var(--olive)}
.review-location{font-size:var(--small-size);color:var(--muted)}
.review-message blockquote{margin:24px 0;font-size:var(--body-size);line-height:1.65}
.review-work{margin-top:auto;padding-top:16px;border-top:1px solid var(--line);font-size:var(--small-size);color:var(--muted)}
@media(max-width:850px){.review-grid{grid-template-columns:1fr;gap:24px}}
@media(max-width:560px){.review-message{padding:24px}.review-message figcaption{flex-direction:column;gap:4px}.review-message blockquote{margin-block:20px}}

/* Continuous loop: duplicate cards are hidden from assistive technology. */
.review-carousel{min-width:0}
.review-carousel.is-enhanced{overflow:hidden;touch-action:pan-y pinch-zoom;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.review-carousel.is-enhanced .review-grid{display:flex;gap:var(--column-gap);will-change:transform}
.review-carousel.is-enhanced .review-message{flex:0 0 calc((100% - var(--column-gap))/2)}
.review-clone{display:none}
.review-carousel.is-enhanced .review-clone{display:flex}
@media(max-width:850px){.review-carousel.is-enhanced .review-message{flex-basis:100%}.review-carousel.is-enhanced .review-grid{gap:24px}}
@media(prefers-reduced-motion:reduce){.review-carousel.is-enhanced{overflow:visible;user-select:auto}.review-carousel.is-enhanced .review-grid{display:grid;transform:none!important;will-change:auto}.review-carousel.is-enhanced .review-clone{display:none}}

/* Feather the moving reviews into the section background at both edges. */
.review-carousel.is-enhanced{--review-fade:clamp(16px,3vw,48px);-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--review-fade),#000 calc(100% - var(--review-fade)),transparent);mask-image:linear-gradient(to right,transparent,#000 var(--review-fade),#000 calc(100% - var(--review-fade)),transparent)}
@media(prefers-reduced-motion:reduce){.review-carousel.is-enhanced{-webkit-mask-image:none;mask-image:none}}
