:root{--cream:#FCFBF4;--sage:#D3E0CF;--sage2:#E7EFE4;--green:#1E4D3A;--blush:#EBC3B5;--ink:#3A3A3A}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--cream);color:var(--ink);font-family:"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;font-weight:300;line-height:1.8;overflow-x:hidden}
.lp{max-width:560px;margin:0 auto;background:var(--cream)}
.part{position:relative;line-height:0}
.part img{display:block;width:100%;height:auto;aspect-ratio:1024/1792}
.hit{position:absolute;display:block;border-radius:999px}
.hit:focus-visible{outline:3px solid var(--blush);outline-offset:2px}
h2{word-break:keep-all;text-wrap:balance;line-break:strict}
.price{padding:56px 6% 64px;background:var(--cream);line-height:1.8}
.price .label{font-size:14px;color:var(--green);letter-spacing:.1em}
.price h2{font-weight:300;font-size:28px;color:var(--green);margin:4px 0 24px}
.plans{list-style:none;display:grid;gap:12px}
.plans li{display:grid;grid-template-columns:72px 1fr auto;align-items:center;gap:12px;background:#fff;border:1px solid var(--green);border-radius:16px;padding:14px 18px}
.plans .n{font-size:32px;color:var(--green);font-weight:200;line-height:1}
.plans .n small{font-size:13px;margin-left:2px}
.plans .name{font-size:15px;color:var(--green)}
.plans .yen{font-size:16px;color:var(--ink);white-space:nowrap}
.terms{margin-top:24px;display:grid;grid-template-columns:7.5em 1fr;gap:10px 16px;font-size:14px;background:var(--sage2);border-radius:16px;padding:18px}
.terms dt{color:var(--green)}
.foot{text-align:center;padding:40px 16px 112px;background:var(--sage);color:var(--green);font-size:13px}
.foot .brand{font-size:16px;margin-bottom:4px}
.foot .links{margin-top:12px;display:flex;gap:20px;justify-content:center;flex-wrap:wrap}
.foot a{color:var(--green)}
.foot .copy{margin-top:16px;font-size:11px}
.float-cta{position:fixed;left:50%;bottom:16px;transform:translate(-50%,140%);width:min(92vw,480px);text-align:center;background:var(--green);color:#fff;text-decoration:none;font-size:16px;padding:14px 20px;border-radius:999px;box-shadow:0 6px 18px rgba(30,77,58,.25);transition:transform .4s ease;z-index:10}
.float-cta.show{transform:translate(-50%,0)}
.js .fade{opacity:0;transform:translateY(16px);transition:opacity .8s ease,transform .8s ease}
.js .fade.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.js .fade{opacity:1;transform:none;transition:none}.float-cta{transition:none}html{scroll-behavior:auto}}

/* ===== motion ===== */
/* scroll progress: a thin ridge line with a small mountain riding on it */
.progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:20;pointer-events:none}
.progress .bar{position:absolute;inset:0;background:var(--green);transform-origin:0 50%;transform:scaleX(var(--p,0))}
.progress .peak{position:absolute;top:2px;left:calc(var(--p,0) * 100%);width:22px;height:11px;transform:translateX(-50%);opacity:.9}

/* FV intro */
.js .intro img{animation:introImg 1.4s cubic-bezier(.2,.7,.2,1) both}
@keyframes introImg{from{opacity:0;transform:scale(1.035);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}

/* section reveal: a soft wipe upward */
.js .part.fade{opacity:1;transform:none;clip-path:inset(12% 0 0 0 round 0);transition:clip-path 1.1s cubic-bezier(.2,.7,.2,1)}
.js .part.fade img{opacity:0;transform:translateY(24px);transition:opacity 1s ease,transform 1.1s cubic-bezier(.2,.7,.2,1)}
.js .part.fade.in{clip-path:inset(0 0 0 0)}
.js .part.fade.in img{opacity:1;transform:none}

/* number markers: rings that ripple outward */
.ring{position:absolute;left:var(--x);top:var(--y);width:var(--d);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none}
.ring::before,.ring::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--green);opacity:0}
.js .intro .ring::before,.js .part.in .ring::before{animation:ripple 3.2s ease-out var(--delay) infinite}
.js .intro .ring::after,.js .part.in .ring::after{animation:ripple 3.2s ease-out calc(var(--delay) + .5s) infinite}
@keyframes ripple{0%{transform:scale(1);opacity:.55}70%,100%{transform:scale(2);opacity:0}}

/* buttons: a light that sweeps across */
.shine{overflow:hidden;isolation:isolate}
.shine::after{content:"";position:absolute;top:0;bottom:0;left:-40%;width:28%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.45),transparent);transform:skewX(-18deg);animation:sweep 3.6s ease-in-out 1.6s infinite;pointer-events:none}
@keyframes sweep{0%{left:-40%}35%,100%{left:120%}}
.hit{transition:transform .25s ease,box-shadow .25s ease}
.hit:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(30,77,58,.22)}
.hit:active{transform:translateY(0)}

/* price cards: one by one */
.js .price .plans li,.js .price .terms{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
.js .price.in .plans li,.js .price.in .terms{opacity:1;transform:none}
.js .price.in .plans li:nth-child(2){transition-delay:.12s}
.js .price.in .plans li:nth-child(3){transition-delay:.24s}
.js .price.in .terms{transition-delay:.38s}
.js .price.fade{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  .js .intro img,.ring::before,.ring::after,.shine::after{animation:none!important}
  .js .part.fade,.js .part.fade img,.js .price .plans li,.js .price .terms{clip-path:none;opacity:1;transform:none;transition:none}
  .progress .peak{display:none}
}

/* monitor price & DM note */
.price .monitor{font-size:14px;color:var(--ink);margin:-12px 0 18px;line-height:1.7}
.price .monitor .tag{display:inline-block;background:var(--blush);color:var(--green);font-size:12px;padding:2px 10px;border-radius:999px;margin-right:8px;vertical-align:1px}
.plans .yen{font-size:20px;color:var(--green);font-weight:300}
.plans .yen small{font-size:11px;color:var(--ink);margin-left:2px}
.dm{padding:4px 6% 40px;background:var(--cream);text-align:center;font-size:14px;line-height:1.9;color:var(--ink)}
.dm a{color:var(--green)}
.plans li{grid-template-columns:68px 1fr;grid-template-areas:"n name" "n yen";row-gap:2px;align-items:center}
.plans .n{grid-area:n}
.plans .name{grid-area:name;word-break:keep-all;line-height:1.5}
.plans .yen{grid-area:yen;line-height:1.4}
.terms dd{overflow-wrap:anywhere}
.dm .dm-link{display:inline-block;margin-top:6px;padding:6px 18px;border:1px solid var(--green);border-radius:999px;text-decoration:none;white-space:nowrap}
@media (max-width:480px){
  .terms{grid-template-columns:1fr;gap:2px}
  .terms dt{font-size:13px;margin-top:10px}
  .terms dt:first-child{margin-top:0}
}
