/* FLUX hair v3 — 図鑑型。黒／クローム灰／白／ライムの面を切り替えて進む */
:root{
  --k:#0A0A0A; --k2:#151517; --lime:#C8FF00; --mag:#FF2E88; --chrome:#C9CCD1; --w:#F2F2F2;
  --mute:#9A9DA3; --line:rgba(242,242,242,.14); --line-d:rgba(10,10,10,.14);
  --en:"Unbounded",sans-serif; --num:"Space Grotesk",sans-serif; --jp:"Zen Kaku Gothic New",sans-serif;
  --pad:max(clamp(20px,5vw,72px),calc((100vw - 1640px) / 2)); /* 広い画面では中身を1640pxに収め、全章の左端をそろえる */ --dock:64px;
  --ease:cubic-bezier(.2,.7,.2,1);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--k);color:var(--w);font:400 16px/1.8 var(--jp);-webkit-font-smoothing:antialiased;overflow-x:clip}
img{display:block;max-width:100%;height:auto}
figure{margin:0}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
h1,h2,h3{margin:0;font-weight:700;line-height:1.35}
p{margin:0}
.num{font-family:var(--num);font-feature-settings:"tnum" 1,"lnum" 1;letter-spacing:.01em}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.defs{position:absolute}
:focus-visible{outline:2px solid var(--lime);outline-offset:3px}
.skip{position:absolute;left:12px;top:-60px;z-index:100;background:var(--lime);color:var(--k);padding:10px 16px;font-weight:700;text-decoration:none}
.skip:focus{top:12px}

/* 生成アイコン：白→透過のPNGを mask に使い currentColor で塗る */
.ico{display:inline-block;width:1em;height:1em;flex:none;background:currentColor;-webkit-mask:var(--m) center/contain no-repeat;mask:var(--m) center/contain no-repeat}
.ico--arrow{--m:url(../img/icon-arrow.png)} .ico--x{--m:url(../img/icon-close.png)}
.ico--clock{--m:url(../img/icon-clock.png)} .ico--cal{--m:url(../img/icon-calendar.png)}
.ico--flip{transform:scaleX(-1)}

/* 見出しの対（英字＋和文） */
.head{padding:0 var(--pad);margin:0 auto}
.head__en{font:900 clamp(12px,1vw,14px)/1 var(--en);letter-spacing:.14em;color:var(--lime)}
.head h2,.inside h2,.week h2{font:700 clamp(30px,4.4vw,60px)/1.2 var(--jp);letter-spacing:.02em;margin-top:14px}
.head__lead{margin-top:18px;max-width:34em;color:var(--mute)}

/* ボタン */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:52px;padding:0 26px;border-radius:999px;font-weight:700;letter-spacing:.04em;transition:transform .25s var(--ease),background .25s}
.btn .ico{width:18px;height:18px}
.btn--dark{background:var(--k);color:var(--w)}
.btn--lime{background:var(--lime);color:var(--k)}
.btn--big{min-height:64px;padding:0 36px;font-size:18px}
.btn:hover{transform:translateY(-2px)}
.btn:disabled{opacity:.35;cursor:not-allowed;transform:none}

/* 出現：監視する要素そのものに付ける（clip-pathは使わない） */
.js .rv{opacity:0;transform:translateY(28px);transition:opacity .8s var(--ease),transform .8s var(--ease);transition-delay:calc(var(--i,0) * 70ms)}
.js .rv.is-in{opacity:1;transform:none}

/* ===== 上の細い帯（固定しない） ===== */
.bar{position:absolute;inset:0 0 auto;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:calc(18px + env(safe-area-inset-top,0px)) var(--pad) 18px;font-size:13px}
.bar__mark{font:900 18px/1 var(--en);letter-spacing:.02em;text-decoration:none;padding:13px 0}
.bar__mark span{font:500 12px var(--num);color:var(--mute);margin-left:6px;letter-spacing:.1em}
.bar__hours{color:var(--mute)} .bar__sep{margin:0 10px;opacity:.5}
.bar__ig{font:500 12px var(--num);letter-spacing:.12em;color:var(--chrome)}

