:root{--bg:#efece3;--bg2:#e5e1d3;--card:#f9f7f1;--text:#1b2a21;--mute:#4d5d53;--green:#1f4d33;--red:#c4202a;--cream:#f3f0e6;--gut:clamp(16px,4vw,40px)}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-family:"Google Sans","Noto Sans JP","Noto Sans Thai",sans-serif;font-weight:500;font-size:18px;line-height:1.7;word-break:auto-phrase;overflow-x:hidden}
[lang=ja]{display:block}[lang=en]{display:block;font-size:.78em;color:var(--mute);line-height:1.45;margin-top:.15em}
.ms{font-family:"Material Symbols Rounded";font-weight:500;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;-webkit-font-feature-settings:"liga";font-feature-settings:"liga"}
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--bg);display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px var(--gut)}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.06em;color:var(--green);text-decoration:none;font-size:16px}
.back{background:var(--green);color:var(--cream);text-decoration:none;font-weight:700;font-size:15px;line-height:1.3;padding:8px 18px;border-radius:999px;text-align:center;display:inline-block}.back [lang=en]{color:#c9d6cc;font-size:11px}
.intro{min-height:88vh;display:grid;place-items:center;text-align:center;padding:0 var(--gut)}
.ib{will-change:transform,opacity}
.k{margin:0 0 12px;color:var(--red);font-weight:700;font-size:20px}.k [lang=en]{color:var(--red);opacity:.75}
h1{margin:0;font-size:clamp(52px,10vw,140px);line-height:1;color:var(--green);font-weight:700;letter-spacing:-.02em}h1 [lang=en]{font-size:.25em;margin-top:.5em;letter-spacing:0}
.hint{margin:48px 0 0;color:var(--green)}.hint .ms{font-size:40px;display:inline-block;animation:bob 1.8s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(10px)}}
.big{position:fixed;inset:0;display:grid;place-items:center;pointer-events:none;z-index:0;opacity:0;transition:opacity .5s}
.inT .big{opacity:1}
.big span{font-size:clamp(160px,30vw,440px);font-weight:700;color:var(--bg2);line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.04em}
.big .sw{animation:sw .6s cubic-bezier(.2,.8,.2,1)}@keyframes sw{from{transform:translateY(60px) scale(.92);opacity:0}}
main{overflow-x:clip;position:relative;z-index:1;max-width:1240px;margin:0 auto;padding:0 var(--gut)}
.tl{list-style:none;margin:0;padding:40px 0 120px;position:relative;display:grid;gap:clamp(80px,12vh,160px)}
.spine{position:absolute;left:50%;top:0;bottom:0;width:10px;margin-left:-5px;background:var(--bg2);border-radius:10px;overflow:hidden}
.spine i{position:absolute;inset:0;background:var(--green);transform-origin:top;transform:scaleY(0)}
.m{--p:0;display:grid;grid-template-columns:1fr 96px 1fr;align-items:center;position:relative}
.dot{grid-column:2;justify-self:center;width:64px;height:64px;border-radius:50%;background:var(--bg2);color:var(--mute);display:grid;place-items:center;transition:background .4s,color .4s,transform .5s cubic-bezier(.3,1.6,.5,1);transform:scale(.7)}
.dot .ms{font-size:30px}
.m.on .dot{background:var(--green);color:var(--cream);transform:scale(1)}
.m.hy.on .dot{background:var(--red)}
.tx,.im{opacity:calc(.1 + var(--p)*.9);will-change:transform}
.m.l .tx{grid-column:1;grid-row:1;text-align:right;transform:translateX(calc((1 - var(--p))*-80px))}
.m.l .im{grid-column:3;grid-row:1;transform:translateX(calc((1 - var(--p))*80px)) scale(calc(.88 + var(--p)*.12))}
.m.r .tx{grid-column:3;grid-row:1;transform:translateX(calc((1 - var(--p))*80px))}
.m.r .im{grid-column:1;grid-row:1;transform:translateX(calc((1 - var(--p))*-80px)) scale(calc(.88 + var(--p)*.12))}
.yr{font-size:clamp(64px,8vw,120px);font-weight:700;line-height:.95;color:var(--red);letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-bottom:8px}
.tx h2{margin:0;font-size:clamp(30px,3.6vw,52px);line-height:1.12;color:var(--green)}
.sb{margin:14px 0 0;font-weight:700;font-size:18px}.sb [lang=en]{font-weight:500}
.ds{margin:12px 0 0;font-size:18px}.ds:empty{display:none}
.m.l .tx .ds,.m.l .tx .sb{margin-left:auto;max-width:30em}
.im{display:grid;gap:10px}
.im figure{margin:0;border-radius:24px;overflow:hidden;background:var(--bg2);aspect-ratio:var(--r);max-height:520px}
.im figure.main{aspect-ratio:4/3}
.th{display:flex;gap:10px}.th:empty{display:none}.th figure{flex:1;aspect-ratio:1;border-radius:16px}
.im img{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in;transition:transform .5s}.im img:hover{transform:scale(1.04)}
.end{min-height:60vh;display:grid;place-items:center;align-content:center;gap:28px;text-align:center;padding:0 var(--gut);position:relative;z-index:1}
.end h2{margin:0;font-size:clamp(36px,6vw,80px);line-height:1.1;color:var(--green)}.end h2 [lang=en]{font-size:.35em}
.lbx{position:fixed;inset:0;z-index:50;background:rgba(11,15,13,.92);display:flex;align-items:center;justify-content:center;padding:16px;opacity:0;transition:opacity .22s}.lbx.on{opacity:1}.lbx[hidden]{display:none}
.lbx img{max-width:100%;max-height:100%;border-radius:12px;object-fit:contain;transform:scale(.94);transition:transform .3s cubic-bezier(.2,.8,.2,1)}.lbx.on img{transform:none}
footer{position:relative;z-index:1;text-align:center;padding:40px var(--gut);color:var(--mute);font-size:14px}
@media(max-width:799px){body{font-size:16px}
 .spine{left:24px;margin-left:-5px}
 .m{grid-template-columns:48px 1fr;column-gap:16px;row-gap:16px;align-items:start}
 .dot{grid-column:1;grid-row:1;width:48px;height:48px}.dot .ms{font-size:24px}
 .m.l .tx,.m.r .tx{grid-column:2;grid-row:1;text-align:left;transform:translateY(calc((1 - var(--p))*40px))}
 .m.l .im,.m.r .im{grid-column:2;grid-row:2;transform:translateY(calc((1 - var(--p))*40px)) scale(calc(.94 + var(--p)*.06))}
 .m.l .tx .ds,.m.l .tx .sb{margin-left:0}
 .tl{gap:72px}.big span{font-size:42vw}.brand{font-size:13px}.brand img{width:32px;height:32px}.back{font-size:13px;padding:6px 14px}
 .im figure{border-radius:18px}}
