:root{
  --green:#2EA864;
  --green-deep:#1E7A48;
  --green-soft:#E7F5EC;
  --green-line:#C8E8D4;
  --sun:#EBB44B;
  --sun-deep:#C08A22;
  --sun-soft:#FBF1DA;
  --cream:#FBFAF5;
  --white:#fff;
  --ink:#45463F;
  --ink-soft:#75766E;
  --line:#E8E4D8;
  --maru:'Zen Maru Gothic','Hiragino Maru Gothic ProN',sans-serif;
  --sans:'Zen Kaku Gothic New','Hiragino Kaku Gothic ProN',sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{font-family:var(--sans);background:var(--cream);color:var(--ink);line-height:2;font-size:15.5px;-webkit-font-smoothing:antialiased;}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
:focus-visible{outline:3px solid var(--sun);outline-offset:3px;border-radius:4px;}

/* ===== header ===== */
header{
  position:sticky;top:0;z-index:100;
  background:rgba(251,250,245,.93);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 4vw;gap:14px;
}
.brand{display:flex;align-items:center;gap:11px;}
.brand .mark{width:44px;height:44px;flex-shrink:0;}
.brand .mark img{width:100%;height:100%;object-fit:contain;}
.brand .t{line-height:1.3;}
.brand .t .small{font-size:10px;color:var(--ink-soft);letter-spacing:.14em;}
.brand .t .name{font-family:var(--maru);font-weight:700;font-size:18px;color:var(--ink);letter-spacing:.1em;}
nav.gnav{display:flex;gap:22px;}
nav.gnav a{font-size:13px;font-weight:500;letter-spacing:.08em;position:relative;padding:4px 0;white-space:nowrap;}
nav.gnav a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:3px;border-radius:3px;
  background:linear-gradient(90deg,var(--sun) 0 50%,var(--green) 50% 100%);
  transform:scaleX(0);transition:transform .25s;transform-origin:left;}
nav.gnav a:hover::after{transform:scaleX(1);}
.menu-btn{display:none;}

/* ===== buttons ===== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--maru);font-weight:700;font-size:14.5px;letter-spacing:.08em;
  border-radius:999px;padding:13px 32px;transition:transform .2s,box-shadow .2s,background .2s;
}
.btn-primary{background:var(--green);color:#fff;box-shadow:0 6px 16px rgba(46,168,100,.3);}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 20px rgba(46,168,100,.35);background:var(--green-deep);}
.btn-ghost{background:#fff;color:var(--green-deep);border:2px solid var(--green);}
.btn-ghost:hover{background:var(--green-soft);}
.btn .arrow{transition:transform .3s;}
.btn:hover .arrow{transform:translateX(4px);}

/* ===== hero ===== */
.hero{position:relative;overflow:hidden;padding:72px 4vw 96px;}
.hero .inner{width:min(1080px,100%);margin:0 auto;display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center;}
.hero-eyebrow{
  display:inline-flex;align-items:center;gap:12px;
  font-family:var(--maru);font-weight:700;font-size:12.5px;letter-spacing:.24em;color:var(--sun-deep);margin-bottom:20px;
}
.hero-eyebrow::before{content:"";width:30px;height:4px;border-radius:4px;background:linear-gradient(90deg,var(--sun) 0 50%,var(--green) 50% 100%);}
.hero h1{
  font-family:var(--maru);font-weight:900;
  font-size:clamp(27px,3.6vw,42px);line-height:1.85;letter-spacing:.06em;
}
.hero h1 .g{color:var(--green-deep);}
.hero h1 .marker{background:linear-gradient(transparent 62%,var(--sun-soft) 62%);padding:0 2px;}
.hero p.lead{margin-top:24px;color:var(--ink-soft);font-size:15px;line-height:2.2;letter-spacing:.04em;max-width:38em;}
.hero-cta{margin-top:36px;display:flex;gap:14px;flex-wrap:wrap;}
.hero-mark{position:relative;display:flex;justify-content:center;}
.hero-mark img{width:min(360px,80%);filter:drop-shadow(0 16px 32px rgba(69,70,63,.14));animation:float 5s ease-in-out infinite;}
@keyframes float{0%,100%{transform:translateY(0);}50%{transform:translateY(-12px);}}
.hero-dot{position:absolute;border-radius:50%;z-index:-1;}
.hd1{width:280px;height:280px;background:var(--green-soft);top:-40px;right:-20px;}
.hd2{width:150px;height:150px;background:var(--sun-soft);bottom:-30px;left:6%;}

