:root{
  --bg:#faf7f2;
  --bg-alt:#f1ece2;
  --ink:#2b2420;
  --ink-soft:#5a5148;
  --line:#e2d9c9;
  --accent:#c1652f;
  --accent-dark:#a2521f;
  --sage:#6b8a6a;
  --white:#ffffff;
  --radius:10px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:"Noto Sans JP","Hiragino Sans",sans-serif;
  color:var(--ink);
  background:var(--bg);
  line-height:1.8;
}
h1,h2,h3{font-family:"Noto Serif JP",serif; margin:0; line-height:1.5;}
a{color:inherit; text-decoration:none;}
img{max-width:100%; display:block;}
.wrap{max-width:1080px; margin:0 auto; padding:0 24px;}
.pc-only{display:inline;}
@media (max-width:640px){ .pc-only{display:none;} }

/* demo bar */
.demo-bar{
  background:#2b2420; color:#f1ece2; font-size:13px;
  padding:8px 16px; display:flex; gap:12px; align-items:center; justify-content:center;
  flex-wrap:wrap; text-align:center;
}
.demo-bar__btn{
  background:var(--accent); color:#fff; border:none; border-radius:999px;
  padding:4px 14px; font-size:12px; cursor:pointer; white-space:nowrap;
}
.demo-bar__btn[aria-pressed="true"]{background:var(--sage);}

/* header */
.site-header{
  position:sticky; top:0; z-index:50; background:rgba(250,247,242,.94);
  backdrop-filter:blur(4px); border-bottom:1px solid var(--line);
}
.site-header__inner{
  display:flex; align-items:center; justify-content:space-between; padding:14px 24px;
}
.logo{font-family:"Noto Serif JP",serif; font-weight:700; font-size:20px; letter-spacing:.05em;}
.nav{display:flex; gap:28px; font-size:14px;}
.nav a:hover{color:var(--accent);}
.header-cta{font-size:13px; padding:8px 18px !important;}
.nav-toggle{display:none; background:none; border:none; font-size:22px; cursor:pointer;}
@media (max-width:860px){
  .nav{
    position:fixed; top:0; right:0; height:100vh; width:220px; background:var(--white);
    flex-direction:column; padding:80px 24px; gap:20px; transform:translateX(100%);
    transition:transform .25s ease; box-shadow:-4px 0 16px rgba(0,0,0,.08);
  }
  .nav.open{transform:translateX(0);}
  .nav-toggle{display:block;}
  .header-cta{display:none;}
}

