/* ============================================================
   ヨルガオ蒸留所｜トレース層（E3-A案「夜菫」の器）
   参考S 実測（2026-08-28）から採った構造・タイミング：
   #02慣性(Lenis=site.js) #03行マスク #05文言スワップ #06縦→横スクラブ
   #07実体化＋光の帯 #10特大マーキー #13地紋 #14半透明固定ヘッダー
   トークンは site.css のもの（--bg --face --ink --sub --line --accent --ja --en）を使う。
   ============================================================ */
:root{
  /* 文字サイズは site.css の段（70/52/34・17・19・22）に同期。A4対策 */
  --fs-h1:92px;
  --fs-big:70px;   /* = hd2__en と同段 */
  --fs-mq:clamp(110px,13vw,190px);
  --dotcol:rgba(166,143,208,.32);
}
@media(max-width:820px){:root{--fs-h1:64px;--fs-big:52px}}
@media(max-width:575px){:root{--fs-h1:46px;--fs-big:34px}}
.nw{white-space:nowrap}
.ib{display:inline-block}

/* ── 図版の比率（素の .plx は高さを持たないため必須） ── */
.blk__fig .plx{display:block;aspect-ratio:3/2}
.plx--11 .plx,.plx.plx--11{aspect-ratio:1/1}
.plx--34 .plx,.plx.plx--34{aspect-ratio:3/4}
.plx--45 .plx,.plx.plx--45{aspect-ratio:4/5}
.plx--169 .plx,.plx.plx--169{aspect-ratio:16/9}

/* ── 競り上がり（カバー型のセクション遷移。FVを台座に、幕が順に上を覆う） ── */
body:not(.p) main>.fv{position:sticky;top:0;z-index:0}
body:not(.p) main>section{position:relative}
body:not(.p) .swap-sec{z-index:2;margin-bottom:-55svh}
body:not(.p) .proc{z-index:3;background:var(--bg);margin-bottom:-55svh}
body:not(.p) .proc-stick{background:var(--bg)}
body:not(.p) .blk{background:var(--bg);z-index:4}
/* 競り上がり構造ではセクション間の透間から台座のFVが覗くため、
   全幅帯の直前のセクションが自分の面（padding）で間を埋める */
body:not(.p) .blk:has(+ .band-visit){padding-bottom:calc(var(--sec)*1.1)}
body:not(.p) .band-visit{z-index:4}
body:not(.p) .mqband{background:var(--bg);z-index:4;position:relative}
body:not(.p) .ft{position:relative;z-index:4}

/* ── Botanicals左列（案A採用）：縦位置の写真が下端でドットに溶ける ── */
.blk--2.eq{align-items:stretch}
.bota-fig{position:relative;display:flex;flex-direction:column;height:100%}
.bota-fig::before{content:"";position:absolute;inset:0;
  background-image:radial-gradient(var(--dotcol) 1px,transparent 1.4px);background-size:14px 14px}
