/* ==========================================================================
   古着フェス® 2026.11.15 LP
   AD: 「ONE OF ONE」— 一点物の値札と入場券で情報を組む
   詳細は docs/アートディレクション.md
   ========================================================================== */

:root{
  /* --- 色 --- */
  --navy:#062778;
  --navy-deep:#041a55;
  --cream:#f4f0e5;
  --beige:#ded7c6;
  --blue:#0c43c8;
  --peri:#9ab8ff;
  --peri-bg:#c3d2f7;
  /* オレンジは用途で3段階に分ける。白文字/クリーム地でAAを満たすため */
  --orange:#d33a20;      /* 購入CTA・バッジの地。白文字で 4.8:1 */
  --orange-ink:#bf331b;  /* クリーム/ベージュ地の上に置くオレンジ文字。5.1:1 */
  --orange-mark:#ed4828; /* 文字を載せない装飾だけ（フック・罫・影・記号） */
  --yellow:#ffd83d;      /* 価格の強調のみ。CTAと競合させない */
  --ink:#12151a;
  --ink-2:#42464d;
  --white:#fff;
  --line:rgba(18,21,26,.16);
  --line-navy:rgba(255,255,255,.24);

  /* --- 書体（役割ごとに1書体） --- */
  --jp:"Zen Kaku Gothic New","Hiragino Kaku Gothic ProN",sans-serif; /* 見出し */
  --body:"Noto Sans JP","Hiragino Kaku Gothic ProN",sans-serif;      /* 本文 */
  --num:"Anton","Archivo Narrow",Impact,sans-serif;                  /* 数字・価格 */
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;/* タグの情報欄 */

  --pad:clamp(20px,5vw,44px);
  --sticky-h:70px;
  --sec-y:clamp(76px,12vw,148px);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--cream);color:var(--ink);
  font-family:var(--body);font-weight:500;line-height:1.9;
  -webkit-font-smoothing:antialiased;
  padding-bottom:var(--sticky-h);overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:inherit}
/* CTAの地色と同じオレンジだと、ボタン上でフォーカスが見えない。二重リングにする */
:focus-visible{outline:3px solid var(--white);outline-offset:2px;box-shadow:0 0 0 6px var(--ink)}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto}
}

.wrap{width:min(100% - calc(var(--pad) * 2),1200px);margin-inline:auto}
.sec{padding:var(--sec-y) 0;position:relative}
.sec--cream{background:var(--cream)}
.sec--beige{background:var(--beige)}
.sec--navy{background:var(--navy);color:var(--white)}
.sec--peri{background:var(--peri-bg)}

/* --------------------------------------------------------------------------
   共通パーツ
   -------------------------------------------------------------------------- */
.tag{                                   /* 下げ札。セクション見出しに使う */
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.2em;
  text-transform:uppercase;
  background:var(--ink);color:var(--cream);
  padding:7px 14px 7px 26px;margin:0 0 30px;position:relative;
}
.tag::before{                           /* 札の穴 */
  content:"";position:absolute;left:10px;top:50%;transform:translateY(-50%);
  width:7px;height:7px;border-radius:50%;
  background:transparent;box-shadow:inset 0 0 0 2px var(--cream);
}
.sec--navy .tag{background:var(--cream);color:var(--ink)}
.sec--navy .tag::before{box-shadow:inset 0 0 0 2px var(--ink)}

.kicker{
  font-family:var(--mono);font-size:clamp(12px,1.5vw,14px);font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:var(--orange-ink);margin:0 0 16px;
}
.sec--navy .kicker{color:var(--peri)}

h2.h{
  font-family:var(--jp);font-weight:900;
  font-size:clamp(30px,6.2vw,64px);line-height:1.24;letter-spacing:-.015em;
  margin:0 0 26px;text-wrap:balance;
}
h2.h em{font-style:normal;color:var(--blue)}
.sec--navy h2.h em{color:var(--peri)}

.body{font-size:clamp(14px,1.5vw,15.5px);line-height:2.15;max-width:34em;margin:0 0 28px}
.sec--navy .body{color:rgba(255,255,255,.86)}

