:root{
  --ink:#0E0E0F;--paper:#F2EEE6;--red:#C41E24;--sub-d:#BFC2C7;--sub-l:#45484D;
  --gut:clamp(16px,5vw,64px);
  --mincho:"Shippori Mincho B1","Hiragino Mincho ProN","Yu Mincho",serif;
  --sans:"Noto Sans JP","Hiragino Sans","Yu Gothic",sans-serif;
  --num:"Barlow Condensed","Noto Sans JP",sans-serif;
}
*{box-sizing:border-box}
html{background:var(--ink)}
body{margin:0;background:var(--ink);color:#fff;font-family:var(--sans);font-size:16px;line-height:1.9;letter-spacing:.05em;font-feature-settings:"palt";word-break:auto-phrase;-webkit-font-smoothing:antialiased;overflow-x:clip}
img,video{display:block;max-width:none}
p,h1,h2,dl,dd,figure{margin:0}
.ib{display:inline-block}
.tcy{text-combine-upright:all}
a:focus-visible{outline:2px solid #fff;outline-offset:3px}

/* pattern switcher (社内確認用) */
.sw{position:fixed;z-index:60;left:50%;top:12px;transform:translateX(-50%);display:flex;gap:2px;background:rgba(14,14,15,.86);padding:4px;font-size:14px;line-height:1}
.sw a{display:flex;align-items:center;min-height:36px;padding:0 12px;color:var(--sub-d);text-decoration:none;white-space:nowrap}
.sw a[aria-current]{background:#fff;color:var(--ink);font-weight:700}
@media (max-width:599px){.sw{top:66px}.sw a{padding:0 10px;min-height:32px}.sw .lb{display:none}}

/* header */
.hd{position:fixed;inset:0 0 auto 0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:12px var(--gut);pointer-events:none}
.hd>*{pointer-events:auto}
.hd .logo{width:clamp(96px,9vw,128px);height:auto}
.buy{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:48px;padding:0 20px;background:var(--red);color:#fff;text-decoration:none;font-weight:700;font-size:15px;letter-spacing:.08em;white-space:nowrap}
.buy:hover{background:#9E161B}
@media (max-width:599px){.hd{padding-top:10px}.buy{padding:0 14px;font-size:14px}}
@media (min-width:600px) and (max-width:899px){.sw{top:76px}}

/* distance meter */
.meter{position:fixed;left:var(--gut);bottom:max(18px,env(safe-area-inset-bottom));z-index:50;display:flex;align-items:baseline;gap:6px;pointer-events:none;color:#fff}
.meter b{font-family:var(--num);font-weight:700;font-size:clamp(40px,4.6vw,68px);line-height:.9;font-variant-numeric:tabular-nums}
.meter span{font-family:var(--num);font-weight:500;font-size:clamp(18px,1.7vw,22px);letter-spacing:.06em}

/* scenes */
.scene{position:relative}
.stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
.layer{position:absolute;inset:0}
[data-z]{translate:0 var(--py,0px)}
.float{animation:float 6s ease-in-out infinite}
.float.d2{animation-duration:7.4s;animation-delay:-2s}
@keyframes float{0%,100%{transform:translateY(0) rotate(var(--r,0deg))}50%{transform:translateY(-14px) rotate(calc(var(--r,0deg) + 1.5deg))}}
.blurfg{filter:blur(6px);opacity:.9}

/* copy blocks */
.prod{font-family:var(--num);font-weight:700;font-size:16px;letter-spacing:.24em}
.h2{font-family:var(--mincho);font-weight:800;font-size:clamp(32px,4.6vw,68px);line-height:1.35;letter-spacing:.06em}
.when{font-size:clamp(17px,1.5vw,20px);font-weight:700;line-height:1.7}
.spec{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 20px;font-size:15px;line-height:1.9}
.spec dt{opacity:.8}
.spec b{font-family:var(--num);font-weight:700;font-size:1.35em}

.end{min-height:70vh;display:flex;align-items:center;padding:96px var(--gut);background:var(--ink)}
.end p{max-width:36em;color:var(--sub-d);font-size:15px}

@media (prefers-reduced-motion:reduce){
  .float,.mq-track,.kenburns,.cycle>*{animation:none!important}
}
