/* ==========================================================================
   余白住建 / YOHAKU RENOVATION — design layer (SILNE WORKS fictional demo)
   Plaster white, sumi charcoal and oak. Straight lines, generous margins,
   drawing-sheet details (hairlines, dimension lines, figure captions).
   No web fonts or third-party assets: system Mincho/Gothic stacks; UI SVGs in /assets.
   ========================================================================== */
:root{
  --plaster:#f5f2ec;--paper:#fbf9f5;--white:#fff;--wash:#ece6dc;--sand:#e2d9cc;
  --ink:#262422;--ink-soft:#46423d;--muted:#6b665f;--line:#dcd4c8;--line-strong:#aaa194;
  --oak:#b48c64;--oak-ink:#7f5d3a;--oak-light:#dcc6a8;--field-line:#8c8376;
  --night:#23211f;--night-line:#3b3733;--on-night:#f3efe8;--on-night-muted:#b2aba1;
  --focus:#2c5d91;--focus-on-night:#9cc4f0;--error:#a12a2a;--error-wash:#fbf1ef;
  --serif:"Hiragino Mincho ProN","Hiragino Mincho Pro","Yu Mincho","YuMincho","BIZ UDPMincho","Noto Serif JP","Noto Serif CJK JP",serif;
  --sans:"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic Medium","YuGothic","Noto Sans JP","Noto Sans CJK JP",Meiryo,sans-serif;
  --latin:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
  --max:1240px;--gutter:clamp(20px,5.2vw,80px);--pad:max(var(--gutter),calc((100% - var(--max)) / 2));--pad-wide:max(var(--gutter),calc((100% - 1440px) / 2));
  --s-xl:clamp(96px,13vw,184px);--s-l:clamp(72px,9vw,136px);--s-m:clamp(40px,5vw,72px);
  --header-h:76px;--curtain:var(--plaster);
  --ease:cubic-bezier(.22,.61,.36,1);--ease-out:cubic-bezier(.16,1,.3,1);
  --arrow:url("/renovation/assets/arrow.svg");
  --grain:url("/renovation/assets/grain.svg");
  color-scheme:light;
}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-padding-top:calc(var(--header-h) + 20px)}
body{margin:0;background:var(--plaster);color:var(--ink);font:400 16px/1.95 var(--sans);letter-spacing:.04em;overflow-x:clip}
h1,h2,h3{font-family:var(--serif);font-weight:500;font-feature-settings:"palt";letter-spacing:.08em;margin:0 0 .8em;word-break:auto-phrase;text-wrap:balance}
h1{font-size:clamp(30px,4.4vw,60px);line-height:1.5}
h2{font-size:clamp(24px,2.9vw,40px);line-height:1.6}
h3{font-size:clamp(18px,1.55vw,22px);line-height:1.65}
p{margin:0 0 1.4em;text-wrap:pretty}
.lead,.hero__lead,.card-theme,.consult__body p{word-break:auto-phrase}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.4em}
img{display:block;max-width:100%;height:auto}
button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit}
button,a,input,select,textarea,summary{touch-action:manipulation}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
[hidden]{display:none!important}
.small,small{font-size:12.5px;line-height:1.8;color:var(--muted)}
.measure{max-width:36em}
.note{font-size:13px;color:var(--muted)}
.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.skip{position:absolute;top:-100px;left:12px;z-index:100;background:var(--white);padding:12px 16px}
.skip:focus{top:8px}

/* ---------- labels ---------- */
.eyebrow{display:flex;align-items:center;gap:14px;margin:0 0 24px;font:500 11px/1.6 var(--sans);letter-spacing:.3em;text-transform:uppercase;color:var(--muted)}
.eyebrow::before{content:"";flex:0 0 28px;height:1px;background:currentColor}
.section-label{display:flex;align-items:center;gap:14px;margin:0 0 28px;font:500 11px/1 var(--sans);letter-spacing:.3em;color:var(--muted)}
.section-label__num{font:italic 400 16px/1 var(--latin);letter-spacing:.04em;color:var(--oak-ink)}
.section-label::after{content:"";flex:0 0 40px;height:1px;background:var(--line-strong)}

/* ---------- actions ---------- */
.button,.nav-cta{position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:18px;min-height:58px;padding:0 30px;background:var(--ink);color:var(--plaster);border:1px solid var(--ink);border-radius:0;font:600 14px/1.4 var(--sans);letter-spacing:.14em;text-decoration:none;cursor:pointer;transition-property:transform,border-color,color;transition-duration:.2s,.4s,.4s;transition-timing-function:var(--ease)}
.button::before,.nav-cta::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--oak-ink);transform:scaleX(0);transform-origin:right;transition:transform .55s var(--ease-out)}
.button::after{content:"";flex:0 0 26px;height:8px;background:currentColor;-webkit-mask:var(--arrow) center/contain no-repeat;mask:var(--arrow) center/contain no-repeat;transition:transform .45s var(--ease-out)}
.button:hover::before,.nav-cta:hover::before{transform:scaleX(1);transform-origin:left}
.button:hover{border-color:var(--oak-ink)}
.button:hover::after{transform:translateX(5px)}
.button:active,.nav-cta:active{transform:scale(.98)}
.button--light{background:var(--plaster);color:var(--ink);border-color:var(--plaster)}
.button--light::before{background:var(--oak-light)}
.button--light:hover{border-color:var(--oak-light)}
.secondary{background:transparent;color:var(--ink);border-color:var(--ink)}
.secondary::before{background:var(--wash)}
.secondary:hover{border-color:var(--ink)}
.secondary::after{display:none}
.text-link{position:relative;display:inline-flex;align-items:center;gap:16px;padding:10px 0;font:600 14px/1.6 var(--sans);letter-spacing:.12em;text-decoration:none}
.text-link::before{content:"";position:absolute;left:0;right:50px;bottom:6px;height:1px;background:currentColor;transform-origin:left;transition:transform .5s var(--ease-out)}
.text-link::after{content:"";flex:0 0 34px;height:8px;background:currentColor;-webkit-mask:var(--arrow) center/contain no-repeat;mask:var(--arrow) center/contain no-repeat;transition:transform .5s var(--ease-out)}
a.text-link:hover::after,.card-link:hover .text-link::after{transform:translateX(6px)}
a.text-link:hover::before{transform:scaleX(.4)}