.textlink{
  display:inline-flex;align-items:center;gap:10px;
  font-size:14px;font-weight:700;color:var(--blue);text-decoration:none;
  border-bottom:1.5px solid var(--blue);padding-bottom:5px;
}
.sec--navy .textlink{color:var(--peri);border-color:var(--peri)}

.stamp{                                  /* 検品スタンプ */
  font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.18em;
  text-transform:uppercase;border:1.5px solid currentColor;padding:4px 9px;
  display:inline-block;transform:rotate(-3deg);
}
.pending{
  display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.08em;
  border:1px dashed currentColor;padding:2px 9px;opacity:.85;
}

/* --------------------------------------------------------------------------
   ヘッダー
   -------------------------------------------------------------------------- */
.nav{
  position:fixed;inset:0 0 auto 0;z-index:80;
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px var(--pad);
  transition:background-color .3s ease,box-shadow .3s ease;
}
.nav.is-solid{background:rgba(6,39,120,.97);box-shadow:0 1px 0 var(--line-navy)}
.nav__logo{width:46px;height:auto;background:var(--white);padding:4px}
.nav__links{display:none;gap:26px;font-size:13px;font-weight:700;color:var(--white)}
.nav__links a{text-decoration:none;opacity:.82}
.nav__links a:hover{opacity:1}
.nav__cta{
  font-size:12.5px;font-weight:700;color:var(--white);text-decoration:none;
  border:1px solid var(--line-navy);padding:11px 16px;white-space:nowrap;
}

/* --------------------------------------------------------------------------
   1. ヒーロー — ロード時にラックがかき分けられる
   -------------------------------------------------------------------------- */
.hero{
  position:relative;min-height:100svh;display:flex;align-items:flex-end;
  padding:132px 0 52px;color:var(--white);overflow:hidden;background:var(--navy);
}
.hero__bg{position:absolute;inset:0;z-index:0}
.hero__bg img{width:100%;height:100%;object-fit:cover;object-position:58% 50%}
.hero__bg::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(96deg,var(--navy) 0%,rgba(6,39,120,.95) 32%,rgba(6,39,120,.58) 62%,rgba(6,39,120,.22) 100%);
}
/* ラックのスリット。中央から外へ開く */
.hero__slits{position:absolute;inset:0;z-index:1;display:grid;grid-template-columns:repeat(10,1fr);pointer-events:none}
.hero__slits{display:none}
body.js-motion .hero__slits{display:grid}
.hero__slits i{background:var(--navy-deep);transform-origin:bottom;transform:scaleY(1);
  transition:transform .95s cubic-bezier(.76,0,.24,1)}
body.is-ready .hero__slits i{transform:scaleY(0)}
.hero__slits i:nth-child(5),.hero__slits i:nth-child(6){transition-delay:.04s}
.hero__slits i:nth-child(4),.hero__slits i:nth-child(7){transition-delay:.10s}
.hero__slits i:nth-child(3),.hero__slits i:nth-child(8){transition-delay:.16s}
.hero__slits i:nth-child(2),.hero__slits i:nth-child(9){transition-delay:.22s}
.hero__slits i:nth-child(1),.hero__slits i:nth-child(10){transition-delay:.28s}

.hero .wrap{position:relative;z-index:2}
.hero__lead{display:flex;align-items:center;gap:14px;font-family:var(--mono);
  font-size:11.5px;font-weight:600;letter-spacing:.24em;margin:0 0 18px}
.hero__lead::before{content:"";width:26px;height:2px;background:var(--orange-mark);flex:none}
.badge{display:inline-block;background:var(--orange);color:var(--white);
  font-size:11.5px;font-weight:700;letter-spacing:.08em;padding:5px 12px;margin:0 0 18px}

