
:root{
  --paper:#FBFAF7;
  --paper-2:#F2EEE3;
  --sumi:#221F19;
  --stone:#857C6D;
  --pine:#31413A;
  --pine-deep:#26332D;
  --hairline:#E5DFD1;
  --maxw:1120px;
}
*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--paper);
  color:var(--sumi);
  font-family:"Zen Kaku Gothic New",-apple-system,"Hiragino Kaku Gothic ProN",
              "Yu Gothic",Meiryo,sans-serif;
  font-size:17px;
  line-height:1.85;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{max-width:100%;display:block;}
a{color:inherit;}

h1,h2,h3,h4,.mincho{
  font-family:"Shippori Mincho","Hiragino Mincho ProN","Yu Mincho",serif;
  font-weight:600;
  letter-spacing:.02em;
}

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px;}

/* ---- skip link ---- */
.skip{position:absolute;left:-999px;top:0;background:var(--sumi);color:var(--paper);
  padding:10px 16px;z-index:200;}
.skip:focus{left:12px;top:12px;}

/* ---- header / nav ---- */
.site-head{position:sticky;top:0;z-index:100;background:rgba(251,250,247,.9);
  backdrop-filter:blur(8px);border-bottom:1px solid var(--hairline);}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;
  gap:24px;min-height:66px;}
.brand{font-family:"Shippori Mincho",serif;font-weight:600;font-size:1.12rem;
  letter-spacing:.06em;text-decoration:none;white-space:nowrap;}
.brand small{display:block;font-size:.62rem;letter-spacing:.34em;color:var(--stone);
  font-family:"Zen Kaku Gothic New",sans-serif;font-weight:500;margin-top:2px;}
nav.main{display:flex;flex-wrap:wrap;gap:22px;align-items:center;}
nav.main a{text-decoration:none;font-size:.9rem;color:var(--sumi);opacity:.72;
  padding:6px 0;position:relative;transition:opacity .2s;}
nav.main a:hover{opacity:1;}
nav.main a[aria-current="page"]{opacity:1;}
nav.main a[aria-current="page"]::after{content:"";position:absolute;left:0;right:0;
  bottom:-2px;height:1px;background:var(--pine);}
.nav-toggle{display:none;}

/* ---- hero ---- */
.hero{position:relative;min-height:78vh;display:flex;align-items:flex-end;
  overflow:hidden;background:var(--pine-deep);}
.hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  opacity:0;animation:fade 1.4s ease .1s forwards;}
.hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(20,26,22,.15)0%,rgba(20,26,22,.62)100%);}
.hero-inner{position:relative;z-index:2;color:#fff;padding:0 28px 8vh;
  max-width:var(--maxw);margin:0 auto;width:100%;}
.hero h1{font-size:clamp(2rem,5.2vw,3.4rem);line-height:1.28;margin:0 0 18px;
  font-weight:600;text-shadow:0 1px 24px rgba(0,0,0,.28);}
.hero p{max-width:34em;font-size:1.02rem;line-height:1.9;margin:0;
  color:rgba(255,255,255,.92);text-shadow:0 1px 16px rgba(0,0,0,.3);}
@keyframes fade{to{opacity:1;}}
@media(prefers-reduced-motion:reduce){.hero img{animation:none;opacity:1;}}

/* ---- generic sections ---- */
section{padding:76px 0;}
.lead{max-width:40em;}
.lead p{margin:0 0 1.5em;line-height:2.0;}
.eyebrow{font-family:"Shippori Mincho",serif;color:var(--pine);font-size:.98rem;
  letter-spacing:.16em;margin:0 0 10px;}
h2.section-title{font-size:clamp(1.5rem,3.2vw,2.05rem);margin:0 0 6px;line-height:1.4;}
.section-sub{color:var(--stone);font-size:.86rem;letter-spacing:.12em;margin:0 0 40px;}

/* ---- home category index ---- */
.cat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2px;
  background:var(--hairline);border:1px solid var(--hairline);}