/* ---------- demo notice & header ---------- */
.demo-notice{position:relative;z-index:60;padding:9px var(--gutter);background:var(--night);color:var(--on-night);font-size:11.5px;line-height:1.6;letter-spacing:.06em;text-align:center}
.site-header{position:sticky;top:0;z-index:50;background:rgba(245,242,236,.93);border-bottom:1px solid rgba(170,161,148,.35);view-transition-name:site-header}
@supports (backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)){.site-header{background:rgba(245,242,236,.82);-webkit-backdrop-filter:saturate(1.3) blur(16px);backdrop-filter:saturate(1.3) blur(16px)}}
.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:32px;height:var(--header-h);padding-inline:var(--pad-wide)}
.brand{display:inline-flex;flex-direction:column;gap:7px;flex-shrink:0;line-height:1;text-decoration:none}
.brand strong{font:500 22px/1 var(--serif);letter-spacing:.34em}
.brand span{font:500 8.5px/1 var(--sans);letter-spacing:.36em}
#site-nav{display:flex;align-items:center;gap:clamp(18px,2.1vw,34px);font-size:13px;letter-spacing:.08em}
#site-nav a:not(.nav-cta){position:relative;padding:8px 0;text-decoration:none}
#site-nav a:not(.nav-cta)::after{content:"";position:absolute;left:0;right:.08em;bottom:2px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease-out)}
#site-nav a:not(.nav-cta):hover::after,#site-nav a[aria-current]::after{transform:scaleX(1);transform-origin:left}
.nav-num{display:none}
.nav-cta{min-height:44px;padding:0 22px;font-size:13px;margin-left:clamp(0px,1vw,12px)}
.menu-toggle{display:none}
.menu-toggle__label{white-space:nowrap}

/* ---------- media ---------- */
.media{position:relative;margin:0}
.media__frame{position:relative;overflow:hidden;aspect-ratio:var(--ratio,16 / 9);background:var(--sand)}
.media__frame img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease-out)}
.media__frame::after{content:"";position:absolute;inset:0;outline:1px solid rgba(0,0,0,.07);outline-offset:-1px;pointer-events:none}
.media__tag{position:absolute;left:12px;bottom:12px;z-index:1;padding:6px 9px;background:rgba(245,242,236,.8);color:#57524c;font:500 9.5px/1 var(--sans);letter-spacing:.26em;text-transform:uppercase}
.media__tag--note{letter-spacing:.12em;text-transform:none}
.media figcaption{display:flex;gap:12px;margin-top:14px;font-size:12px;line-height:1.7;letter-spacing:.08em;color:var(--muted)}
.wide-media{padding-inline:var(--pad-wide)}

/* ---------- layout ---------- */
main>section{padding:var(--s-l) var(--pad)}
.tone-wash{--curtain:var(--wash);background:var(--wash)}
.section-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:4px 40px;margin-bottom:clamp(32px,4vw,56px)}
.section-head .section-label{grid-column:1 / -1}
.section-head h2{margin:0}
.section-head .text-link{justify-self:end}
.page-intro{padding:clamp(64px,9vw,136px) var(--pad) clamp(48px,6vw,88px)}
.page-intro h1{max-width:16em;margin-bottom:28px}
.page-intro .lead{max-width:36em;margin:0;color:var(--ink-soft);font-size:clamp(15px,1.15vw,17px);line-height:2.05}
.page-intro::after{content:"";display:block;height:9px;margin-top:clamp(48px,6vw,80px);border-inline:1px solid var(--line-strong);background:linear-gradient(var(--line-strong),var(--line-strong)) center / 100% 1px no-repeat}
.breadcrumb{display:flex;flex-wrap:wrap;gap:10px;padding:28px var(--pad) 0;font-size:12.5px;letter-spacing:.08em;color:var(--muted)}
.breadcrumb a{display:inline-block;min-height:24px;color:var(--ink)}
.breadcrumb+.page-intro{padding-top:clamp(40px,6vw,96px)}
main>.page-intro+section{padding-top:0}