.hero__copy{
  font-family:var(--jp);font-weight:900;
  font-size:clamp(38px,8.2vw,92px);line-height:1.14;letter-spacing:-.025em;margin:0 0 24px;
}
.hero__copy em{font-style:normal;color:var(--peri)}
.hero__copy span{display:block;overflow:hidden}
body.js-motion .hero__copy span > b{transform:translateY(105%)}
.hero__copy span > b{display:block;font-weight:inherit;
  transition:transform .85s cubic-bezier(.2,.8,.2,1)}
body.is-ready .hero__copy span > b{transform:none}
.hero__copy span:nth-child(2) > b{transition-delay:.08s}
.hero__copy span:nth-child(3) > b{transition-delay:.16s}

/* 規模を数字で即座に見せる */
.hero__scale{display:flex;flex-wrap:wrap;gap:22px 34px;margin:0 0 28px;padding:0;list-style:none;
  transition:opacity .7s ease .5s,transform .7s ease .5s}
body.js-motion .hero__scale{opacity:0;transform:translateY(14px)}
body.is-ready .hero__scale{opacity:1;transform:none}
.hero__scale b{display:block;font-family:var(--num);font-size:clamp(34px,6vw,54px);
  line-height:.94;letter-spacing:.01em}
.hero__scale > li > span{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;opacity:.8}
.hero__scale b span{font:inherit;letter-spacing:inherit;opacity:1}

.hero__sub{font-size:15px;line-height:2;margin:0 0 30px;color:rgba(255,255,255,.9);max-width:30em}
.hero__cta{display:grid;gap:12px;max-width:440px}

.hero__date{
  position:absolute;right:var(--pad);bottom:52px;z-index:2;
  background:var(--cream);color:var(--ink);padding:16px 20px;min-width:230px;
  box-shadow:7px 7px 0 rgba(4,26,85,.55);
}
.hero__date small{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.2em}
.hero__date b{display:block;font-family:var(--num);font-size:40px;line-height:1.05;margin:6px 0 6px}
.hero__date b i{font-style:normal;color:var(--orange-ink)}
.hero__date p{margin:0;display:flex;justify-content:space-between;font-family:var(--mono);
  font-size:11px;letter-spacing:.08em}

/* 狭い画面では日付カードを絶対配置から通常フローへ戻す（CTAと重なるため） */
@media (max-width:899px){
  .hero{display:block;padding-bottom:36px}
  .hero__date{position:static;margin:34px 0 0;min-width:0;box-shadow:6px 6px 0 rgba(4,26,85,.55)}
}

/* --------------------------------------------------------------------------
   ティッカー（ページ内で動くのはここだけ）
   -------------------------------------------------------------------------- */
