/* 空中世界 プラネタリウムライブ — 青く澄んだ夜空の情緒。星は風景、円い写真は「星の窓／月／ドームの光」
   色はすべて写真の舞台光（青・水色）と着物の白から。黒・墨色を主にしない */
:root {
  --sky-0: #0b2c5c;    /* 天頂の深い群青 */
  --sky-1: #15498a;
  --sky-2: #2a6fb2;
  --sky-3: #5c9fd6;    /* 地平に近い空 */
  --haze: #a8d6f2;     /* 遠い空の縁の大気 */
  --light: #eef8ff;    /* 縁の光・月の光 */
  --ink: #f4f9fc;
  --ink-sub: #d3e6f4;
  --deep: #0a2a57;     /* 下の情報欄の地 */
  --line: rgba(238, 248, 255, .32);
  --display: "Zen Old Mincho", "Yu Mincho", serif;
  --jp: "BIZ UDPMincho", "Yu Mincho", serif;
  --num: "Spectral", "BIZ UDPMincho", serif;
  --gutter: clamp(40px, 5vw, 80px);
  /* 星の見え方（site.js が読む）。視線の方向は開演時刻の空の東〜南東 */
  --view-az: 120; --view-alt: 48; --view-x: .4; --view-y: .26; --view-f: .55; --star-gain: 1.45;
}

