/* ===== Design Tokens ===== */
:root{
  --bg:#ffffff;
  --bg-2:#f3f6f9;        /* 副背景 */
  --bg-3:#ffffff;        /* カード（線で区切る） */
  --line:#dde4ec;
  --line-soft:#eef2f6;
  --text:#1f2733;        /* 墨 */
  --text-dim:#5d6b7c;
  --navy:#1a2e4a;        /* 主色：紺 */
  --navy-dark:#13223a;
  --gold:#b8924a;        /* アクセント：金 */
  --gold-dark:#9d7b3a;
  --gold-soft:#f5edda;
  --white:#ffffff;
  --radius:14px;
  --shadow:0 12px 30px rgba(26,46,74,.08);
  --shadow-lg:0 18px 48px rgba(26,46,74,.12);
  --container:1120px;
  --ff-jp:"Noto Sans JP",system-ui,sans-serif;
  --ff-head:"Shippori Mincho","Noto Serif JP",serif; /* 見出し：明朝（和・上品） */
  --ff-en:"Montserrat",sans-serif;
}

/* ===== Reset ===== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  font-family:var(--ff-jp);
  background:var(--bg);
  color:var(--text);
  line-height:1.8;
  font-size:16px;
  letter-spacing:.02em;
  overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
strong,b{font-weight:700}

.container{width:100%;max-width:var(--container);margin:0 auto;padding:0 24px}

/* 金の下線ハイライトで強調 */
.mark{
  color:var(--navy);position:relative;white-space:nowrap;font-weight:700;
  background:linear-gradient(transparent 62%,rgba(184,146,74,.38) 62%);
  padding:0 .08em;
}
.sp-only{display:none}