.ticker{background:var(--blue);color:var(--white);overflow:hidden;padding:15px 0}
.ticker__track{display:flex;gap:40px;width:max-content;animation:slide 30s linear infinite}
.ticker span{font-family:var(--num);font-size:clamp(19px,3vw,32px);letter-spacing:.03em;white-space:nowrap}
@keyframes slide{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* --------------------------------------------------------------------------
   2. ABOUT
   -------------------------------------------------------------------------- */
.split{display:grid;gap:52px;align-items:center}
.card300{position:relative;background:var(--blue);color:var(--white);padding:36px 28px 26px;
  box-shadow:14px 14px 0 var(--ink)}
.card300__n{font-family:var(--num);font-size:clamp(88px,18vw,164px);line-height:.82;margin:0}
.card300__n sup{font-size:.3em;vertical-align:super;margin-left:.04em}
.card300__tag{position:absolute;top:-13px;right:14px;background:var(--orange);
  font-family:var(--mono);font-size:10.5px;font-weight:700;padding:5px 11px;letter-spacing:.08em}
.card300__meta{margin:22px 0 0;font-size:12.5px;line-height:1.9;
  border-top:1px solid rgba(255,255,255,.3);padding-top:14px}
.card300__foot{display:flex;justify-content:space-between;font-family:var(--mono);
  font-size:10.5px;letter-spacing:.12em;margin-top:10px;opacity:.85}

.trio{display:grid;border:1px solid var(--line);margin-top:70px;background:var(--cream)}
.trio__i{position:relative;padding:28px 24px 44px;border-bottom:1px solid var(--line)}
.trio__i:last-child{border-bottom:none}
.trio__i::before{content:"";position:absolute;top:-1px;left:24px;width:56px;height:5px;background:var(--orange-mark)}
.trio__n{font-family:var(--num);font-size:22px;color:var(--blue);display:block;margin-bottom:22px}
.trio__i h3{font-family:var(--jp);font-size:20px;font-weight:900;margin:0 0 12px}
.trio__i p{margin:0;font-size:13.5px;line-height:1.95;color:var(--ink-2)}
.trio__f{position:absolute;right:24px;bottom:16px;font-family:var(--mono);font-size:10px;
  letter-spacing:.14em;color:var(--blue);opacity:.7}

.strip{background:var(--ink);color:var(--white);padding:22px 26px;display:grid;gap:12px;margin-top:34px}
.strip__t{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.2em;color:var(--peri)}
.strip ul{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:13.5px;font-weight:700}
.strip li::before{content:"／ ";color:var(--orange-mark)}

/* --------------------------------------------------------------------------
   3. DIG — スクロールで写真が掘られる（sticky重ね）
   -------------------------------------------------------------------------- */
.dig{background:var(--ink);color:var(--white);padding:var(--sec-y) 0 0}
.digstack{position:relative}
.digstack__i{position:sticky;top:9vh;height:78vh;margin:0 0 6vh;overflow:hidden}
.digstack__i img{width:100%;height:100%;object-fit:cover}
.digstack__i::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(18,21,26,0) 45%,rgba(18,21,26,.9) 100%)}
.digstack__cap{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:22px 24px;
  display:flex;justify-content:space-between;align-items:flex-end;gap:16px}
.digstack__cap h3{font-family:var(--jp);font-size:clamp(20px,3.6vw,34px);font-weight:900;margin:0}
.digstack__cap .stamp{transition:opacity .4s ease,transform .4s cubic-bezier(.2,.9,.2,1)}
body.js-motion .digstack__cap .stamp{opacity:0;transform:rotate(-3deg) scale(1.25)}
.digstack__i.is-on .digstack__cap .stamp{opacity:1;transform:rotate(-3deg) scale(1)}
.dig__note{padding:56px 0 var(--sec-y);font-family:var(--mono);font-size:11px;
  letter-spacing:.14em;color:rgba(255,255,255,.55)}

/* --------------------------------------------------------------------------
   4. チケット — ページで最も作り込むブロック
   -------------------------------------------------------------------------- */
.tickets{display:grid;gap:20px;margin-top:14px}
.choice{display:grid;gap:6px;margin:0 0 30px;font-family:var(--mono);font-size:12px;letter-spacing:.06em}
.choice b{color:var(--orange-ink)}

.tk{
  position:relative;padding:34px 26px 0;overflow:hidden;
  display:flex;flex-direction:column;
}
.tk--general{background:var(--white);color:var(--ink);box-shadow:10px 10px 0 rgba(18,21,26,.14)}
.tk--early{background:var(--navy);color:var(--cream);box-shadow:10px 10px 0 rgba(18,21,26,.14)}
.tk__hook{position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:52px;height:12px;border-radius:0 0 26px 26px;background:var(--orange-mark)}
.tk--early .tk__hook{background:var(--peri)}
/* ミシン目と、その両端の半円ノッチ。位置は必ず連動する */
.tk__perf{position:relative;border-top:2px dashed var(--line);margin:0 -26px 22px;height:0}
.tk--early .tk__perf{border-color:var(--line-navy)}
.tk__perf::before,.tk__perf::after{
  content:"";position:absolute;top:50%;width:26px;height:26px;border-radius:50%;
  background:var(--cream);transform:translateY(-50%);
}
.tk__perf::before{left:-13px}
.tk__perf::after{right:-13px}