/* ===== section base ===== */
section{padding:92px 4vw;}
.container{width:min(1080px,100%);margin:0 auto;}
.sec-head{text-align:center;margin-bottom:52px;}
.sec-en{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.32em;color:var(--sun-deep);text-transform:uppercase;margin-bottom:8px;}
.sec-title{
  font-family:var(--maru);font-weight:900;
  font-size:clamp(22px,2.8vw,31px);letter-spacing:.08em;line-height:1.7;
  position:relative;display:inline-block;padding-bottom:18px;
}
.sec-title::after{content:"";position:absolute;left:50%;bottom:0;transform:translateX(-50%);
  width:72px;height:7px;border-radius:7px;
  background:linear-gradient(90deg,var(--sun) 0 50%,var(--green) 50% 100%);}
.sec-note{margin-top:14px;color:var(--ink-soft);font-size:14px;letter-spacing:.03em;}

/* ===== philosophy ===== */
.philo{background:#fff;border-top:1.5px solid var(--line);border-bottom:1.5px solid var(--line);}
.philo-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:60px;align-items:center;}
.philo blockquote{
  font-family:var(--maru);font-weight:700;
  font-size:clamp(19px,2.1vw,25px);line-height:2.2;letter-spacing:.09em;
  border-left:7px solid;border-image:linear-gradient(var(--sun),var(--green)) 1;
  padding-left:26px;
}
.philo .body p{color:var(--ink-soft);margin-bottom:1.3em;font-size:14.5px;letter-spacing:.04em;}
.philo .body p b{color:var(--ink);}

/* ===== services ===== */
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.svc-card{
  background:#fff;border:1.5px solid var(--line);border-radius:26px;
  padding:36px 30px 32px;text-align:center;
  display:flex;flex-direction:column;position:relative;overflow:hidden;
  transition:transform .22s,box-shadow .22s,border-color .22s;
}
.svc-card::before{content:"";position:absolute;top:0;left:0;right:0;height:7px;
  background:linear-gradient(90deg,var(--sun) 0 50%,var(--green) 50% 100%);}