/* ===== Buttons ===== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  font-family:var(--ff-jp);font-weight:700;line-height:1;
  padding:14px 28px;border-radius:999px;border:2px solid transparent;
  cursor:pointer;transition:.25s ease;white-space:nowrap;
}
.btn--primary{background:var(--navy);color:#fff}
.btn--primary:hover{background:var(--navy-dark);transform:translateY(-2px);box-shadow:0 12px 26px rgba(26,46,74,.28)}
.btn--ghost{background:transparent;color:var(--navy);border-color:var(--line)}
.btn--ghost:hover{border-color:var(--gold);color:var(--gold-dark)}
.btn--lg{padding:18px 40px;font-size:1.05rem}
.btn--header{padding:11px 22px;background:var(--navy);color:#fff;font-size:.9rem}
.btn--header:hover{background:var(--navy-dark)}

/* ===== Header ===== */
.header{
  position:fixed;top:0;left:0;right:0;z-index:100;
  background:rgba(255,255,255,.88);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);transition:.3s;
}
.header__inner{display:flex;align-items:center;justify-content:space-between;height:68px}
.logo{display:flex;align-items:baseline;gap:8px}
.logo__en{font-family:var(--ff-en);font-weight:900;font-size:1.4rem;letter-spacing:.04em;color:var(--navy)}
.logo__en::first-letter{color:var(--gold)}
.logo__ja{font-size:.72rem;color:var(--text-dim);letter-spacing:.2em}
.gnav{display:flex;gap:28px;margin-left:auto;margin-right:28px}
.gnav a{font-size:.9rem;color:var(--text-dim);transition:.2s;position:relative}
.gnav a:hover{color:var(--gold-dark)}
.hamburger{display:none;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer;padding:6px}
.hamburger span{width:24px;height:2px;background:var(--navy);transition:.3s}
.hamburger.is-open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.hamburger.is-open span:nth-child(2){opacity:0}
.hamburger.is-open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ===== Hero ===== */
.hero{position:relative;padding:160px 0 90px;overflow:hidden;background:var(--bg)}
.hero__bg{
  position:absolute;inset:0;z-index:0;
  background:
    radial-gradient(circle at 82% 12%,rgba(184,146,74,.10),transparent 42%),
    radial-gradient(circle at 8% 92%,rgba(26,46,74,.06),transparent 40%),
    linear-gradient(180deg,#f7fafc,#ffffff);
}
.hero__bg::after{
  content:"";position:absolute;inset:0;
  background-image:linear-gradient(var(--navy) 1px,transparent 1px),linear-gradient(90deg,var(--navy) 1px,transparent 1px);
  background-size:64px 64px;opacity:.035;
}
.hero__inner{position:relative;z-index:1}
.hero__lead{
  display:inline-block;letter-spacing:.08em;
  color:var(--gold-dark);font-weight:700;font-size:.98rem;margin-bottom:22px;
  padding-left:16px;border-left:3px solid var(--gold);
}
.hero__title{
  font-family:var(--ff-head);
  font-size:clamp(2.3rem,5.6vw,4.2rem);font-weight:700;line-height:1.32;
  letter-spacing:.03em;margin-bottom:28px;color:var(--navy);
}
.hero__desc{font-size:clamp(1rem,2.2vw,1.2rem);color:var(--text-dim);margin-bottom:40px}
.hero__desc strong{color:var(--navy)}
.hero__cta{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:56px}
.hero__points{display:flex;gap:14px;flex-wrap:wrap}
.hero__points li{
  flex:1;min-width:150px;background:var(--white);
  border:1px solid var(--line);border-radius:var(--radius);
  padding:22px 24px;font-size:.9rem;color:var(--text-dim);
  box-shadow:var(--shadow);
}
.hero__points b{
  display:inline-block;font-family:var(--ff-en);font-size:2.6rem;font-weight:900;
  color:var(--gold);line-height:1;margin-right:4px;
}
.hero__points span{display:block;margin-top:6px}

/* ===== Section commons ===== */
.section{padding:96px 0;position:relative}
.section__head{margin-bottom:56px;position:relative}
.section__no{
  font-family:var(--ff-en);font-weight:800;font-size:.85rem;color:var(--gold-dark);
  letter-spacing:.2em;display:block;margin-bottom:14px;
}
.section__title{font-family:var(--ff-head);font-size:clamp(1.8rem,4.2vw,2.8rem);font-weight:700;line-height:1.4;letter-spacing:.03em;color:var(--navy)}
.section__sub{margin-top:18px;color:var(--text-dim);font-size:1.02rem}

/* ===== Problem ===== */
.problem{background:var(--bg-2)}
.problem__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.problem__card{
  background:var(--white);border:1px solid var(--line);border-radius:var(--radius);
  padding:32px 28px;transition:.3s;box-shadow:var(--shadow);
}
.problem__card:hover{border-color:var(--gold);transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.problem__num{
  font-family:var(--ff-en);font-weight:700;color:var(--gold-dark);
  font-size:.95rem;letter-spacing:.03em;margin-bottom:16px;
}
.problem__card h3{font-family:var(--ff-head);font-size:1.3rem;font-weight:700;margin-bottom:12px;line-height:1.55;color:var(--navy)}
.problem__card p{color:var(--text-dim);font-size:.95rem}
.problem__msg{
  margin-top:48px;text-align:center;font-family:var(--ff-head);font-size:clamp(1.1rem,2.4vw,1.45rem);
  line-height:1.95;padding:40px 36px;border-radius:var(--radius);letter-spacing:.02em;
  background:var(--white);border:1px solid var(--gold);box-shadow:var(--shadow);
}
.problem__msg strong{color:var(--gold-dark)}

/* ===== Service ===== */
.service__en{font-family:var(--ff-en);font-weight:800;color:var(--gold-dark);letter-spacing:.15em;font-size:.9rem;margin-bottom:10px}
.service__lead{font-size:clamp(1.05rem,2.4vw,1.35rem);line-height:2;margin-bottom:64px;text-align:center;color:var(--text)}
.service__lead p+p{margin-top:24px}
.service__lead b{color:var(--navy)}
.service__lead strong{
  background:linear-gradient(transparent 60%,rgba(184,146,74,.30) 60%);
  font-weight:700;padding:0 .1em;color:var(--navy);
}
.service__why{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.service__why-item{
  background:var(--white);border:1px solid var(--line);border-radius:var(--radius);
  padding:36px 28px;text-align:center;box-shadow:var(--shadow);
}
.service__why-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:56px;height:56px;border-radius:50%;background:var(--navy);color:var(--gold);
  font-size:1.6rem;font-weight:900;margin-bottom:20px;
}
.service__why-item h3{font-family:var(--ff-head);font-size:1.25rem;font-weight:700;margin-bottom:12px;color:var(--navy)}
.service__why-item p{color:var(--text-dim);font-size:.95rem;text-align:left}

/* ===== Program ===== */
.program{background:var(--bg)}
.program__item{
  display:grid;grid-template-columns:200px 1fr;gap:36px;align-items:start;
  padding:40px 0;border-top:1px solid var(--line);
}
.program__item:last-child{border-bottom:1px solid var(--line)}
.program__label{
  display:flex;flex-direction:column;align-items:flex-start;gap:8px;
  font-family:var(--ff-head);font-size:1.5rem;font-weight:700;color:var(--navy);
}
.program__label span{
  font-family:var(--ff-en);font-size:1rem;font-weight:800;color:#fff;
  background:var(--navy);border-radius:8px;padding:4px 12px;letter-spacing:.05em;
}
.program__body h3{font-family:var(--ff-head);font-size:clamp(1.4rem,3vw,1.85rem);font-weight:700;margin-bottom:14px;letter-spacing:.02em;color:var(--navy)}
.program__body h3 small{display:inline-block;font-size:.85rem;color:var(--gold-dark);font-weight:700;margin-left:10px;vertical-align:middle}
.program__body p{color:var(--text-dim);margin-bottom:20px}
.program__body p strong{color:var(--navy)}
.tags{display:flex;flex-wrap:wrap;gap:10px}
.tags li{
  background:var(--bg-2);border:1px solid var(--line);border-radius:999px;
  padding:7px 16px;font-size:.85rem;color:var(--navy);font-weight:500;
}

/* ===== Price ===== */
.price{background:var(--bg-2)}
.price__table-wrap{overflow-x:auto}
.price__table{
  width:100%;border-collapse:separate;border-spacing:0;min-width:680px;
  background:var(--white);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);
}
.price__table th,.price__table td{padding:18px 16px;text-align:center;border-bottom:1px solid var(--line)}
.price__table thead th{
  font-size:1.15rem;font-weight:900;background:var(--bg-2);color:var(--navy);
}
.price__table thead th:first-child{background:var(--white)}
.price__row-label{text-align:left;color:var(--text-dim);font-weight:500;font-size:.95rem;width:220px}
.price__num{font-family:var(--ff-en);font-size:2.2rem;font-weight:900;color:var(--gold-dark);margin-right:4px}
.price__fee td{background:var(--bg-2)}
.price__table td.ok{color:var(--gold-dark);font-size:1.3rem;font-weight:700}
.price__table td.ng{color:#b7c0cb;font-size:1.3rem}
.price__target td{font-size:.9rem;color:var(--text-dim)}
.is-recommend{position:relative;background:var(--gold-soft)!important}
thead .is-recommend{background:var(--navy)!important;color:#fff}
.price__badge{
  display:inline-block;margin-left:8px;font-size:.7rem;font-weight:700;
  background:var(--gold);color:#fff;padding:3px 10px;border-radius:999px;vertical-align:middle;
}
.price__note{margin-top:24px;font-size:.85rem;color:var(--text-dim)}

/* ===== Flow ===== */
.flow{background:var(--bg)}
.flow__list{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;counter-reset:step}
.flow__step{
  background:var(--white);border:1px solid var(--line);border-radius:var(--radius);
  padding:30px 24px;position:relative;box-shadow:var(--shadow);
}
.flow__n{font-family:var(--ff-en);font-weight:800;color:var(--gold-dark);font-size:.85rem;letter-spacing:.1em}
.flow__step h3{font-family:var(--ff-head);font-size:1.25rem;font-weight:700;margin:12px 0 10px;color:var(--navy)}
.flow__step p{color:var(--text-dim);font-size:.92rem}

/* ===== CTA band ===== */
.cta-band{
  background:linear-gradient(120deg,var(--navy),#22406a);
  color:#fff;text-align:center;padding:72px 0;position:relative;overflow:hidden;
}
.cta-band::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(circle at 85% 20%,rgba(184,146,74,.22),transparent 45%);
}
.cta-band__inner{position:relative;z-index:1}
.cta-band h2{font-family:var(--ff-head);font-size:clamp(1.6rem,4vw,2.5rem);font-weight:700;line-height:1.5;letter-spacing:.03em;margin-bottom:16px}
.cta-band h2 .mark,.cta-band .mark{color:#fff;background:linear-gradient(transparent 62%,rgba(184,146,74,.55) 62%)}
.cta-band p{font-size:1.05rem;margin-bottom:32px;font-weight:500;color:rgba(255,255,255,.85)}
.cta-band .btn--primary{background:var(--gold);color:var(--navy)}
.cta-band .btn--primary:hover{background:var(--gold-dark);color:#fff;box-shadow:0 12px 26px rgba(0,0,0,.25)}

/* ===== Contact / Form ===== */
.contact{background:var(--bg-2)}
.form{max-width:720px;margin:0 auto;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:48px 44px;box-shadow:var(--shadow)}
.form__row{margin-bottom:26px}
.form__row label{display:block;font-weight:700;margin-bottom:10px;font-size:.98rem;color:var(--navy)}
.req{
  display:inline-block;font-size:.7rem;font-weight:700;color:#fff;background:var(--gold);
  border-radius:4px;padding:2px 8px;margin-left:8px;vertical-align:middle;letter-spacing:.05em;
}
.form input,.form textarea{
  width:100%;background:var(--bg);border:1px solid var(--line);border-radius:10px;
  color:var(--text);font-family:var(--ff-jp);font-size:1rem;padding:14px 16px;transition:.2s;
}
.form input::placeholder,.form textarea::placeholder{color:#a8b2bd}
.form input:focus,.form textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(184,146,74,.18)}
.form input.is-invalid,.form textarea.is-invalid{border-color:#d8584a;box-shadow:0 0 0 3px rgba(216,88,74,.15)}
.form__err{color:#c8453a;font-size:.85rem;margin-top:6px;min-height:1em}
.form__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.form__submit{text-align:center;margin-top:36px}
.form__submit .btn{min-width:260px}
.form__privacy{margin-top:16px;font-size:.82rem;color:var(--text-dim)}
.form__result{text-align:center;margin-top:24px;font-weight:700;min-height:1.5em}
.form__result.is-ok{color:var(--gold-dark)}
.form__result.is-err{color:#c8453a}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none!important;box-shadow:none!important}

/* ===== Footer ===== */
.footer{background:var(--navy-dark);padding:48px 0;color:#fff}
.footer__inner{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.footer__brand .logo__en{font-size:1.3rem;color:#fff}
.footer__brand .logo__en::first-letter{color:var(--gold)}
.footer__brand p{color:rgba(255,255,255,.6);font-size:.85rem;margin-top:8px}
.footer__copy{color:rgba(255,255,255,.55);font-size:.82rem;font-family:var(--ff-en)}

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

/* ===== Responsive ===== */
@media(max-width:900px){
  .problem__grid,.service__why{grid-template-columns:1fr}
  .flow__list{grid-template-columns:repeat(2,1fr)}
  .program__item{grid-template-columns:1fr;gap:18px}
  .program__label{flex-direction:row;align-items:center}
}
@media(max-width:768px){
  .sp-only{display:inline}
  .gnav,.btn--header{display:none}
  .hamburger{display:flex}
  .gnav.is-open{
    display:flex;flex-direction:column;position:absolute;top:68px;left:0;right:0;
    background:var(--white);border-bottom:1px solid var(--line);
    margin:0;padding:20px 24px;gap:18px;box-shadow:var(--shadow);
  }
  .gnav.is-open a{font-size:1.05rem}
  .hero{padding:130px 0 70px}
  .hero__cta{flex-direction:column;align-items:stretch}
  .hero__cta .btn{width:100%}
  .section{padding:72px 0}
  .flow__list{grid-template-columns:1fr}
  .form{padding:32px 22px}
}