/* ===== 01 ヒーロー ===== */
.hero{position:relative;height:100svh;min-height:620px;display:flex;flex-direction:column;padding:calc(72px + env(safe-area-inset-top,0px)) 0 calc(var(--dock) + 36px);overflow:hidden}
.hero__word{width:100%;flex:1 1 0;min-height:0;padding:0 2vw;overflow:visible}
.hero__word text{font:900 300px/1 var(--en);letter-spacing:-.02em}
.hero__foot{display:grid;grid-template-columns:minmax(300px,.8fr) 1.6fr;gap:clamp(20px,4vw,64px);align-items:end;padding:0 0 0 var(--pad)}
.hero__copy h1{font:700 clamp(32px,3.6vw,52px)/1.25 var(--jp);letter-spacing:.02em}
.hero__copy p{margin-top:16px;color:var(--mute);max-width:24em}
.hero__meta{font-size:12px;letter-spacing:.14em;color:var(--w)!important}
.hero__meta span{color:var(--lime)}
.hero__strip{position:relative;height:clamp(200px,32vh,340px);overflow:hidden}
.strip{display:flex;width:max-content;height:100%;animation:flow 48s linear infinite}
.strip.is-paused{animation-play-state:paused}
.strip__row{display:flex;gap:12px;margin:0;padding:0 12px 0 0;list-style:none;height:100%}
.strip__row li{height:100%;aspect-ratio:9/16;overflow:hidden}
.strip__row img{width:100%;height:100%;object-fit:cover}
@keyframes flow{to{transform:translateX(-50%)}}
.strip__toggle{position:absolute;right:12px;bottom:12px;min-height:44px;padding:0 14px;border-radius:999px;background:rgba(10,10,10,.72);border:1px solid var(--line);font-size:12px}
/* 読み込み直後の入り：FLUX→コピー→写真 */
.js .hero__word{opacity:0;transform:scale(1.04);transition:opacity 1s var(--ease),transform 1.4s var(--ease)}
.js .hero__copy,.js .hero__strip{opacity:0;transform:translateY(24px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
@keyframes failsafe{to{opacity:1;transform:none}}
.js .hero__word,.js .hero__copy,.js .hero__strip{animation:failsafe .6s 4s forwards} /* JSが読めなくても4秒後には必ず見える */
.js .is-loaded .hero__word{opacity:1;transform:none}
.js .is-loaded .hero__copy{opacity:1;transform:none;transition-delay:.45s}
.js .is-loaded .hero__strip{opacity:1;transform:none;transition-delay:.75s}

/* ===== 02 スタイル図鑑 ===== */
.style{padding:clamp(96px,12vw,160px) 0 clamp(80px,10vw,140px)}
.filter{margin:48px auto 28px;padding:0 var(--pad);display:flex;flex-wrap:wrap;align-items:center;gap:14px 32px}
.filter__set{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.filter__label{font-size:13px;color:var(--mute);margin-right:6px}
.chip{min-height:44px;padding:0 18px;border:1px solid var(--line);border-radius:999px;font:500 12px var(--num);letter-spacing:.12em;transition:background .2s,color .2s,border-color .2s}
.chip:hover{border-color:var(--w)}
.chip.is-on{background:var(--w);color:var(--k);border-color:var(--w)}
.filter__who{display:flex;align-items:center;gap:12px;font-size:14px}
.filter__who[hidden]{display:none}
.filter__who span{color:var(--lime)}
.filter__clear{min-height:44px;font-size:13px;color:var(--mute);text-decoration:underline;text-underline-offset:4px}
.filter__count{margin-left:auto;font-size:13px;color:var(--mute);letter-spacing:.12em}
.grid{margin:0 auto;padding:0 var(--pad);list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:40px 20px}
.card{transition:opacity .4s var(--ease)}
.card.is-hidden{display:none}
.card__btn{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;width:100%;text-align:left}
.card__ph{grid-column:1/-1;aspect-ratio:9/16;overflow:hidden;background:var(--k2);margin-bottom:10px}
.card__ph img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease),filter .6s}
.card__btn:hover .card__ph img{transform:scale(1.05)}
.card__no{grid-row:span 2;font-size:13px;color:var(--lime);padding-top:3px}
.card__name{font:600 15px/1.3 var(--en);letter-spacing:.02em}
.card__meta{font-size:12px;color:var(--mute);letter-spacing:.06em}
.card__time{white-space:nowrap}
.grid__empty{margin:0 auto;padding:40px var(--pad);color:var(--mute)}
/* 4列の格子の中で、2列目と4列目を少し下げて整列を崩す */
@media (min-width:901px){.grid .card:nth-child(4n+2):not(.is-hidden),.grid .card:nth-child(4n):not(.is-hidden){transform:translateY(48px)}}

/* ===== 03 BY LIGHT（貼り付き横送り） =====
   パネルは中身の幅に詰め、次の1枚が常に右に見える。最後の1枚は窓の右端にそろう（100cqw＝窓の幅） */
.light{--p:0;position:relative;height:340vh;background:var(--chrome);color:var(--k)}
.light__stick{position:sticky;top:0;height:100svh;overflow:hidden;display:grid;grid-template-columns:minmax(300px,24vw) minmax(0,1fr)}
.light__head{padding:clamp(72px,10vh,120px) 24px 0 var(--pad);position:relative;z-index:2}
.light__head .head__en{color:var(--k)}
.light__head h2{font:700 clamp(28px,3vw,44px)/1.3 var(--jp);margin-top:14px;word-break:keep-all}
.light__scale{display:flex;gap:10px;margin:40px 0 0;padding:0;list-style:none}
.light__scale li{width:48px;height:48px;border:1px solid var(--line-d);border-radius:50%;display:grid;place-items:center;font-weight:700;transition:background .3s,color .3s}
.light__scale li.is-active{background:var(--k);color:var(--lime)}
.light__view{container-type:inline-size;overflow:hidden;height:100%}
.light__track{display:flex;height:100%;width:max-content;transform:translateX(calc(var(--p) * (100cqw - 100%)));will-change:transform}
.lp{flex:none;height:100%;display:grid;grid-template-columns:auto clamp(300px,23vw,400px);align-items:center;gap:clamp(24px,3vw,56px);padding:clamp(56px,8vh,96px) clamp(40px,5vw,96px) calc(var(--dock) + 32px) 0;opacity:.28;transition:opacity .5s var(--ease)}
.lp.is-active{opacity:1}
.lp__ph{height:min(70vh,700px);aspect-ratio:2/3;overflow:hidden}
.lp__ph img{width:100%;height:100%;object-fit:cover}
.lp__no{font:900 clamp(34px,3.6vw,60px)/1 var(--en);letter-spacing:-.01em;white-space:nowrap}
.lp__no .num{font-family:var(--en)}
.lp h3{font-size:clamp(22px,2vw,28px);margin-top:18px}
.lp__txt>p:not(.lp__no){margin-top:14px}
.lp__dl{margin:28px 0 0;border-top:1px solid var(--line-d)}
.lp__dl div{display:grid;grid-template-columns:5em 1fr;padding:12px 0;border-bottom:1px solid var(--line-d)}
.lp__dl dt{font-size:13px;color:#45474c} .lp__dl dd{margin:0;font-weight:700}

/* ===== 04 担当者（3分割、広がる） ===== */
.crew{position:relative;background:var(--k)}
.head--over{position:absolute;z-index:3;top:clamp(40px,6vw,72px);left:0;pointer-events:none}
.crew__row{display:flex;height:min(92svh,900px)}
.person{position:relative;flex:1 1 0;overflow:hidden;transition:flex-grow .7s var(--ease)}
.person:hover,.person:focus-within{flex-grow:1.7}
.person img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:40% center;filter:grayscale(.35) brightness(.7);transition:filter .6s}
.person:hover img,.person:focus-within img{filter:none}
.person::after{content:"";position:absolute;inset:40% 0 0;background:linear-gradient(transparent,rgba(10,10,10,.92))}
.person__txt{position:absolute;z-index:2;left:clamp(16px,2.4vw,36px);right:16px;bottom:calc(var(--dock) + 28px)}
.person__role{font:600 12px var(--en);letter-spacing:.16em;color:var(--lime)}
.person h3{font-size:clamp(22px,2.2vw,30px);margin-top:8px}
.person__good{font-size:14px;color:var(--chrome);margin-top:4px}
.person__career{font-size:13px;color:var(--mute);margin-top:6px;max-width:26em;line-height:1.6}
.person__word{margin-top:14px;font-size:15px}
.person__link{display:inline-flex;align-items:center;gap:10px;min-height:44px;margin-top:10px;font-size:14px;font-weight:700;border-bottom:1px solid var(--lime)}
.person__link .ico{width:14px;height:14px;color:var(--lime)}

/* ===== 05 料金と時間（白地） ===== */
.price{background:var(--w);color:var(--k);padding:clamp(96px,12vw,160px) 0}
.price .head__en{color:var(--k)} .price .head__lead{color:#45474c}
.price__body{margin:56px auto 0;padding:0 var(--pad);display:grid;grid-template-columns:1fr minmax(280px,360px);gap:clamp(32px,5vw,80px);align-items:start}
.menu{list-style:none;margin:0;padding:0;border-top:2px solid var(--k)}
.mi{display:grid;grid-template-columns:32px 1fr auto minmax(8.5em,auto);align-items:center;gap:18px;padding:22px 4px;border-bottom:1px solid var(--line-d);cursor:pointer;transition:background .2s}
.mi:hover{background:rgba(10,10,10,.04)}
.mi input{position:absolute;opacity:0;width:1px;height:1px}
.mi__box{width:28px;height:28px;border:2px solid var(--k);border-radius:6px;display:grid;place-items:center;transition:background .2s}
.mi__box::after{content:"";width:12px;height:7px;border:solid var(--lime);border-width:0 0 3px 3px;transform:rotate(-45deg) translate(1px,-1px);opacity:0}
.mi input:checked + .mi__box{background:var(--k)}
.mi input:checked + .mi__box::after{opacity:1}
.mi input:focus-visible + .mi__box{outline:2px solid var(--mag);outline-offset:3px}
.mi__name{font-size:18px;font-weight:700;display:flex;flex-direction:column;line-height:1.4}
.mi__name small{font-size:13px;font-weight:400;color:#55575c}
.mi__time{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:#45474c}
.mi__time .ico{width:15px;height:15px}
.mi__yen{font:700 clamp(28px,3.4vw,48px)/1 var(--num);text-align:right;letter-spacing:-.01em}
.mi__yen::before{content:"¥";font-size:.5em;margin-right:2px;vertical-align:.5em}
.mi__yen em{font-style:normal;font-size:.45em;margin-left:2px}
.sum{position:sticky;top:32px;background:var(--k);color:var(--w);padding:28px;border-radius:4px}
.sum__label{font-size:13px;color:var(--mute)}
.sum__yen{font:700 clamp(44px,4.6vw,64px)/1.1 var(--num);margin-top:8px;color:var(--lime)}
.sum__min{margin-top:6px}
.sum__note{display:block;font-size:12px;color:var(--mute)}
.sum .btn{width:100%;margin-top:22px;background:var(--w);color:var(--k)}

/* ===== 今週の空き（黒地。ライムは「空きあり」の印だけに使い、面では使わない） ===== */
.week{background:var(--k);color:var(--w);padding:clamp(88px,10vw,140px) var(--pad)}
.week__head{margin:0 auto;display:flex;flex-wrap:wrap;align-items:end;gap:12px 40px}
.week__head .head__en{width:100%}
.week__head h2{margin-top:0}
.week__legend{display:flex;flex-wrap:wrap;gap:8px 22px;font-size:14px;margin-left:auto;color:var(--chrome)}
.week__legend b{font-size:18px;margin-right:6px;vertical-align:-1px}
.week .ok{color:var(--lime)} .week .few{color:var(--w)} .week .full{color:#8A8D93}
.week__scroll{margin:36px auto 0;overflow-x:auto}
.board{width:100%;min-width:680px;border-collapse:separate;border-spacing:4px;text-align:center}
.board th,.board td{padding:18px 8px;background:var(--k2);border-radius:4px}
.board thead th{font-size:13px;font-weight:700;color:var(--chrome);background:none;padding:6px 8px 12px}
.board thead th .num{display:block;font-size:20px;color:var(--w)}
.board tbody th{font-size:15px;text-align:left;padding-left:18px;white-space:nowrap;background:var(--k);position:sticky;left:0;z-index:2}
.board thead th:first-child{position:sticky;left:0;z-index:2;background:var(--k)}
.board tbody th small{display:block;font-size:12px;font-weight:500;color:var(--mute)}
.board td{font-size:26px;font-weight:700;line-height:1}
.board td.ok{background:rgba(200,255,0,.1)}
.board td.full{background:#101012}
.board td.is-off{font-size:14px;font-weight:500;color:var(--mute);background:repeating-linear-gradient(135deg,var(--k2) 0 8px,#0f0f11 8px 16px)}
.board thead .is-off,.board thead .is-off .num{color:var(--mute)}
.week__note{margin:22px auto 0;font-size:14px;color:var(--mute)}
.week__note a{color:var(--lime);font-weight:700;margin-left:12px;text-underline-offset:4px;display:inline-block;padding:11px 0}

/* ===== 07 駅からの道 ===== */
.route{padding:clamp(96px,12vw,160px) 0}
.steps{margin:56px auto 0;padding:0 var(--pad);list-style:none;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:18px;counter-reset:s}
.step figure{aspect-ratio:9/16;overflow:hidden;position:relative;background:var(--k2)}
.step figure::before{counter-increment:s;content:"0" counter(s);position:absolute;z-index:2;top:10px;left:12px;font:900 22px var(--en);color:var(--w);mix-blend-mode:difference}
.step img{width:100%;height:100%;object-fit:cover}
.step__min{display:inline-block;margin-top:14px;padding:4px 10px;background:var(--lime);color:var(--k);font-size:12px;font-weight:700;letter-spacing:.1em}
.step h3{font-size:18px;margin-top:10px}
.step p:not(.step__min){font-size:15px;color:var(--mute);margin-top:4px}
.route__note{margin:28px auto 0;padding:0 var(--pad);font-size:13px;color:var(--mute)}

/* ===== 08 店内 ===== */
.inside{background:var(--k2);padding:clamp(96px,12vw,160px) var(--pad);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:18px;max-width:none}
.inside__txt{grid-column:1/6;grid-row:1/3;align-self:center;padding-right:24px}
.inside .head__en{margin-bottom:0}
.facts{list-style:none;margin:32px 0 0;padding:0;border-top:1px solid var(--line)}
.facts li{padding:16px 0;border-bottom:1px solid var(--line);font-size:15px}
.facts .num{font-size:30px;font-weight:700;color:var(--lime);margin-right:12px;vertical-align:-3px}
.inside__ph{overflow:hidden}
.inside__ph img{width:100%;height:100%;object-fit:cover}
.inside__ph--a{grid-column:6/13;aspect-ratio:3/2}
.inside__ph--b{grid-column:6/9;aspect-ratio:4/5}
.inside__ph--c{grid-column:9/13;aspect-ratio:4/3;align-self:start}

/* ===== 09 初めての方へ（白地） ===== */
.faq{background:var(--w);color:var(--k);padding:clamp(96px,12vw,160px) 0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr)}
.faq .head__en{color:var(--k)}
.faq .head{padding-right:24px;margin:0}
.faq .head h2{white-space:nowrap}
.faq__list{margin-right:var(--pad);border-top:2px solid var(--k)}
.faq details{border-bottom:1px solid var(--line-d)}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:72px;padding:12px 0;font-size:18px;font-weight:700}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";width:22px;height:22px;flex:none;background:linear-gradient(var(--k),var(--k)) center/100% 3px no-repeat,linear-gradient(var(--k),var(--k)) center/3px 100% no-repeat;transition:transform .3s var(--ease)}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{padding:0 0 24px;max-width:36em;color:#303236}

/* ===== 10 予約（ライム、出口） ===== */
.reserve{position:relative;background:var(--lime);color:var(--k);padding:clamp(80px,10vw,140px) var(--pad) calc(var(--dock) + 80px);overflow:hidden}
.reserve__en{font:900 clamp(40px,14.5vw,240px)/.9 var(--en);letter-spacing:-.03em;margin-left:-.05em;white-space:nowrap}
.reserve__body{max-width:1100px;margin:40px 0 0 auto;display:grid;grid-template-columns:1fr 1fr;gap:28px 56px;align-items:start}
.reserve h2{font-size:clamp(26px,2.6vw,36px);grid-column:1/-1}
.pick{border-top:2px solid var(--k)}
.pick__row{display:grid;grid-template-columns:6em 1fr;padding:14px 0;border-bottom:1px solid var(--line-d)}
.pick__k{font-size:13px;color:#2b2d31;padding-top:3px}
.pick__v{font-weight:700}
.reserve .btn--big{justify-self:start}
.reserve .btn--big .ico{width:22px;height:22px}
.reserve__msg{grid-column:2;font-weight:700;min-height:1.8em}
.info{grid-column:1/-1;margin:12px 0 0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;border-top:1px solid var(--line-d);padding-top:22px}
.info dt{font-size:12px;color:#2b2d31;letter-spacing:.1em} .info dd{margin:4px 0 0;font-weight:700}

/* ===== フッター ===== */
.foot{padding:clamp(72px,9vw,120px) var(--pad) calc(var(--dock) + 48px);border-top:1px solid var(--line)}
.foot__mark{font:900 clamp(56px,12vw,180px)/.9 var(--en);letter-spacing:-.02em}
.foot__mark span{font:500 14px var(--num);color:var(--mute);letter-spacing:.14em;margin-left:12px}
.foot__cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;margin-top:56px;max-width:1100px}
.foot__h{font:600 12px var(--en);letter-spacing:.16em;color:var(--lime);margin-bottom:10px}
.foot nav a{display:block;padding:9px 0;text-decoration:none;color:var(--chrome)}
.foot nav a:hover{color:var(--w)}
.foot__cols p:not(.foot__h){color:var(--chrome);padding:4px 0}
.foot__note{margin-top:56px;max-width:52em;font-size:13px;color:var(--mute)}
.foot__copy{margin-top:18px;font-size:12px;color:var(--mute);letter-spacing:.08em}

/* ===== 下に浮くナビ ===== */
.dock{position:fixed;z-index:40;left:50%;bottom:calc(14px + env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;align-items:center;gap:2px;padding:6px;background:rgba(10,10,10,.86);border:1px solid rgba(201,204,209,.3);border-radius:999px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:transform .5s var(--ease),opacity .4s}
.dock a{display:flex;align-items:center;gap:8px;min-height:48px;padding:0 18px;border-radius:999px;text-decoration:none;font:600 12px var(--en);letter-spacing:.08em;color:var(--chrome);transition:background .2s,color .2s}
.dock a:hover,.dock a.is-active{color:var(--w);background:rgba(242,242,242,.1)}
.dock .dock__cta{background:var(--lime);color:var(--k);font-family:var(--jp);font-size:15px;font-weight:700;padding:0 22px;margin-left:6px}
.dock .dock__cta:hover{background:var(--w);color:var(--k)}
.dock__cta .ico{width:18px;height:18px}
.dock.is-hidden{transform:translate(-50%,160%);opacity:0}

/* ===== スタイルの詳細パネル ===== */
.panel{position:fixed;inset:0;z-index:60}
.panel[hidden]{display:none}
.panel__bg{position:absolute;inset:0;background:rgba(0,0,0,.6);opacity:0;transition:opacity .35s}
.panel__box{position:absolute;top:0;right:0;bottom:0;width:min(880px,94vw);background:var(--k2);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);transform:translateX(100%);transition:transform .5s var(--ease);outline:none;overflow:auto;scrollbar-width:none}
.panel__box::-webkit-scrollbar{display:none}
.panel.is-open .panel__bg{opacity:1}
.panel.is-open .panel__box{transform:none}
.panel__x{position:absolute;z-index:2;top:calc(14px + env(safe-area-inset-top,0px));right:14px;width:48px;height:48px;border-radius:50%;background:var(--k);display:grid;place-items:center}
.panel__x .ico{width:18px;height:18px}
.panel__ph{height:100%;min-height:100svh}
.panel__ph img{width:100%;height:100%;object-fit:cover}
.panel__txt{padding:72px 36px 36px;display:flex;flex-direction:column}
.panel__no{color:var(--lime);font-size:14px}
.panel__name{font:600 clamp(26px,2.6vw,36px)/1.15 var(--en);margin-top:8px}
.panel__tags{font-size:12px;letter-spacing:.1em;color:var(--mute);margin-top:10px}
.panel__dl{margin:28px 0 0;border-top:1px solid var(--line)}
.panel__dl div{display:grid;grid-template-columns:5em 1fr;padding:12px 0;border-bottom:1px solid var(--line)}
.panel__dl dt{font-size:13px;color:var(--mute)} .panel__dl dd{margin:0;font-weight:700}
.panel__voice{margin:28px 0 0;padding:18px 20px;border-left:3px solid var(--mag);background:rgba(242,242,242,.04)}
.panel__voice p{font-size:16px}
.panel__voice cite{display:block;margin-top:6px;font-style:normal;font-size:12px;color:var(--mute)}
.panel__txt .btn--lime{margin-top:28px}
.panel__nav{display:flex;justify-content:space-between;margin-top:auto;padding-top:28px}
.panel__nav button{display:inline-flex;align-items:center;gap:10px;min-height:44px;font:600 12px var(--en);letter-spacing:.1em;color:var(--chrome)}
.panel__nav .ico{width:14px;height:14px}
body.is-locked{overflow:hidden}
body.is-locked .dock{opacity:0;pointer-events:none}

/* ===== 1200px以下 ===== */
@media (max-width:1200px){
  .grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .grid .card:nth-child(n){transform:none}
  .steps{grid-template-columns:repeat(5,minmax(200px,1fr));overflow-x:auto;scroll-snap-type:x mandatory}
  .step{scroll-snap-align:start}
  .info{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ===== 900px以下：スマホ・タブレットは別設計 ===== */
@media (max-width:900px){
  :root{--dock:60px}
  .bar__hours{display:none}
  .hero{height:auto;min-height:100svh;padding-top:calc(64px + env(safe-area-inset-top,0px))}
  .hero__word{flex:none;height:auto;aspect-ratio:1040/320;margin-block:auto 8px}
  .hero__foot{grid-template-columns:1fr;padding:0}
  .hero__copy{padding:0 var(--pad)}
  .hero__strip{height:clamp(180px,30vh,260px)}
  .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 12px}
  .card__name{font-size:13px}
  .card__time{display:block;margin-top:2px}
  .filter__count{margin-left:0}
  /* BY LIGHT：貼り付けず縦に4段 */
  .light{height:auto;padding:88px 0 40px}
  .light__stick{position:static;height:auto;display:block}
  .light__head{padding:0 var(--pad)}
  .light__scale{display:none}
  .light__view{overflow:visible;height:auto}
  .light__track{width:auto;transform:none;flex-direction:column}
  .lp{opacity:1;height:auto;grid-template-columns:40% 1fr;gap:20px;padding:40px var(--pad) 0;align-items:start}
  .lp__ph{height:auto;width:100%}
  .lp__no{font-size:36px}
  /* 担当者：縦に3枚 */
  .head--over{position:static;padding-top:88px;padding-bottom:28px}
  .crew__row{flex-direction:column;height:auto}
  .person{height:78svh;flex:none}
  .person img{filter:none}
  .person__txt{bottom:calc(var(--dock) + 40px)}
  /* 料金：合計を下に貼り付ける */
  .price__body{grid-template-columns:1fr}
  .mi{grid-template-columns:28px 1fr auto;gap:6px 14px;padding:18px 0}
  .mi__time{grid-column:2;grid-row:2;font-size:13px}
  .mi__yen{grid-column:3;grid-row:1/3;font-size:30px}
  .mi__name{font-size:16px}
  .sum{position:sticky;top:auto;bottom:calc(var(--dock) + 24px + env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr auto;gap:0 16px;align-items:center;padding:16px 18px;box-shadow:0 12px 32px rgba(0,0,0,.25)}
  .sum__label{grid-column:1}
  .sum__yen{grid-column:1;font-size:34px;margin:0}
  .sum__min{grid-column:1;font-size:13px;margin:0}
  .sum__note{display:none}
  .sum .btn{grid-column:2;grid-row:1/4;width:auto;margin:0;padding:0 16px;min-height:52px;font-size:14px;white-space:nowrap}
  .sum__yen{font-size:30px!important}
  .sum .btn .ico{display:none}
  .week__legend{margin-left:0;width:100%;font-size:13px}
  .board td{font-size:22px}
  /* 駅からの道：ちら見せ横スワイプ */
  .steps{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:8px;-webkit-overflow-scrolling:touch}
  .step{flex:0 0 72vw;scroll-snap-align:center}
  .inside{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .inside__txt{grid-column:1/-1;grid-row:auto;padding:0 0 24px}
  .inside__ph--a{grid-column:1/-1}
  .inside__ph--b,.inside__ph--c{grid-column:auto;aspect-ratio:4/5}
  .faq{grid-template-columns:1fr}
  .faq .head{padding-right:var(--pad)}
  .faq__list{margin:36px var(--pad) 0;padding:0}
  .reserve__body{grid-template-columns:1fr}
  .reserve__msg{grid-column:1}
  .foot__cols{grid-template-columns:repeat(2,minmax(0,1fr))}
  /* パネルは下から出る */
  .panel__box{top:auto;left:0;width:100%;max-height:92svh;grid-template-columns:1fr;border-radius:16px 16px 0 0;transform:translateY(100%)}
  .panel__ph{min-height:0;height:46svh}
  .panel__ph img{object-position:center 30%}
  .panel__txt{padding:24px 20px calc(24px + env(safe-area-inset-bottom))}
  /* 下バー：幅いっぱいに近づける */
  .dock{left:10px;right:10px;transform:none;justify-content:space-between}
  .dock.is-hidden{transform:translateY(160%)}
  .dock a{padding:0 10px;font-size:12px;letter-spacing:.02em}
  .dock .dock__cta{padding:0 16px;margin-left:0;font-size:14px}
}
@media (max-width:560px){
  .bar__ig{display:none}
  .lp{grid-template-columns:1fr}
  .lp__ph{width:100%;aspect-ratio:4/5;height:auto}
  .dock a[data-sec="light"]{display:none}
  .info{grid-template-columns:1fr}
  .foot__cols{grid-template-columns:1fr}
}

/* 動きを減らす設定：自動の動きをすべて止める */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .js .rv,.js .hero__word,.js .hero__copy,.js .hero__strip{opacity:1;transform:none}
  .light{height:auto}
  .light__stick{position:static;height:auto;display:block}
  .light__view{overflow:visible;height:auto}
  .light__track{width:auto;transform:none;flex-direction:column}
  .lp{opacity:1;height:auto;padding-top:40px;padding-left:var(--pad)}
  .light__scale{display:none}
}