.bota-fig .plx{position:relative;z-index:1;aspect-ratio:3/4;flex:none;
  -webkit-mask-image:linear-gradient(#000 58%,transparent 96%);
          mask-image:linear-gradient(#000 58%,transparent 96%)}
@media(max-width:820px){.bota-fig{height:auto}}


/* ── FV（100svh・ドット波canvas＋行マスク） ── */
.fv{position:relative;height:100svh;min-height:600px;overflow:hidden;
  display:flex;align-items:flex-end;margin:0}
.fv__bg{position:absolute;inset:0;background:url(../img/about-exterior.jpg) center/cover no-repeat;
  opacity:.5;filter:saturate(.8) brightness(.72)}
.fv__shade{position:absolute;inset:0;background:
  linear-gradient(to top, #0f0c15 6%, rgba(15,12,21,.6) 46%, rgba(15,12,21,.22));}
.fv__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  opacity:0;transition:opacity 1.2s var(--ease)}
.fv__video.is-on{opacity:.55}
.fv canvas{position:absolute;inset:0;width:100%;height:100%}
.fv .veil{position:absolute;inset:0;background:
  radial-gradient(ellipse at 70% 20%, rgba(30,24,47,.8), transparent 60%)}
.fv__in{position:relative;z-index:2;width:100%;max-width:var(--wrap);margin:0 auto;
  padding:0 var(--pad) 96px;
  display:grid;grid-template-columns:1fr auto;gap:40px;align-items:end}
@media(max-width:900px){.fv__in{grid-template-columns:1fr;padding-bottom:118px}}
.fv__lbl{font-family:var(--en);font-size:13px;letter-spacing:.28em;color:var(--sub);margin:30px 0 0}
.fv h1{font-size:var(--fs-h1);line-height:1.28;font-weight:400;letter-spacing:.04em;margin:0}
.fv h1 .rv{display:block;overflow:hidden}
.fv h1 .rv>span{display:block}
.fv__intro{font-size:17px;color:var(--sub);margin:0;
  writing-mode:vertical-rl;max-height:21em;line-height:2.6;
  letter-spacing:.1em;font-feature-settings:"palt";padding-right:6px}
@media(max-width:900px){
  .fv__intro{writing-mode:horizontal-tb;max-height:none;max-width:22em;
    line-height:2.1;letter-spacing:normal;padding-right:0}
}
.fv__scroll{position:absolute;right:var(--pad);bottom:28px;z-index:2;
  font-family:var(--en);font-size:11px;letter-spacing:.3em;color:var(--sub);writing-mode:vertical-rl}
.fv__scroll::after{content:"";display:block;width:1px;height:52px;background:var(--sub);
  margin:14px auto 0;animation:yg-sline 2.2s ease-in-out infinite}
@keyframes yg-sline{0%{transform:scaleY(0);transform-origin:top}45%{transform:scaleY(1);transform-origin:top}
  55%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* ── #05 スティッキー文言スワップ ── */
.swap-sec{position:relative;height:260vh;margin:0}
.swap-stick{position:sticky;top:0;height:100svh;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:8px;overflow:hidden;
  background-image:radial-gradient(var(--dotcol) 1px,transparent 1.4px);
  background-size:26px 26px;background-color:var(--face)}
.swap-bg{position:absolute;inset:0;background-position:center;background-size:cover;
  opacity:0;transition:opacity .8s var(--ease);filter:brightness(.38) saturate(.85);pointer-events:none}
.swap-bg.on{opacity:.62}
.swap-stick>p{position:relative;z-index:2}
.swap-fixed{font-size:22px;letter-spacing:.14em;color:var(--sub);margin:0}
.swap-hold{position:relative;height:1.7em;width:100%;text-align:center;
  font-size:var(--fs-big);line-height:1.6;margin:0}
.swap-hold b{position:absolute;left:0;right:0;top:0;font-weight:400;color:var(--accent);
  visibility:hidden;opacity:0;transform:translateY(14px);
  transition:opacity .45s,transform .45s,visibility 0s .45s}
.swap-hold b.on{visibility:visible;opacity:1;transform:none;transition:opacity .45s,transform .45s}
.swap-count{font-family:var(--en);font-size:12px;letter-spacing:.18em;color:var(--sub);margin:34px 0 0}

/* ── #06 縦→横スクラブ ＋ #07 実体化 ── */
.proc{position:relative;height:480vh;margin:0}
.proc-stick{position:sticky;top:0;height:100svh;overflow:hidden;
  display:flex;flex-direction:column;justify-content:center;padding-top:92px}
.proc-head{max-width:var(--wrap);width:100%;margin:0 auto 48px;padding:0 var(--pad)}
.strip{display:flex;gap:clamp(24px,3vw,48px);padding-left:var(--pad);will-change:transform;width:max-content}
.pcard{flex:none;width:min(62vw,600px);min-height:min(640px,calc(100svh - 320px));
  border:1px solid var(--line);background:var(--face);
  padding:52px;position:relative;overflow:hidden;
  display:flex;flex-direction:column;justify-content:center}
.pcard::before{content:attr(data-no);position:absolute;right:14px;bottom:-8px;z-index:0;
  font-family:var(--en);font-size:clamp(130px,15vw,220px);line-height:1;
  color:rgba(166,143,208,.09);pointer-events:none}
.pcard>*{position:relative;z-index:1}
.pcard__no{font-family:var(--ja);font-size:13px;letter-spacing:.06em;color:var(--sub)}
.pcard__no i{font-family:var(--en);font-style:normal;font-size:13px;letter-spacing:.14em;
  color:var(--accent);margin-right:14px}
.pcard h3{font-size:27px;font-weight:500;margin:16px 0 18px;letter-spacing:.05em}
.pcard p{font-size:17px;color:var(--sub);max-width:24em;margin:0}
.pcard.still{display:grid;grid-template-columns:1fr 170px;gap:24px;align-items:center}
.pcard.still>div{position:relative;z-index:1}
@media(max-width:820px){.pcard{width:min(82vw,560px);padding:38px;min-height:min(560px,calc(100svh - 300px))}
  .pcard h3{font-size:27px}}
@media(max-width:620px){.pcard.still{grid-template-columns:1fr}.bottle-zone{height:170px}}
.bottle-zone{position:relative;height:250px;
  background-image:radial-gradient(var(--dotcol) 1px,transparent 1.4px);background-size:11px 11px}
.bottle{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center}
.bottle svg{width:86px;height:210px;display:block}
.bottle .glass{fill:rgba(241,238,247,.12);stroke:var(--sub);stroke-width:1.2}
.bottle .liquid{fill:var(--accent);opacity:.85}
.lightband{position:absolute;left:0;right:0;height:34px;
  background:linear-gradient(to top,rgba(166,143,208,.55),transparent);
  bottom:0;opacity:0;pointer-events:none}

/* ── 全幅ブリードのVisit帯（参考Sの実写帯に相当する「面」） ── */
.band-visit{position:relative;height:min(85svh,780px);min-height:520px;margin-top:0;
  background:url(../img/visit-tour.jpg) center/cover no-repeat}
.band-visit::after{content:"";position:absolute;inset:0;background:
  linear-gradient(to top, rgba(15,12,21,.9) 0%, rgba(15,12,21,.35) 48%, rgba(15,12,21,.18))}
.band-visit__in{position:absolute;left:0;right:0;bottom:0;z-index:2;
  max-width:var(--wrap);margin:0 auto;padding:0 var(--pad) 72px}
.band-visit__lbl{font-family:var(--en);font-size:13px;letter-spacing:.24em;color:var(--accent);margin:0 0 18px}
.band-visit h2{font-size:var(--fs-big);line-height:1.4;font-weight:400;letter-spacing:.05em;margin:0 0 18px}
.band-visit p{font-size:17px;color:var(--ink);max-width:30em;margin:0}
@media(max-width:820px){.band-visit p{font-size:16px}.band-visit__in{padding-bottom:56px}}

/* ── トップの帯は一段ゆったり（後半のリズムを1画面級に） ── */
body:not(.p) .blk{padding-top:calc(var(--sec)*1.35)}
body:not(.p) .g3{gap:56px 40px}

/* ── #10 特大マーキー（トップ末尾） ── */
.mqband{overflow:hidden;padding:40px 0 8px;margin:0}
.mq-in{display:flex;gap:70px;width:max-content;animation:yg-mqx 60s linear infinite}
.mq-in span{font-family:var(--en);font-size:var(--fs-mq);line-height:1.15;white-space:nowrap;
  color:#1d1929;font-weight:400}
@keyframes yg-mqx{to{transform:translateX(-50%)}}

/* ── #13 グレイン（JSがbodyに差す） ── */
.grain{position:fixed;inset:0;z-index:40;pointer-events:none;opacity:.06;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/></filter><rect width='160' height='160' filter='url(%23n)'/></svg>")}

/* ── オープニング「花がひらく」（トップのみ・1セッション1回・%表示なし） ── */
#opening{position:fixed;inset:0;z-index:80;background:var(--bg);
  display:flex;flex-direction:column;gap:26px;align-items:center;justify-content:center}
#opening.done{opacity:0;visibility:hidden;transition:opacity .4s var(--ease),visibility 0s .4s}
/* 虹彩オープン: 花が咲ききったら、中心から画面がひらいてFVが現れる */
#opening.op-iris .op-bloom{transform:scale(7);opacity:0;
  transition:transform 1.05s var(--ease),opacity .95s var(--ease)}
#opening.op-iris .op-word{opacity:0;transition:opacity .35s}
.op-bloom{position:relative;width:130px;height:130px}
.op-core{position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px 0 0 -5px;
  border-radius:50%;background:var(--accent);transform:scale(0);
  animation:op-core .5s var(--ease) forwards}
@keyframes op-core{to{transform:scale(1)}}
.op-petal{position:absolute;left:50%;top:50%;width:14px;height:46px;margin-left:-7px;margin-top:-46px;
  transform-origin:50% 100%;background:var(--accent);opacity:.32;
  border-radius:50% 50% 50% 50% / 62% 62% 38% 38%;
  transform:rotate(var(--r)) scaleY(0);
  animation:op-petal .8s var(--ease) .25s forwards}
@keyframes op-petal{to{transform:rotate(var(--r)) scaleY(1)}}
.op-word{font-family:var(--en);font-size:14px;letter-spacing:.4em;color:var(--sub);
  opacity:0;animation:op-word .5s var(--ease) .9s forwards}
@keyframes op-word{to{opacity:1}}
@media(prefers-reduced-motion:reduce){#opening{display:none}}

/* ── #03 行マスク・リビール（FVの見出し専用。他は site.js の .up） ── */
html.js .rv>span{transform:translateY(115%)}
html.js .rv.is-in>span{transform:none;transition:transform 1s var(--ease)}
html.js.force-show .rv>span{transform:none}
@media(prefers-reduced-motion:reduce){
  html.js .rv>span{transform:none;transition:none}
  .mq-in{animation:none}
  .fv__scroll::after{animation:none}
}

/* ── 手組みの気配（AIっぽさの除去・2026-08-28） ──
   1) 和文見出しにプロポーショナルメトリクス。約物（、。）の呼吸を詰める
   2) ラベル装置は箇所ごとに組みを変える（—の全編反復をやめる）
   3) 副導線は下線スライドのテキストリンク。枠ボタンは予約系だけに残す
   4) 一覧カードは静かな微ズーム */
.fv h1,.hd2__ja,.swap-fixed,.pcard h3,.band-visit h2,.ph h1,.art__h{
  font-feature-settings:"palt";}

.tlink{display:inline-flex;align-items:center;min-height:44px;
  font-size:17px;letter-spacing:.06em;color:var(--ink);text-decoration:none;
  background:linear-gradient(currentColor,currentColor) left calc(100% - 8px)/100% 1px no-repeat}
@media(hover:hover){
  .tlink{transition:background-size .5s var(--ease),color .3s}
  .tlink:hover{color:var(--accent);
    background-position:right calc(100% - 8px);background-size:0 1px}
}

.g3__i .plx img,.g3__i .plx .slot{transition:transform .9s var(--ease)}
@media(hover:hover){
  .g3__i:hover .plx img,.g3__i:hover .plx .slot{transform:scale(1.04)}
}