@media(prefers-reduced-motion:reduce){.tx,.im{transform:none!important;opacity:1!important}.hint .ms{animation:none}}
html{scroll-behavior:smooth}.m{scroll-margin-top:120px}
/* overview: snake */
.sn{position:relative;z-index:1;max-width:1240px;margin:0 auto clamp(60px,10vh,120px);padding:0 var(--gut)}
.ovh{margin:0 0 8px;text-align:center;font-size:clamp(26px,3vw,40px);line-height:1.2;color:var(--green)}
.sw{position:relative}
.sp{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.sp path{fill:none;stroke-linecap:round}
.sp .bg{stroke:var(--bg2)}
.sc{position:absolute;width:var(--cw,200px);margin-left:calc(var(--cw,200px)/-2);text-decoration:none;color:var(--text);text-align:center;display:flex;flex-direction:column;align-items:center}
.si{position:absolute;bottom:calc(100% + var(--gap,16px));left:50%;width:var(--iw,96px);height:var(--iw,96px);margin-left:calc(var(--iw,96px)/-2);border-radius:50%;overflow:hidden;background:var(--bg2);box-shadow:0 0 0 5px var(--bg);transform:scale(.6);opacity:0;transition:transform .5s cubic-bezier(.3,1.6,.5,1),opacity .3s}
.si img{width:100%;height:100%;object-fit:cover;display:block}
.se{position:absolute;bottom:calc(100% + var(--gap,16px) + var(--iw,96px) + 8px);left:0;right:0;color:var(--red);font-weight:700;font-size:14px;line-height:1.3;opacity:0;transition:opacity .4s}
.sy{margin-top:var(--gap,16px);background:var(--c,var(--green));color:var(--cream);font-size:13px;line-height:1.3;padding:3px 12px;border-radius:999px;white-space:nowrap;opacity:0;transition:opacity .4s}
.sl{margin-top:6px;font-weight:700;font-size:15px;line-height:1.35;opacity:0;transition:opacity .4s .1s;max-width:100%}.sl [lang=en]{font-size:12px;font-weight:500}
.sc.on .si{transform:none;opacity:1}.sc.on .sy,.sc.on .sl,.sc.on .se{opacity:1}
.sc:hover .si{transform:scale(1.08)}
.sc::after{content:"";position:absolute;top:calc(var(--sw,16px)/-2 - 4px);left:50%;width:calc(var(--sw,16px) + 8px);height:calc(var(--sw,16px) + 8px);margin-left:calc(var(--sw,16px)/-2 - 4px);border-radius:50%;background:var(--cream);transform:scale(0);transition:transform .4s cubic-bezier(.3,1.6,.5,1)}
.sc.on::after{transform:scale(.55)}
.hhint{margin:0;text-align:center;color:var(--mute);font-size:14px}.hhint [lang]{display:inline}.hhint [lang=en]{margin-left:8px}
@media(max-width:599px){.sl [lang=en],.hhint [lang=en]{display:none}.sl{font-size:13px}.sy{font-size:11px;padding:2px 9px}.se{font-size:12px}}
@media(prefers-reduced-motion:reduce){.si,.sy,.sl,.se{opacity:1!important;transform:none!important;transition:none!important}}