/* ---------- home: hero ---------- */
.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.12fr);grid-template-areas:"text visual" "index index";column-gap:clamp(32px,5vw,96px);padding:clamp(28px,4vw,56px) 0 0 var(--pad)}
.hero__text{grid-area:text;align-self:center;max-width:620px;padding:40px 0 72px}
.hero__title{font-size:clamp(34px,4.5vw,68px);line-height:1.5;letter-spacing:.1em;margin-bottom:36px}
.hero__title .line{display:block;overflow:hidden;padding-bottom:.04em}
.hero__title .line>span{display:inline-block}
.hero__lead{color:var(--ink-soft);font-size:clamp(15px,1.15vw,17px);line-height:2.15;margin-bottom:44px}
.hero__actions{display:flex;flex-wrap:wrap;align-items:center;gap:18px 36px}
.hero__note{margin:36px 0 0}
.hero__visual{grid-area:visual;position:relative}
.hero__media .media__frame{height:min(calc(100svh - 200px),880px);min-height:520px;aspect-ratio:auto}
.hero__tate{position:absolute;top:56px;left:-1px;z-index:3;margin:0;padding:26px 15px;background:var(--plaster);writing-mode:vertical-rl;font:500 15px/1 var(--serif);letter-spacing:.55em}
.hero__index{grid-area:index;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:clamp(40px,5vw,72px) var(--pad) 0 0;border-top:1px solid var(--line-strong)}
.hero__index a{display:flex;align-items:baseline;gap:16px;padding:24px 24px 24px 0;font:500 16px/1.5 var(--serif);letter-spacing:.12em;text-decoration:none;transition:color .3s}
.hero__index a+a{padding-left:24px;border-left:1px solid var(--line)}
.hero__index span{font:italic 14px/1 var(--latin);color:var(--oak-ink)}
.hero__index a::after{content:"";margin-left:auto;flex:0 0 26px;height:8px;background:currentColor;-webkit-mask:var(--arrow) center/contain no-repeat;mask:var(--arrow) center/contain no-repeat;opacity:.45;transition:transform .5s var(--ease-out),opacity .3s}
.hero__index a:hover::after{transform:translateX(5px);opacity:1}
.hero__index a:hover{color:var(--oak-ink)}

/* ---------- home: approach / categories / flow ---------- */
.approach{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,6fr) minmax(0,3fr);gap:clamp(24px,4vw,64px);align-items:start;padding-block:var(--s-xl)}
.approach__body h2{font-size:clamp(26px,3.2vw,46px);margin-bottom:36px}
.approach__words{justify-self:end;display:flex;flex-direction:column;gap:0;margin:0;padding:0;list-style:none;writing-mode:vertical-rl;font:500 clamp(17px,1.5vw,21px)/1.6 var(--serif);letter-spacing:.45em}
.approach__words li{padding:0 18px}
.approach__words li+li{border-right:1px solid var(--line-strong)}
.stories{padding-top:0}
.cards{display:grid;gap:clamp(40px,5vw,72px) clamp(28px,4vw,72px)}
.cards--feature{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
.cards--feature .project-card:first-child{grid-row:span 2}
.cards--feature .project-card:first-child .card-link{display:flex;flex-direction:column;height:100%}
.cards--feature .project-card:first-child .media{flex:1;display:flex;flex-direction:column}
.cards--feature .project-card:first-child .media__frame{flex:1;aspect-ratio:auto;min-height:380px}
.cards--feature .project-card:first-child h3{font-size:clamp(21px,2.1vw,30px)}
.cards--pair{grid-template-columns:repeat(2,minmax(0,1fr))}
.card-link{display:block;color:inherit;text-decoration:none}
.card-body{padding-top:24px}
.card-meta{display:flex;align-items:baseline;gap:14px;margin:0 0 10px;font-size:12px;letter-spacing:.14em;color:var(--muted)}
.card-num{font:italic 17px/1 var(--latin);color:var(--oak-ink)}
.project-card h3{font-size:clamp(19px,1.7vw,24px);margin-bottom:6px}
.card-theme{margin-bottom:10px;color:var(--ink-soft);font-size:14.5px}
.cards--list{grid-template-columns:minmax(0,1fr);gap:clamp(72px,9vw,136px)}
.cards--list .card-link{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);align-items:end;gap:clamp(28px,5vw,80px)}
.cards--list .project-card:nth-child(even) .card-link{grid-template-columns:minmax(0,4fr) minmax(0,7fr)}
.cards--list .project-card:nth-child(even) .card-body{order:-1}
.cards--list .card-body{padding:0 0 8px}
.cards--list .card-meta{flex-direction:column;align-items:flex-start;gap:18px}
.cards--list .card-num{font-size:clamp(52px,6vw,92px)}
.cards--list h3{font-size:clamp(22px,2.3vw,32px)}
.what-we-do{padding-block:var(--s-xl) var(--s-l)}
.category-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 0 40px;padding:0;list-style:none;border-top:1px solid var(--line-strong)}
.category-list li{padding:36px clamp(20px,3vw,44px) 28px 0}
.category-list li+li{padding-left:clamp(20px,3vw,44px);border-left:1px solid var(--line-strong)}
.category-list__num{display:block;margin-bottom:28px;font:italic 400 clamp(40px,4vw,58px)/1 var(--latin);color:var(--oak-ink)}
.category-list p{margin:0;color:var(--ink-soft)}
.flow{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin:0;padding:0;list-style:none}
.flow::before{content:"";position:absolute;top:5px;left:0;right:0;height:1px;background:var(--line-strong)}
.flow li{position:relative;padding:40px 16px 0 0;font:500 clamp(15px,1.3vw,18px)/1.6 var(--serif);letter-spacing:.1em}
.flow li::before{content:"";position:absolute;top:0;left:0;width:11px;height:11px;background:var(--plaster);border:1px solid var(--ink)}
.flow li:last-child::before{background:var(--ink)}
.flow li span{display:block;margin-bottom:8px;font:italic 14px/1 var(--latin);color:var(--oak-ink)}