/* ========================================================================== */
/* 正式タイトル全面改修（案E/F）                                             */
/* ========================================================================== */
.v-e { --paper: #f5f7fa; --paper-ink: #10284c; --silver: #cbd8e6; --silver-soft: rgba(222, 232, 242, .58); }
.v-e .fv-text { width: calc(min(590px, 43vw) + var(--gutter)); padding-top: 118px; }
.v-e .n-small { max-width: 440px; font-size: 16px; letter-spacing: .16em; }
.v-e .title { margin-top: 9px; font-size: clamp(80px, 8vw, 122px); font-weight: 400; letter-spacing: .08em; text-shadow: 0 3px 24px rgba(1, 10, 32, .32); }
.v-e .hero-tagline { margin-top: 13px; color: #fff; font-size: clamp(18px, 1.55vw, 23px); letter-spacing: .12em; text-shadow: 0 2px 18px rgba(1, 10, 32, .55); }
.v-e .facts { text-shadow: 0 2px 20px rgba(1, 10, 32, .66); }
.v-e .btn { min-width: 238px; }

.full-prologue { position: relative; min-height: 94svh; display: grid; align-items: center; padding: 120px max(var(--gutter), calc((100vw - 1160px) / 2)); overflow: hidden; background:
  radial-gradient(circle at 77% 38%, rgba(117, 183, 232, .18), transparent 28%),
  linear-gradient(145deg, #06152f 0%, #092d62 56%, #164f86 100%); }
.full-prologue::before { content: ""; position: absolute; inset: 0; opacity: .42; background:
  radial-gradient(circle at 82% 20%, #fff 0 1px, transparent 1.5px),
  radial-gradient(circle at 69% 58%, #fff 0 1px, transparent 1.4px),
  radial-gradient(circle at 91% 72%, #fff 0 1.2px, transparent 1.7px),
  radial-gradient(circle at 62% 31%, rgba(255,255,255,.82) 0 1px, transparent 1.5px); background-size: 220px 190px, 310px 260px, 420px 360px, 540px 440px; }
.full-prologue-copy { position: relative; z-index: 2; width: min(700px, 64vw); }
.full-prologue h2 { margin: 0 0 52px; font: 400 clamp(50px, 5.8vw, 84px)/1.45 var(--display); letter-spacing: .07em; }
.full-prologue-copy > p:not(.section-label) { margin-top: 18px; font-size: clamp(16px, 1.4vw, 19px); line-height: 2.2; letter-spacing: .05em; }
.full-prologue-orbit { position: absolute; width: 76vw; height: 42vw; right: -26vw; bottom: -20vw; border: 1px solid rgba(226, 240, 251, .42); border-radius: 50%; transform: rotate(-12deg); box-shadow: 0 -1px 30px rgba(172, 217, 247, .16); }
.full-prologue-orbit::after { content: ""; position: absolute; inset: 7% 9%; border: 1px solid rgba(226, 240, 251, .18); border-radius: inherit; }

.full-experience { background: var(--paper); color: var(--paper-ink); padding: 132px 0 0; }
.experience-header { width: min(930px, calc(100% - var(--gutter) * 2)); margin: 0 auto 118px; text-align: center; }
.full-experience .section-label { color: #58708f; }
.experience-header h2 { margin: 0; font: 400 clamp(48px, 5.8vw, 82px)/1.42 var(--display); letter-spacing: .05em; }
.experience-header > p:last-child { width: min(760px, 100%); margin: 44px auto 0; font-size: 17px; line-height: 2.15; letter-spacing: .035em; }
.experience-sequence { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); background: #061733; color: #eef6fc; }
.experience-item { position: relative; min-width: 0; min-height: 760px; display: flex; flex-direction: column; overflow: hidden; background: #071d42; border-top: 1px solid rgba(216, 233, 246, .18); }
.experience-item + .experience-item { border-left: 1px solid rgba(216, 233, 246, .18); }
.experience-item-media { position: relative; flex: 0 0 auto; aspect-ratio: 16 / 10; margin: 0; overflow: hidden; background: #071c42; border-bottom: 1px solid rgba(216, 233, 246, .18); }
.experience-item-media picture { position: absolute; inset: 0; display: block; }
.experience-item-media img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.86) contrast(1.04); transition: transform 1.2s ease; }
.experience-item-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(2, 13, 34, .03), rgba(2, 13, 34, .27)); box-shadow: inset 0 0 58px rgba(3, 17, 43, .22); pointer-events: none; }
.experience-item-music .experience-item-media img { object-position: 50% 24%; }
.experience-item-visual .experience-item-media img { object-position: 50% 51%; }
.experience-item-space .experience-item-media img { object-position: 50% 48%; filter: saturate(.78) contrast(1.03) brightness(.92); }
.experience-item-copy { position: relative; z-index: 1; flex: 1; display: flex; flex-direction: column; justify-content: flex-start; padding: clamp(48px, 4vw, 64px) clamp(32px, 3.4vw, 52px) clamp(62px, 5vw, 78px); }
.experience-item-meta { display: flex; align-items: baseline; gap: 22px; }
.experience-item-no { font: 300 clamp(46px, 4vw, 64px)/1 var(--num); color: rgba(220, 236, 248, .3); }
.experience-item-label { margin: 0; font: 400 12px/1.5 var(--num); letter-spacing: .22em; color: #a9c4dc; }
.experience-item-label span { margin-left: 10px; font-family: var(--jp); letter-spacing: .08em; }
.experience-item h3 { min-height: 3.24em; margin: 38px 0 0; font: 400 clamp(25px, 2.25vw, 32px)/1.62 var(--display); letter-spacing: .025em; }
.experience-item-body { margin-top: 34px; padding-top: 30px; border-top: 1px solid rgba(216, 233, 246, .2); }
.experience-item-body p { margin: 0; font-size: 16px; line-height: 2; letter-spacing: .02em; color: #d7e6f2; }
.experience-item-body p + p { margin-top: 7px; }

.full-message { position: relative; min-height: clamp(620px, 76svh, 760px); display: flex; align-items: center; padding: 110px max(var(--gutter), calc((100vw - 1320px) / 2)); overflow: hidden; text-align: left; color: #0b2341; background: #edf5fa; }
.full-message::before { content: ""; position: absolute; z-index: 1; inset: 0; pointer-events: none; background:
  linear-gradient(90deg, rgba(255, 255, 255, .98) 0%, rgba(251, 253, 255, .94) 28%, rgba(244, 249, 252, .68) 46%, rgba(238, 247, 252, .12) 69%, transparent 100%),
  linear-gradient(180deg, rgba(255, 255, 255, .2), transparent 26%, rgba(235, 245, 251, .12) 72%, rgba(229, 241, 248, .4)); }
.full-message .section-label { color: #5e7891; }
.full-message-copy { position: relative; z-index: 2; width: min(540px, 45vw); }
.full-message h2 { margin: 0 0 62px; font: 400 clamp(48px, 5.8vw, 80px)/1.5 var(--display); letter-spacing: .07em; }
.full-message-copy > p:not(.section-label) { margin-top: 21px; font-size: 18px; line-height: 2.2; letter-spacing: .065em; color: #334d67; }
.full-message-visual { position: absolute; z-index: 0; inset: 0; width: 100%; height: 100%; margin: 0; overflow: hidden; background: #dfe9f1; }
.full-message-visual img { width: 100%; height: 100%; object-fit: cover; object-position: 64% 42%; filter: brightness(1.12) saturate(.92); transform: scale(1.04); }
.full-message-visual::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgba(255, 255, 255, .06), transparent 42%, rgba(235, 245, 250, .08)); }

.full-artist { min-height: 100svh; display: grid; grid-template-columns: minmax(0, 1fr) minmax(480px, 1fr); background: #071d42; }
.full-artist-photo { position: relative; min-height: 900px; margin: 0; overflow: hidden; }
.full-artist-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 49% 28%; filter: saturate(.83) contrast(1.04) brightness(.89); }
.full-artist-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, transparent 65%, #071d42 100%); }
.full-artist-copy { align-self: center; padding: 110px clamp(52px, 7vw, 118px) 110px clamp(42px, 6vw, 96px); }
.full-artist h2 { margin: 0; font: 400 clamp(58px, 6vw, 84px)/1.25 var(--display); letter-spacing: .1em; }
.artist-catch { margin-top: 34px; font: 400 clamp(24px, 2.2vw, 34px)/1.75 var(--display); letter-spacing: .06em; }
.artist-profile { margin-top: 48px; padding-top: 38px; border-top: 1px solid rgba(226, 238, 248, .28); }
.artist-profile p { margin-top: 15px; font-size: 15px; line-height: 2; color: #d7e5f2; }

.full-venue { position: relative; min-height: 105svh; display: grid; align-items: center; padding: 130px max(var(--gutter), calc((100vw - 1180px) / 2)); overflow: hidden; background: url("../assets/backgrounds/fv-bg-a02-celestial-canopy.png") center / cover no-repeat; }
.full-venue-overlay { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(2, 12, 34, .95) 0%, rgba(3, 18, 48, .86) 44%, rgba(4, 23, 55, .32) 75%, rgba(3, 18, 44, .46) 100%); }
.full-venue-copy { position: relative; z-index: 1; width: min(650px, 57vw); }
.full-venue h2 { margin: 0 0 48px; font: 400 clamp(62px, 7vw, 98px)/1.32 var(--display); letter-spacing: .08em; }
.full-venue-copy > p:not(.section-label):not(.venue-address) { margin-top: 20px; font-size: 16px; line-height: 2.12; }
.venue-address { margin-top: 46px; padding-top: 24px; border-top: 1px solid rgba(222, 237, 250, .34); font-size: 14px; line-height: 1.9; letter-spacing: .06em; color: #d6e7f4; }

.full-info { padding: 130px max(var(--gutter), calc((100vw - 1160px) / 2)) 150px; background: var(--paper); color: var(--paper-ink); }
.full-info .section-label { color: #58708f; }
.full-info-head { text-align: center; }
.full-info-head h2 { margin: 0; font: 400 clamp(44px, 5vw, 68px)/1.4 var(--display); letter-spacing: .08em; }
.info-event-name { margin-top: 54px; font: 400 22px/1.85 var(--display); letter-spacing: .08em; }
.info-event-name span { display: inline-block; margin-top: 4px; font-size: clamp(54px, 6vw, 78px); letter-spacing: .08em; }
.info-tagline { margin-top: 12px; font: 400 19px/1.8 var(--display); letter-spacing: .09em; color: #31597e; }
.full-event-spec { width: min(900px, 100%); margin: 76px auto 0; border-top: 1px solid rgba(26, 66, 107, .3); }
.full-event-spec > div { display: grid; grid-template-columns: 150px 1fr; gap: 28px; padding: 24px 0; border-bottom: 1px solid rgba(26, 66, 107, .2); }
.full-event-spec dt { font: 400 12px/1.8 var(--num); letter-spacing: .18em; color: #54708e; }
.full-event-spec dd { margin: 0; font-size: 18px; line-height: 1.8; }
.full-event-spec dd small { display: block; margin-top: 3px; font-size: 13px; color: #58708f; }

.ticket-area { margin-top: 132px; }
.ticket-heading { text-align: center; }
.ticket-heading h3 { margin: 0; font: 400 clamp(44px, 5vw, 68px)/1.45 var(--display); letter-spacing: .08em; }
.ticket-direction { margin-top: 17px; font: 400 11px/1.5 var(--num); letter-spacing: .18em; color: #58708f; }
.ticket-invitation .direction-b, .ticket-boarding .direction-a { display: none; }
.ticket-pass { position: relative; width: min(980px, 100%); margin: 68px auto 0; padding: 58px 66px 38px; overflow: hidden; background:
  radial-gradient(circle at 78% 22%, rgba(111, 171, 221, .2), transparent 25%),
  linear-gradient(145deg, #06142f 0%, #0a2d5c 68%, #0e3d70 100%); color: #eef6fc; box-shadow: 0 26px 70px rgba(7, 26, 55, .18); }
.ticket-pass::before { content: ""; position: absolute; width: 105%; height: 70%; left: -22%; top: -39%; border: 1px solid rgba(224, 234, 244, .36); border-radius: 50%; transform: rotate(-8deg); pointer-events: none; }
.ticket-pass-head { position: relative; display: grid; grid-template-columns: 1fr auto; gap: 10px 40px; align-items: end; padding-bottom: 34px; border-bottom: 1px solid rgba(222, 234, 246, .38); }
.ticket-pass-kicker { grid-column: 1 / -1; font: 400 10px/1.5 var(--num); letter-spacing: .25em; color: #bcd0e4; }
.ticket-pass-title { font: 300 clamp(36px, 4vw, 54px)/1.1 var(--num); letter-spacing: .1em; }
.ticket-pass-title span { font-size: .39em; letter-spacing: .27em; color: #bcd0e4; }
.ticket-pass-date { font: 300 22px/1 var(--num); letter-spacing: .11em; color: #d9e7f3; white-space: nowrap; }
.ticket-classes { position: relative; margin: 16px 0 0; padding: 0; list-style: none; }
.ticket-class { display: flex; justify-content: space-between; align-items: center; min-height: 70px; gap: 24px; border-bottom: 1px solid rgba(222, 234, 246, .2); }
.ticket-class > div { display: grid; grid-template-columns: 76px 90px auto; align-items: center; gap: 14px; }
.seat-code { font: 300 30px/1 var(--num); letter-spacing: .05em; color: #fff; }
.seat-name { font-size: 15px; letter-spacing: .08em; color: #d8e6f2; }
.ticket-class small { font-size: 11px; letter-spacing: .05em; color: #f0d8a1; }
.ticket-class strong { font: 300 25px/1 var(--num); letter-spacing: .04em; }
.ticket-class.featured { border-top: 1px solid rgba(240, 216, 161, .6); border-bottom-color: rgba(240, 216, 161, .6); }
.ticket-class.featured .seat-code, .ticket-class.featured strong { color: #f6e1b1; }
.ticket-pass-foot { display: flex; justify-content: space-between; gap: 18px; margin-top: 30px; font: 400 9px/1.5 var(--num); letter-spacing: .16em; color: #9eb6ce; }

/* 比較案F：搭乗券の情報構造だけを取り込み、装飾は静かに保つ */
.ticket-boarding .ticket-pass { padding: 0; background: #071b3b; border: 1px solid rgba(183, 204, 225, .64); box-shadow: 0 26px 70px rgba(7, 26, 55, .16); }
.ticket-boarding .ticket-pass::before { width: 1px; height: 100%; left: 31%; top: 0; border: 0; border-left: 1px dashed rgba(206, 220, 234, .34); border-radius: 0; transform: none; }
.ticket-boarding .ticket-pass-head { padding: 50px 54px 34px; background: linear-gradient(145deg, #0a2f61, #0b3e74); }
.ticket-boarding .ticket-classes { display: grid; grid-template-columns: repeat(5, 1fr); margin: 0 0 0 31%; padding: 28px 34px; }
.ticket-boarding .ticket-class { min-width: 0; min-height: 190px; display: flex; flex-direction: column; justify-content: space-between; align-items: flex-start; gap: 22px; padding: 20px 10px; border: 0; border-left: 1px solid rgba(216, 230, 242, .17); }
.ticket-boarding .ticket-class:first-child { border-left: 0; }
.ticket-boarding .ticket-class > div { display: flex; flex-direction: column; align-items: flex-start; gap: 9px; }
.ticket-boarding .seat-code { font-size: 34px; }
.ticket-boarding .seat-name { font-size: 13px; }
.ticket-boarding .ticket-class strong { font-size: clamp(16px, 1.65vw, 21px); white-space: nowrap; }
.ticket-boarding .ticket-pass-foot { position: absolute; left: 34px; bottom: 38px; width: calc(31% - 68px); flex-direction: column; gap: 8px; }

.preregister { width: min(900px, 100%); margin: 128px auto 0; padding: 76px 90px; text-align: center; border: 1px solid rgba(29, 69, 109, .24); background: rgba(255,255,255,.54); }
.preregister h3 { margin: 0; font: 400 clamp(37px, 4vw, 52px)/1.5 var(--display); letter-spacing: .07em; }
.preregister > p:not(.section-label) { margin-top: 10px; font-size: 15px; color: #58708f; }
.sale-schedule { margin-top: 42px; text-align: left; border-top: 1px solid rgba(29, 69, 109, .22); }
.sale-schedule > div { display: grid; grid-template-columns: 130px 1fr; gap: 24px; padding: 15px 0; border-bottom: 1px solid rgba(29, 69, 109, .17); }
.sale-schedule dt { font-size: 12px; letter-spacing: .08em; color: #58708f; }
.sale-schedule dd { margin: 0; font-size: 14px; }
.registration-button { display: inline-flex; align-items: center; justify-content: center; min-width: 290px; min-height: 58px; margin-top: 44px; padding: 0 32px; color: #fff; background: #0b2a55; border: 1px solid #1d456d; letter-spacing: .1em; text-decoration: none; }
.registration-button:hover { background: #12396f; }
.registration-note { display: block; margin-top: 12px; font-size: 12px; color: #718298; }

.full-ending { min-height: 92svh; display: grid; place-content: center; justify-items: center; padding: 120px var(--gutter); text-align: center; background:
  radial-gradient(circle at 50% 24%, rgba(97, 156, 212, .3), transparent 35%),
  linear-gradient(180deg, #0a376a 0%, #071c42 64%, #04132f 100%); }
.full-ending h2 { margin: 0; font: 400 clamp(48px, 6vw, 82px)/1.5 var(--display); letter-spacing: .07em; }
.full-ending > p:not(.section-label) { margin-top: 36px; font-size: 18px; letter-spacing: .08em; }

@media (max-width: 760px) {
  .v-e .fv { min-height: 108svh; }
  .v-e .fv-text { width: auto; min-height: 108svh; padding: 0 var(--gutter) 28px; }
  .v-e .name { margin-bottom: 13px; }
  .v-e .n-small { font-size: 11px; letter-spacing: .11em; }
  .v-e .title { margin-top: 1px; font-size: 64px; line-height: 1.14; }
  .v-e .hero-tagline { margin-top: 5px; font-size: 15px; line-height: 1.65; }
  .v-e .facts { width: 100%; }
  .v-e .date { font-size: 30px; }
  .v-e .f-start, .v-e .f-venue { font-size: 14px; }
  .v-e .f-note { display: none; }

  .full-prologue { min-height: 88svh; padding: 94px var(--gutter); }
  .full-prologue-copy { width: 100%; }
  .full-prologue h2 { margin-bottom: 42px; font-size: 43px; line-height: 1.55; }
  .full-prologue-copy > p:not(.section-label) { margin-top: 16px; font-size: 15px; line-height: 2.1; }
  .full-prologue-orbit { width: 145vw; height: 85vw; right: -85vw; bottom: -24vw; }

  .full-experience { padding-top: 92px; }
  .experience-header { width: calc(100% - var(--gutter) * 2); margin-bottom: 76px; text-align: left; }
  .experience-header h2 { font-size: 42px; line-height: 1.55; }
  .experience-header > p:last-child { margin-top: 34px; font-size: 15px; line-height: 2; }
  .experience-sequence { grid-template-columns: 1fr; }
  .experience-item { min-height: 0; }
  .experience-item + .experience-item { border-left: 0; }
  .experience-item-media { aspect-ratio: 16 / 10; }
  .experience-item-music .experience-item-media img { object-position: 50% 23%; }
  .experience-item-copy { min-height: 430px; padding: 52px var(--gutter) 64px; }
  .experience-item-meta { gap: 18px; }
  .experience-item-no { font-size: 48px; }
  .experience-item-label { font-size: 12px; }
  .experience-item h3 { min-height: 0; margin-top: 30px; font-size: clamp(23px, 7.15vw, 28px); line-height: 1.68; letter-spacing: .035em; }
  .experience-item-body { margin-top: 28px; padding-top: 25px; }
  .experience-item-body p { font-size: 16px; line-height: 2; }
  .experience-item-body p + p { margin-top: 8px; }

  .full-message { min-height: 760px; display: flex; align-items: flex-start; padding: 82px var(--gutter) 90px; text-align: left; color: #0b2341; background: #edf5fa; }
  .full-message::before { display: block; background:
    linear-gradient(180deg, rgba(255, 255, 255, .99) 0%, rgba(251, 253, 255, .97) 52%, rgba(244, 250, 253, .82) 67%, rgba(233, 244, 250, .34) 82%, rgba(225, 239, 247, .08) 100%),
    linear-gradient(90deg, rgba(255, 255, 255, .52), transparent 74%); }
  .full-message-copy { width: 100%; }
  .full-message h2 { margin-bottom: 44px; font-size: 40px; line-height: 1.58; }
  .full-message-copy > p:not(.section-label) { font-size: 15px; line-height: 2.12; }
  .full-message-visual { inset: 0; width: 100%; height: 100%; margin: 0; }
  .full-message-visual img { object-position: 60% 100%; transform: scale(1.02); }

  .full-artist { min-height: auto; display: flex; flex-direction: column; }
  .full-artist-copy { order: 1; padding: 72px var(--gutter) 44px; }
  .full-artist-photo { order: 2; min-height: 0; aspect-ratio: 3 / 4; }
  .full-artist-photo img { object-position: 49% 30%; }
  .full-artist-photo::after { background: linear-gradient(180deg, #071d42 0%, transparent 22%); }
  .full-artist h2 { font-size: 54px; }
  .artist-catch { margin-top: 26px; font-size: 23px; line-height: 1.75; }
  .artist-profile { margin-top: 38px; padding-top: 28px; }
  .artist-profile p { font-size: 14px; line-height: 2; }

  .full-venue { min-height: 100svh; padding: 98px var(--gutter); background-position: 63% center; }
  .full-venue-overlay { background: linear-gradient(180deg, rgba(2, 12, 34, .54) 0%, rgba(3, 18, 48, .86) 48%, rgba(3, 18, 48, .96) 100%); }
  .full-venue-copy { width: 100%; align-self: end; }
  .full-venue h2 { margin-bottom: 38px; font-size: 58px; }
  .full-venue-copy > p:not(.section-label):not(.venue-address) { font-size: 14px; line-height: 2; }
  .venue-address { margin-top: 34px; font-size: 13px; }

  .full-info { padding: 92px var(--gutter) 100px; }
  .full-info-head h2 { font-size: 42px; }
  .info-event-name { margin-top: 38px; font-size: 17px; }
  .info-event-name span { font-size: 52px; }
  .info-tagline { font-size: 15px; }
  .full-event-spec { margin-top: 54px; }
  .full-event-spec > div { grid-template-columns: 1fr; gap: 4px; padding: 18px 0; }
  .full-event-spec dd { font-size: 16px; }

  .ticket-area { margin-top: 96px; }
  .ticket-heading h3 { font-size: 40px; }
  .ticket-pass { margin-top: 48px; padding: 38px 22px 28px; }
  .ticket-pass-head { display: block; padding-bottom: 26px; }
  .ticket-pass-title { margin-top: 15px; font-size: 33px; }
  .ticket-pass-date { margin-top: 18px; font-size: 16px; }
  .ticket-class { min-height: 68px; gap: 12px; }
  .ticket-class > div { grid-template-columns: 52px 45px 1fr; gap: 8px; min-width: 0; }
  .seat-code { font-size: 23px; }
  .seat-name { font-size: 12px; }
  .ticket-class small { font-size: 9px; line-height: 1.4; }
  .ticket-class strong { font-size: 19px; white-space: nowrap; }
  .ticket-pass-foot { flex-direction: column; gap: 4px; margin-top: 24px; }

  .ticket-boarding .ticket-pass { padding: 0; }
  .ticket-boarding .ticket-pass::before { display: none; }
  .ticket-boarding .ticket-pass-head { padding: 36px 22px 26px; }
  .ticket-boarding .ticket-classes { display: block; margin: 0; padding: 12px 22px; }
  .ticket-boarding .ticket-class { min-height: 68px; flex-direction: row; align-items: center; padding: 13px 0; border-left: 0; border-bottom: 1px solid rgba(216, 230, 242, .17); }
  .ticket-boarding .ticket-class > div { flex-direction: row; align-items: center; gap: 12px; }
  .ticket-boarding .seat-code { width: 48px; font-size: 26px; }
  .ticket-boarding .ticket-class strong { font-size: 19px; }
  .ticket-boarding .ticket-pass-foot { position: static; width: auto; margin: 0; padding: 18px 22px 26px; }

  .preregister { margin-top: 92px; padding: 54px 20px; }
  .preregister h3 { font-size: 34px; }
  .sale-schedule { margin-top: 34px; }
  .sale-schedule > div { grid-template-columns: 1fr; gap: 3px; padding: 13px 0; }
  .registration-button { min-width: 0; width: 100%; margin-top: 34px; padding: 0 18px; }
  .registration-note { line-height: 1.7; }

  .full-ending { min-height: 82svh; padding: 94px var(--gutter); }
  .full-ending h2 { font-size: 39px; line-height: 1.62; }
  .full-ending > p:not(.section-label) { margin-top: 28px; font-size: 15px; }
}

body { background: var(--deep); color: var(--ink); font: 400 17px/1.9 var(--jp); overflow-x: hidden; }

/* ---------- ファーストビュー ---------- */
/* 空の色の変化は、薄明の空（天頂ほど深く、地平ほど明るい）として置く。紫は入れない */
.fv { position: relative; min-height: 100svh; overflow: hidden; isolation: isolate;
  background:
    radial-gradient(70% 55% at var(--moon-x, 68%) var(--moon-y, 46%), rgba(150, 205, 245, .28), rgba(150, 205, 245, 0) 70%),
    linear-gradient(180deg, var(--sky-0) 0%, var(--sky-1) 38%, var(--sky-2) 70%, var(--sky-3) 100%); }
/* フィルムの粒子（グラデーションの帯を消し、写真と同じ質感にそろえる） */
.fv::after { content: ""; position: absolute; inset: 0; z-index: 4; pointer-events: none; opacity: .09; 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='.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"); }
.stars { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; }

/* 遠い空の縁：画面より大きな円の上端だけ。黒い地平ではなく、青白い大気の光 */
.rim-light { position: absolute; z-index: 1; border-radius: 50%; width: var(--rim-w, 300vw); height: var(--rim-w, 300vw);
  left: calc(var(--rim-x, 30%) - var(--rim-w, 300vw) / 2); top: calc(100% - var(--rim-top, 110px));
  /* 縁だけが明るく、内側は空の青へ溶ける（平らな面にしない＝惑星の表面に見せない） */
  background: radial-gradient(closest-side, var(--sky-2) 0%, var(--sky-2) 88%, var(--sky-3) 95%, var(--haze) 98.6%, var(--light) 99.7%, rgba(238, 248, 255, 0) 100%);
  box-shadow: 0 0 0 1px rgba(238, 248, 255, .9), 0 -2px 6px rgba(238, 248, 255, .6), 0 -10px 34px rgba(190, 228, 250, .45), 0 -40px 110px rgba(150, 205, 245, .25); }

/* 星の窓（円い写真）：月のように、縁に柔らかな光 */
.window { position: absolute; z-index: 2; margin: 0; border-radius: 50%; overflow: hidden;
  width: var(--win); height: var(--win); left: calc(var(--moon-x, 68%) - var(--win) / 2); top: calc(var(--moon-y, 46%) - var(--win) / 2);
  box-shadow: 0 0 0 1px rgba(238, 248, 255, .55), 0 0 36px 4px rgba(200, 232, 255, .45), 0 0 140px 30px rgba(140, 200, 250, .28); }
.window img { width: 100%; height: 100%; object-fit: cover; }

/* 文字 */
.fv-text { position: relative; z-index: 3; min-height: 100svh; display: flex; flex-direction: column; justify-content: space-between;
  width: calc(min(520px, 40vw) + var(--gutter)); padding: 132px 0 var(--text-bottom, 150px) var(--gutter); }
.name-h { font-weight: 400; margin: 0; }
.n-artist { display: block; font: 600 clamp(52px, 4.6vw, 68px)/1.15 var(--display); letter-spacing: .12em; }
.n-format { display: block; font: 400 clamp(22px, 1.9vw, 27px)/1.5 var(--display); letter-spacing: .12em; margin-top: 10px; color: var(--ink-sub); }
.n-small { font: 400 18px/1.6 var(--display); letter-spacing: .12em; color: var(--ink-sub); }
.title { font: 600 clamp(56px, 5vw, 76px)/1.15 var(--display); letter-spacing: .06em; margin-top: 6px; }
.lead { margin-top: 26px; font: 400 19px/1.9 var(--display); letter-spacing: .08em; color: var(--ink-sub); }
.f-date { line-height: 1.2; display: flex; align-items: baseline; flex-wrap: wrap; gap: 0 .5em; }
.date { font: 400 44px/1.1 var(--num); letter-spacing: .01em; }
.dow { font-size: 18px; }
.f-start { font-size: 18px; margin-left: .8em; }
.k { font-size: 14px; letter-spacing: .1em; color: var(--ink-sub); margin-right: .5em; }
.f-venue { font-size: 18px; margin-top: 6px; }
.area { margin-left: .8em; font-size: 15px; color: var(--ink-sub); }
.f-cta { margin-top: 22px; display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.f-note { font-size: 14px; color: var(--ink-sub); }
/* ボタン：月の光の白。四角・影なし・同じ明朝。記号は使わない */
.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 50px; padding: 0 30px;
  background: var(--light); color: var(--deep); text-decoration: none; font-size: 17px; letter-spacing: .12em; transition: background-color .2s; }
.btn:hover { background: #ffffff; }

/* ---------- 案A：人物の魅力をやや強く（大きな星の窓に正面の写真） ---------- */
.v-a { --win: min(82svh, 780px); --moon-x: 69%; --moon-y: 47%; --rim-x: 30%; --rim-top: 118px; }
.v-a .window img { object-position: 40% 16%; }

/* ---------- 案B：星空・空間の美しさをやや強く（空が主役、小さな月の窓） ---------- */
.v-b { --win: min(34svh, 320px); --moon-x: 72%; --moon-y: 30%; --rim-w: 260vw; --rim-x: 50%; --rim-top: 250px; --text-bottom: 290px;
  --view-az: 104; --view-alt: 52; --view-x: .55; --view-y: .3; --view-f: .62; --star-gain: 1.6; }
.v-b .window img { object-position: 48% 30%; }
.v-b .fv { background:
    radial-gradient(40% 36% at var(--moon-x) var(--moon-y), rgba(170, 215, 250, .3), rgba(170, 215, 250, 0) 70%),
    linear-gradient(180deg, var(--sky-0) 0%, var(--sky-1) 34%, var(--sky-2) 66%, var(--sky-3) 100%); }

/* ---------- A05 仮置き：生成背景「薄明の星」＋本人写真を右へ ---------- */
.v-c { --text-bottom: 126px; }
.v-c .fv { background: #071a3c url("../assets/backgrounds/fv-bg-a05b-cosmic-depth.png") 66% center / cover no-repeat; }
.v-c .stars, .v-c .rim-light { display: none; }
.v-c .window { width: min(52vw, 820px); height: 100svh; left: auto; right: -1vw; top: 0; border-radius: 0; box-shadow: none;
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, .62) 14%, #000 30%, #000 100%);
  mask-image: linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, .62) 14%, #000 30%, #000 100%); }
.v-c .window img { object-position: 46% 17%; opacity: .97; filter: saturate(.82) contrast(1.02) brightness(.9) hue-rotate(2deg); }
.v-c .window::after { content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(90deg, rgba(7, 26, 60, .5) 0%, rgba(7, 26, 60, .08) 28%, transparent 52%),
    linear-gradient(0deg, rgba(7, 26, 60, .08), transparent 46%); }
.v-c .fv-text { width: calc(min(520px, 42vw) + var(--gutter)); }
.v-c .name, .v-c .facts { text-shadow: 0 2px 22px rgba(2, 12, 32, .35); }
.v-c .area { display: block; margin-left: 0; }

/* ---------- 第1弾KV同期版：透明な門・白金の軌道・地平光・水面 ---------- */
.v-d {
  --pearl: #fff8e8;
  --champagne: #f4d6a0;
  --ice: #cbeaff;
  --deep: #061b43;
  --ink-sub: #dcecff;
  --line: rgba(239, 226, 194, .34);
  --text-bottom: 92px;
}
.v-d .fv {
  background:
    linear-gradient(90deg, rgba(3, 16, 46, .56) 0%, rgba(3, 16, 46, .25) 36%, rgba(3, 16, 46, .03) 66%),
    url("../assets/backgrounds/fv-bg-kv-gateway-wide.png") 50% 50% / cover no-repeat;
}
.v-d .fv::before { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background:
    linear-gradient(180deg, rgba(3, 13, 38, .08) 0%, transparent 57%, rgba(4, 18, 48, .25) 100%),
    linear-gradient(90deg, rgba(242, 220, 174, .14) 0 1px, transparent 1px) 18% 0 / 24% 100%;
  opacity: .7; }
.v-d .stars, .v-d .rim-light, .v-d .window { display: none; }
.v-d .fv-text { width: calc(min(560px, 42vw) + var(--gutter)); padding-top: 112px; }
.v-d .name, .v-d .facts { text-shadow: 0 3px 26px rgba(1, 9, 31, .58); }
.v-d .n-artist { color: var(--pearl); font-weight: 400; letter-spacing: .16em; }
.v-d .n-format { color: var(--ice); font-size: clamp(20px, 1.65vw, 24px); letter-spacing: .18em; }
.v-d .lead { color: rgba(242, 248, 255, .84); }
.v-d .date { color: var(--pearl); }
.v-d .btn { color: var(--pearl); background: rgba(6, 27, 67, .3); border: 1px solid rgba(255, 244, 218, .72); backdrop-filter: blur(8px); }
.v-d .btn:hover { background: rgba(255, 248, 232, .96); color: #102a55; }

/* ---------- A05b 下層：詩的な余白とドームの曲線を戻す ---------- */
.section-label { margin: 0 0 24px; font: 400 12px/1.4 var(--num); letter-spacing: .28em; color: rgba(230, 244, 255, .72); }
.section-label.dark { color: rgba(20, 48, 75, .58); }

.prologue { position: relative; min-height: 92svh; display: grid; place-items: center; overflow: hidden; padding: 120px var(--gutter);
  background: linear-gradient(180deg, rgba(6, 24, 57, .16), rgba(6, 24, 57, .58)), url("../assets/backgrounds/fv-bg-a05b-cosmic-depth.png") 50% 52% / cover no-repeat; }
.prologue::before { content: ""; position: absolute; inset: 0; background: radial-gradient(70% 65% at 50% 45%, rgba(87, 157, 218, .06), rgba(4, 18, 46, .56)); }
.prologue-inner { position: relative; z-index: 2; width: min(100%, 1080px); }
.prologue h2 { margin: 0; font: 400 clamp(50px, 6vw, 88px)/1.32 var(--display); letter-spacing: .08em; text-shadow: 0 4px 28px rgba(0, 0, 0, .2); }
.prologue h2 > span { display: block; }
.prologue h2 > span:last-child { margin-left: .9em; }
.prologue-tail { display: inline; }
.prologue-copy { margin: 58px 0 0 auto; width: min(430px, 48%); color: var(--ink-sub); font: 400 18px/2.25 var(--display); letter-spacing: .08em; }
.dome-arc { position: absolute; z-index: 1; width: 122vw; height: 52vw; left: -11vw; bottom: -42vw; border: 1px solid rgba(216, 239, 255, .55); border-radius: 50% 50% 0 0 / 100% 100% 0 0;
  box-shadow: 0 -2px 20px rgba(204, 235, 255, .2), 0 -40px 110px rgba(92, 163, 219, .12); }
.v-d .prologue {
  background:
    linear-gradient(180deg, rgba(4, 18, 50, .22), rgba(4, 18, 50, .68)),
    url("../assets/backgrounds/fv-bg-a05b-cosmic-depth.png") 48% 52% / cover no-repeat;
}
.v-d .prologue::before { background: radial-gradient(70% 50% at 58% 72%, rgba(255, 226, 174, .16), rgba(3, 15, 43, .5) 72%); }
.v-d .prologue::after { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .32;
  background: linear-gradient(90deg, transparent 12%, rgba(230, 246, 255, .46) 12.08%, transparent 12.2%, transparent 82%, rgba(230, 246, 255, .4) 82.08%, transparent 82.2%); }
.v-d .dome-arc { border-color: rgba(247, 221, 170, .68); box-shadow: 0 -2px 18px rgba(255, 238, 204, .22), 0 -48px 120px rgba(108, 180, 235, .14); }

.experience { min-height: 100svh; display: grid; grid-template-columns: minmax(360px, .92fr) minmax(420px, 1.08fr); gap: clamp(50px, 8vw, 140px); align-items: center; padding: 120px clamp(48px, 8vw, 140px); background: #edf5f8; color: #14304b; overflow: hidden; }
.experience-visual { position: relative; min-height: min(78svh, 800px); display: grid; place-items: center; }
.portrait-orbit { position: relative; width: min(38vw, 560px); aspect-ratio: .72; border-radius: 48% 48% 12px 12px / 30% 30% 12px 12px; box-shadow: 0 30px 80px rgba(21, 69, 107, .18); }
.portrait-orbit::before, .portrait-orbit::after { content: ""; position: absolute; pointer-events: none; border-radius: 50%; }
.portrait-orbit::before { z-index: 0; inset: -8% -18% 8%; border: 1px solid rgba(38, 98, 143, .24); transform: rotate(-11deg); }
.portrait-orbit::after { z-index: 2; inset: 10% -27% 17%; border: 1px solid rgba(38, 98, 143, .14); transform: rotate(17deg); }
.portrait-orbit picture { position: relative; z-index: 1; display: block; width: 100%; height: 100%; overflow: hidden; border-radius: inherit; }
.portrait-orbit img { width: 100%; height: 100%; object-fit: cover; object-position: 52% 22%; filter: saturate(.72) contrast(.98) brightness(.92) hue-rotate(3deg); }
.experience-copy { position: relative; z-index: 2; max-width: 620px; }
.experience-copy h2 { margin: 0; font: 400 clamp(46px, 5vw, 74px)/1.35 var(--display); letter-spacing: .08em; }
.moments { margin: 64px 0 0; padding: 0; list-style: none; border-top: 1px solid rgba(20, 48, 75, .2); }
.moments li { display: grid; grid-template-columns: 54px 1fr; align-items: baseline; gap: 16px; padding: 24px 0; border-bottom: 1px solid rgba(20, 48, 75, .2); }
.moment-no { font: 300 13px/1 var(--num); letter-spacing: .12em; color: rgba(20, 48, 75, .5); }
.moments h3 { margin: 0; font: 400 28px/1.3 var(--display); letter-spacing: .12em; }
.moments p { margin: 6px 0 0; color: rgba(20, 48, 75, .68); font-size: 16px; }
.v-d .experience { position: relative; background: linear-gradient(135deg, #f7f5ee 0%, #e8f3f8 52%, #f6efe1 100%); color: #102c54; }
.v-d .experience::before { content: ""; position: absolute; width: 78vw; height: 34vw; left: 8vw; top: 22%; border: 1px solid rgba(164, 135, 86, .26); border-radius: 50%; transform: rotate(-7deg); pointer-events: none; }
.v-d .experience-visual { z-index: 1; }
.v-d .portrait-orbit { border-radius: 48% 48% 8px 8px / 22% 22% 8px 8px; box-shadow: 0 34px 90px rgba(11, 50, 94, .2), 0 0 0 1px rgba(255, 255, 255, .9); }
.v-d .portrait-orbit::before { border-color: rgba(166, 128, 65, .42); }
.v-d .portrait-orbit::after { border-color: rgba(31, 82, 131, .24); }

.sky-break { position: relative; min-height: 82svh; display: grid; place-items: center; overflow: hidden; padding: 100px var(--gutter); text-align: center;
  background: url("../assets/backgrounds/fv-bg-a04-luminous-afterglow.png") 58% center / cover no-repeat; }
.sky-break::before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(4, 20, 50, .2), rgba(4, 20, 50, .48)); }
.sky-break-copy { position: relative; z-index: 1; }
.sky-break-copy > p:last-child { margin: 0; font: 400 clamp(46px, 5.8vw, 84px)/1.45 var(--display); letter-spacing: .11em; text-shadow: 0 4px 30px rgba(2, 14, 38, .42); }
.v-d .sky-break { background: url("../assets/backgrounds/fv-bg-a04-luminous-afterglow.png") 58% center / cover no-repeat; }
.v-d .sky-break::before { background: linear-gradient(180deg, rgba(3, 14, 41, .28), rgba(4, 21, 55, .38)); }
.v-d .sky-break-copy > p:last-child { color: var(--pearl); }

.artist-story { min-height: 100svh; display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(420px, .92fr); background: #09234b; overflow: hidden; }
.artist-photo { min-height: 100svh; margin: 0; position: relative; }
.artist-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, transparent 54%, #09234b 100%), linear-gradient(0deg, rgba(9, 35, 75, .35), transparent 48%); }
.artist-photo picture { display: block; width: 100%; height: 100%; }
.artist-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 48% 28%; filter: saturate(.58) contrast(1.06) brightness(.77) hue-rotate(-26deg); }
.artist-copy { align-self: center; max-width: 560px; padding: 120px clamp(48px, 7vw, 120px) 120px 20px; position: relative; z-index: 1; }
.artist-copy h2 { margin: 0; font: 400 clamp(54px, 6vw, 86px)/1.2 var(--display); letter-spacing: .16em; }
.artist-lead { margin: 52px 0 0; font: 400 clamp(28px, 3vw, 42px)/1.8 var(--display); letter-spacing: .08em; }
.artist-body { margin: 34px 0 0; max-width: 430px; color: var(--ink-sub); font-size: 16px; line-height: 2.1; }
.v-d .artist-story { position: relative; background: linear-gradient(135deg, #061b43 0%, #0d3464 100%); }
.v-d .artist-story::after { content: ""; position: absolute; width: 72vw; height: 32vw; right: -28vw; top: 8%; border: 1px solid rgba(244, 214, 160, .26); border-radius: 50%; transform: rotate(17deg); pointer-events: none; }
.v-d .artist-photo { margin: clamp(26px, 4vw, 66px) 0 clamp(26px, 4vw, 66px) clamp(26px, 4vw, 66px); min-height: calc(100svh - clamp(52px, 8vw, 132px)); overflow: hidden; border: 1px solid rgba(228, 241, 250, .38); }
.v-d .artist-photo img { filter: saturate(.74) contrast(1.02) brightness(.9) hue-rotate(-12deg); }
.v-d .artist-photo::after { background: linear-gradient(90deg, transparent 68%, rgba(6, 27, 67, .72) 100%), linear-gradient(0deg, rgba(6, 27, 67, .24), transparent 48%); }

.venue-story { position: relative; min-height: 90svh; display: grid; place-items: center; overflow: hidden; padding: 110px var(--gutter); text-align: center;
  background: url("../assets/backgrounds/fv-bg-a02-celestial-canopy.png") center 44% / cover no-repeat; }
.venue-story::before { content: ""; position: absolute; inset: 0; background: radial-gradient(70% 58% at 50% 45%, rgba(20, 64, 111, .02), rgba(2, 15, 40, .68)); }
.venue-dome { position: absolute; width: min(86vw, 1160px); aspect-ratio: 2 / 1; left: 50%; bottom: -6vw; transform: translateX(-50%); border: 1px solid rgba(223, 243, 255, .5); border-radius: 50% 50% 0 0 / 100% 100% 0 0; box-shadow: 0 -12px 54px rgba(178, 222, 251, .14); }
.venue-copy { position: relative; z-index: 1; width: min(920px, 100%); }
.venue-copy h2 { margin: 0; font: 400 clamp(38px, 5vw, 70px)/1.45 var(--display); letter-spacing: .09em; }
.venue-area { margin-top: 12px; color: var(--ink-sub); letter-spacing: .12em; }
.venue-lead { margin-top: 54px; font: 400 18px/2.1 var(--display); letter-spacing: .08em; color: var(--ink-sub); }
.v-d .venue-story { background: url("../assets/backgrounds/fv-bg-a02-celestial-canopy.png") center 44% / cover no-repeat; }
.v-d .venue-story::before { background: radial-gradient(62% 52% at 50% 68%, rgba(255, 229, 179, .04), rgba(2, 14, 41, .7)); }
.v-d .venue-dome { border-color: rgba(248, 222, 171, .76); box-shadow: 0 -8px 42px rgba(255, 236, 199, .2), 0 -42px 120px rgba(108, 180, 235, .13); }

.v-c .info { position: relative; padding-top: 130px; padding-bottom: 140px; background: #edf5f8; color: #14304b; }
.v-c .info .sec-h { font-size: clamp(38px, 4vw, 58px); font-weight: 400; }
.v-c .info .spec { margin-top: 46px; border-color: rgba(20, 48, 75, .2); }
.v-c .info .spec > div, .v-c .info .price th, .v-c .info .price td { border-color: rgba(20, 48, 75, .2); }
.v-c .info .spec dt, .v-c .info .note, .v-c .info .f-note { color: rgba(20, 48, 75, .62); }
.v-c .info .btn { background: #14304b; color: #f3f8fb; }
.v-c .info .btn:hover { background: #1c4267; }
.v-c .price { width: 100%; margin-top: 56px; }
.v-c .price caption { display: flex; justify-content: space-between; align-items: baseline; padding-bottom: 16px; color: #14304b; border-bottom: 1px solid rgba(20, 48, 75, .25); }
.v-c .price caption span { font: 400 24px/1.4 var(--display); letter-spacing: .1em; }
.v-c .price caption small { font-size: 13px; letter-spacing: .12em; color: rgba(20, 48, 75, .58); }
.v-c .price th, .v-c .price td { padding: 16px 18px; }
.v-c .price th { font: 400 18px/1.45 var(--display); letter-spacing: .08em; }
.v-c .price td { padding-left: 34px; font-size: 24px; }
.v-c .price .ticket-featured { background: #14304b; color: #f3f8fb; }
.v-c .price .ticket-featured th, .v-c .price .ticket-featured td { border-color: rgba(237, 245, 248, .25); }
.v-d .info { background: radial-gradient(80% 70% at 100% 0%, rgba(161, 205, 232, .25), transparent 70%), linear-gradient(135deg, #f8f6ef, #eaf3f6); color: #102c54; }
.v-d .info .sec-h, .v-d .price caption { color: #102c54; }
.v-d .price .ticket-featured { background: linear-gradient(90deg, #092a58, #164b7a); color: #fff9ea; box-shadow: inset 0 0 0 1px rgba(244, 214, 160, .6); }
.v-d .price .ticket-featured th, .v-d .price .ticket-featured td { border-color: rgba(244, 214, 160, .42); }
.v-d .ticket-limit { color: #f1d6a2; }
.ticket-limit { display: block; margin-top: 4px; font: 400 12px/1.5 var(--jp); letter-spacing: .08em; color: #bcd8ed; }

.closing { position: relative; min-height: 76svh; display: grid; place-content: center; text-align: center; padding: 100px var(--gutter); overflow: hidden;
  background: linear-gradient(180deg, rgba(5, 20, 50, .36), rgba(5, 20, 50, .7)), url("../assets/backgrounds/fv-bg-a05b-cosmic-depth.png") 52% center / cover no-repeat; }
.closing-copy { margin: 0; font: 400 clamp(46px, 6vw, 86px)/1.5 var(--display); letter-spacing: .12em; }
.closing-link { justify-self: center; margin-top: 54px; color: var(--ink); text-decoration: none; font-size: 14px; letter-spacing: .16em; border-bottom: 1px solid rgba(238, 248, 255, .55); padding-bottom: 5px; }
.v-c + .ft, .v-c .ft { background: #061c3d; }
.v-d .closing { background:
    radial-gradient(90% 42% at 50% 108%, rgba(125, 193, 235, .26), transparent 70%),
    linear-gradient(180deg, #092a59 0%, #061a3f 60%, #04142f 100%); }
.v-d .closing::before { content: ""; position: absolute; width: 118vw; height: 42vw; left: -9vw; bottom: -35vw; border: 1px solid rgba(244, 214, 160, .5); border-radius: 50% 50% 0 0 / 100% 100% 0 0; box-shadow: 0 -18px 70px rgba(126, 194, 235, .14); pointer-events: none; }
.v-d .closing > * { position: relative; z-index: 1; }
.v-d .closing-copy { color: var(--pearl); text-shadow: 0 4px 30px rgba(0, 8, 27, .46); }

/* ---------- KV 解禁後（モック）：B は小さな月の窓が大きくなり、KV を受け止める ---------- */
.v-b.kv { --win: min(78svh, 740px); --moon-x: 69%; --moon-y: 46%; }
.v-b.kv .window img { object-position: 50% 26%; }

/* ---------- 下：公演情報（第1弾は最小限） ---------- */
.message, .dome-video { padding: 110px var(--gutter); background: var(--deep); }
.info { padding: 100px var(--gutter) 120px; background: var(--deep); }
.info > * { max-width: 860px; margin-left: auto; margin-right: auto; }
.sec-h { font: 600 26px/1.4 var(--display); letter-spacing: .14em; }
.spec { margin-top: 26px; border-top: 1px solid var(--line); }
.spec > div { display: grid; grid-template-columns: 7em 1fr; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.spec dt { font-size: 15px; letter-spacing: .1em; color: var(--ink-sub); }
.spec dd { margin: 0; }
.price { margin-top: 36px; border-collapse: collapse; min-width: min(100%, 420px); }
.price caption { text-align: left; font-size: 15px; color: var(--ink-sub); padding-bottom: 8px; }
.price th, .price td { padding: 10px 0; border-bottom: 1px solid var(--line); text-align: left; font-weight: 400; }
.price td { text-align: right; font: 400 20px var(--num); }
.note { margin-top: 14px; font-size: 15px; color: var(--ink-sub); }
.info .f-cta { margin-top: 30px; }
.ft { padding: 28px var(--gutter); font-size: 14px; color: var(--ink-sub); background: var(--deep); border-top: 1px solid var(--line); }
.is-dev .dev-pending::after { content: "［" attr(data-label) "］"; color: #ffb4b4; font-size: 13px; }

@media (prefers-reduced-motion: no-preference) {
  .stars { animation: s-in 2.8s ease-out both; }
  .window { animation: w-in 1.8s ease-out .2s both; }
  @keyframes s-in { from { opacity: 0; } }
  @keyframes w-in { from { opacity: 0; transform: scale(.985); } }
}

@media (min-width: 761px) and (max-width: 1040px) {
  .experience { grid-template-columns: minmax(300px, .9fr) minmax(360px, 1.1fr); gap: 42px; padding-left: 44px; padding-right: 44px; }
  .portrait-orbit { width: min(40vw, 430px); }
  .artist-story { grid-template-columns: 1fr 1fr; }
  .artist-copy { padding-right: 44px; }
}

@media (min-width: 761px) {
  .prologue h2 > span:last-child { white-space: nowrap; }
}

/* ---------- スマホ ---------- */
@media (max-width: 760px) {
  :root { --gutter: 22px; }
  .v-a { --win: 86vw; --moon-x: 50%; --moon-y: calc(43vw + 24px); --rim-w: 300vw; --rim-x: 50%; --rim-top: 64px; --text-bottom: 90px;
    --view-az: 120; --view-alt: 55; --view-x: .5; --view-y: .2; --view-f: 1.0; }
  .v-b.kv { --win: 86vw; --moon-x: 50%; --moon-y: calc(43vw + 24px); }
  .v-b { --win: 42vw; --moon-x: 70%; --moon-y: calc(21vw + 64px); --rim-w: 320vw; --rim-x: 50%; --rim-top: 150px; --text-bottom: 176px;
    --view-az: 104; --view-alt: 55; --view-x: .5; --view-y: .3; --view-f: 1.1; }
  .v-c { --text-bottom: 34px; }
  .v-c .fv { background-position: 66% center; }
  .v-c .window { width: 100vw; height: 58svh; right: 0; top: 0;
    -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 64%, rgba(0, 0, 0, .55) 78%, transparent 100%);
    mask-image: linear-gradient(180deg, #000 0%, #000 64%, rgba(0, 0, 0, .55) 78%, transparent 100%); }
  .v-c .window img { object-position: 52% 17%; filter: saturate(.82) contrast(1.02) brightness(.88) hue-rotate(2deg); }
  .v-c .window::after { background: linear-gradient(180deg, transparent 52%, rgba(7, 26, 60, .14) 72%, rgba(7, 26, 60, .76) 100%); }
  .v-c .fv-text { width: auto; padding-bottom: var(--text-bottom); }
  .v-d { --text-bottom: 28px; }
  .v-d .fv { min-height: 108svh; background:
      linear-gradient(180deg, rgba(3, 14, 40, .02) 0%, rgba(3, 14, 40, .03) 42%, rgba(3, 17, 48, .74) 67%, rgba(3, 17, 48, .94) 100%),
      url("../assets/backgrounds/fv-bg-kv-gateway-portrait.png") center 48% / cover no-repeat; }
  .v-d .fv::before { opacity: .28; background: linear-gradient(90deg, transparent 10%, rgba(244, 221, 177, .35) 10.2%, transparent 10.5%, transparent 90%, rgba(244, 221, 177, .3) 90.2%, transparent 90.5%); }
  .v-d .fv-text { min-height: 108svh; padding-top: 0; }
  .v-d .name { margin-bottom: 15px; }
  .v-d .n-artist { font-size: 39px; }
  .v-d .n-format { font-size: 18px; }
  .fv-text { width: auto; justify-content: flex-end; padding: 0 var(--gutter) var(--text-bottom); }
  .v-b .fv-text { justify-content: flex-end; }
  .n-artist { font-size: 44px; }
  .n-format { font-size: 20px; margin-top: 4px; }
  .lead { font-size: 16px; margin-top: 12px; }
  .name { margin-bottom: 22px; }
  .date { font-size: 34px; }
  .f-start, .f-venue { font-size: 16px; }
  .area { display: block; margin: 0; font-size: 14px; }
  .f-cta { margin-top: 16px; }
  .btn { width: 100%; min-height: 52px; }
  .info { padding: 64px var(--gutter) 80px; }
  .spec > div { grid-template-columns: 1fr; gap: 2px; }

  .section-label { margin-bottom: 18px; font-size: 11px; }
  .prologue { min-height: 88svh; padding: 92px var(--gutter); background-position: 56% center; }
  .prologue h2 { font-size: 36px; line-height: 1.5; letter-spacing: .04em; }
  .prologue h2 > span:last-child { margin-left: 0; }
  .prologue-tail { display: block; margin-left: 1.1em; }
  .prologue-copy { width: 100%; margin-top: 48px; font-size: 16px; line-height: 2.15; }
  .dome-arc { width: 190vw; height: 88vw; left: -45vw; bottom: -72vw; }

  .experience { min-height: auto; grid-template-columns: 1fr; gap: 72px; padding: 88px var(--gutter) 96px; }
  .experience-visual { min-height: 540px; order: 2; }
  .experience-copy { order: 1; }
  .experience-copy h2 { font-size: 43px; }
  .portrait-orbit { width: 82vw; max-width: 430px; }
  .portrait-orbit::before { inset: -6% -12% 9%; }
  .portrait-orbit::after { inset: 12% -15% 18%; }
  .v-d .experience::before { width: 150vw; height: 72vw; left: -30vw; top: 49%; }
  .moments { margin-top: 44px; }
  .moments li { grid-template-columns: 40px 1fr; padding: 20px 0; }
  .moments h3 { font-size: 24px; }
  .moments p { font-size: 14px; line-height: 1.8; }

  .sky-break { min-height: 68svh; padding: 80px var(--gutter); background-position: 67% center; }
  .sky-break-copy > p:last-child { font-size: 39px; line-height: 1.55; letter-spacing: .08em; }

  .artist-story { min-height: auto; grid-template-columns: 1fr; }
  .artist-photo { min-height: 68svh; }
  .artist-photo::after { background: linear-gradient(0deg, #09234b 0%, transparent 34%); }
  .v-d .artist-photo { min-height: 64svh; margin: 22px 22px 0; }
  .v-d .artist-photo::after { background: linear-gradient(0deg, rgba(6, 27, 67, .9) 0%, transparent 40%); }
  .artist-photo img { object-position: 48% 26%; }
  .artist-copy { padding: 56px var(--gutter) 92px; }
  .artist-copy h2 { font-size: 52px; }
  .artist-lead { margin-top: 38px; font-size: 28px; }
  .artist-body { margin-top: 26px; font-size: 15px; }

  .venue-story { min-height: 74svh; padding: 88px var(--gutter); background-position: 58% center; }
  .venue-dome { width: 150vw; bottom: -15vw; }
  .venue-copy h2 { font-size: 32px; line-height: 1.55; }
  .venue-lead { margin-top: 40px; font-size: 15px; }

  .v-c .info { padding-top: 80px; padding-bottom: 90px; }
  .v-c .info .sec-h { font-size: 34px; }
  .v-c .info .spec { margin-top: 34px; }
  .v-c .price { margin-top: 42px; }
  .v-c .price caption span { font-size: 21px; }
  .v-c .price th, .v-c .price td { padding: 14px 12px; }
  .v-c .price td { padding-left: 12px; font-size: 20px; white-space: nowrap; }

  .closing { min-height: 68svh; padding: 86px var(--gutter); background-position: 62% center; }
  .closing-copy { font-size: 34px; line-height: 1.65; letter-spacing: .08em; }
  .closing-link { margin-top: 42px; }
}

/* 既存Dのスマホ指定より後で、正式版FVを1画面内へ再構成する */
@media (max-width: 760px) {
  .v-e .fv { min-height: clamp(680px, 92svh, 800px); background:
    linear-gradient(180deg, rgba(3, 14, 40, .02) 0%, rgba(3, 14, 40, .05) 34%, rgba(3, 17, 48, .34) 52%, rgba(3, 17, 48, .86) 72%, rgba(3, 17, 48, .96) 100%),
    url("../assets/backgrounds/fv-bg-kv-gateway-portrait.png") center 44% / cover no-repeat; }
  .v-e .fv-text { min-height: clamp(680px, 92svh, 800px); justify-content: space-between; padding: clamp(228px, 32svh, 276px) var(--gutter) 24px; }
  .v-e .name { margin: 0; text-align: center; }
  .v-e .title { font-size: clamp(56px, 15.5vw, 62px); }
  .v-e .hero-tagline { font-size: 13.5px; letter-spacing: .06em; white-space: nowrap; }
  .v-e .facts { margin-top: 0; }
  .v-e .f-cta { margin-top: 11px; }
  .v-e .btn { min-height: 48px; }
}

/* ---------- 確定前情報・プロジェクト紹介 ---------- */
.v-e .f-date-status { margin: 5px 0 0; font-size: 12px; letter-spacing: .08em; color: #d9e9f6; }
.full-behind { padding: 140px max(var(--gutter), calc((100vw - 1160px) / 2)); background: var(--paper); color: var(--paper-ink); }
.full-behind .section-label { color: #58708f; }
.behind-intro { width: min(820px, 100%); }
.full-behind h2 { margin: 0; font: 400 clamp(42px, 4.5vw, 62px)/1.55 var(--display); letter-spacing: .055em; }
.behind-lead { margin-top: 48px; }
.behind-lead p { margin-top: 8px; font-size: 17px; line-height: 2; letter-spacing: .04em; }

.venue-pending-main { margin-top: 44px !important; font: 400 clamp(23px, 2.6vw, 36px)/1.7 var(--display); letter-spacing: .06em; }
.venue-pending-note { margin-top: 12px !important; font-size: 14px !important; color: #d4e4f1; }
.ticket-pending { margin-top: 22px; font-size: 13px; color: #6a7e94; }
.ticket-pass-date small { display: block; margin-top: 8px; font-size: 9px; letter-spacing: .18em; color: #aebfd0; }
.sales-pending { width: min(580px, 100%); margin: 34px auto 0 !important; font-size: 14px !important; line-height: 1.9; color: #536a84 !important; }

@media (max-width: 760px) {
  .v-e .f-date-status { font-size: 10px; }

  .full-behind { padding: 92px var(--gutter); }
  .full-behind h2 { font-size: 36px; line-height: 1.62; }
  .behind-lead { margin-top: 36px; }
  .behind-lead p { font-size: 16px; }

  .venue-pending-main { margin-top: 34px !important; font-size: 24px; }
  .ticket-pending { font-size: 12px; line-height: 1.8; }
  .ticket-pass-date small { display: inline; margin-left: 8px; }
  .sales-pending { margin-top: 28px !important; font-size: 13px !important; }
}

/* ---------- 公開方針修正後の文字組み ---------- */
.headline-line { display: block; white-space: nowrap; }
.headline-mobile { display: none; }

.v-e .section-label { font-size: 12px; letter-spacing: .22em; }
.v-e .full-prologue h2 { font-size: clamp(46px, 4.7vw, 66px); line-height: 1.48; }
.v-e .experience-header h2 { font-size: clamp(44px, 4.6vw, 64px); line-height: 1.5; }
.v-e .full-message h2 { font-size: clamp(43px, 3.8vw, 56px); line-height: 1.55; }
.v-e .full-venue h2 { font-size: clamp(48px, 5vw, 70px); line-height: 1.42; }
.v-e .full-venue h2.venue-pending-heading { font-size: clamp(42px, 4.1vw, 58px); }
.v-e .full-ending h2 { font-size: clamp(42px, 4.4vw, 60px); line-height: 1.55; }
.v-e .full-info-head h2,
.v-e .ticket-heading h3 { font-size: clamp(40px, 4vw, 56px); }
.v-e .artist-profile p,
.v-e .full-venue-copy > p:not(.section-label):not(.venue-address) { font-size: 16px; }

.ticket-seat-heading { width: min(760px, 100%); margin: 64px auto 0; padding-top: 44px; text-align: center; border-top: 1px solid rgba(29, 69, 109, .22); }
.ticket-seat-heading > p { margin: 0; font: 400 12px/1.5 var(--num); letter-spacing: .2em; color: #58708f; }
.ticket-seat-heading h4 { margin: 14px 0 0; font: 400 clamp(28px, 2.8vw, 38px)/1.5 var(--display); letter-spacing: .07em; }
.ticket-seat-heading span { display: block; margin-top: 16px; font-size: 15px; line-height: 1.9; color: #58708f; }
.ticket-seat-heading + .ticket-pass { margin-top: 46px; }

@media (max-width: 760px) {
  .headline-desktop { display: none; }
  .headline-mobile { display: block; }

  .v-e .section-label { font-size: 12px; letter-spacing: .18em; }
  .v-e .full-prologue h2 { font-size: 37px; line-height: 1.58; }
  .v-e .experience-header h2 { font-size: 29px; line-height: 1.68; letter-spacing: .04em; }
  .v-e .full-message h2 { font-size: clamp(23px, 7.25vw, 29px); line-height: 1.72; }
  .v-e .full-venue h2 { font-size: 34px; line-height: 1.58; }
  .v-e .full-venue h2.venue-pending-heading { font-size: 30px; }
  .v-e .full-ending h2 { font-size: 34px; line-height: 1.62; }
  .v-e .full-info-head h2,
  .v-e .ticket-heading h3 { font-size: 36px; }
  .v-e .full-prologue-copy > p:not(.section-label),
  .v-e .experience-header > p:last-child,
  .v-e .full-message-copy > p:not(.section-label),
  .v-e .artist-profile p,
  .v-e .full-venue-copy > p:not(.section-label):not(.venue-address) { font-size: 16px; }

  .ticket-seat-heading { margin-top: 54px; padding-top: 36px; }
  .ticket-seat-heading h4 { font-size: 29px; }
  .ticket-seat-heading span { font-size: 14px; }
  .ticket-seat-heading + .ticket-pass { margin-top: 36px; }
}