.tk__ribbon{
  position:absolute;top:22px;right:-34px;transform:rotate(38deg);
  background:var(--orange);color:var(--white);font-family:var(--mono);font-size:10px;
  font-weight:700;letter-spacing:.14em;padding:6px 40px;
}
.tk__type{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;margin:0 0 4px}
.tk__name{font-family:var(--jp);font-size:20px;font-weight:900;margin:0 0 22px}
.tk__price{display:flex;align-items:baseline;gap:8px;margin:0 0 6px}
.tk__price b{font-family:var(--num);font-size:clamp(64px,14vw,104px);line-height:.86;letter-spacing:.005em}
/* 価格に引く黄色のマーカー。疑似要素＋z-index:-1 はカードの地に隠れるため背景で描く */
.tk--general .tk__price b{
  background:linear-gradient(transparent 58%,var(--yellow) 58% 86%,transparent 86%);
  padding:0 4px;margin-left:-4px;
}
.tk__price small{font-family:var(--mono);font-size:12px;letter-spacing:.1em}
.tk__save{display:inline-block;background:var(--yellow);color:var(--ink);
  font-size:12px;font-weight:700;padding:5px 12px;margin:0 0 20px}
.tk__entry{font-family:var(--num);font-size:clamp(34px,7vw,52px);line-height:1;margin:0 0 6px;color:var(--peri)}
.tk__feats{list-style:none;margin:0 0 26px;padding:0;display:grid;gap:9px;font-size:13.5px;line-height:1.75}
.tk__feats li{display:flex;gap:9px}
.tk__feats li::before{content:"／";color:var(--orange-mark);flex:none}
.tk--early .tk__feats li::before{color:var(--peri)}
.tk__stub{
  margin:auto -26px 0;padding:14px 26px;display:flex;justify-content:space-between;
  align-items:center;gap:14px;font-family:var(--mono);font-size:10px;letter-spacing:.14em;
  border-top:2px dashed var(--line);
}
.tk--early .tk__stub{border-color:var(--line-navy)}
.tk__bars{height:26px;flex:1;max-width:150px;
  background:repeating-linear-gradient(90deg,currentColor 0 2px,transparent 2px 4px,currentColor 4px 5px,transparent 5px 9px);
  opacity:.75}
.tk .btn{margin:0 -26px;width:calc(100% + 52px)}

.reassure{display:flex;flex-wrap:wrap;gap:10px 26px;margin:28px 0 0;padding:0;list-style:none;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;color:var(--ink-2)}
.sec--navy .reassure{color:rgba(255,255,255,.75)}

/* --------------------------------------------------------------------------
   5. 開催概要・SOCIAL・GUIDE・FAQ
   -------------------------------------------------------------------------- */
.cal{position:relative;background:var(--cream);color:var(--ink);padding:30px 26px 26px;
  box-shadow:10px 10px 0 var(--orange-mark)}
.cal__brand{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.18em;margin:0 0 18px}
.cal__d{display:flex;align-items:baseline;gap:10px;font-family:var(--num)}
.cal__d .y{font-size:17px;color:var(--ink-2)}
.cal__d .m{font-size:clamp(46px,9vw,68px);line-height:1}
.cal__d .w{font-size:17px}
.cal__rows{border-top:1px solid var(--line);margin-top:18px;padding-top:16px;display:grid;gap:9px;font-size:13px}

.info{width:100%;border-collapse:collapse;font-size:14px}
.info th,.info td{padding:16px 6px;border-bottom:1px solid var(--line-navy);text-align:left;vertical-align:top}
.info th{width:6.5em;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:var(--peri);font-weight:600}

.report{background:var(--cream);padding:28px 26px;box-shadow:8px 8px 0 rgba(18,21,26,.16)}
.report__t{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.16em;margin:0 0 20px}
.report__row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;
  border-bottom:1px solid var(--line);padding:15px 0}
.report__row b{font-size:13px;font-weight:700}
.report__n{font-family:var(--num);font-size:clamp(38px,7.6vw,60px);line-height:1;color:var(--blue)}
.report__n small{font-family:var(--body);font-size:.34em;font-weight:700;margin-left:2px}
.report__f{font-family:var(--mono);font-size:10.5px;line-height:1.8;color:var(--ink-2);margin:16px 0 0}

