@charset "UTF-8";
/* =========================================================
   Alice in the concerto 2027  /  common stylesheet
   ========================================================= */

:root{
  --bg:#0a0c2c;          /* ベース（深い青紫） */
  --bg-deep:#030310;     /* 最も沈む色 */
  --glow:#1f2168;        /* 上部の光 */
  --ink:#eceffa;
  --sub:#97a1c8;
  --gold:#c9a86a;
  --gold-dim:#8a7546;
  --line:rgba(201,168,106,.28);
  --hair:rgba(255,255,255,.09);
  --serif-en:"Cormorant Garamond",serif;
  --serif-ja:"Shippori Mincho","Yu Mincho",YuMincho,"Hiragino Mincho ProN",serif;
  --header-h:76px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--bg-deep);color:var(--ink);
  font-family:var(--serif-ja);font-size:16px;line-height:1.8;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
body.is-locked{overflow:hidden}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block;height:auto}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}

/* ---------- 背景（固定・フラクタルノイズ 3層） ---------- */
.fx{position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(125% 82% at 50% -12%, var(--glow) 0%, transparent 60%),
    radial-gradient(85% 55% at 50% 112%, rgba(201,168,106,.09), transparent 62%),
    linear-gradient(180deg, var(--bg) 0%, var(--bg-deep) 100%);
}
.fx__cloud,.fx__mid,.fx__grain,.fx__vig{position:absolute;inset:0}
.fx__cloud{inset:-8%;background-image:url(../img/bg-cloud.svg);background-size:cover;
  opacity:.30;mix-blend-mode:screen}
.fx__mid{background-image:url(../img/bg-mid.svg);background-size:1100px 1100px;
  opacity:.16;mix-blend-mode:screen}
.fx__grain{background-image:url(../img/bg-grain.svg);background-size:180px 180px;
  opacity:.45;mix-blend-mode:overlay}
.fx__vig{background:
  linear-gradient(90deg,
    rgba(0,0,0,0) 0%, rgba(0,0,0,.18) 18%, rgba(0,0,0,.55) 36%,
    rgba(0,0,0,.74) 50%,
    rgba(0,0,0,.55) 64%, rgba(0,0,0,.18) 82%, rgba(0,0,0,0) 100%),
  radial-gradient(64% 50% at 50% 40%, rgba(3,3,16,.30) 0%, transparent 76%)}

/* ---------- header ---------- */
.hd{position:fixed;inset:0 0 auto;z-index:50;display:flex;align-items:center;
  justify-content:space-between;gap:24px;padding:14px clamp(16px,3vw,40px);
  background:rgba(4,8,26,.72);backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(201,168,106,.18)}
.hd__logo{position:relative;z-index:70}
.hd__logo img{flex:0 0 auto;height:clamp(28px,3.4vw,40px);width:auto}
.nav{display:flex;align-items:center;flex-wrap:nowrap;gap:clamp(14px,1.8vw,30px)}
.nav a,.nav .nav__item{display:block;font-family:var(--serif-ja);font-size:13px;
  font-weight:400;line-height:1.6;letter-spacing:.14em;text-indent:.14em;color:var(--sub);
  position:relative;padding:6px 2px;transition:.3s;white-space:nowrap}
.nav a::after{content:"";position:absolute;left:2px;right:2px;bottom:2px;height:1px;
  background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .35s}
.nav a:hover{color:var(--ink)}
.nav a:hover::after{transform:scaleX(1)}
.nav a[aria-current="page"]{color:var(--ink)}
.nav a[aria-current="page"]::after{transform:scaleX(1)}
/* 未公開メニュー（公演概要・先行特典） */
.nav .is-ghost{color:rgba(151,161,200,.45);pointer-events:none;cursor:default}
/* チケットボタン */
.nav .btn-tk{flex:0 0 auto;font-size:13px;letter-spacing:.12em;padding:9px 20px;
  border:1px solid var(--gold);color:var(--gold);border-radius:2px;transition:.35s}
.nav .btn-tk::after{display:none}
.nav .btn-tk:hover{background:var(--gold);color:var(--bg-deep)}
.nav .btn-tk.is-soon{border-color:rgba(201,168,106,.45);color:rgba(201,168,106,.72);
  pointer-events:none;cursor:default;font-size:12px;letter-spacing:.08em}