/* buttons */
.btn{
  display:inline-block; padding:13px 28px; border-radius:999px; font-weight:700;
  font-size:15px; transition:transform .15s ease, box-shadow .15s ease; border:2px solid transparent;
}
.btn--primary{background:var(--accent); color:#fff; box-shadow:0 6px 16px rgba(193,101,47,.35);}
.btn--primary:hover{transform:translateY(-2px);}
.btn--outline{border-color:var(--ink); color:var(--ink);}
.btn--outline:hover{background:var(--ink); color:#fff;}
.btn--phone{border-color:var(--line); background:#fff; color:var(--ink);}
.btn--block{width:100%; text-align:center; border:none; cursor:pointer;}

/* hero */
.hero{
  position:relative; padding:90px 0 70px;
  background:linear-gradient(180deg,#fff 0%, var(--bg) 100%);
  border-bottom:1px solid var(--line);
}
.hero__inner{text-align:center; max-width:760px;}
.hero__eyebrow{color:var(--accent-dark); font-weight:700; font-size:13px; letter-spacing:.06em; margin-bottom:18px;}
.hero__title{font-size:clamp(26px,4vw,38px); margin-bottom:20px;}
.hero__lead{color:var(--ink-soft); margin-bottom:34px; font-size:16px;}
.hero__actions{display:flex; gap:16px; justify-content:center; flex-wrap:wrap; margin-bottom:26px;}
.hero__trust{display:flex; gap:22px; justify-content:center; flex-wrap:wrap; list-style:none; padding:0; margin:0; font-size:13px; color:var(--ink-soft);}

/* sections */
.section{padding:80px 0; position:relative;}
.section--alt{background:var(--bg-alt);}
.section__eyebrow{color:var(--accent-dark); font-weight:700; font-size:13px; letter-spacing:.08em; text-align:center; margin:0 0 10px;}
.section__title{font-size:clamp(22px,3vw,30px); text-align:center; margin-bottom:46px;}
.section__title--light{color:#fff;}
.section__more{text-align:center; margin-top:30px; font-weight:700;}
.section__more a:hover{color:var(--accent);}

/* stats */
.stats{display:grid; grid-template-columns:repeat(4,1fr); gap:20px; margin-bottom:56px;}
.stat{text-align:center; padding:22px 8px; background:#fff; border-radius:var(--radius); border:1px solid var(--line);}
.stat__num{font-family:"Noto Serif JP",serif; font-size:36px; font-weight:700; color:var(--accent-dark);}
.stat__unit{font-size:16px; font-weight:700; margin-left:2px;}
.stat__label{display:block; font-size:12px; color:var(--ink-soft); margin-top:6px;}
@media (max-width:700px){ .stats{grid-template-columns:repeat(2,1fr);} }

/* reasons */
.reason-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:22px;}
.reason-card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:28px 20px; text-align:center;}
.reason-card__icon{font-size:30px; margin-bottom:14px;}
.reason-card h3{font-size:16px; margin-bottom:10px;}
.reason-card p{font-size:13.5px; color:var(--ink-soft); margin:0;}
@media (max-width:900px){ .reason-grid{grid-template-columns:repeat(2,1fr);} }

/* works */
.works-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
.work-card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; display:block;}
.work-card__img{height:170px; background:linear-gradient(135deg,#e7ddc9,#cfc2a2); position:relative;}
.work-card__img::after{
  content:"House"; position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-family:"Noto Serif JP",serif; color:rgba(43,36,32,.35); font-size:14px; letter-spacing:.1em;
}
.work-card__body{padding:18px 20px;}
.work-card .tag{display:inline-block; font-size:11px; background:var(--bg-alt); padding:3px 10px; border-radius:999px; margin-bottom:10px; color:var(--accent-dark); font-weight:700;}
.work-card h3{font-size:15px; margin-bottom:6px;}
.work-card p{font-size:13px; color:var(--ink-soft); margin:0;}
@media (max-width:820px){ .works-grid{grid-template-columns:1fr;} }

/* voice */
.voice-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:22px;}
.voice-card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:26px 22px;}
.voice-card__text{font-size:13.5px; color:var(--ink-soft); margin-bottom:16px;}
.voice-card__name{font-size:12.5px; font-weight:700; margin:0;}
@media (max-width:820px){ .voice-grid{grid-template-columns:1fr;} }

/* area */
.area-wrap{display:grid; grid-template-columns:1.1fr 1fr; gap:40px; align-items:center;}
.area-desc{color:var(--ink-soft); margin-bottom:24px;}
.company-table{width:100%; border-collapse:collapse; font-size:13.5px;}
.company-table th,.company-table td{text-align:left; padding:10px 12px; border-bottom:1px solid var(--line);}
.company-table th{width:110px; color:var(--ink-soft); font-weight:700;}
.area-map{
  height:280px; border-radius:var(--radius); background:repeating-linear-gradient(45deg,#e7ddc9,#e7ddc9 10px,#f1ece2 10px,#f1ece2 20px);
  display:flex; align-items:center; justify-content:center; text-align:center; padding:20px; font-size:13px; color:var(--ink-soft); border:1px solid var(--line);
}
@media (max-width:820px){ .area-wrap{grid-template-columns:1fr;} }

/* faq */
.faq-list{max-width:760px; margin:0 auto;}
.faq-item{border-bottom:1px solid var(--line);}
.faq-item__q{
  width:100%; text-align:left; background:none; border:none; padding:20px 4px;
  font-size:15px; font-weight:700; cursor:pointer; position:relative; padding-right:30px;
}
.faq-item__q::after{content:"+"; position:absolute; right:4px; top:18px; font-size:20px; color:var(--accent);}
.faq-item.open .faq-item__q::after{content:"−";}
.faq-item__a{max-height:0; overflow:hidden; transition:max-height .25s ease;}
.faq-item__a p{margin:0 4px 18px; font-size:13.5px; color:var(--ink-soft);}
.faq-item.open .faq-item__a{max-height:200px;}

/* contact */
.section--cta{background:var(--ink); }
.contact-wrap{max-width:560px;}
.contact-lead{color:#cfc7bb; text-align:center; margin-bottom:34px;}
.contact-form{background:#fff; border-radius:var(--radius); padding:30px;}
.form-row{margin-bottom:16px;}
.form-row label{display:block; font-size:13px; font-weight:700; margin-bottom:6px;}
.req{color:var(--accent); font-size:11px; margin-left:6px; font-weight:700;}
.form-row input,.form-row select,.form-row textarea{
  width:100%; padding:11px 12px; border:1px solid var(--line); border-radius:6px; font-family:inherit; font-size:14px;
}
.form-note{text-align:center; font-size:12px; color:var(--ink-soft); margin-top:12px;}

/* footer */
.site-footer{padding:26px 0; text-align:center; font-size:12px; color:var(--ink-soft); border-top:1px solid var(--line);}

/* reveal animation */
.reveal{opacity:0; transform:translateY(24px); transition:opacity .6s ease, transform .6s ease;}
.reveal.is-visible{opacity:1; transform:translateY(0);}

/* annotation pins */
.anno{
  position:absolute; width:30px; height:30px; border-radius:50%;
  background:var(--sage); color:#fff; font-weight:700; font-size:14px;
  display:none; align-items:center; justify-content:center; cursor:pointer;
  box-shadow:0 0 0 4px rgba(107,138,106,.25); z-index:20; animation:pulse 2s infinite;
}
body.anno-on .anno{display:flex;}
.anno::before{content: attr(data-anno);}
@keyframes pulse{
  0%,100%{box-shadow:0 0 0 4px rgba(107,138,106,.25);}
  50%{box-shadow:0 0 0 9px rgba(107,138,106,.12);}
}

/* annotation popover */
.anno-popover{
  position:fixed; bottom:20px; right:20px; left:20px; max-width:360px; margin-left:auto;
  background:#fff; border-radius:12px; box-shadow:0 12px 32px rgba(0,0,0,.18);
  padding:20px 22px; z-index:100; border:1px solid var(--line);
}
.anno-popover__close{position:absolute; top:10px; right:12px; border:none; background:none; font-size:18px; cursor:pointer; color:var(--ink-soft);}
.anno-popover__body h4{margin:0 0 10px; font-size:15px; color:var(--accent-dark);}
.anno-popover__body p{margin:0; font-size:13.5px; color:var(--ink-soft);}