.steps{display:grid;border-top:1px solid var(--line)}
.step{display:grid;grid-template-columns:54px 1fr;gap:14px;padding:22px 0;border-bottom:1px solid var(--line)}
.step__n{font-family:var(--num);font-size:24px;color:var(--orange-ink);line-height:1.2}
.step h3{font-family:var(--jp);margin:0 0 8px;font-size:16.5px;font-weight:900}
.step p{margin:0;font-size:13.5px;line-height:1.95;color:var(--ink-2)}

.faq{display:grid;gap:8px}
.faq details{background:var(--white);border:1px solid var(--line);padding:0 18px}
.faq summary{cursor:pointer;list-style:none;padding:18px 0;font-size:15px;font-weight:700;
  display:flex;justify-content:space-between;gap:14px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--num);color:var(--orange-ink);font-size:20px;flex:none}
.faq details[open] summary::after{content:"–"}
.faq p{margin:0 0 18px;font-size:14px;line-height:1.95;color:var(--ink-2)}

/* --------------------------------------------------------------------------
   6. 最終CTA・フッター
   -------------------------------------------------------------------------- */
.final{position:relative;text-align:center;color:var(--white);padding:clamp(84px,14vw,160px) 0;overflow:hidden}
.final__bg{position:absolute;inset:0}
.final__bg img{width:100%;height:100%;object-fit:cover}
.final__bg::after{content:"";position:absolute;inset:0;background:rgba(6,39,120,.84)}
.final .wrap{position:relative;z-index:1}
.final__logo{width:66px;margin:0 auto 14px;background:var(--white);padding:6px}
.final__line{font-family:var(--mono);font-size:11px;letter-spacing:.18em;margin:0 0 18px}
.final h2{font-family:var(--jp);font-weight:900;font-size:clamp(30px,7vw,62px);line-height:1.26;margin:0 0 20px}
.final .body{margin-inline:auto}
.final__cta{display:grid;gap:12px;max-width:420px;margin:0 auto}
.final .reassure{justify-content:center;color:rgba(255,255,255,.75)}

.partners{display:flex;flex-wrap:wrap;gap:16px;margin:0 0 44px}
.partners figure{flex:1 1 240px;margin:0;border:1px solid var(--line);background:var(--white);
  padding:22px;display:grid;place-items:center;gap:12px}
.partners img{max-height:46px;width:auto}
.partners figcaption{font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--ink-2)}
.foot{border-top:1px solid var(--line);padding-top:30px;font-family:var(--mono);
  font-size:11px;line-height:2.1;color:var(--ink-2)}

/* --------------------------------------------------------------------------
   ボタン
   -------------------------------------------------------------------------- */
.btn{
  display:flex;align-items:center;justify-content:center;gap:10px;
  min-height:64px;padding:14px 22px;border:none;
  font-family:var(--jp);font-size:16.5px;font-weight:900;letter-spacing:.02em;
  text-decoration:none;cursor:pointer;text-align:center;
  transition:filter .14s ease,transform .1s ease;
}
.btn:active{transform:translateY(2px)}
.btn--primary{background:var(--orange);color:var(--white)}
.btn--primary:hover{filter:brightness(1.08)}
.btn--ghost{background:transparent;color:var(--white);border:1.5px solid rgba(255,255,255,.5);
  min-height:58px;font-size:15px}
.sec--cream .btn--ghost,.sec--beige .btn--ghost{color:var(--ink);border-color:var(--ink)}
.btn--cream{background:var(--cream);color:var(--navy)}
.btn--ig{background:var(--white);color:var(--ink);min-height:58px;font-size:15px}
.btn.is-pending{background:rgba(18,21,26,.12);color:var(--ink-2);cursor:not-allowed;
  font-size:13.5px;font-weight:700}
.tk--early .btn.is-pending,.sec--navy .btn.is-pending,.final .btn.is-pending{
  background:rgba(255,255,255,.14);color:rgba(255,255,255,.78)}