/* 発売前の2段組表示（TICKET／発売時期） */
.nav .btn-tk--2line{display:flex;flex-direction:column;align-items:center;
  line-height:1.3;padding:7px 22px}
.nav .btn-tk--2line b{font-family:var(--serif-en);font-weight:400;font-size:12.5px;
  letter-spacing:.26em;text-indent:.26em;color:rgba(201,168,106,.9)}
.nav .btn-tk--2line small{font-size:10px;letter-spacing:.05em;color:rgba(151,161,200,.95)}

.burger{display:none;width:34px;height:24px;position:relative;z-index:70}
.burger span{position:absolute;left:0;width:100%;height:1px;background:var(--ink);
  transition:.35s cubic-bezier(.6,0,.2,1)}
.burger span:nth-child(1){top:3px}
.burger span:nth-child(2){top:11px}
.burger span:nth-child(3){top:19px}
.burger.is-open span:nth-child(1){top:11px;transform:rotate(45deg)}
.burger.is-open span:nth-child(2){opacity:0}
.burger.is-open span:nth-child(3){top:11px;transform:rotate(-45deg)}

/* ---------- 共通レイアウト ---------- */
.wrap{position:relative;z-index:2}
.sec{position:relative;z-index:2;max-width:920px;margin:0 auto;
  padding:clamp(70px,10vw,130px) clamp(18px,5vw,40px)}
.sec--page{padding-top:calc(var(--header-h) + clamp(60px,9vw,110px))}
.sec__h{text-align:center;margin-bottom:clamp(38px,6vw,54px)}
.sec__h b{display:block;font-family:var(--serif-en);font-weight:400;
  font-size:clamp(24px,4vw,36px);letter-spacing:.24em;text-indent:.24em;color:var(--gold)}
.sec__h span{display:block;font-size:11px;letter-spacing:.26em;color:var(--sub);margin-top:10px}

/* ---------- TOP hero ---------- */
.hero{position:relative;z-index:2;min-height:100svh;display:grid;place-items:safe center;
  text-align:center;padding:clamp(76px,8.6svh,92px) 20px clamp(20px,3svh,34px)}
.hero__in{position:relative;max-width:1000px;width:100%}
.hero__logo{width:auto;max-width:min(60vw,588px);max-height:30svh;
  margin:clamp(34px,6.6svh,86px) auto clamp(78px,13.2svh,164px);
  filter:drop-shadow(0 0 46px rgba(120,150,255,.22)) drop-shadow(0 0 16px rgba(2,4,15,.7));
  animation:fadeUp 1.6s cubic-bezier(.2,.8,.2,1) both}
/* 開催決定（明朝・COMING SOON と同サイズ・強調） */
.hero__decide{display:flex;align-items:center;justify-content:center;
  gap:clamp(16px,2.6vw,30px);margin-bottom:clamp(18px,2.9svh,38px);
  animation:fadeUp 1.6s .4s both}
.hero__decide::before,.hero__decide::after{content:"";flex:0 0 auto;
  width:clamp(30px,6vw,78px);height:1px}
.hero__decide::before{background:linear-gradient(90deg,transparent,var(--gold))}
.hero__decide::after{background:linear-gradient(90deg,var(--gold),transparent)}
.hero__decide span{font-family:var(--serif-ja);font-weight:600;
  font-size:clamp(24px,4.6vw,44px);line-height:1.3;
  letter-spacing:.22em;text-indent:.22em;color:#fff;
  text-shadow:0 0 30px rgba(150,180,255,.5),0 0 10px rgba(255,255,255,.28)}
/* セカンドキャッチコピー */
.hero__lead{font-family:"Shippori Mincho","Yu Mincho",YuMincho,"Hiragino Mincho ProN","MS PMincho",serif;
  font-weight:500;
  font-size:clamp(15px,2.7vw,24px);line-height:1.9;
  letter-spacing:.24em;text-indent:.24em;color:#d5daee;
  margin:0 0 clamp(20px,3.3svh,42px);
  animation:fadeUp 1.6s .55s both}