.cat{position:relative;display:block;text-decoration:none;background:var(--paper);
  overflow:hidden;aspect-ratio:16/10;}
.cat img{width:100%;height:100%;object-fit:cover;transition:transform .8s ease;
  filter:saturate(.96);}
.cat:hover img{transform:scale(1.045);}
.cat span{position:absolute;left:0;bottom:0;z-index:2;color:#fff;
  padding:20px 22px;font-family:"Shippori Mincho",serif;font-size:1.4rem;
  letter-spacing:.08em;text-shadow:0 1px 14px rgba(0,0,0,.5);}
.cat::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(0,0,0,0)45%,rgba(0,0,0,.5)100%);}

/* ---- statement band ---- */
.band{background:var(--paper-2);}
.band .grid2{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;}
.band figure{margin:0;}
.band figure img{aspect-ratio:4/3;object-fit:cover;width:100%;}

/* ---- about timeline ---- */
.about-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);
  gap:64px;}
.person h2{font-size:2rem;margin:0 0 4px;}
.person .romaji{color:var(--stone);letter-spacing:.22em;font-size:.8rem;margin:0 0 28px;}
.timeline{border-top:1px solid var(--hairline);}
.timeline .row{display:grid;grid-template-columns:5.5em 1fr;gap:18px;
  padding:11px 0;border-bottom:1px solid var(--hairline);align-items:baseline;}
.timeline .yr{font-family:"Shippori Mincho",serif;color:var(--pine);font-size:.95rem;}
.timeline .ev{font-size:.95rem;line-height:1.7;}
.cred h3{font-size:1.02rem;letter-spacing:.14em;margin:0 0 14px;color:var(--pine);}
.cred+.cred{margin-top:34px;}
.cred ul{list-style:none;margin:0;padding:0;}
.cred li{padding:7px 0;border-bottom:1px solid var(--hairline);font-size:.92rem;
  display:flex;justify-content:space-between;gap:16px;}
.cred li span:last-child{color:var(--stone);font-size:.84rem;text-align:right;}

/* ---- project list (residential galleries) ---- */
.project{padding:56px 0;border-top:1px solid var(--hairline);}
.project:first-of-type{border-top:none;padding-top:8px;}
.p-head{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;margin:0 0 6px;}
.p-head h3{font-size:1.5rem;margin:0;}
.p-head .p-year{font-family:"Shippori Mincho",serif;color:var(--pine);font-size:1rem;}
.p-meta{display:flex;flex-wrap:wrap;gap:6px 28px;margin:14px 0 26px;
  color:var(--sumi);}
.p-meta div{font-size:.9rem;}
.p-meta dt{display:inline;color:var(--stone);font-size:.78rem;letter-spacing:.08em;
  margin-right:.6em;}
.p-meta dd{display:inline;margin:0;}
.p-note{color:var(--pine);font-size:.86rem;margin:-8px 0 24px;}
.gallery{column-count:3;column-gap:10px;}
.gallery .shot{break-inside:avoid;margin:0 0 14px;}
.gallery .shot a{display:block;overflow:hidden;background:var(--paper-2);line-height:0;}
.gallery .shot img{width:100%;height:auto;transition:transform .7s ease;}
.gallery .shot a:hover img{transform:scale(1.03);}
.gallery figcaption{line-height:1.65;font-size:.82rem;color:var(--stone);padding:7px 2px 0;}
.gallery figcaption:empty{display:none;}
.p-empty{color:var(--stone);font-size:.9rem;padding:4px 0;}

/* ---- institutional two-column rows ---- */
.inst{display:grid;grid-template-columns:1fr;gap:0;}
.inst .row{display:grid;grid-template-columns:1.1fr 1fr;gap:40px;align-items:center;
  padding:40px 0;border-top:1px solid var(--hairline);}
.inst .row:first-child{border-top:none;}
.inst .row.noimg{grid-template-columns:1fr;max-width:46em;}
.inst .txt h3{font-size:1.3rem;margin:0 0 2px;}
.inst .txt .p-year{color:var(--pine);font-family:"Shippori Mincho",serif;
  font-size:.95rem;}