.cta-note{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;opacity:.6;margin:12px 0 0}

/* --------------------------------------------------------------------------
   固定CTA（券種を価格と入場時刻で比較できる形にする）
   -------------------------------------------------------------------------- */
.sticky-cta{
  position:fixed;inset:auto 0 0 0;z-index:90;background:rgba(18,21,26,.97);
  padding:9px var(--pad) calc(9px + env(safe-area-inset-bottom));
  transform:translateY(120%);visibility:hidden;pointer-events:none;
  transition:transform .26s ease,visibility 0s linear .26s;
}
.sticky-cta.is-visible{transform:none;visibility:visible;pointer-events:auto;
  transition:transform .26s ease,visibility 0s}
.sticky-cta__row{display:flex;gap:8px}
.sticky-cta .btn{min-height:52px;flex:1;flex-direction:column;gap:1px;padding:8px 10px}
.sticky-cta .btn u{text-decoration:none;font-family:var(--mono);font-size:9.5px;
  font-weight:600;letter-spacing:.12em;opacity:.8}
.sticky-cta .btn strong{font-family:var(--num);font-size:19px;font-weight:400;letter-spacing:.02em}
.sticky-cta .btn--primary{flex:1.35}

/* ABテスト：割当確定まで全案を隠す */
[data-ab]{display:none}
[data-ab].ab-on{display:block}

/* --------------------------------------------------------------------------
   デスクトップ
   -------------------------------------------------------------------------- */
@media (min-width:900px){
  body{padding-bottom:0}
  .sticky-cta{display:none}
  .nav__links{display:flex}
  .hero__cta{grid-template-columns:1fr 1fr;max-width:660px}
  .split{grid-template-columns:1.1fr .9fr;gap:80px}
  .trio{grid-template-columns:repeat(3,1fr)}
  .trio__i{border-bottom:none;border-right:1px solid var(--line)}
  .trio__i:last-child{border-right:none}
  .strip{display:flex;align-items:center;justify-content:space-between;gap:40px;padding:20px 32px}
  .strip ul{grid-auto-flow:column;gap:44px}
  .tickets{grid-template-columns:1.5fr 1fr;gap:24px}
  .choice{grid-template-columns:1.5fr 1fr;gap:24px}
  .digstack__cap{padding:34px 36px}
}

/* ==========================================================================
   MOTION
   transform と opacity だけを動かす。価格・入場時刻・会場・日付は動かさない。
   ========================================================================== */

/* --- スクロール進捗レール（ラックのレールに見立てる） --- */
.rail{position:fixed;inset:0 0 auto 0;height:3px;z-index:99;background:rgba(18,21,26,.12)}
.rail__bar{height:100%;background:var(--orange-mark);transform:scaleX(0);transform-origin:0 50%;
  will-change:transform}

/* --- 見出しの行送り --- */
h2.h .ln,.final h2 .ln{display:block;overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em}
h2.h .ln > b,.final h2 .ln > b{display:block;font-weight:inherit;transform:translateY(108%);
  transition:transform .9s cubic-bezier(.16,.84,.24,1)}
h2.h.is-in .ln > b,.final h2.is-in .ln > b{transform:none}
h2.h.is-in .ln:nth-child(2) > b{transition-delay:.09s}
h2.h.is-in .ln:nth-child(3) > b{transition-delay:.18s}
h2.h.is-in .ln:nth-child(4) > b{transition-delay:.27s}
.final h2.is-in .ln:nth-child(2) > b{transition-delay:.09s}

/* --- 汎用リビール --- */
[data-reveal]{opacity:0;transform:translate3d(0,30px,0);
  transition:opacity .8s cubic-bezier(.16,.84,.24,1) var(--d,0ms),
             transform .8s cubic-bezier(.16,.84,.24,1) var(--d,0ms)}
[data-reveal].is-in{opacity:1;transform:none}
h2.h[data-reveal],.final h2[data-reveal]{opacity:1;transform:none}   /* 行送りに任せる */