.hero__cs{font-family:var(--serif-en);font-weight:300;font-size:clamp(24px,4.6vw,44px);
  letter-spacing:.4em;text-indent:.4em;margin-top:0;color:var(--gold);
  animation:fadeUp 1.6s .7s both}
.hero__cs small{display:block;font-family:var(--serif-ja);font-weight:500;
  font-size:clamp(13px,2.3vw,17px);line-height:1.7;
  letter-spacing:.26em;text-indent:.26em;color:#e2e7f7;
  text-shadow:0 0 22px rgba(150,180,255,.34);margin-top:18px}
.hero__info{margin-top:clamp(20px,3.2svh,38px);display:inline-block;padding:clamp(11px,1.8svh,17px) clamp(20px,5vw,54px);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  animation:fadeUp 1.6s .85s both}
.hero__info dt{font-family:var(--serif-en);font-size:11px;letter-spacing:.3em;
  color:var(--gold-dim);margin-bottom:8px}
.hero__info .date{font-size:clamp(17px,3.2vw,26px);letter-spacing:.09em;line-height:1.6}
.hero__info .venue{font-size:clamp(13px,2.4vw,16px);letter-spacing:.16em;
  color:var(--sub);margin-top:14px}
@keyframes fadeUp{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}

/* TOPのヒーロー直後だけ、お知らせまでの間を詰める */
.hero + .sec{padding-top:clamp(34px,5vw,62px)}

/* ---------- お知らせ ---------- */
.news{border-top:1px solid var(--hair)}
.news__item{border-bottom:1px solid var(--hair)}
.news__head{display:grid;grid-template-columns:120px 1fr 24px;gap:18px;
  align-items:center;width:100%;text-align:left;padding:24px 6px;transition:.3s}
.news__head:hover{background:rgba(201,168,106,.06)}
.news__date{font-family:var(--serif-en);font-size:14px;letter-spacing:.14em;color:var(--gold-dim)}
.news__title{font-size:15px;line-height:1.7;letter-spacing:.04em}
a.news__head{display:grid;grid-template-columns:120px 1fr auto}
.news__arrow{justify-self:end;font-family:var(--serif-en);font-size:16px;color:var(--sub);
  transition:.3s}
a.news__head:hover .news__arrow{color:var(--gold);transform:translateX(4px)}
.news__mark{position:relative;width:14px;height:14px;justify-self:end}
.news__mark::before,.news__mark::after{content:"";position:absolute;left:0;top:6px;
  width:14px;height:1px;background:var(--gold);transition:.35s}
.news__mark::after{transform:rotate(90deg)}
.news__head[aria-expanded="true"] .news__mark::after{transform:rotate(0)}
.news__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s cubic-bezier(.4,0,.2,1)}
.news__item.is-open .news__body{grid-template-rows:1fr}
.news__bodyIn{overflow:hidden}
.news__text{padding:4px 6px 30px;font-size:14.5px;line-height:2;color:#d8dcec;
  letter-spacing:.03em}
.news__text p+p{margin-top:1em}
.news__meta{margin-top:1.2em;padding-top:1.2em;border-top:1px solid var(--hair);
  font-size:14px;color:#c3c9de;line-height:1.95}
.news__meta b{color:var(--gold-dim);font-weight:400;letter-spacing:.1em;margin-right:.6em}

.more{display:block;width:fit-content;margin:46px auto 0;font-size:12px;
  letter-spacing:.24em;color:var(--sub);border-bottom:1px solid var(--line);padding-bottom:6px;
  transition:.3s}
.more:hover{color:var(--gold)}

/* ---------- ページ見出し（下層） ---------- */
.lead{text-align:center;font-size:14px;line-height:2;color:var(--sub);
  margin:-14px auto clamp(34px,5vw,50px);max-width:42em}

/* ---------- お問い合わせフォーム ---------- */
.form{max-width:720px;margin:0 auto}
.form__row{margin-bottom:26px}
.form__label{display:flex;align-items:center;gap:10px;font-size:13px;
  letter-spacing:.12em;color:var(--sub);margin-bottom:10px}
.req{font-family:var(--serif-en);font-size:10px;letter-spacing:.1em;
  padding:3px 8px;border:1px solid var(--gold);color:var(--gold);border-radius:2px}
.opt{font-family:var(--serif-en);font-size:10px;letter-spacing:.1em;
  padding:3px 8px;border:1px solid var(--hair);color:var(--sub);border-radius:2px}
.form input[type="text"],.form input[type="email"],.form input[type="tel"],
.form select,.form textarea{
  width:100%;padding:14px 16px;font-size:15px;font-family:inherit;color:var(--ink);
  background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.14);
  border-radius:2px;transition:.3s;line-height:1.7}