/* ---------- consultation CTA ---------- */
.consult{position:relative;overflow:hidden;background:var(--night);color:var(--on-night)}
.consult::before,.site-footer::before{content:"";position:absolute;inset:0;background:var(--grain);opacity:.06;pointer-events:none}
.consult__inner{position:relative;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:end;gap:40px clamp(40px,7vw,120px)}
.consult h2{margin:0;font-size:clamp(28px,3.6vw,52px);line-height:1.55}
.consult .eyebrow{color:var(--on-night-muted)}
.consult__body p{color:var(--on-night)}
.consult__body .small{margin:20px 0 0;color:var(--on-night-muted)}
.consult :focus-visible,.site-footer :focus-visible{outline-color:var(--focus-on-night)}

/* ---------- footer ---------- */
.site-footer{position:relative;overflow:hidden;background:var(--night);color:var(--on-night-muted);border-top:1px solid var(--night-line);font-size:12.5px;line-height:1.9}
.site-footer__inner{position:relative;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr) minmax(0,1.4fr);gap:40px clamp(32px,5vw,80px);padding:clamp(64px,7vw,104px) var(--pad) 32px}
.site-footer .brand{color:var(--on-night);margin-bottom:24px}
.site-footer__brand p{font:500 15px/1.8 var(--serif);letter-spacing:.12em;color:var(--on-night)}
.site-footer__nav{display:grid;align-content:start;gap:12px}
.site-footer__nav a{width:fit-content;min-height:24px;color:var(--on-night);text-decoration:none;letter-spacing:.08em}
.site-footer__nav a:hover{text-decoration:underline}
.site-footer__meta p{margin-bottom:10px}
.site-footer__meta span{display:block;margin-top:20px;letter-spacing:.14em}
.site-footer__mark{position:relative;margin:0;padding:0 var(--pad-wide);font:400 clamp(72px,19vw,300px)/.78 var(--latin);letter-spacing:.08em;white-space:nowrap;color:transparent;-webkit-text-stroke:1px rgba(243,239,232,.16);transform:translateY(10%);user-select:none}

/* ---------- about ---------- */
.values{padding-bottom:var(--s-m)}
.three-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(28px,4vw,64px);margin-top:40px}
.three-cols article{padding-top:28px;border-top:1px solid var(--ink)}
.value-num{display:block;margin-bottom:24px;font:italic 15px/1 var(--latin);color:var(--oak-ink)}
.three-cols p{margin:0;color:var(--ink-soft)}
.company{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:0 clamp(32px,6vw,96px)}
.company .section-label,.company h2{grid-column:1}
.company .facts{grid-column:2;grid-row:1 / span 3;margin:0}
.company .note{grid-column:2}
/* ---------- home: about this demo (SILNE WORKS note) ---------- */
.about-demo{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:32px clamp(32px,5vw,96px);align-items:start}
.about-demo h2{margin-bottom:28px}
.about-demo__head p:not(.eyebrow){color:var(--ink-soft)}
.about-demo .about-demo__list{margin:0}
.about-demo__offer{margin:28px 0 0;padding-left:18px;border-left:1px solid var(--oak);color:var(--ink)}
.facts,.confirm-data{display:grid;grid-template-columns:minmax(120px,220px) minmax(0,1fr);margin:32px 0;border:1px solid var(--ink);background:var(--paper)}
.facts dt,.facts dd,.confirm-data dt,.confirm-data dd{margin:0;padding:18px 24px;border-bottom:1px solid var(--line)}
.facts dt,.confirm-data dt{border-right:1px solid var(--line);background:#f3efe8;font-size:12.5px;letter-spacing:.14em;color:var(--muted)}
.facts dt:last-of-type,.facts dd:last-of-type,.confirm-data dt:last-of-type,.confirm-data dd:last-of-type{border-bottom:0}

/* ---------- services ---------- */
.service-row{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:clamp(32px,6vw,96px)}
.service-row+.service-row{padding-top:0}
section.service-row:nth-of-type(even){grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
section.service-row:nth-of-type(even) .service-row__text{order:2}
.service-row__num{margin:0 0 16px;font:italic 400 clamp(56px,7vw,104px)/1 var(--latin);color:var(--oak-ink)}
.service-row h3{margin:32px 0 8px;font-size:15px;font-family:var(--sans);font-weight:600;letter-spacing:.14em}
.wishes{margin:0 0 28px;padding:0;list-style:none;border-top:1px solid var(--line)}
.wishes li{position:relative;padding:12px 0 12px 26px;border-bottom:1px solid var(--line);font-size:15px}
.wishes li::before{content:"";position:absolute;top:50%;left:0;width:12px;height:1px;background:var(--oak-ink)}

/* ---------- projects ---------- */
.project-index{padding-top:0}
.filter-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin-bottom:clamp(48px,6vw,96px);padding-bottom:20px;border-bottom:1px solid var(--line)}
.filters{display:flex;flex-wrap:wrap;gap:8px}
.filters button{min-height:44px;padding:0 20px;border:1px solid var(--field-line);border-radius:0;background:transparent;color:var(--ink);font-size:13px;font-weight:500;letter-spacing:.1em;transition-property:background-color,color,border-color,transform;transition-duration:.3s,.3s,.3s,.2s}
.filters button:hover{border-color:var(--ink)}
.filters button:active{transform:scale(.97)}
.filters button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--plaster)}
#filter-status{margin:0;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.project-detail{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:0 clamp(32px,6vw,96px)}
.project-detail__facts{position:sticky;top:calc(var(--header-h) + 32px);align-self:start}
.project-detail__facts .facts{grid-template-columns:96px minmax(0,1fr);margin-top:16px}
.project-detail__facts .facts dt,.project-detail__facts .facts dd{padding:16px 18px}
.story article{display:grid;grid-template-columns:64px minmax(0,1fr);padding:36px 0 20px;border-top:1px solid var(--line)}
.story article:first-child{padding-top:0;border-top:0}
.story__num{grid-row:span 2;margin:0;font:italic 26px/1.5 var(--latin);color:var(--oak-ink)}
.story h2{font-size:clamp(21px,2.1vw,29px);margin-bottom:14px}
.story article p:last-child{color:var(--ink-soft)}
.gallery{grid-column:1 / -1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,3vw,48px);margin-top:clamp(40px,6vw,96px)}
.gallery .media:nth-child(2){margin-top:clamp(40px,8vw,120px)}
.more-stories h2{margin-bottom:40px}

