:root{
    --green:#1f5132;
    --green-d:#163d25;
    --moss:#6b8e23;
    --cream:#f5f3ea;
    --cream-d:#ebe7d8;
    --ink:#2c2c2a;
    --ink-l:#5a5a55;
    --line:#dcd7c6;
    --white:#fdfcf8;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{
    font-family:"Noto Sans JP",sans-serif;
    color:var(--ink);
    background:var(--cream);
    line-height:1.85;
    font-size:16px;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,.serif{font-family:"Noto Serif JP",serif;}
  a{color:inherit;text-decoration:none}
  img{max-width:100%}
  .wrap{max-width:1080px;margin:0 auto;padding:0 24px}
  .sec{padding:84px 0}
  .sec-head{text-align:center;margin-bottom:54px}
  .sec-head .ja{
    display:inline-block;font-size:13px;letter-spacing:.32em;color:var(--moss);
    font-weight:700;margin-bottom:14px;position:relative;padding-bottom:14px;
  }
  .sec-head .ja::after{
    content:"";position:absolute;left:50%;bottom:0;transform:translateX(-50%);
    width:40px;height:2px;background:var(--moss);
  }
  .sec-head h2{font-size:30px;font-weight:600;letter-spacing:.06em;color:var(--green-d);line-height:1.5}
  .sec-head p{margin-top:18px;color:var(--ink-l);font-size:15px}

  /* demo banner */
  .demo-banner{background:#1a3a5c;color:#fff;text-align:center;padding:8px 12px;font-size:13px;line-height:1.5;}

  /* header */
  header{
    position:sticky;top:0;z-index:100;background:rgba(253,252,248,.94);
    backdrop-filter:blur(8px);border-bottom:1px solid var(--line);
  }
  .nav{display:flex;align-items:center;justify-content:space-between;height:74px}
  .logo{display:flex;align-items:center;gap:13px}
  .logo .mark{
    width:46px;height:46px;border-radius:50%;
    background:linear-gradient(135deg,var(--green),var(--moss));
    display:flex;align-items:center;justify-content:center;color:#fff;font-size:20px;
    box-shadow:0 3px 10px rgba(31,81,50,.25);
  }
  .logo .txt b{font-family:"Noto Serif JP",serif;font-size:19px;font-weight:600;color:var(--green-d);letter-spacing:.04em;display:block;line-height:1.3}
  .logo .txt span{font-size:11px;color:var(--ink-l);letter-spacing:.18em}
  .nav-links{display:flex;align-items:center;gap:30px}
  .nav-links a{font-size:14px;font-weight:500;color:var(--ink);transition:color .2s}
  .nav-links a:hover{color:var(--moss)}
  .tel-btn{
    display:inline-flex;align-items:center;gap:9px;background:var(--green);color:#fff;
    padding:11px 22px;border-radius:40px;font-weight:700;font-size:15px;letter-spacing:.02em;
    transition:background .2s,transform .2s;
  }
  .tel-btn:hover{background:var(--green-d);transform:translateY(-1px)}
  .tel-btn small{display:block;font-size:10px;font-weight:400;opacity:.85;letter-spacing:.1em}
  .menu-toggle{display:none;font-size:24px;color:var(--green-d);background:none;border:none;cursor:pointer}

  /* hero */
  .hero{position:relative;color:#fff;overflow:hidden;background:#163d25}
  .hero-slides{position:absolute;inset:0;z-index:0}
  .hero-slide{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transition:opacity 1.6s ease}
  .hero-slide.active{opacity:1;animation:heroZoom 8s ease forwards}
  @keyframes heroZoom{from{transform:scale(1.09)}to{transform:scale(1)}}
  .hero::before{
    content:"";position:absolute;inset:0;z-index:1;
    background:linear-gradient(95deg,rgba(16,40,24,.86) 0%,rgba(20,52,31,.62) 46%,rgba(20,52,31,.32) 100%);
  }
  .hero .hero-inner{z-index:2}
  .hero-dots{position:absolute;z-index:3;left:0;right:0;bottom:24px;display:flex;gap:9px;justify-content:center}
  .hero-dots button{width:11px;height:11px;padding:0;border:none;border-radius:50%;background:rgba(255,255,255,.45);cursor:pointer;transition:all .3s}
  .hero-dots button.on{background:#c9e07a;width:30px;border-radius:6px}
  .hero-cap{position:absolute;z-index:3;right:18px;bottom:20px;font-size:12px;letter-spacing:.06em;color:rgba(255,255,255,.82);background:rgba(0,0,0,.3);padding:5px 12px;border-radius:20px}
  .hero-inner{position:relative;padding:118px 0 122px;max-width:760px}
  .hero .tag{
    display:inline-flex;align-items:center;gap:8px;font-size:13px;letter-spacing:.18em;
    border:1px solid rgba(255,255,255,.4);padding:7px 18px;border-radius:30px;margin-bottom:30px;
  }
  .hero h1{font-size:50px;font-weight:600;line-height:1.45;letter-spacing:.05em;text-shadow:0 2px 14px rgba(0,0,0,.2)}
  .hero h1 .accent{color:#c9e07a}
  .hero .sub{margin-top:26px;font-size:17px;line-height:2;font-weight:400;color:rgba(255,255,255,.94);max-width:600px}
  .hero-cta{margin-top:42px;display:flex;gap:16px;flex-wrap:wrap}
  .btn{
    display:inline-flex;align-items:center;gap:10px;padding:16px 32px;border-radius:42px;
    font-weight:700;font-size:16px;letter-spacing:.03em;transition:transform .2s,box-shadow .2s,background .2s;
  }
  .btn-main{background:var(--moss);color:#fff;box-shadow:0 8px 22px rgba(107,142,35,.4)}
  .btn-main:hover{transform:translateY(-2px);box-shadow:0 11px 28px rgba(107,142,35,.5)}
  .btn-ghost{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.5)}
  .btn-ghost:hover{background:rgba(255,255,255,.2)}
  .hero-feats{display:flex;gap:34px;margin-top:50px;flex-wrap:wrap}
  .hero-feats div{font-size:14px;display:flex;align-items:center;gap:9px;color:rgba(255,255,255,.92)}
  .hero-feats i{color:#c9e07a}

  /* services */
  .services{background:var(--white)}
  .cards{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
  .card{
    background:var(--cream);border:1px solid var(--line);border-radius:14px;padding:36px 30px;
    transition:transform .25s,box-shadow .25s,border-color .25s;position:relative;overflow:hidden;
  }
  .card::before{content:"";position:absolute;left:0;top:0;width:4px;height:0;background:var(--moss);transition:height .3s}
  .card:hover{transform:translateY(-6px);box-shadow:0 16px 36px rgba(31,81,50,.12);border-color:var(--moss)}
  .card:hover::before{height:100%}
  .card .ic{
    width:62px;height:62px;border-radius:14px;background:rgba(107,142,35,.13);
    display:flex;align-items:center;justify-content:center;font-size:26px;color:var(--green);margin-bottom:22px;
  }
  .card h3{font-size:20px;font-weight:600;color:var(--green-d);margin-bottom:12px;letter-spacing:.03em}
  .card p{font-size:14.5px;color:var(--ink-l);line-height:1.9}

  /* reasons */
  .reasons{background:var(--cream)}
  .reason-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}
  .reason{text-align:center;padding:14px}
  .reason .num{
    font-family:"Noto Serif JP",serif;font-size:15px;letter-spacing:.2em;color:var(--moss);font-weight:700;
    display:inline-block;margin-bottom:18px;
  }
  .reason .ricon{
    width:84px;height:84px;margin:0 auto 22px;border-radius:50%;
    background:linear-gradient(135deg,var(--green),var(--moss));color:#fff;
    display:flex;align-items:center;justify-content:center;font-size:32px;
    box-shadow:0 8px 20px rgba(31,81,50,.22);
  }
  .reason h3{font-size:19px;font-weight:600;color:var(--green-d);margin-bottom:12px}
  .reason p{font-size:14.5px;color:var(--ink-l);line-height:1.9}

  /* gallery */
  .gallery{background:var(--white)}
  .gal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
  .gal-item{
    border-radius:12px;overflow:hidden;border:1px solid var(--line);background:#eceadf;
  }
  .ph{
    aspect-ratio:4/3;display:flex;flex-direction:column;align-items:center;justify-content:center;
    background:repeating-linear-gradient(45deg,#e7e4d6 0 14px,#e1ddcd 14px 28px);
    color:#9a968a;text-align:center;padding:18px;
  }
  .ph i{font-size:30px;margin-bottom:12px;opacity:.6}
  .ph span{font-size:12.5px;line-height:1.7}
  .gal-cap{padding:14px 18px;background:var(--cream);font-size:14px;color:var(--green-d);font-weight:500;display:flex;align-items:center;gap:9px}
  .gal-cap i{color:var(--moss);font-size:13px}

  /* flow */
  .flow{background:var(--green);color:#fff;position:relative;overflow:hidden}
  .flow::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 15% 20%,rgba(107,142,35,.3),transparent 50%)}
  .flow .sec-head h2{color:#fff}
  .flow .sec-head .ja{color:#c9e07a}
  .flow .sec-head .ja::after{background:#c9e07a}
  .flow-steps{position:relative;display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
  .step{text-align:center;position:relative;z-index:2}
  .step .circ{
    width:74px;height:74px;margin:0 auto 18px;border-radius:50%;
    background:rgba(255,255,255,.1);border:2px solid rgba(201,224,122,.6);
    display:flex;flex-direction:column;align-items:center;justify-content:center;
  }
  .step .circ i{font-size:24px;color:#c9e07a}
  .step .circ b{font-size:11px;font-weight:700;letter-spacing:.1em;margin-top:3px;color:#c9e07a}
  .step h3{font-size:16px;font-weight:600;margin-bottom:9px}
  .step p{font-size:13px;color:rgba(255,255,255,.82);line-height:1.75}

  /* faq */
  .faq{background:var(--cream)}
  .faq-list{max-width:780px;margin:0 auto}
  .qa{background:var(--white);border:1px solid var(--line);border-radius:12px;margin-bottom:14px;overflow:hidden}
  .qa summary{
    list-style:none;cursor:pointer;padding:22px 26px;font-weight:600;font-size:16px;color:var(--green-d);
    display:flex;align-items:flex-start;gap:14px;position:relative;
  }
  .qa summary::-webkit-details-marker{display:none}
  .qa summary .qm{color:var(--moss);font-family:"Noto Serif JP",serif;font-size:19px;font-weight:700;flex-shrink:0}
  .qa summary .arr{margin-left:auto;color:var(--moss);transition:transform .25s;flex-shrink:0}
  .qa[open] summary .arr{transform:rotate(180deg)}
  .qa .ans{padding:0 26px 24px 56px;color:var(--ink-l);font-size:14.5px;line-height:1.9}

  /* about */
  .about{background:var(--white)}
  .about-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:48px;align-items:center}
  .about-info{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--cream)}
  .about-info dl{display:flex;flex-wrap:wrap;margin:0}
  .about-info dt{
    width:34%;background:var(--green);color:#fff;padding:16px 20px;font-size:14px;font-weight:600;
    border-bottom:1px solid rgba(255,255,255,.12);letter-spacing:.05em;
  }
  .about-info dd{
    width:66%;padding:16px 22px;font-size:14.5px;color:var(--ink);border-bottom:1px solid var(--line);
    background:var(--white);
  }
  .about-info dl>*:nth-last-child(-n+2){border-bottom:none}
  .about-txt h3{font-size:25px;font-weight:600;color:var(--green-d);line-height:1.6;margin-bottom:20px;letter-spacing:.04em}
  .about-txt p{color:var(--ink-l);font-size:15px;line-height:2;margin-bottom:16px}
  .map-ph{margin-top:22px;border-radius:12px;overflow:hidden;border:1px solid var(--line)}
  .map-ph .ph{aspect-ratio:16/7}

  /* cta */
  .cta{
    background:linear-gradient(135deg,var(--green-d),var(--green));color:#fff;text-align:center;
    position:relative;overflow:hidden;
  }
  .cta::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 0%,rgba(107,142,35,.35),transparent 60%)}
  .cta-inner{position:relative}
  .cta h2{font-size:32px;font-weight:600;letter-spacing:.05em;line-height:1.5;margin-bottom:18px}
  .cta p{font-size:16px;color:rgba(255,255,255,.92);margin-bottom:40px;line-height:1.9}
  .cta-box{display:flex;gap:24px;justify-content:center;flex-wrap:wrap;max-width:820px;margin:0 auto}
  .cta-tel{
    background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.3);border-radius:16px;
    padding:30px 40px;min-width:300px;
  }
  .cta-tel .lbl{font-size:13px;letter-spacing:.15em;color:#c9e07a;margin-bottom:8px}
  .cta-tel .num{font-family:"Noto Serif JP",serif;font-size:34px;font-weight:700;letter-spacing:.04em;display:flex;align-items:center;gap:12px;justify-content:center}
  .cta-tel .hours{font-size:12.5px;color:rgba(255,255,255,.8);margin-top:8px}

  /* form */
  .formsec{background:var(--cream)}
  .form-wrap{max-width:700px;margin:0 auto;background:var(--white);border:1px solid var(--line);border-radius:16px;padding:46px 44px}
  .field{margin-bottom:22px}
  .field label{display:block;font-size:14px;font-weight:600;color:var(--green-d);margin-bottom:8px}
  .field label .req{color:#c0392b;font-size:12px;margin-left:6px}
  .field input,.field textarea,.field select{
    width:100%;padding:13px 16px;border:1px solid var(--line);border-radius:9px;font-size:15px;
    font-family:inherit;background:var(--cream);color:var(--ink);transition:border-color .2s;
  }
  .field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--moss);background:#fff}
  .field textarea{resize:vertical;min-height:120px}
  .form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}
  .form-submit{width:100%;background:var(--moss);color:#fff;border:none;padding:17px;border-radius:42px;font-size:17px;font-weight:700;cursor:pointer;letter-spacing:.05em;transition:background .2s,transform .2s;font-family:inherit}
  .form-submit:hover{background:var(--green);transform:translateY(-2px)}
  .form-note{text-align:center;font-size:12.5px;color:var(--ink-l);margin-top:18px}

  /* footer */
  footer{background:var(--green-d);color:rgba(255,255,255,.82);padding:56px 0 28px}
  .foot-top{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap;padding-bottom:36px;border-bottom:1px solid rgba(255,255,255,.12)}
  .foot-brand .logo .mark{box-shadow:none}
  .foot-brand .logo .txt b{color:#fff}
  .foot-brand .logo .txt span{color:rgba(255,255,255,.6)}
  .foot-brand p{margin-top:18px;font-size:13.5px;line-height:1.9;max-width:340px}
  .foot-nav{display:flex;gap:56px;flex-wrap:wrap}
  .foot-nav h4{font-size:13px;color:#c9e07a;letter-spacing:.12em;margin-bottom:16px;font-weight:700}
  .foot-nav a{display:block;font-size:13.5px;margin-bottom:11px;color:rgba(255,255,255,.78);transition:color .2s}
  .foot-nav a:hover{color:#fff}
  .copy{text-align:center;font-size:12.5px;color:rgba(255,255,255,.55);padding-top:26px}

  @media(max-width:880px){
    .cards,.reason-grid,.gal-grid{grid-template-columns:1fr 1fr}
    .flow-steps{grid-template-columns:repeat(2,1fr);gap:30px}
    .about-grid{grid-template-columns:1fr;gap:32px}
  }
  @media(max-width:680px){
    .sec{padding:60px 0}
    .nav-links{
      display:none;position:absolute;top:74px;left:0;right:0;background:var(--white);
      flex-direction:column;align-items:stretch;gap:0;border-bottom:1px solid var(--line);
      box-shadow:0 10px 24px rgba(0,0,0,.08);
    }
    .nav-links.open{display:flex}
    .nav-links a{padding:15px 24px;border-bottom:1px solid var(--line)}
    .nav-links .tel-btn{margin:14px 24px;justify-content:center}
    .menu-toggle{display:block}
    .hero h1{font-size:33px}
    .hero .sub{font-size:15px}
    .hero-inner{padding:78px 0 82px}
    .sec-head h2{font-size:24px}
    .cards,.reason-grid,.gal-grid{grid-template-columns:1fr}
    .form-row{grid-template-columns:1fr}
    .cta h2{font-size:25px}
    .cta-tel .num{font-size:28px}
    .about-info dt{width:38%}
    .about-info dd{width:62%}
    .form-wrap{padding:32px 22px}
    .foot-top{flex-direction:column;gap:28px}
  }

/* ===== detail page styles ===== */
.detail-hero{background:linear-gradient(95deg,rgba(16,40,24,.92),rgba(20,52,31,.7)),url('images/hero1.jpg');background-size:cover;background-position:center;color:#fff;padding:74px 0 64px;position:relative}
.detail-hero .crumb{font-size:13px;color:rgba(255,255,255,.8);margin-bottom:18px}
.detail-hero .crumb a{color:#c9e07a}
.detail-hero h1{font-size:38px;font-weight:600;letter-spacing:.04em;line-height:1.4}
.detail-hero .lead{margin-top:18px;font-size:16px;color:rgba(255,255,255,.92);max-width:680px;line-height:1.95}
.detail-hero .tag{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;letter-spacing:.16em;border:1px solid rgba(255,255,255,.4);padding:6px 16px;border-radius:30px;margin-bottom:22px}
.detail-body{background:var(--white)}
.detail-grid{display:grid;grid-template-columns:1fr 320px;gap:48px;align-items:start}
.detail-main h2{font-size:25px;color:var(--green-d);font-weight:600;letter-spacing:.03em;margin:8px 0 18px;padding-bottom:14px;border-bottom:2px solid var(--moss)}
.detail-main h3{font-size:19px;color:var(--green-d);font-weight:600;margin:34px 0 14px;display:flex;align-items:center;gap:10px}
.detail-main h3 i{color:var(--moss);font-size:17px}
.detail-main p{color:var(--ink-l);font-size:15px;line-height:2;margin-bottom:18px}
.detail-fig{border-radius:12px;overflow:hidden;border:1px solid var(--line);margin:8px 0 28px}
.detail-fig img{width:100%;display:block;aspect-ratio:16/9;object-fit:cover}
.detail-fig figcaption{padding:10px 16px;background:var(--cream);font-size:12.5px;color:var(--ink-l)}
.detail-points{list-style:none;margin:6px 0 24px;padding:0}
.detail-points li{position:relative;padding:10px 0 10px 32px;font-size:14.5px;color:var(--ink);border-bottom:1px dashed var(--line)}
.detail-points li::before{content:"\f058";font-family:"Font Awesome 6 Free";font-weight:900;color:var(--moss);position:absolute;left:0;top:10px}
.detail-steps{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin:6px 0 24px}
.detail-steps .dstep{background:var(--cream);border:1px solid var(--line);border-radius:10px;padding:18px 20px}
.detail-steps .dstep b{display:block;color:var(--moss);font-size:12px;letter-spacing:.1em;margin-bottom:6px}
.detail-steps .dstep p{font-size:13.5px;margin:0;line-height:1.8}
.detail-side{position:sticky;top:96px}
.side-card{background:var(--cream);border:1px solid var(--line);border-radius:14px;padding:26px 24px;margin-bottom:20px}
.side-card h4{font-size:16px;color:var(--green-d);font-weight:600;margin-bottom:14px}
.side-menu a{display:flex;align-items:center;gap:10px;padding:10px 0;font-size:14px;color:var(--ink);border-bottom:1px solid var(--line);transition:color .2s}
.side-menu a:last-child{border-bottom:none}
.side-menu a:hover{color:var(--moss)}
.side-menu a i{color:var(--moss);font-size:12px}
.side-cta{background:linear-gradient(135deg,var(--green),var(--moss));color:#fff;text-align:center}
.side-cta h4{color:#fff}
.side-cta p{font-size:13px;color:rgba(255,255,255,.9);margin-bottom:16px;line-height:1.8}
.side-cta .tel{font-family:"Noto Serif JP",serif;font-size:24px;font-weight:700;display:block;margin-bottom:6px}
.side-cta .hours{font-size:11.5px;color:rgba(255,255,255,.82)}
.back-link{display:inline-flex;align-items:center;gap:9px;margin-top:30px;padding:13px 26px;background:var(--green);color:#fff;border-radius:40px;font-weight:700;font-size:15px;transition:background .2s,transform .2s}
.back-link:hover{background:var(--green-d);transform:translateY(-1px)}
@media(max-width:880px){.detail-grid{grid-template-columns:1fr;gap:32px}.detail-side{position:static}.detail-hero h1{font-size:29px}.detail-steps{grid-template-columns:1fr}}
