:root{
  --blue-900:#0f3a78;
  --blue-800:#15498f;
  --blue-700:#1d5fb4;
  --blue-600:#2a73d0;
  --blue-500:#3b86e0;
  --blue-100:#e3edfb;
  --blue-50:#f3f7fd;
  --yellow:#fdc934;
  --yellow-700:#e9b412;
  --ink-900:#16263d;
  --ink-700:#34465f;
  --ink-500:#6c7c93;
  --ink-300:#aab5c5;
  --line:#dfe6f1;
  --bg:#f1f5fb;
  --white:#fff;
  --radius:14px;
  --radius-lg:20px;
  --shadow-sm:0 1px 2px rgba(15,58,120,.06), 0 2px 6px rgba(15,58,120,.05);
  --shadow-md:0 6px 24px rgba(15,58,120,.10);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic","Meiryo",system-ui,sans-serif;
  color:var(--ink-900);
  background:var(--bg);
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  font-feature-settings:"palt";
  letter-spacing:.01em;
}
.page{
  max-width:480px;
  margin:0 auto;
  background:var(--white);
  min-height:100vh;
  box-shadow:0 0 40px rgba(15,58,120,.06);
  overflow:hidden;
}
.section{padding:44px 22px}
.section--tight{padding:32px 22px}
h1,h2,h3,h4,p,ul,ol{margin:0}
ul,ol{padding:0;list-style:none}
img{max-width:100%}