/* ---------- process & FAQ ---------- */
.process{padding-top:0}
.steps{margin:0;padding:0;list-style:none;border-top:1px solid var(--ink)}
.steps li{display:grid;grid-template-columns:minmax(80px,2fr) minmax(0,10fr);gap:24px;padding:clamp(28px,4vw,48px) 0;border-bottom:1px solid var(--line)}
.steps__num{font:italic 400 clamp(40px,5vw,72px)/1 var(--latin);color:var(--oak-ink)}
.steps li>div{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:8px 32px;align-items:baseline}
.steps h2{margin:0;font-size:clamp(20px,2vw,28px)}
.steps p{margin:0;color:var(--ink-soft)}
.faq{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);grid-template-rows:auto 1fr;align-items:start;gap:0 clamp(32px,6vw,96px)}
.faq .section-label,.faq>h2{grid-column:1}
.faq__list{grid-column:2;grid-row:1 / span 2;border-top:1px solid var(--ink)}
details{border-bottom:1px solid var(--line)}
summary{display:flex;justify-content:space-between;gap:24px;padding:26px 0;list-style:none;cursor:pointer;font:500 clamp(16px,1.4vw,18px)/1.7 var(--serif);letter-spacing:.06em;transition:color .3s}
summary::-webkit-details-marker{display:none}
summary::after{content:"";flex:0 0 14px;height:14px;margin-top:.5em;background:linear-gradient(currentColor,currentColor) center / 14px 1px no-repeat,linear-gradient(currentColor,currentColor) center / 1px 14px no-repeat;transition:transform .45s var(--ease-out)}
summary:hover{color:var(--oak-ink)}
details[open] summary::after{transform:rotate(45deg)}
details p{max-width:40em;margin:0;padding:0 0 28px;color:var(--ink-soft)}

/* ---------- contact demo ---------- */
.form-section{padding-top:0;padding-inline:max(var(--gutter),calc((100% - 760px) / 2))}
.form-notice{padding:22px 26px;background:var(--paper);border:1px solid var(--line);border-left:3px solid var(--oak-ink)}
.form-notice p{margin:8px 0 0;font-size:14px;color:var(--ink-soft)}
.form-progress{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:44px 0 56px;padding:0;list-style:none}
.form-progress li{display:flex;align-items:center;gap:12px;padding:14px 8px 0 0;border-top:2px solid var(--line);font-size:13.5px;letter-spacing:.1em;color:var(--muted);transition:color .3s,border-color .3s}
.form-progress__num{display:inline-grid;place-items:center;flex:none;width:28px;height:28px;border:1px solid currentColor;font:italic 14px/1 var(--latin);transition:background-color .3s,color .3s}
.form-progress [aria-current]{border-top-color:var(--ink);color:var(--ink);font-weight:600}
.form-progress [aria-current] .form-progress__num{background:var(--ink);border-color:var(--ink);color:var(--plaster)}
#form-app>h2{font-size:clamp(22px,2.4vw,30px);margin-bottom:20px}
#form-app>h2:focus{outline:none}
#form-app>h2:focus-visible{outline:2px solid var(--focus)}
#form-app form>p{font-size:13.5px;color:var(--muted)}
.field{display:flex;flex-direction:column;gap:10px;margin:0 0 30px}
label{font-size:14.5px;font-weight:600;letter-spacing:.08em}
label>span{display:inline-block;margin-left:10px;padding:3px 8px;background:var(--ink);color:var(--plaster);font-size:10.5px;line-height:1.3;letter-spacing:.14em;vertical-align:2px}
input,select,textarea{width:100%;min-height:54px;padding:14px 16px;border:1px solid var(--field-line);border-radius:0;background:var(--white);color:var(--ink);font-size:16px;line-height:1.6;letter-spacing:.04em;-webkit-appearance:none;appearance:none;transition:border-color .25s,background-color .25s}
input:hover,select:hover,textarea:hover{border-color:var(--ink-soft)}
input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--ink);outline-offset:2px}
select{padding-right:48px;background:var(--white) url("/renovation/assets/chevron.svg") right 18px center / 12px 8px no-repeat}
textarea{resize:vertical;min-height:180px}
.field small{font-size:12.5px}
.check{display:flex;align-items:flex-start;gap:14px;padding:18px 20px;border:1px solid var(--line);background:var(--paper);font-weight:500;line-height:1.8;cursor:pointer}
input[type=checkbox]{flex:none;width:24px;height:24px;min-height:0;margin:3px 0 0;padding:0;-webkit-appearance:auto;appearance:auto;accent-color:var(--ink)}
.field-error{display:flex;align-items:center;gap:8px;color:var(--error);font-size:13.5px;font-weight:600}
.field-error::before{content:"";flex:none;width:6px;height:6px;background:currentColor}
input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--error);background-color:var(--error-wash)}
.check:has([aria-invalid=true]){border-color:var(--error)}
.error-summary{margin-bottom:32px;padding:22px 26px;border:1px solid var(--error);border-left-width:4px;background:var(--error-wash)}
.error-summary:focus{outline:2px solid var(--error);outline-offset:3px}
.error-summary h3{margin-bottom:8px;font:600 16px/1.6 var(--sans);letter-spacing:.06em;color:var(--error)}
.error-summary ul{margin:0;padding-left:1.2em}
.error-summary a{color:var(--error)}
.actions{display:flex;flex-wrap:wrap;gap:16px;margin-top:40px}
.confirm-data dd{white-space:pre-wrap;overflow-wrap:anywhere}
.not-found{padding:0 var(--pad) var(--s-l)}