.form select{appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--gold) 50%),
                   linear-gradient(135deg,var(--gold) 50%,transparent 50%);
  background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%;
  background-size:6px 6px,6px 6px;background-repeat:no-repeat}
.form select option{background:#0d1130;color:var(--ink)}
.form textarea{min-height:200px;resize:vertical}
.form :is(input,select,textarea):focus{outline:none;border-color:var(--gold);
  background:rgba(255,255,255,.06)}
.form :is(input,textarea)::placeholder{color:rgba(151,161,200,.55)}
.form__note{font-size:12.5px;color:var(--sub);margin-top:8px;line-height:1.8}
.form__error{display:none;font-size:12.5px;color:#e58a8a;margin-top:8px}
.form__row.has-error .form__error{display:block}
.form__row.has-error :is(input,select,textarea){border-color:#e58a8a}

.agree{display:flex;align-items:flex-start;gap:12px;justify-content:center;
  font-size:13.5px;color:var(--sub);margin:34px 0 30px;line-height:1.8}
.agree input{margin-top:.45em;width:16px;height:16px;accent-color:var(--gold);flex:0 0 auto}
.agree a{color:var(--gold);border-bottom:1px solid var(--line)}

.btn-submit{display:block;width:min(100%,320px);margin:0 auto;padding:16px 24px;
  font-size:14px;letter-spacing:.24em;text-indent:.24em;text-align:center;
  color:var(--gold);border:1px solid var(--gold);border-radius:2px;transition:.35s}
.btn-submit:hover{background:var(--gold);color:var(--bg-deep)}
.btn-submit:disabled{opacity:.4;cursor:not-allowed}

.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}

/* 送信完了 */
.done{text-align:center;padding:clamp(30px,6vw,50px) 0}
.done p{font-size:15px;line-height:2.1;color:#d8dcec}
.done .more{margin-top:40px}

/* ---------- footer ---------- */
.ft{position:relative;z-index:2;border-top:1px solid var(--hair);
  padding:52px 20px 40px;text-align:center;background:rgba(3,6,20,.78)}
.ft__nav{display:flex;flex-wrap:wrap;gap:10px 28px;justify-content:center;margin-bottom:26px}
.ft__nav a,.ft__nav button{font-size:12px;letter-spacing:.16em;color:var(--sub);transition:.3s}
.ft__nav a:hover,.ft__nav button:hover{color:var(--gold)}
.ft__nav .is-ghost{opacity:.45;pointer-events:none}
.cp{font-family:var(--serif-en);font-size:11px;letter-spacing:.2em;color:#5f6a94}

/* ---------- 特商法モーダル ---------- */
.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;
  padding:20px;opacity:0;visibility:hidden;transition:.4s}
.modal.is-open{opacity:1;visibility:visible}
.modal__bd{position:absolute;inset:0;background:rgba(2,3,12,.82);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.modal__box{position:relative;width:min(100%,760px);max-height:86svh;overflow-y:auto;
  background:#080b26;border:1px solid rgba(201,168,106,.3);border-radius:3px;
  padding:clamp(28px,5vw,52px) clamp(20px,4.5vw,52px);
  transform:translateY(16px);transition:.45s cubic-bezier(.2,.8,.2,1);
  box-shadow:0 30px 80px rgba(0,0,0,.6)}
.modal.is-open .modal__box{transform:none}
.modal__ttl{text-align:center;margin-bottom:30px}
.modal__ttl b{display:block;font-family:var(--serif-en);font-weight:400;font-size:clamp(16px,4.2vw,22px);
  letter-spacing:.2em;color:var(--gold)}
.modal__ttl span{display:block;font-size:12px;letter-spacing:.2em;color:var(--sub);margin-top:8px}
.modal__close{position:absolute;top:14px;right:16px;width:34px;height:34px;
  display:grid;place-items:center;color:var(--sub);font-size:20px;line-height:1;transition:.3s}
.modal__close:hover{color:var(--gold)}
.law{width:100%;border-collapse:collapse;font-size:14px;line-height:1.9}
.law th,.law td{text-align:left;vertical-align:top;padding:14px 4px;
  border-bottom:1px solid var(--hair)}
.law th{width:12em;font-weight:400;letter-spacing:.08em;color:var(--gold-dim);white-space:nowrap}
.law td{color:#d8dcec}
.law ul{list-style:none;margin:.2em 0}
.law li{padding-left:1em;text-indent:-1em}
.law li::before{content:"・"}

/* ---------- responsive ---------- */
/* 縦に狭いPC画面では、開催情報まで1画面に収まるよう詰める */
@media (min-width:861px) and (max-height:880px){
  .hero{padding-top:clamp(80px,9.5svh,96px);padding-bottom:clamp(18px,3svh,34px)}
  .hero__logo{max-height:24svh;
    margin:clamp(24px,4.8svh,62px) auto clamp(56px,9.6svh,118px)}
  .hero__decide{margin-bottom:clamp(14px,2.4svh,30px)}
  .hero__lead{margin-bottom:clamp(16px,2.8svh,36px)}
  .hero__info{margin-top:clamp(16px,2.8svh,34px)}
}
@media (min-width:861px) and (max-height:760px){
  .hero__logo{max-height:22.5svh}
}

@media(max-width:860px){
  :root{--header-h:60px}
  .hd{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(4,8,26,.95)}
  .burger{display:block}
  .nav{position:fixed;inset:0;z-index:65;background:#03060f;
    flex-direction:column;justify-content:center;gap:26px;
    transform:translateY(-100%);transition:.5s cubic-bezier(.6,0,.2,1)}
  .nav.is-open{transform:none}
  .nav a,.nav .nav__item{font-size:16px;letter-spacing:.2em}
  .nav .btn-tk{margin-top:10px;padding:13px 30px;font-size:13px}
  .nav .btn-tk--2line{padding:12px 30px}
  .nav .btn-tk--2line b{font-size:14px}
  .nav .btn-tk--2line small{font-size:11px;letter-spacing:.04em}
  .fx__mid{background-size:700px 700px}
  /* スマホはロゴが小さくなりすぎないよう少し大きめに */
  .hero__logo{max-width:min(56vw,300px);max-height:26svh;
    margin:clamp(64px,16vw,136px) auto clamp(72px,18vw,128px)}
  .hero__decide{gap:14px;margin-bottom:clamp(20px,5vw,34px)}
  .hero__lead{letter-spacing:.18em;text-indent:.18em;
    margin-bottom:clamp(24px,6vw,40px)}
  .hero__decide::before,.hero__decide::after{width:clamp(22px,7vw,40px)}
  .hero__decide span{letter-spacing:.18em;text-indent:.18em}
  .fx__vig{background:
    linear-gradient(90deg,
      rgba(0,0,0,0) 0%, rgba(0,0,0,.14) 12%, rgba(0,0,0,.42) 32%,
      rgba(0,0,0,.60) 50%,
      rgba(0,0,0,.42) 68%, rgba(0,0,0,.14) 88%, rgba(0,0,0,0) 100%),
    radial-gradient(72% 46% at 50% 38%, rgba(3,3,16,.26) 0%, transparent 78%)}
  .news__head{grid-template-columns:1fr 20px;gap:6px 14px;padding:20px 4px}
  a.news__head{grid-template-columns:1fr auto}
  .news__date{grid-column:1/-1}
  .news__mark{grid-row:2;grid-column:2}
  .law th,.law td{display:block;width:auto}
  .law th{border-bottom:0;padding-bottom:2px}
  .law td{padding-top:2px}
}
@media(max-width:420px){
  .hero__cs{letter-spacing:.3em;text-indent:.3em}
}
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;transition-duration:.01ms!important}
  html{scroll-behavior:auto}
}