/* ==== HERO ==== */
.hero{
  padding:22px 22px 28px;
  background:linear-gradient(180deg,#fff 0%,#fff 60%,var(--blue-50) 100%);
}
.hero__topbar{
  display:flex;
  flex-direction:row;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.brand{
  font-weight:900;
  font-size:18px;
  color:var(--blue-800);
  letter-spacing:.02em;
}
.pill{
  background:var(--blue-700);
  color:#fff;
  font-size:11px;
  font-weight:700;
  padding:6px 12px;
  border-radius:999px;
  white-space:nowrap;
}
.hero__main{
  display:grid;
  grid-template-columns:1fr 40%;
  gap:14px;
  align-items:start;
  margin-top:18px;
}
.hero__copy{
  min-width:0;
}
.hero__copy h1{
  font-size:26px;
  line-height:1.35;
  font-weight:900;
  color:var(--ink-900);
  letter-spacing:-.01em;
}
.hero__copy h1 .em{color:var(--blue-700)}
.hero__sub{
  margin-top:14px;
  font-size:15px;
  font-weight:700;
  color:var(--ink-700);
  line-height:1.7;
}
.hero__desc{
  margin-top:8px;
  font-size:12px;
  font-weight:400;
  color:var(--ink-700);
  line-height:1.7;
}
.hero__illu{
  align-self:start;
}
.hero__illu img{
  display:block;
  width:100%;
  height:auto;
  object-fit:contain;
  object-position:center top;
}
.hero__bullets{
  margin-top:18px;
  display:flex;
  flex-direction:column;
  gap:8px;
}
.hero__bullets li{
  display:flex;
  align-items:center;
  gap:8px;
  font-size:14px;
  font-weight:500;
  color:var(--ink-700);
}
.check{
  flex:0 0 auto;
  width:18px;height:18px;border-radius:5px;
  background:var(--blue-700);
  display:inline-flex;align-items:center;justify-content:center;
}
.check svg{width:11px;height:11px;color:#fff}

/* ==== CTAs ==== */
.cta-stack{margin-top:22px;display:flex;flex-direction:column;gap:10px}
.btn{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  width:100%;
  padding:18px 16px;
  border-radius:12px;
  font-weight:900;
  font-size:16px;
  text-decoration:none;
  line-height:1.3;
  position:relative;
  transition:transform .15s ease,box-shadow .15s ease,background .15s;
  border:none;
  cursor:pointer;
  text-align:center;
}
.btn__arrow{
  position:absolute;
  right:16px;
  top:50%;
  transform:translateY(-50%);
  width:18px;height:18px;
}
.btn--primary{
  background:var(--yellow);
  color:var(--blue-900);
  box-shadow:0 4px 0 var(--yellow-700),0 8px 18px rgba(253,201,52,.35);
}
.btn--primary:active{transform:translateY(2px);box-shadow:0 2px 0 var(--yellow-700),0 4px 10px rgba(253,201,52,.35)}
.btn--secondary{
  background:#fff;
  color:var(--blue-800);
  border:2px solid var(--blue-700);
}
.cta-note{
  margin-top:12px;
  font-size:12px;
  color:var(--ink-500);
  text-align:center;
  line-height:1.6;
}

/* ==== SECTION HEADER ==== */
.sec-head{
  text-align:center;
  margin:0 auto 22px;
}
.sec-head__title{
  display:inline-block;
  font-size:20px;
  font-weight:900;
  color:var(--blue-800);
  padding:8px 22px;
  background:var(--blue-100);
  border-radius:999px;
  letter-spacing:.02em;
}
.sec-head__desc{
  margin-top:14px;
  font-size:13.5px;
  color:var(--ink-700);
  line-height:1.7;
  text-align:center;
}

/* ==== MATERIALS SECTION ==== */
.materials{
  background:var(--blue-50);
}
.mat-card{
  background:#fff;
  border-radius:var(--radius-lg);
  padding:18px 16px 20px;
  box-shadow:var(--shadow-sm);
  border:1px solid var(--line);
}
.mat-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.mat-col__head{
  text-align:center;
  font-size:12.5px;
  font-weight:700;
  color:#fff;
  padding:7px 6px;
  border-radius:8px;
  margin-bottom:12px;
}
.mat-col__head--blue{background:var(--blue-700)}
.mat-col__head--yellow{background:var(--yellow);color:var(--blue-900)}
.mat-list{display:flex;flex-direction:column;gap:10px}
.mat-list li{
  display:flex;
  align-items:flex-start;
  gap:8px;
  font-size:12.5px;
  color:var(--ink-900);
  line-height:1.5;
}
.mat-list .ico{
  flex:0 0 auto;
  width:24px;height:24px;
  border-radius:6px;
  background:var(--blue-100);
  color:var(--blue-700);
  display:inline-flex;align-items:center;justify-content:center;
  margin-top:1px;
}
.mat-list .ico svg{width:14px;height:14px}
.mat-list .ico--warm{background:#fff5d6;color:#caa00f}
.mat-note{
  text-align:center;
  margin-top:18px;
  font-size:13px;
  color:var(--ink-700);
  font-weight:500;
}

/* ==== PRICING ==== */
.pricing-list{display:flex;flex-direction:column;gap:10px}
.price{
  display:grid;
  grid-template-columns:96px 1fr;
  gap:12px;
  align-items:stretch;
  background:#fff;
  border:1px solid var(--line);
  border-radius:14px;
  padding:12px;
  box-shadow:var(--shadow-sm);
}
.price__tag{
  background:var(--blue-700);
  color:#fff;
  border-radius:10px;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  font-weight:700;
  font-size:13px;
  padding:6px 4px;
  line-height:1.35;
}
.price--featured .price__tag{background:var(--blue-800)}
.price__body{
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:4px;
}
.price__amount{
  font-size:22px;
  font-weight:900;
  color:var(--ink-900);
  line-height:1.1;
  letter-spacing:-.01em;
}
.price__amount .yen{font-size:14px;font-weight:700;margin-left:1px}
.price__detail{
  font-size:12px;
  color:var(--ink-700);
  line-height:1.55;
}
.price__detail .strong{color:var(--ink-900);font-weight:700}
.price--rush .price__tag{background:#f7a325}
.pricing-notes{
  margin-top:18px;
  font-size:11.5px;
  color:var(--ink-700);
  line-height:1.7;
}
.pricing-notes li{padding-left:1em;text-indent:-1em;margin-bottom:4px}

/* ==== STEPS ==== */
.steps{background:var(--blue-50)}
.step-list{display:flex;flex-direction:column;gap:8px}
.step{
  display:grid;
  grid-template-columns:36px 28px 1fr;
  gap:12px;
  align-items:center;
  background:#fff;
  padding:14px 16px;
  border-radius:12px;
  box-shadow:var(--shadow-sm);
  border:1px solid var(--line);
}
.step__num{
  width:30px;height:30px;border-radius:50%;
  background:var(--blue-700);color:#fff;
  display:flex;align-items:center;justify-content:center;
  font-weight:900;font-size:14px;
}
.step__ico{
  width:26px;height:26px;
  color:var(--blue-700);
  display:flex;align-items:center;justify-content:center;
}
.step__ico svg{width:22px;height:22px}
.step__text{font-size:14px;font-weight:500;color:var(--ink-900)}
.step-note{
  margin-top:16px;
  text-align:center;
  font-size:12.5px;
  color:var(--ink-700);
  line-height:1.7;
}

/* ==== FAQ ==== */
.faq-list{display:flex;flex-direction:column;gap:10px}
details.faq{
  background:#fff;
  border:1px solid var(--line);
  border-radius:12px;
  box-shadow:var(--shadow-sm);
  overflow:hidden;
}
details.faq[open]{border-color:var(--blue-500)}
details.faq summary{
  list-style:none;
  cursor:pointer;
  padding:14px 44px 14px 14px;
  display:grid;
  grid-template-columns:28px 1fr;
  gap:10px;
  align-items:center;
  font-size:14px;
  font-weight:700;
  color:var(--ink-900);
  position:relative;
  line-height:1.5;
}
details.faq summary::-webkit-details-marker{display:none}
.faq__q{
  width:24px;height:24px;border-radius:50%;
  background:var(--blue-100);color:var(--blue-700);
  display:flex;align-items:center;justify-content:center;
  font-weight:900;font-size:13px;
}
.faq__chev{
  position:absolute;
  right:14px;top:50%;
  transform:translateY(-50%);
  width:14px;height:14px;
  color:var(--blue-700);
  transition:transform .2s;
}
details.faq[open] .faq__chev{transform:translateY(-50%) rotate(180deg)}
.faq__a{
  padding:0 14px 16px 52px;
  font-size:13.5px;
  color:var(--ink-700);
  line-height:1.7;
}

/* ==== NOTES SECTION ==== */
.notes-card{
  background:var(--blue-50);
  border:1px solid var(--blue-100);
  border-radius:var(--radius-lg);
  padding:18px 18px 20px;
}
.notes-card .sec-head{margin-bottom:14px}
.notes-card .sec-head__title{background:#fff;border:1px solid var(--blue-100)}
.notes-list{display:flex;flex-direction:column;gap:10px}
.notes-list li{
  display:grid;
  grid-template-columns:20px 1fr;
  gap:10px;
  align-items:flex-start;
  font-size:13px;
  color:var(--ink-900);
  line-height:1.65;
}
.notes-list .check{margin-top:3px}

/* ==== FINAL CTA ==== */
.final{
  background:linear-gradient(160deg,var(--blue-800) 0%,var(--blue-900) 100%);
  color:#fff;
  padding:36px 22px 40px;
  border-radius:18px 18px 0 0;
  margin-top:8px;
}
.final__head{
  display:grid;
  grid-template-columns:96px 1fr;
  gap:14px;
  align-items:center;
  margin-bottom:22px;
}
.final__avatar{
  width:96px;height:96px;border-radius:50%;
  background:#fff;
  overflow:hidden;
  border:3px solid rgba(255,255,255,.4);
}
.final__avatar img{width:100%;height:100%;display:block;object-fit:cover}
.final__title{
  font-size:21px;
  font-weight:900;
  line-height:1.45;
  letter-spacing:-.005em;
}
.final .btn--secondary{
  background:transparent;
  color:#fff;
  border-color:#fff;
}
.final__note{
  margin-top:16px;
  text-align:center;
  line-height:1.7;
}
.final__note .price-line{
  font-size:14px;
  font-weight:700;
  color:#fff;
  margin-bottom:4px;
}
.final__note .price-line .em{color:var(--yellow)}
.final__note .meta{
  font-size:11.5px;
  color:rgba(255,255,255,.75);
}

/* ==== WORRIES SECTION ==== */
.worries{background:#fff}
.worries__illu{
  width:170px;
  aspect-ratio:1/1;
  margin:0 auto 22px;
}
.worries__illu img{
  width:100%;height:100%;
  display:block;
  object-fit:contain;
  background:transparent;
}
.worry-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:14px;
  box-shadow:var(--shadow-sm);
  padding:4px 18px;
}
.worry-list{display:flex;flex-direction:column}
.worry-list li{
  display:grid;
  grid-template-columns:20px 1fr;
  gap:12px;
  align-items:center;
  padding:14px 4px;
  font-size:14px;
  color:var(--ink-900);
  border-top:1px solid var(--line);
  line-height:1.5;
}
.worry-list li:first-child{border-top:none}
.worry-list .wico{
  width:20px;height:20px;
  color:var(--blue-700);
  display:inline-flex;align-items:center;justify-content:center;
}
.worry-list .wico svg{width:18px;height:18px}

/* ==== TRUST SECTION ==== */
.trust{background:var(--blue-50)}
.trust__badge{
  width:200px;
  aspect-ratio:1/1;
  margin:4px auto 26px;
  position:relative;
}
.trust__badge img{
  width:100%;height:100%;
  display:block;
  object-fit:contain;
  background:transparent;
}
.trust__badge-inner{
  position:absolute;
  inset:0;
  z-index:2;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;
  padding:0 10px;
  text-align:center;
  pointer-events:none;
}
.trust__badge-label{
  font-size:13px;
  font-weight:700;
  color:var(--blue-700);
  letter-spacing:.06em;
}
.trust__badge-line{
  font-size:13px;
  font-weight:700;
  color:var(--ink-900);
  line-height:1.4;
  margin-top:4px;
}
.trust__badge-years{
  display:flex;
  align-items:baseline;
  gap:2px;
  margin-top:2px;
  color:var(--blue-800);
}
.trust__badge-years .num{
  font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size:46px;
  font-weight:900;
  line-height:1;
  letter-spacing:-.02em;
}
.trust__badge-years .unit{
  font-size:18px;
  font-weight:900;
  line-height:1;
}
.trust-cards{
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:8px;
}
.trust-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:14px;
  box-shadow:var(--shadow-sm);
  padding:14px 12px 16px;
  display:flex;
  flex-direction:column;
  gap:10px;
}
.trust-card__ico{
  width:36px;height:36px;
  border-radius:10px;
  background:var(--blue-100);
  color:var(--blue-700);
  display:inline-flex;align-items:center;justify-content:center;
}
.trust-card__ico svg{width:20px;height:20px}
.trust-card__title{
  font-size:13px;
  font-weight:900;
  color:var(--ink-900);
  line-height:1.4;
}
.trust-card__desc{
  font-size:11.5px;
  color:var(--ink-700);
  line-height:1.6;
}

/* ==== FOOTER ==== */
.footer{
  background:var(--blue-900);
  color:rgba(255,255,255,.7);
  text-align:center;
  padding:18px 20px 28px;
  font-size:11px;
}
.footer .brand{color:#fff;display:block;margin-bottom:6px}