.inst figure{margin:0;overflow:hidden;background:var(--paper-2);aspect-ratio:3/2;}
.inst figure img{width:100%;height:100%;object-fit:cover;}
.inst .m{margin:12px 0 0;color:var(--stone);font-size:.88rem;line-height:1.75;}
.inst .m b{color:var(--sumi);font-weight:400;}

/* ---- contact ---- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start;}
.contact dl{margin:0;}
.contact dt{color:var(--stone);font-size:.78rem;letter-spacing:.14em;margin-top:22px;}
.contact dd{margin:4px 0 0;font-size:1.05rem;}
.contact a{color:var(--pine);text-underline-offset:3px;}
.btn{display:inline-block;margin-top:8px;background:var(--pine);color:#fff;
  text-decoration:none;padding:13px 26px;font-size:.95rem;letter-spacing:.06em;
  transition:background .25s;}
.btn:hover{background:var(--pine-deep);}

/* ---- footer ---- */
.site-foot{background:var(--pine-deep);color:rgba(255,255,255,.82);margin-top:0;
  padding:52px 0 40px;font-size:.86rem;}
.site-foot .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:24px;}
.site-foot .fname{font-family:"Shippori Mincho",serif;color:#fff;font-size:1.05rem;
  letter-spacing:.08em;margin:0 0 8px;}
.site-foot a{color:rgba(255,255,255,.82);}
.site-foot .copy{width:100%;border-top:1px solid rgba(255,255,255,.14);
  margin-top:24px;padding-top:20px;color:rgba(255,255,255,.5);font-size:.76rem;
  letter-spacing:.06em;}

/* ---- responsive ---- */
@media(max-width:820px){
  body{font-size:16px;}
  .about-grid,.contact-grid,.band .grid2{grid-template-columns:1fr;gap:36px;}
  .inst .row{grid-template-columns:1fr;gap:18px;}
  .gallery{column-count:2;}
  nav.main{gap:16px;}
}
@media(max-width:620px){
  .cat-grid{grid-template-columns:1fr;}
  .gallery{column-count:2;}
  section{padding:52px 0;}
  .site-head .wrap{flex-wrap:wrap;min-height:0;padding-top:12px;padding-bottom:12px;}
  nav.main{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;
    padding-bottom:4px;gap:18px;}
  nav.main a{white-space:nowrap;font-size:.86rem;}
}
:focus-visible{outline:2px solid var(--pine);outline-offset:3px;}

.work-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px 24px;}
.work-card{text-decoration:none;color:inherit;display:block;}
.work-thumb{aspect-ratio:4/3;overflow:hidden;background:var(--paper-2);}
.work-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .7s ease;}
.work-card:hover .work-thumb img{transform:scale(1.05);}
.noimg-thumb{width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  color:var(--stone);font-size:.85rem;letter-spacing:.12em;background:var(--paper-2);}
.work-cap{padding:13px 2px 0;}
.work-cap .wname{font-family:"Shippori Mincho",serif;font-size:1.08rem;display:block;
  line-height:1.55;transition:color .2s;}
.work-card:hover .work-cap .wname{color:var(--pine);}
.work-cap .wyear{color:var(--stone);font-size:.8rem;}
.backlink{display:inline-block;margin:0 0 24px;color:var(--pine);text-decoration:none;font-size:.9rem;}
.backlink:hover{text-decoration:underline;}
.prevnext{display:flex;justify-content:space-between;gap:16px;margin-top:60px;
  padding-top:24px;border-top:1px solid var(--hairline);font-size:.9rem;}
.prevnext a{color:var(--pine);text-decoration:none;max-width:46%;}
.prevnext a:hover{text-decoration:underline;}
.prevnext .nx{margin-left:auto;text-align:right;}
@media(max-width:820px){.work-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:520px){.work-grid{grid-template-columns:1fr;}}