.svc-card:hover{transform:translateY(-6px);box-shadow:0 18px 36px rgba(69,70,63,.12);border-color:var(--green-line);}
.svc-card .logo{width:170px;height:170px;margin:6px auto 14px;}
.svc-card .logo img{width:100%;height:100%;object-fit:contain;transition:transform .3s;}
.svc-card:hover .logo img{transform:scale(1.05);}
.svc-card .cat{font-size:11.5px;font-weight:700;letter-spacing:.16em;color:var(--sun-deep);margin-bottom:4px;}
.svc-card h3{font-family:var(--maru);font-weight:700;font-size:19px;letter-spacing:.05em;color:var(--ink);margin-bottom:12px;}
.svc-card p{font-size:13.5px;line-height:2;color:var(--ink-soft);flex:1;text-align:left;}
.svc-card .area{margin:14px 0 18px;font-size:12px;letter-spacing:.08em;color:var(--ink-soft);}
.svc-card .go{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:var(--maru);font-weight:700;font-size:13.5px;letter-spacing:.1em;color:var(--green-deep);
  border:2px solid var(--green);border-radius:999px;padding:10px 26px;
  transition:background .25s,color .25s;
}
.svc-card:hover .go{background:var(--green);color:#fff;}

/* ===== history ===== */
.history{background:#fff;border-top:1.5px solid var(--line);border-bottom:1.5px solid var(--line);}
.timeline{position:relative;padding-left:34px;max-width:720px;margin:0 auto;}
.timeline::before{content:"";position:absolute;left:7px;top:8px;bottom:8px;width:2px;border-radius:2px;background:var(--line);}
.tl-item{position:relative;padding-bottom:32px;}
.tl-item:last-child{padding-bottom:0;}
.tl-item::before{
  content:"";position:absolute;left:-32px;top:9px;width:13px;height:13px;border-radius:50%;
  background:#fff;border:3px solid var(--green);
}
.tl-item:nth-child(even)::before{border-color:var(--sun);}
.tl-year{font-family:var(--maru);font-weight:900;font-size:17px;letter-spacing:.06em;color:var(--green-deep);font-feature-settings:"tnum";}
.tl-year small{font-size:12px;color:var(--ink-soft);font-weight:500;margin-left:10px;letter-spacing:.1em;}
.tl-item p{color:var(--ink-soft);font-size:14px;letter-spacing:.04em;margin-top:2px;}

/* ===== company ===== */
.company table{width:100%;max-width:840px;margin:0 auto;border-collapse:collapse;}
.company th,.company td{
  text-align:left;vertical-align:top;
  padding:19px 8px;border-bottom:1px dashed var(--line);
  font-size:14.5px;letter-spacing:.04em;line-height:2;
}
.company tr:last-child th,.company tr:last-child td{border-bottom:none;}
.company th{width:10em;font-family:var(--maru);font-weight:700;color:var(--green-deep);white-space:nowrap;}
.company td{color:var(--ink-soft);}
.company td .sub{display:block;font-size:12.5px;color:#9A9B92;margin-top:2px;}

/* ===== contact ===== */
.contact{text-align:center;background:var(--sun-soft);}
.big-tel{display:flex;justify-content:center;gap:48px;flex-wrap:wrap;margin:8px 0 30px;}
.big-tel .place{font-family:var(--maru);font-weight:700;font-size:13.5px;color:var(--sun-deep);letter-spacing:.14em;margin-bottom:2px;}
.big-tel .num{font-family:var(--maru);font-weight:900;font-size:clamp(23px,3vw,31px);letter-spacing:.03em;color:var(--green-deep);}
.big-tel .num a:hover{color:var(--green);}
.big-tel .sub{font-size:12px;color:var(--ink-soft);}

/* ===== footer ===== */
footer{background:#3B4A40;color:rgba(255,255,255,.8);padding:44px 4vw 26px;font-size:12.5px;text-align:center;line-height:2;}
footer .flogo{width:min(320px,70%);margin:0 auto 18px;background:#fff;border-radius:16px;padding:14px 22px;}
footer .fnav{display:flex;justify-content:center;gap:24px;flex-wrap:wrap;margin:8px 0 16px;}
footer .fnav a{color:rgba(255,255,255,.78);}
footer .fnav a:hover{color:var(--sun);}
footer .copy{color:rgba(255,255,255,.5);margin-top:14px;letter-spacing:.06em;}

/* ===== reveal ===== */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease;}
.reveal.on{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none;}
  .hero-mark img{animation:none;}
  html{scroll-behavior:auto;}
}

/* ===== responsive ===== */
@media (max-width:960px){
  .svc-grid{grid-template-columns:1fr;}
  .philo-grid{grid-template-columns:1fr;gap:36px;}
}
@media (max-width:720px){
  nav.gnav{display:none;}
  header.open nav.gnav{
    display:flex;flex-direction:column;gap:0;
    position:absolute;top:100%;left:0;right:0;
    background:var(--cream);border-bottom:1px solid var(--line);
    padding:8px 4vw 18px;
  }
  header.open nav.gnav a{padding:13px 0;border-bottom:1px dashed var(--line);font-size:14px;}
  .menu-btn{
    display:block;background:#fff;border:1.5px solid var(--line);
    color:var(--green-deep);font-family:var(--maru);font-weight:700;
    font-size:12px;letter-spacing:.12em;padding:8px 15px;border-radius:999px;cursor:pointer;
  }
  .hero{padding:48px 6vw 72px;}
  .hero .inner{grid-template-columns:1fr;gap:44px;}
  .hero-mark img{width:min(240px,60%);}
  section{padding:64px 6vw;}
}
/* ===== お問い合わせフォーム ===== */
.c-form{max-width:660px;margin:0 auto;background:#fff;border:1.5px solid var(--line);border-radius:26px;padding:38px 40px;}
.form-row{margin-bottom:22px;}
.form-row label{display:block;font-family:var(--maru);font-weight:700;font-size:14px;margin-bottom:8px;letter-spacing:.03em;color:var(--green-deep);}
.req{display:inline-block;background:var(--sun-deep);color:#fff;font-size:10.5px;font-weight:700;border-radius:6px;padding:1px 8px;margin-left:8px;vertical-align:middle;letter-spacing:.06em;}
.form-row input,.form-row select,.form-row textarea{
  width:100%;font-family:var(--sans);font-size:15px;color:var(--ink);
  background:var(--cream);border:1.5px solid var(--line);border-radius:14px;padding:12px 16px;
  transition:border-color .2s,background .2s;}
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{outline:none;border-color:var(--green);background:#fff;}
.form-row .ng{border-color:var(--sun-deep);background:var(--sun-soft);}
.form-row .hint{display:block;font-size:11.5px;color:var(--ink-soft);margin-top:5px;line-height:1.7;}
.hp-field{position:absolute;left:-9999px;top:-9999px;height:0;overflow:hidden;}
.form-privacy{font-size:12px;color:var(--ink-soft);text-align:center;margin:26px 0 18px;line-height:1.9;}
.form-submit{text-align:center;}
.form-submit .btn{min-width:260px;font-size:15.5px;padding:16px 40px;}
.form-error{margin-top:16px;text-align:center;color:var(--sun-deep);font-weight:700;font-size:13.5px;}
.breadcrumb{padding:14px 4vw 0;font-size:12px;color:var(--ink-soft);}
.breadcrumb a{color:var(--green-deep);}
@media (max-width:720px){.c-form{padding:28px 22px;}}
