:root {
  --page-progress: 0;
  --scroll-offset: 0px;
  --green: #07513a;
  --orange: #f29a25;
  --ink: #15201c;
  --paper: #f4f4ef;
  --muted: #69746f;
  font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", "YuGothic", "Noto Sans JP", system-ui, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); line-height: 1.8; text-rendering: optimizeLegibility; }
a { color: inherit; text-decoration: none; }
img { display: block; width: 100%; max-width: 100%; }
h1, h2, h3, p { margin: 0; overflow-wrap: anywhere; }
h1, h2, h3 { letter-spacing: 0; }
h1 { font-size: clamp(2.1rem, 3.8vw, 3.25rem); line-height: 1.18; }
h2 { font-size: clamp(1.55rem, 2.55vw, 2.4rem); line-height: 1.35; }
h3 { font-size: clamp(1.08rem, 1.4vw, 1.36rem); line-height: 1.4; }
ul { margin: 0; padding: 0; list-style: none; }
figure, dl, dd { margin: 0; }
button, a { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 2px solid var(--orange); outline-offset: 4px; }
.kicker { color: var(--orange); font-size: .72rem; font-weight: 900; letter-spacing: .08em; }
.plan-chip { display: inline-flex; padding: 5px 10px; font-size: .66rem; font-weight: 900; letter-spacing: .06em; }
.logo { display: inline-flex; align-items: center; gap: 11px; }
.logo b { display: grid; place-items: center; width: 40px; height: 40px; color: #fff; background: var(--green); }
.logo span, .logo small { display: block; line-height: 1.25; }
.logo span { font-weight: 900; }
.logo small { margin-top: 2px; font-size: .65rem; opacity: .6; }
.reveal { opacity: 0; transform: translateY(28px); transition: opacity .72s ease, transform .72s cubic-bezier(.2,.75,.2,1); }
.reveal.is-visible { opacity: 1; transform: translateY(0); }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

@media (max-width: 640px) {
  h1 { font-size: clamp(1.9rem, 8.2vw, 2.2rem); }
  h2 { font-size: clamp(1.4rem, 6vw, 1.85rem); }
}
