/* ==========================================================================
   Oak Bridge Zone — Shared Stylesheet
   自然と調和する日本のオーク建築とランドスケープデザイン
   ========================================================================== */

:root{
  --oak: #8a5a34;
  --oak-dark: #5c3d25;
  --oak-light: #b98955;
  --forest: #3f5b45;
  --forest-dark: #2a3d2e;
  --stone: #8a8b85;
  --stone-light: #c9c7be;
  --beige: #e9dfcc;
  --cream: #f8f4ea;
  --ink: #2b2420;
  --ink-soft: #57504a;
  --white-glass: rgba(255,255,255,0.55);
  --shadow-soft: 0 20px 60px -20px rgba(43,36,32,0.35);
  --ease: cubic-bezier(.22,1,.36,1);
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:'Zen Kaku Gothic New', sans-serif;
  font-weight:400;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; display:block; }
a{ text-decoration:none; color:inherit; }
::selection{ background:var(--oak-light); color:#fff; }

.font-en{ font-family:'Italiana', serif; letter-spacing:.03em; }
.font-jp{ font-family:'Shippori Mincho', serif; }

h1,h2,h3,h4{ font-family:'Italiana', serif; font-weight:400; letter-spacing:.02em; margin:0; color:var(--ink); }
.eyebrow{
  font-family:'Shippori Mincho', serif;
  color:var(--oak);
  font-size:.95rem;
  letter-spacing:.15em;
  display:flex; align-items:center; gap:.6rem;
}
.eyebrow::before{
  content:''; width:28px; height:1px; background:var(--oak);
}

/* texture background */
.texture-bg{
  background-image:
    radial-gradient(circle at 15% 20%, rgba(138,90,52,0.05), transparent 40%),
    radial-gradient(circle at 85% 80%, rgba(63,91,69,0.06), transparent 45%);
}
.wood-grain{
  background:
    linear-gradient(180deg, rgba(248,244,234,.94), rgba(248,244,234,.98)),
    repeating-linear-gradient(90deg, rgba(138,90,52,0.05) 0px, rgba(138,90,52,0.02) 2px, transparent 3px, transparent 14px);
}

/* ==================== FLOATING LEAVES ==================== */
.leaves-container{
  position:fixed; inset:0; pointer-events:none; z-index:5; overflow:hidden;
}
.leaf{
  position:absolute; top:-40px; opacity:.75; will-change:transform;
  animation-name:leafFall; animation-timing-function:linear; animation-iteration-count:infinite;
}
.leaf svg{ width:100%; height:100%; color:var(--oak-light); filter:drop-shadow(0 4px 6px rgba(0,0,0,.08)); }
@keyframes leafFall{
  0%{ transform:translate(0,0) rotate(0deg); }
  50%{ transform:translate(40px,50vh) rotate(180deg); }
  100%{ transform:translate(-20px,110vh) rotate(360deg); }
}

/* ==================== SUNLIGHT / MIST ==================== */
.sunlight{
  position:absolute; inset:0; pointer-events:none; overflow:hidden;
}
.sunlight::before{
  content:''; position:absolute; top:-25%; left:50%; width:140%; height:140%;
  transform:translateX(-50%);
  background:conic-gradient(from 200deg at 50% 0%, rgba(255,247,224,.55), rgba(255,247,224,0) 32%);
  animation:sunSway 14s ease-in-out infinite alternate;
}
@keyframes sunSway{
  from{ transform:translateX(-53%) rotate(-2deg); }
  to{ transform:translateX(-47%) rotate(2deg); }
}
.mist{
  position:absolute; left:0; right:0; bottom:0; height:45%;
  background:linear-gradient(180deg, rgba(248,244,234,0) 0%, rgba(248,244,234,.9) 100%);
  pointer-events:none;
}

/* ==================== HEADER / NAV ==================== */
.site-header{
  position:sticky; top:0; z-index:50; width:100%;
  padding:0; transition:background .5s var(--ease), box-shadow .5s var(--ease), padding .4s var(--ease);
  background:transparent;
}
.site-header.scrolled{
  background:rgba(248,244,234,.78);
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  box-shadow:0 8px 30px -12px rgba(43,36,32,.18);
}
.nav-inner{
  max-width:1400px; margin:0 auto; padding:1.1rem 1.5rem;
  display:flex; align-items:center; justify-content:space-between; gap:1.5rem;
}
.logo-lockup{ display:flex; align-items:center; gap:.7rem; flex-shrink:0; }
.logo-mark{ width:38px; height:38px; color:var(--oak-dark); }
.site-header.scrolled .logo-mark{ color:var(--oak-dark); }
.logo-text{ display:flex; flex-direction:column; line-height:1.1; }
.logo-en{ font-family:'Italiana', serif; font-size:1.05rem; letter-spacing:.12em; color:var(--ink); }
.logo-jp{ font-family:'Shippori Mincho', serif; font-size:.68rem; color:var(--oak); letter-spacing:.08em; }

.main-nav{ display:flex; align-items:center; gap:1.6rem; }
.nav-link{
  font-size:.86rem; letter-spacing:.03em; color:var(--ink); position:relative;
  display:flex; flex-direction:column; align-items:center; gap:.05rem; padding:.3rem 0;
  transition:color .3s var(--ease);
}
.nav-link small{ font-family:'Shippori Mincho', serif; font-size:.66rem; color:var(--ink-soft); }
.nav-link::after{
  content:''; position:absolute; bottom:-2px; left:0; width:0%; height:1px; background:var(--oak);
  transition:width .35s var(--ease);
}
.nav-link:hover::after, .nav-link.active::after{ width:100%; }
.nav-link:hover{ color:var(--oak-dark); }
.nav-cta{
  background:var(--oak); color:#fff !important; padding:.55rem 1.1rem; border-radius:100px;
  box-shadow:0 8px 20px -8px rgba(138,90,52,.6);
}
.nav-cta small{ color:rgba(255,255,255,.8); }
.nav-cta::after{ display:none; }
.nav-cta:hover{ background:var(--oak-dark); color:#fff; }

.nav-toggle{
  display:none; flex-direction:column; gap:5px; background:none; border:none; cursor:pointer; padding:6px; z-index:60;
}
.nav-toggle span{ width:24px; height:2px; background:var(--ink); border-radius:2px; transition:.35s var(--ease); }
.nav-toggle.open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.nav-toggle.open span:nth-child(2){ opacity:0; }
.nav-toggle.open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

@media (max-width: 980px){
  .main-nav{
    position:fixed; inset:0 0 0 auto; width:min(78vw,340px); height:100vh;
    background:rgba(248,244,234,.98); backdrop-filter:blur(16px);
    flex-direction:column; align-items:flex-start; justify-content:center; gap:1.6rem;
    padding:2rem 2.4rem; transform:translateX(100%); transition:transform .5s var(--ease);
    box-shadow:-20px 0 50px rgba(0,0,0,.12);
  }
  .main-nav.open{ transform:translateX(0); }
  .nav-link{ align-items:flex-start; font-size:1.05rem; }
  .nav-toggle{ display:flex; }
  .nav-cta{ margin-top:.5rem; }
}

/* ==================== BUTTONS ==================== */
.btn{
  display:inline-flex; align-items:center; gap:.6rem; padding:.9rem 1.9rem; border-radius:100px;
  font-size:.9rem; letter-spacing:.05em; cursor:pointer; border:1px solid transparent;
  transition:transform .4s var(--ease), box-shadow .4s var(--ease), background .4s var(--ease), color .4s var(--ease);
  white-space:nowrap;
}
.btn-primary{ background:var(--oak); color:#fff; box-shadow:0 10px 26px -10px rgba(138,90,52,.65); }
.btn-primary:hover{ background:var(--oak-dark); transform:translateY(-3px); box-shadow:0 16px 30px -10px rgba(92,61,37,.6); }
.btn-outline{ background:rgba(255,255,255,.35); color:var(--ink); border-color:rgba(43,36,32,.25); backdrop-filter:blur(6px); }
.btn-outline:hover{ background:#fff; border-color:var(--forest); color:var(--forest-dark); transform:translateY(-3px); }
.btn-forest{ background:var(--forest); color:#fff; box-shadow:0 10px 26px -10px rgba(63,91,69,.6); }
.btn-forest:hover{ background:var(--forest-dark); transform:translateY(-3px); }
.btn svg{ width:16px; height:16px; transition:transform .4s var(--ease); }
.btn:hover svg{ transform:translateX(4px); }

/* ==================== GLASSMORPHISM PANELS ==================== */
.glass-panel{
  background:var(--white-glass);
  backdrop-filter:blur(18px) saturate(150%);
  -webkit-backdrop-filter:blur(18px) saturate(150%);
  border:1px solid rgba(255,255,255,.5);
  border-radius:22px;
  box-shadow:var(--shadow-soft);
}

/* ==================== HERO ==================== */
.hero{
  position:relative; min-height:100svh; display:flex; align-items:flex-end;
  overflow:hidden; margin-top:-88px; padding-top:88px;
}
.hero-bg{
  position:absolute; inset:0; background-size:cover; background-position:center;
  transform:scale(1.06);
}
.hero-bg::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(43,36,32,.25) 0%, rgba(43,36,32,.15) 40%, rgba(43,36,32,.55) 100%);
}
.hero-content{
  position:relative; z-index:2; max-width:1400px; margin:0 auto; padding:0 1.5rem 6rem;
  width:100%; color:#fff;
}
.hero-eyebrow{ font-family:'Shippori Mincho', serif; letter-spacing:.3em; font-size:.95rem; opacity:.9; margin-bottom:1rem; }
.hero h1{ color:#fff; font-size:clamp(2.4rem, 6vw, 5rem); line-height:1.08; max-width:900px; }
.hero-sub{ font-family:'Shippori Mincho', serif; font-size:clamp(1rem,2vw,1.3rem); margin-top:1.2rem; opacity:.92; max-width:600px; }
.hero-actions{ display:flex; flex-wrap:wrap; gap:1rem; margin-top:2.4rem; }
.scroll-cue{
  position:absolute; bottom:2rem; left:50%; transform:translateX(-50%); z-index:2; color:#fff;
  display:flex; flex-direction:column; align-items:center; gap:.5rem; font-size:.7rem; letter-spacing:.2em; opacity:.85;
}
.scroll-cue .line{ width:1px; height:34px; background:rgba(255,255,255,.7); position:relative; overflow:hidden; }
.scroll-cue .line::after{
  content:''; position:absolute; top:-100%; left:0; width:100%; height:100%; background:#fff;
  animation:scrollLine 2s ease-in-out infinite;
}
@keyframes scrollLine{ 50%{ top:100%; } 100%{ top:100%; } }

/* smaller page hero (inner pages) */
.page-hero{
  position:relative; margin-top:-88px; padding:170px 1.5rem 90px; overflow:hidden;
}
.page-hero-bg{ position:absolute; inset:0; background-size:cover; background-position:center; }
.page-hero-bg::after{ content:''; position:absolute; inset:0; background:linear-gradient(180deg, rgba(43,36,32,.55), rgba(43,36,32,.35) 60%, var(--cream) 100%); }
.page-hero-content{ position:relative; z-index:2; max-width:1200px; margin:0 auto; color:#fff; text-align:center; }
.page-hero h1{ color:#fff; font-size:clamp(2.2rem,5vw,3.6rem); }
.breadcrumb{ font-family:'Shippori Mincho', serif; font-size:.85rem; opacity:.85; margin-bottom:1rem; letter-spacing:.08em; }

/* ==================== SECTIONS ==================== */
section{ position:relative; }
.section{ padding:6.5rem 1.5rem; }
.section-alt{ background:var(--beige); }
.container{ max-width:1300px; margin:0 auto; }
.grid-split{ display:grid; grid-template-columns:1fr 1fr; gap:4rem; align-items:center; }
@media (max-width:900px){ .grid-split{ grid-template-columns:1fr; gap:2.5rem; } .grid-split.reverse .order-fix{ order:2; } }
.grid-split.reverse{ direction:rtl; }
.grid-split.reverse > *{ direction:ltr; }

.section-label{ margin-bottom:1rem; }
.section-title{ font-size:clamp(1.9rem,4vw,3rem); margin-bottom:.6rem; }
.section-title-jp{ font-family:'Shippori Mincho', serif; color:var(--oak); font-size:1.05rem; margin-bottom:1.6rem; display:block; }
.lede{ color:var(--ink-soft); line-height:1.9; font-size:1.02rem; max-width:56ch; }

.img-frame{ position:relative; border-radius:20px; overflow:hidden; box-shadow:var(--shadow-soft); }
.img-frame img{ width:100%; height:100%; object-fit:cover; transition:transform 1s var(--ease); }
.img-frame:hover img{ transform:scale(1.06); }
.img-frame::before{
  content:''; position:absolute; inset:0; border:1px solid rgba(255,255,255,.4); border-radius:20px; z-index:2; pointer-events:none;
}

.leaf-divider{ display:flex; align-items:center; gap:.8rem; margin:2rem 0; color:var(--oak); }
.leaf-divider .stem{ height:1px; flex:1; background:linear-gradient(90deg, var(--stone-light), transparent); }
.leaf-divider svg{ width:20px; height:20px; }

/* ==================== EDITORIAL CARDS ==================== */
.cards-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:2rem; }
@media (max-width:980px){ .cards-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:640px){ .cards-grid{ grid-template-columns:1fr; } }

.card-editorial{
  background:#fff; border-radius:20px; overflow:hidden; box-shadow:0 12px 34px -18px rgba(43,36,32,.28);
  transition:transform .5s var(--ease), box-shadow .5s var(--ease);
  display:flex; flex-direction:column;
}
.card-editorial:hover{ transform:translateY(-8px); box-shadow:0 26px 46px -18px rgba(43,36,32,.32); }
.card-media{ position:relative; aspect-ratio:4/3; overflow:hidden; }
.card-media img{ width:100%; height:100%; object-fit:cover; transition:transform .8s var(--ease); }
.card-editorial:hover .card-media img{ transform:scale(1.08); }
.card-tag{
  position:absolute; top:1rem; left:1rem; background:rgba(248,244,234,.9); backdrop-filter:blur(6px);
  padding:.35rem .9rem; border-radius:100px; font-size:.72rem; letter-spacing:.08em; color:var(--oak-dark);
  font-family:'Shippori Mincho', serif;
}
.card-body{ padding:1.6rem 1.6rem 1.9rem; display:flex; flex-direction:column; gap:.5rem; flex:1; }
.card-body h3{ font-size:1.35rem; }
.card-body .jp{ font-family:'Shippori Mincho', serif; color:var(--oak); font-size:.85rem; }
.card-body p{ color:var(--ink-soft); font-size:.92rem; line-height:1.7; flex:1; }
.card-link{ margin-top:.6rem; font-size:.85rem; display:inline-flex; align-items:center; gap:.4rem; color:var(--forest-dark); }
.card-link svg{ width:14px;height:14px; transition:transform .3s var(--ease); }
.card-link:hover svg{ transform:translateX(4px); }

/* ==================== STATS-FREE FEATURE STRIP ==================== */
.feature-strip{ display:grid; grid-template-columns:repeat(4,1fr); gap:1.6rem; }
@media (max-width:900px){ .feature-strip{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px){ .feature-strip{ grid-template-columns:1fr; } }
.feature-item{ padding:2rem 1.6rem; border-radius:18px; background:#fff; text-align:left; box-shadow:0 10px 30px -18px rgba(43,36,32,.25); }
.feature-item svg{ width:34px; height:34px; color:var(--oak); margin-bottom:1rem; }
.feature-item h4{ font-size:1.15rem; margin-bottom:.4rem; }
.feature-item p{ color:var(--ink-soft); font-size:.88rem; line-height:1.7; margin:0; }

/* ==================== QUOTE / PHILOSOPHY BLOCK ==================== */
.quote-block{
  position:relative; padding:5rem 2rem; text-align:center; background:var(--forest-dark); color:#f3efe4; border-radius:26px; overflow:hidden;
}
.quote-block::before{
  content:''; position:absolute; inset:0; opacity:.15; background:radial-gradient(circle at 30% 20%, #fff, transparent 40%);
}
.quote-block blockquote{ position:relative; z-index:1; font-family:'Italiana', serif; font-size:clamp(1.4rem,3vw,2.3rem); max-width:900px; margin:0 auto; line-height:1.5; }
.quote-block cite{ position:relative; z-index:1; display:block; margin-top:1.4rem; font-family:'Shippori Mincho', serif; font-style:normal; opacity:.8; font-size:.9rem; }

/* ==================== FAQ ACCORDION ==================== */
.accordion{ display:flex; flex-direction:column; gap:1rem; max-width:820px; margin:0 auto; }
.accordion-item{ background:#fff; border-radius:16px; overflow:hidden; box-shadow:0 8px 24px -16px rgba(43,36,32,.25); }
.accordion-head{
  display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1.4rem 1.7rem; cursor:pointer;
}
.accordion-head h3{ font-size:1.05rem; font-family:'Zen Kaku Gothic New', sans-serif; font-weight:500; }
.accordion-icon{ width:20px; height:20px; flex-shrink:0; position:relative; }
.accordion-icon::before, .accordion-icon::after{ content:''; position:absolute; background:var(--oak); border-radius:2px; transition:transform .4s var(--ease); }
.accordion-icon::before{ width:100%; height:2px; top:50%; left:0; transform:translateY(-50%); }
.accordion-icon::after{ width:2px; height:100%; left:50%; top:0; transform:translateX(-50%); }
.accordion-item.open .accordion-icon::after{ transform:translateX(-50%) rotate(90deg); opacity:0; }
.accordion-body{ max-height:0; overflow:hidden; transition:max-height .5s var(--ease); }
.accordion-body-inner{ padding:0 1.7rem 1.6rem; color:var(--ink-soft); line-height:1.8; font-size:.94rem; }
.accordion-item.open .accordion-body{ max-height:400px; }

/* ==================== GALLERY / MASONRY / LIGHTBOX ==================== */
.masonry{ column-count:3; column-gap:1.3rem; }
@media (max-width:980px){ .masonry{ column-count:2; } }
@media (max-width:600px){ .masonry{ column-count:1; } }
.masonry-item{
  break-inside:avoid; margin-bottom:1.3rem; border-radius:16px; overflow:hidden; position:relative; cursor:pointer;
  box-shadow:0 10px 26px -16px rgba(43,36,32,.3);
}
.masonry-item img{ width:100%; display:block; transition:transform .7s var(--ease); }
.masonry-item:hover img{ transform:scale(1.07); }
.masonry-caption{
  position:absolute; inset:auto 0 0 0; padding:1.6rem 1.2rem .9rem; color:#fff;
  background:linear-gradient(180deg, transparent, rgba(20,16,12,.82));
  opacity:0; transform:translateY(10px); transition:.4s var(--ease);
}
.masonry-item:hover .masonry-caption{ opacity:1; transform:translateY(0); }
.masonry-caption .jp{ font-family:'Shippori Mincho', serif; font-size:.78rem; opacity:.85; }
.masonry-caption .en{ font-size:.95rem; letter-spacing:.04em; }

.gallery-filters{ display:flex; flex-wrap:wrap; gap:.7rem; justify-content:center; margin-bottom:3rem; }
.filter-btn{
  padding:.6rem 1.3rem; border-radius:100px; border:1px solid rgba(43,36,32,.2); font-size:.85rem; background:#fff; cursor:pointer;
  transition:.3s var(--ease);
}
.filter-btn.active, .filter-btn:hover{ background:var(--oak); color:#fff; border-color:var(--oak); }

.lightbox{
  position:fixed; inset:0; background:rgba(20,16,12,.92); z-index:200; display:flex; align-items:center; justify-content:center;
  opacity:0; visibility:hidden; transition:opacity .4s var(--ease); padding:2rem;
}
.lightbox.active{ opacity:1; visibility:visible; }
.lightbox-inner{ position:relative; max-width:1100px; width:100%; text-align:center; }
.lightbox-inner img{ max-height:80vh; margin:0 auto; border-radius:12px; box-shadow:0 30px 80px rgba(0,0,0,.5); }
.lightbox-caption{ color:#f3efe4; margin-top:1.2rem; font-family:'Shippori Mincho', serif; }
.lightbox-close, .lightbox-prev, .lightbox-next{
  position:absolute; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.3); color:#fff; border-radius:50%;
  width:46px; height:46px; display:flex; align-items:center; justify-content:center; cursor:pointer; transition:.3s var(--ease);
}
.lightbox-close:hover, .lightbox-prev:hover, .lightbox-next:hover{ background:rgba(255,255,255,.3); }
.lightbox-close{ top:-3rem; right:0; }
.lightbox-prev{ left:-1rem; top:50%; transform:translateY(-50%); }
.lightbox-next{ right:-1rem; top:50%; transform:translateY(-50%); }
@media (max-width:700px){ .lightbox-prev{ left:.2rem; } .lightbox-next{ right:.2rem; } .lightbox-close{ top:-2.6rem; } }

/* ==================== FORM ==================== */
.contact-form{ display:grid; gap:1.3rem; }
.form-row{ display:grid; grid-template-columns:1fr 1fr; gap:1.3rem; }
@media (max-width:640px){ .form-row{ grid-template-columns:1fr; } }
.field{ display:flex; flex-direction:column; gap:.5rem; }
.field label{ font-size:.82rem; letter-spacing:.05em; color:var(--ink-soft); }
.field input, .field select, .field textarea{
  border:1px solid rgba(43,36,32,.18); background:rgba(255,255,255,.7); border-radius:12px; padding:.9rem 1.1rem;
  font-family:'Zen Kaku Gothic New', sans-serif; font-size:.95rem; color:var(--ink); transition:.3s var(--ease); resize:vertical;
}
.field input:focus, .field select:focus, .field textarea:focus{ outline:none; border-color:var(--oak); box-shadow:0 0 0 4px rgba(138,90,52,.12); background:#fff; }
.field.checkbox{ flex-direction:row; align-items:flex-start; gap:.7rem; }
.field.checkbox input{ width:auto; margin-top:.2rem; }
.field.checkbox label{ font-size:.85rem; line-height:1.6; }

/* ==================== TOAST ==================== */
.toast-container{ position:fixed; top:1.5rem; right:1.5rem; z-index:300; display:flex; flex-direction:column; gap:.8rem; }
.toast{
  min-width:280px; max-width:360px; background:var(--forest-dark); color:#f3efe4; padding:1rem 1.3rem; border-radius:14px;
  box-shadow:0 20px 40px -14px rgba(0,0,0,.4); display:flex; align-items:flex-start; gap:.7rem;
  transform:translateX(120%); opacity:0; transition:transform .5s var(--ease), opacity .5s var(--ease);
  font-size:.9rem; line-height:1.6;
}
.toast.show{ transform:translateX(0); opacity:1; }
.toast svg{ width:20px; height:20px; flex-shrink:0; color:var(--oak-light); margin-top:.1rem; }
.toast .jp{ font-family:'Shippori Mincho', serif; }

/* ==================== FOOTER ==================== */
.site-footer{ background:var(--ink); color:#e4ddd0; margin-top:6rem; }
.footer-top{
  max-width:1300px; margin:0 auto; padding:5rem 1.5rem 3rem; display:grid; grid-template-columns:1.5fr 1fr 1fr 1.2fr; gap:3rem;
}
@media (max-width:900px){ .footer-top{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .footer-top{ grid-template-columns:1fr; } }
.footer-brand .logo-en{ color:#f3efe4; }
.footer-brand .logo-mark{ color:var(--oak-light); }
.footer-tagline{ color:#c9c2b4; font-size:.9rem; line-height:1.8; margin-top:1.2rem; max-width:32ch; }
.site-footer h4{ font-family:'Shippori Mincho', serif; font-weight:500; font-size:.95rem; margin-bottom:1.2rem; color:#f3efe4; }
.site-footer h4 small{ display:block; font-family:'Zen Kaku Gothic New',sans-serif; font-size:.7rem; color:#8f887c; margin-top:.2rem; letter-spacing:.05em; }
.site-footer ul{ list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:.7rem; }
.site-footer ul a{ font-size:.88rem; color:#c9c2b4; transition:.3s var(--ease); }
.site-footer ul a:hover{ color:var(--oak-light); padding-left:4px; }
.site-footer address{ font-style:normal; font-size:.88rem; color:#c9c2b4; line-height:1.9; margin-bottom:1.2rem; }
.site-footer address a{ color:var(--oak-light); }
.footer-bottom{ border-top:1px solid rgba(255,255,255,.08); padding:1.5rem; text-align:center; font-size:.78rem; color:#8f887c; }

/* ==================== SCROLL REVEAL ==================== */
.fade-in{ opacity:0; transform:translateY(36px); transition:opacity .9s var(--ease), transform .9s var(--ease); }
.fade-in.visible{ opacity:1; transform:translateY(0); }
.fade-in.d1{ transition-delay:.1s; } .fade-in.d2{ transition-delay:.2s; } .fade-in.d3{ transition-delay:.3s; } .fade-in.d4{ transition-delay:.4s; }

/* ==================== MISC ==================== */
.back-to-top{
  position:fixed; bottom:2rem; right:2rem; width:48px; height:48px; border-radius:50%; background:var(--oak);
  color:#fff; display:flex; align-items:center; justify-content:center; z-index:40; cursor:pointer; box-shadow:0 12px 26px -10px rgba(138,90,52,.7);
  opacity:0; visibility:hidden; transform:translateY(10px); transition:.4s var(--ease);
}
.back-to-top.show{ opacity:1; visibility:visible; transform:translateY(0); }
.back-to-top svg{ width:18px; height:18px; }

.tag-pill{ display:inline-flex; align-items:center; gap:.5rem; padding:.4rem 1rem; border-radius:100px; background:rgba(63,91,69,.1); color:var(--forest-dark); font-size:.78rem; letter-spacing:.05em; font-family:'Shippori Mincho', serif; }

.two-col-list{ columns:2; gap:2.5rem; }
@media (max-width:640px){ .two-col-list{ columns:1; } }
.check-list{ list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:1rem; break-inside:avoid; }
.check-list li{ display:flex; gap:.8rem; align-items:flex-start; color:var(--ink-soft); font-size:.94rem; line-height:1.7; }
.check-list svg{ width:20px; height:20px; color:var(--forest); flex-shrink:0; margin-top:.15rem; }

.timeline{ display:flex; flex-direction:column; gap:0; }
.timeline-item{ display:grid; grid-template-columns:80px 1fr; gap:1.5rem; padding-bottom:3rem; position:relative; }
.timeline-item::before{ content:''; position:absolute; left:39px; top:10px; bottom:-10px; width:1px; background:var(--stone-light); }
.timeline-item:last-child::before{ display:none; }
.timeline-num{ font-family:'Italiana', serif; font-size:1.6rem; color:var(--oak); position:relative; z-index:1; background:var(--cream); height:fit-content; }
.section-alt .timeline-num{ background:var(--beige); }
.timeline-content h3{ font-size:1.3rem; margin-bottom:.4rem; }
.timeline-content .jp{ font-family:'Shippori Mincho', serif; color:var(--oak); font-size:.85rem; display:block; margin-bottom:.6rem; }
.timeline-content p{ color:var(--ink-soft); line-height:1.8; margin:0; max-width:60ch; }

.error-page{ min-height:100svh; display:flex; align-items:center; justify-content:center; text-align:center; position:relative; padding:8rem 1.5rem; }