/* 札は横から差し込まれる */
.tag[data-reveal]{transform:translate3d(-22px,0,0)}
/* カードは持ち上がる */
.card300[data-reveal],.tk[data-reveal],.report[data-reveal],.cal[data-reveal]{
  transform:translate3d(0,44px,0) scale(.97)}
.card300[data-reveal].is-in,.tk[data-reveal].is-in,.report[data-reveal].is-in,.cal[data-reveal].is-in{
  transform:none}

/* --- 写真のワイプ --- */
[data-reveal-img]{overflow:hidden}
[data-reveal-img] img{clip-path:inset(0 0 100% 0);transform:scale(1.14);
  transition:clip-path 1.05s cubic-bezier(.16,.84,.24,1),transform 1.25s cubic-bezier(.16,.84,.24,1)}
[data-reveal-img].is-in img{clip-path:inset(0);transform:none}

/* --- ヒーロー --- */
.hero__bg img{will-change:transform}
.hero .wrap{will-change:transform,opacity}

/* --- ティッカー：2本を逆方向に流す --- */
.ticker{transition:transform .25s ease-out;will-change:transform}
.ticker--rev .ticker__track{animation-direction:reverse;animation-duration:36s}
.ticker--rev{background:var(--ink)}
.ticker--rev span{color:var(--cream)}
.ticker__track{transform:translateX(var(--vel,0));will-change:transform}

/* --- DIG：奥の写真が沈む --- */
.digstack__i{transform:scale(calc(1 - var(--p,0) * .07)) translate3d(0,calc(var(--p,0) * -22px),0);
  filter:brightness(calc(1 - var(--p,0) * .35));will-change:transform,filter}
.digstack__cap h3{transition:transform .8s cubic-bezier(.16,.84,.24,1),opacity .8s ease}
body.js-motion .digstack__cap h3{transform:translate3d(0,26px,0);opacity:0}
.digstack__i.is-on .digstack__cap h3{transform:none;opacity:1}

/* カーソルに付く札 */
.digcursor{position:fixed;top:0;left:0;z-index:100;pointer-events:none;
  font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.18em;
  background:var(--orange-mark);color:var(--white);padding:6px 11px;
  opacity:0;transition:opacity .2s ease;will-change:transform}
.digcursor.is-on{opacity:1}
@media (hover:none),(pointer:coarse){.digcursor{display:none}}

/* --- 券のチルト --- */
.tickets{perspective:1200px}
.tk{transform-style:preserve-3d;
  transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s ease}
.tk.is-in:hover{transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateZ(10px)}
.tk.is-in:hover.tk--general{box-shadow:18px 18px 0 rgba(18,21,26,.16)}
.tk.is-in:hover.tk--early{box-shadow:18px 18px 0 rgba(18,21,26,.2)}
.tk__hook{transition:transform .35s cubic-bezier(.2,.8,.2,1);transform-origin:top center}
.tk:hover .tk__hook{transform:translateX(-50%) scaleY(1.5)}

/* --- ボタン --- */
.btn{transition:filter .14s ease,transform .18s cubic-bezier(.2,.8,.2,1),background-color .14s ease}
.btn--primary:hover,.btn--cream:hover{filter:brightness(1.06)}

/* --- カードのホバー --- */
.trio__i{transition:background-color .3s ease,transform .3s cubic-bezier(.2,.8,.2,1)}
.trio__i:hover{background:var(--white);transform:translateY(-4px)}
.step{transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.step:hover{transform:translateX(6px)}
.partners figure{transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.partners figure:hover{transform:translateY(-5px)}
.faq details{transition:border-color .25s ease}
.faq details[open]{border-color:var(--orange-mark)}

/* --- 動きを止める設定のときは全部静止 --- */
@media (prefers-reduced-motion:reduce){
  [data-reveal],[data-reveal-img] img,h2.h .ln > b,.final h2 .ln > b,
  .digstack__cap h3{opacity:1!important;transform:none!important;clip-path:none!important}
  .digstack__i{transform:none!important;filter:none!important}
  .rail{display:none}
}