/* ---------- home: hero motion graphic (src/hero3d.mjs) ---------- */
.hero-3d__gl,.hero-3d__still,.hero-3d__sketch,.hero-3d__hud{display:none}
.hero-3d.is-active .media__frame{background:#efebe4}
.hero-3d.is-active .hero-3d__gl,.hero-3d.is-active .hero-3d__still,.hero-3d.is-active .hero-3d__sketch{position:absolute;inset:0;z-index:1;display:block;width:100%;height:100%;transition:opacity .6s var(--ease)}
.hero-3d.is-active .hero-3d__still{opacity:0;pointer-events:none;transition:opacity 1.4s var(--ease)}
.hero-3d.is-active .hero-3d__still.is-on{opacity:1;transition:none}
.hero-3d__sketch.is-light{mix-blend-mode:screen}
.js .hero-3d:not(.is-fallback) .hero__media img{opacity:0}
.hero-3d.is-still:not(.is-ready) .hero__media img{opacity:1}
.hero-3d.is-still:not(.is-ready) canvas{opacity:0}
/* 04 as a rendered still: the image sits under the canvases, which fade away over it */
.js .hero-3d.is-final .hero__media img{opacity:1}
.hero-3d.is-final .hero-3d__gl,.hero-3d.is-final .hero-3d__still,.hero-3d.is-final .hero-3d__sketch{opacity:0;transition:opacity 1.4s var(--ease)}
.hero-3d.is-active .media__tag{display:none}
.hero-3d.is-active .hero-3d__hud{position:absolute;left:12px;bottom:12px;z-index:2;display:block;padding:10px 14px 11px;background:rgba(245,242,236,.86);color:var(--muted);font-size:10.5px;line-height:1.5;letter-spacing:.12em}
.hero-3d__hud ol{display:flex;gap:14px;margin:0;padding:0;list-style:none}
.hero-3d__hud li{transition:color .4s}
.hero-3d__hud b{margin-right:5px;font:italic 400 11px/1 var(--latin);color:var(--oak-ink)}
.hero-3d__hud li.is-active{color:var(--ink);font-weight:600}
.hero-3d__bar{display:block;height:1px;margin-top:8px;background:var(--line)}
.hero-3d__bar i{display:block;height:100%;background:var(--ink);transform:scaleX(0);transform-origin:left}
.hero-3d__note{display:block;margin-top:6px;font-size:9.5px;letter-spacing:.1em}
.hero-3d__control{position:absolute;right:12px;bottom:12px;z-index:3;display:inline-flex;align-items:center;min-height:36px;padding:0 14px;background:rgba(245,242,236,.88);border:1px solid var(--field-line);border-radius:0;color:var(--ink);font-size:11.5px;font-weight:600;letter-spacing:.14em;transition:background-color .3s,transform .2s}
.hero-3d__control:hover{background:var(--plaster)}
.hero-3d__control:active{transform:scale(.97)}
.hero-3d__control[hidden],.hero-3d.is-fallback .hero-3d__control{display:none}
@media (max-width:640px){
  .hero-3d.is-active .hero-3d__hud{left:8px;bottom:8px;padding:7px 10px 8px}
  .hero-3d__hud li:not(.is-active){display:none}
  .hero-3d__note{margin-top:4px;font-size:9px;letter-spacing:.06em}
  .hero-3d__control{right:8px;bottom:8px;min-height:32px;padding:0 10px;font-size:10.5px}
}

/* ---------- cursor follower (src/cursor.mjs) ---------- */
.cursor{position:fixed;left:0;top:0;z-index:300;color:var(--ink);pointer-events:none;opacity:0;transition:opacity .3s}
.cursor.is-visible{opacity:1}
.cursor__frame{position:absolute;left:-15px;top:-15px;width:30px;height:30px;border:1px solid rgba(38,36,34,.5);transition:transform .5s var(--ease-out),scale .2s,background-color .35s,border-color .35s,opacity .3s}
.cursor__frame::before,.cursor__frame::after{content:"";position:absolute;background:currentColor;opacity:0;transition:opacity .3s}
.cursor__frame::before{top:50%;left:-9px;right:-9px;height:1px}
.cursor__frame::after{left:50%;top:-9px;bottom:-9px;width:1px}
.cursor__label{position:absolute;left:0;top:0;transform:translate(-50%,-50%);color:var(--plaster);font:600 11px/1 var(--sans);letter-spacing:.2em;white-space:nowrap;opacity:0;transition:opacity .3s,transform .5s var(--ease-out)}
.cursor.is-dark{color:var(--on-night)}
.cursor.is-dark .cursor__frame{border-color:rgba(243,239,232,.55)}
.cursor.is-link .cursor__frame{transform:scale(1.6);border-color:var(--oak-ink);background:rgba(127,93,58,.08)}
.cursor.is-view .cursor__frame{transform:scale(2.6);background:var(--ink);border-color:var(--ink)}
.cursor.is-view .cursor__label{opacity:1}
.cursor.is-3d .cursor__frame{transform:scale(.7);border-color:transparent}
.cursor.is-3d .cursor__frame::before,.cursor.is-3d .cursor__frame::after{opacity:.75}
.cursor.is-3d .cursor__label{opacity:1;color:var(--ink);font-size:9.5px;transform:translate(10px,10px)}
.cursor.is-text .cursor__frame{transform:scale(.4);opacity:0}
.cursor.is-down .cursor__frame{scale:.86}

/* ---------- motion (progressive, opt-out via prefers-reduced-motion) ---------- */
@keyframes rise{from{opacity:0;transform:translate3d(0,16px,0)}}
@keyframes line-up{from{transform:translate3d(0,105%,0)}}
@keyframes fade{from{opacity:0}}
@media (prefers-reduced-motion:no-preference){
  .hero__eyebrow,.hero__lead,.hero__actions,.hero__note,.hero__tate{animation:rise 1s var(--ease-out) both}
  .hero__title .line>span{animation:line-up 1.1s var(--ease-out) .08s both}
  .hero__title .line+.line>span{animation-delay:.2s}
  .hero__lead{animation-delay:.38s}
  .hero__actions{animation-delay:.48s}
  .hero__note,.hero__tate{animation-delay:.6s}
  .js [data-reveal]:not([data-reveal=media]){opacity:0;transform:translate3d(0,24px,0);transition:opacity .9s var(--ease-out) var(--reveal-delay,0ms),transform 1.1s var(--ease-out) var(--reveal-delay,0ms)}
  .js [data-reveal=media] .media__frame::before{content:"";position:absolute;inset:0;z-index:2;background:var(--curtain);transform-origin:right;transition:transform 1.25s var(--ease-out) var(--reveal-delay,0ms)}
  .js [data-reveal=media] img{transform:scale(1.08);transition:transform 1.9s var(--ease-out) var(--reveal-delay,0ms)}
  .js .is-visible[data-reveal]:not([data-reveal=media]),.js.reveal-all [data-reveal]:not([data-reveal=media]){opacity:1;transform:none}
  .js .is-visible[data-reveal=media] .media__frame::before,.js.reveal-all [data-reveal=media] .media__frame::before{transform:scaleX(0)}
  .js .is-visible[data-reveal=media] img,.js.reveal-all [data-reveal=media] img{transform:none}
  .project-card.is-filtered-in{animation:rise .7s var(--ease-out) both}
  @view-transition{navigation:auto}
  ::view-transition-old(root){animation:.22s var(--ease) both fade reverse}
  ::view-transition-new(root){animation:.5s var(--ease-out) .05s both fade}
}
@media (hover:hover) and (prefers-reduced-motion:no-preference){
  .project-card .card-link:hover .media__frame img{transform:scale(1.04)}
}
@supports (interpolate-size:allow-keywords){
  @media (prefers-reduced-motion:no-preference){
    details{interpolate-size:allow-keywords}
    details::details-content{block-size:0;overflow:hidden;transition:block-size .5s var(--ease-out),content-visibility .5s allow-discrete}
    details[open]::details-content{block-size:auto}
  }
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}

/* ---------- responsive ---------- */
@media (max-width:1080px){
  :root{--header-h:64px}
  .js .menu-toggle{display:inline-flex;align-items:center;gap:12px;min-width:44px;min-height:44px;margin-right:-6px;padding:0 6px 0 12px;background:none;border:0;font-size:12px;font-weight:600;letter-spacing:.16em}
  .menu-toggle__icon{position:relative;width:26px;height:10px}
  .menu-toggle__icon::before,.menu-toggle__icon::after{content:"";position:absolute;left:0;right:0;height:1.5px;background:currentColor;transition:transform .45s var(--ease-out),top .45s var(--ease-out)}
  .menu-toggle__icon::before{top:0}
  .menu-toggle__icon::after{top:8.5px}
  .menu-toggle[aria-expanded=true] .menu-toggle__icon::before{top:4.25px;transform:rotate(30deg)}
  .menu-toggle[aria-expanded=true] .menu-toggle__icon::after{top:4.25px;transform:rotate(-30deg)}
  html:not(.js) .site-header__inner{flex-wrap:wrap;height:auto;padding-block:14px}
  html:not(.js) #site-nav{flex-wrap:wrap;gap:4px 18px}
  .js #site-nav{position:absolute;top:100%;left:0;right:0;display:none;flex-direction:column;align-items:stretch;gap:0;height:calc(100dvh - var(--panel-top,140px));overflow-y:auto;overscroll-behavior:contain;padding:8px var(--gutter) 40px;background:var(--plaster);border-top:1px solid var(--line);opacity:0;transform:translate3d(0,-10px,0);transition:opacity .3s var(--ease),transform .45s var(--ease-out),display .45s allow-discrete}
  .js #site-nav.is-open{display:flex;opacity:1;transform:none}
  .js #site-nav a:not(.nav-cta){display:flex;align-items:baseline;gap:18px;padding:18px 2px;border-bottom:1px solid var(--line);font:500 19px/1.5 var(--serif);letter-spacing:.1em}
  .js #site-nav a:not(.nav-cta)::after{display:none}
  .js #site-nav a[aria-current]{color:var(--oak-ink)}
  .js .nav-num{display:inline;font:italic 13px/1 var(--latin);color:var(--oak-ink)}
  .js .nav-cta{flex:none;min-height:58px;margin:28px 0 0;font-size:14px}
  html.menu-open{overflow:hidden}
}
@media (max-width:1080px) and (prefers-reduced-motion:no-preference){
  @starting-style{.js #site-nav.is-open{opacity:0;transform:translate3d(0,-10px,0)}}
  .js #site-nav.is-open>a{animation:rise .55s var(--ease-out) both}
  .js #site-nav.is-open>a:nth-child(2){animation-delay:.04s}
  .js #site-nav.is-open>a:nth-child(3){animation-delay:.08s}
  .js #site-nav.is-open>a:nth-child(4){animation-delay:.12s}
  .js #site-nav.is-open>a:nth-child(5){animation-delay:.16s}
  .js #site-nav.is-open>a:nth-child(6){animation-delay:.2s}
}
@media (max-width:960px){
  .about-demo{grid-template-columns:minmax(0,1fr)}
  .hero{grid-template-columns:minmax(0,1fr);grid-template-areas:"visual" "text" "index";padding:0}
  .hero__media .media__frame{height:auto;min-height:0;max-height:64svh;aspect-ratio:16 / 10}
  .hero__tate{display:none}
  .hero__text{max-width:none;padding:40px var(--gutter) 8px}
  .hero__index{grid-template-columns:minmax(0,1fr);margin:40px var(--gutter) 0}
  .hero__index a+a{padding-left:0;border-left:0;border-top:1px solid var(--line)}
  .hero__index a{padding:18px 0}
  .approach,.company,.faq,.project-detail{grid-template-columns:minmax(0,1fr)}
  .approach__words{justify-self:start;font-size:17px}
  .company .facts,.company .note,.faq__list{grid-column:1;grid-row:auto}
  .company .facts{margin:8px 0 24px}
  .project-detail__facts{position:static;margin-bottom:48px}
  .story,.gallery{grid-column:1}
  .cards--feature,.cards--list .card-link,.cards--list .project-card:nth-child(even) .card-link{grid-template-columns:minmax(0,1fr)}
  .cards--feature .project-card:first-child{grid-row:auto}
  .cards--feature .project-card:first-child .media__frame{flex:none;aspect-ratio:16 / 9;min-height:0}
  .cards--list .project-card:nth-child(even) .card-body{order:0}
  .cards--list .card-meta{flex-direction:row;align-items:baseline}
  .cards--list .card-num{font-size:40px}
  .service-row,section.service-row:nth-of-type(even){grid-template-columns:minmax(0,1fr)}
  section.service-row:nth-of-type(even) .service-row__text{order:0}
  .service-row .media{order:-1}
  .service-row+.service-row{padding-top:var(--s-m)}
  .consult__inner,.site-footer__inner{grid-template-columns:minmax(0,1fr)}
  .three-cols,.category-list{grid-template-columns:minmax(0,1fr)}
  .category-list li,.category-list li+li{display:grid;grid-template-columns:64px minmax(0,1fr);align-items:baseline;padding:28px 0;border-left:0}
  .category-list li+li{border-top:1px solid var(--line-strong)}
  .category-list__num{grid-row:span 2;margin:0;font-size:36px}
  .category-list h3{margin-bottom:6px}
  .flow{grid-template-columns:minmax(0,1fr)}
  .flow::before{top:6px;bottom:6px;left:5px;right:auto;width:1px;height:auto}
  .flow li{padding:0 0 24px 40px}
  .flow li:last-child{padding-bottom:0}
  .flow li::before{top:.55em}
  .flow li span{display:inline-block;margin:0 14px 0 0}
  .steps li{grid-template-columns:minmax(0,1fr);gap:16px}
  .steps li>div{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:640px){
  body{font-size:15.5px;line-height:1.9}
  .hero__title{font-size:clamp(27px,8.2vw,40px)}
  .hero__actions .button{flex:1 1 100%}
  .wide-media{padding-inline:0}
  .wide-media figcaption{padding-inline:var(--gutter)}
  .section-head{grid-template-columns:minmax(0,1fr)}
  .section-head .text-link{justify-self:start;grid-row:3;margin-top:8px}
  .cards--pair{grid-template-columns:minmax(0,1fr)}
  .gallery{grid-template-columns:minmax(0,1fr)}
  .gallery .media:nth-child(2){margin-top:0}
  .facts,.confirm-data,.project-detail__facts .facts{grid-template-columns:minmax(0,1fr)}
  .facts dt,.confirm-data dt,.project-detail__facts .facts dt{padding:14px 18px 2px;border-right:0;border-bottom:0;background:none}
  .facts dd,.confirm-data dd,.project-detail__facts .facts dd{padding:0 18px 14px}
  #form-app form>.button{width:100%}
  .site-footer__nav{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}
  .site-footer__nav a{padding:8px 0}
  .story article{grid-template-columns:44px minmax(0,1fr)}
  .story__num{font-size:20px}
  .consult .button,.actions .button{width:100%}
  .actions{flex-direction:column}
  .form-progress li{gap:8px;font-size:12px;letter-spacing:.04em}
  .form-progress__num{width:24px;height:24px;font-size:12px}
  .demo-notice{text-align:left;font-size:11px}
  .brand strong{font-size:19px}
  .media__tag{left:8px;bottom:8px;font-size:8.5px}
}
@media (max-width:360px){
  .menu-toggle{gap:8px;padding-left:8px;letter-spacing:.08em}
  .brand strong{font-size:17px;letter-spacing:.28em}
}
