@charset "UTF-8";

/*//////////////////////////////////////////////////////////////
	layout
//////////////////////////////////////////////////////////////*/

:root {
  /* 色: ピンク(メイン) / 紺(サブ・CTA) / 白 / インク */
  --c-pink: #ed82b0;
  --c-pink-grad-a: #ee9ec4;
  --c-peach: #fbb9b2;
  --c-pink-soft: #f5c6dc;
  --c-navy: #345392;
  --c-navy-end: #4a63a0;
  --c-ink: #3a2b2b;
  --c-white: #ffffff;

  /* 方眼パターン(ピンク/紺で線の濃さを変える) */
  --grid-line-navy: rgba(255, 255, 255, .17);
  --grid-line-pink: rgba(255, 255, 255, .24);
  --grid-size: 3.9rem;
  --grid-w: .15rem;

  /* フォント: 見出し=明朝 / 本文=ゴシック */
  --f-serif: 'Zen Old Mincho', 'Hiragino Mincho ProN', 'Yu Mincho', 'YuMincho', serif;
  --f-sans: 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', 'Meiryo', sans-serif;

  /* 形 */
  --radius-card: 6rem;
}

/* ===== Reset / Base ===== */
*,
*::before,
*::after {
  box-sizing: border-box;
}

/* 1rem = 10px (PCデザイン幅1920px基準。1200px未満は media-queries.css でSP基準に切替) */
html {
  font-size: clamp(6.25px, calc(var(--vw, 1vw) * 100 / 192), 10px);
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  font-family: var(--f-sans);
  font-size: 2.4rem;
  line-height: 1.6;
  color: var(--c-ink);
  background: var(--c-white);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

h1,
h2,
h3,
p,
ul,
dl,
dd,
figure {
  margin: 0;
  padding: 0;
}

ul {
  list-style: none;
}

img {
  display: block;
  max-width: 100%;
  height: auto;
}

a {
  color: inherit;
  text-decoration: none;
}

a:focus-visible {
  outline: .3rem solid var(--c-navy);
  outline-offset: .4rem;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.br-sp {
  display: none;
}

.deco {
  position: absolute;
  pointer-events: none;
}

/* 方眼パターン背景 */
.overview,
.highlights::before,
.goods {
  background-color: var(--c-navy);
  background-image:
    linear-gradient(var(--grid-line-navy) var(--grid-w), transparent var(--grid-w)),
    linear-gradient(90deg, var(--grid-line-navy) var(--grid-w), transparent var(--grid-w));
  background-size: var(--grid-size) var(--grid-size);
}

.ticket-card,
.studio::before,
.bonus::before {
  background-color: var(--c-pink);
  background-image:
    linear-gradient(var(--grid-line-pink) var(--grid-w), transparent var(--grid-w)),
    linear-gradient(90deg, var(--grid-line-pink) var(--grid-w), transparent var(--grid-w));
  background-size: var(--grid-size) var(--grid-size);
}

/* ===== Hero ===== */
.hero {
  background: linear-gradient(90deg, var(--c-pink) 50%, var(--c-navy-end) 50%);
}

.hero-main {
  max-width: 192rem;
  margin: 0 auto;
  line-height: 0;
  animation: heroIn .9s cubic-bezier(.2, .7, .2, 1) both;
}

.hero-main img {
  display: block;
  width: 100%;
  height: auto;
}

@keyframes heroIn {
  from {
    opacity: 0;
    transform: translateY(1.2rem);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

/* ===== Nav ===== */
.nav {
  margin-top: 6.7rem;
}

.nav-list {
  display: flex;
  justify-content: center;
  gap: 3.9rem;
}

.nav-list a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36rem;
  height: 9.6rem;
  border-radius: 9.6rem;
  background: linear-gradient(90deg, var(--c-pink-grad-a), var(--c-peach));
  color: var(--c-navy);
  font-family: var(--f-serif);
  font-weight: 700;
  font-size: 3.6rem;
  letter-spacing: .1em;
  transition: transform .25s ease, opacity .25s ease;
}

.nav-list a:hover {
  transform: translateY(-.4rem);
  opacity: .88;
}

/* ===== Concept ===== */
.concept {
  position: relative;
  max-width: 192rem;
  height: 92.2rem;
  margin: 8rem auto 0;
}

.concept-photo {
  position: absolute;
  height: auto;
}

.concept-photo-01 {
  left: 7.81%;
  top: 0;
  width: 45rem;
}

.concept-photo-03 {
  left: 18.85%;
  top: 52.5rem;
  width: 27.8rem;
}

.concept-photo-04 {
  left: 70.94%;
  top: 12.3rem;
  width: 40.8rem;
}

.concept-text {
  position: absolute;
  left: 0;
  right: 0;
  top: 13.2rem;
  text-align: center;
  font-family: var(--f-serif);
  font-weight: 700;
  font-size: 2.4rem;
  line-height: 1.46;
  color: var(--c-navy);
}

.concept-text p+p {
  margin-top: 3.5rem;
}

.concept-text p:last-child {
  font-size: 2.2rem;
}

/* ===== Overview ===== */
.overview {
  position: relative;
  height: 55.8rem;
  color: var(--c-white);
}

.overview-title {
  position: absolute;
  left: 0;
  right: 0;
  top: 3.4rem;
  padding-left: .4em;
  text-align: center;
  font-family: var(--f-serif);
  font-weight: 700;
  font-size: 3.6rem;
  line-height: 1;
  letter-spacing: .4em;
}

.overview-list {
  position: absolute;
  left: 21.7%;
  top: 13.1rem;
  font-size: 2.6rem;
  line-height: 1.48;
}

.ov-row {
  display: flex;
}

.ov-row+.ov-row {
  margin-top: 2.2rem;
}

.ov-row dt {
  flex: none;
  white-space: nowrap;
}

.ov-photo {
  position: absolute;
  left: calc(50% + 41.4rem);
  top: 0;
  width: 37rem;
  height: auto;
}

/* ===== Ticket ===== */
.ticket {
  margin-top: 17.8rem;
  padding-bottom: 6.4rem;
}

.ticket.is-before {
  padding-bottom: 0;
}

.ticket-card {
  width: 128.4rem;
  margin: 0 auto;
  padding: 5.3rem 3rem 8.8rem;
  border-radius: var(--radius-card);
  color: var(--c-ink);
}

/* チケット発売前(ボタン非表示時) */
.ticket-card.is-before {
  padding-bottom: 14.8rem;
}

.ticket-title {
  padding-left: .35em;
  text-align: center;
  font-family: var(--f-serif);
  font-weight: 700;
  font-size: 3.8rem;
  line-height: 1;
  letter-spacing: .1em;
}

.fee {
  display: grid;
  grid-template-columns: 18.1rem 1fr;
  grid-template-rows: 7.2rem 10.2rem 7.2rem;
  margin: 2.8rem auto 0;
  padding: 1.9rem 3.7rem;
  background: var(--c-white);
  border: .2rem solid var(--c-ink);
  position: relative;
  box-sizing: content-box;
  width: calc(79rem - 7.4rem - .4rem);
  font-size: 2.5rem;
}

/* 縦の仕切り線(1本の連続した点線) */
.fee::before {
  content: "";
  position: absolute;
  left: 21.7rem;
  top: 1.9rem;
  width: .4rem;
  height: 24.6rem;
  background: url(../img/dash_v.svg) repeat-y left top / .4rem 1.8rem;
}

.fee-cell {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}

.fee-label {
  letter-spacing: .04em;
}

.fee-price {
  justify-content: flex-start;
  padding-left: 4.2rem;
}

.fee-label-pre {
  grid-row: 1 / 3;
  background: url(../img/dash_h.svg) repeat-x left bottom / 1.8rem .4rem;
}

.fee-r1,
.fee-r2 {
  background: url(../img/dash_h.svg) repeat-x 1rem bottom / 1.8rem .4rem;
}

.fee-r2 p {
  line-height: 1.5;
  text-align: left;
}

.fee-note {
  display: block;
  margin-top: .6rem;
  font-size: 2.2rem;
  line-height: 1.2;
}

.fee-label-day {
  grid-row: 3;
  grid-column: 1;
}

.ticket-sub {
  margin-top: 7.1rem;
  text-align: center;
  font-family: var(--f-serif);
  font-weight: 700;
  font-size: 4rem;
  line-height: 1;
}

.ticket-date {
  width: 79rem;
  margin: 2.8rem auto 0;
  border: .2rem solid var(--c-white);
  text-align: center;
  color: var(--c-white);
  font-weight: 700;
  font-size: 3.8rem;
  line-height: 7.6rem;
}

.ticket-btns {
  display: grid;
  grid-template-columns: repeat(3, 36rem);
  justify-content: center;
  column-gap: 3.6rem;
  row-gap: 3rem;
  margin-top: 5.3rem;
}

.btn-ticket {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 7.5rem;
  border-radius: 7.5rem;
  background: var(--c-navy);
  color: var(--c-white);
  font-weight: 700;
  font-size: 2.3rem;
  transition: transform .25s ease, opacity .25s ease;
}

.btn-ticket:hover {
  transform: translateY(-.3rem);
  opacity: .88;
}

.ticket-code {
  margin-top: .8rem;
  text-align: center;
  color: var(--c-navy);
  font-weight: 700;
  font-size: 2.4rem;
  line-height: 1.4;
}

.ticket-notes {
  margin-top: 7.7rem;
  padding-left: 3.9rem;
  font-size: max(1.75rem, 11.5px);
  line-height: 2;
}

.ticket-card.is-before .ticket-notes {
  margin-top: 7rem;
}

.ticket-notes li {
  padding-left: 1em;
  text-indent: -1em;
}

/* ===== Highlights ===== */
.highlights {
  position: relative;
  overflow-x: clip;
  height: 97.5rem;
  margin-top: 17.2rem;
}

.highlights::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: calc(50% + 30.5rem);
  height: 64.9rem;
}

.hl-inner {
  position: relative;
  max-width: 192rem;
  height: 100%;
  margin: 0 auto;
}

.hl-title {
  position: absolute;
  left: 8.2%;
  top: 4.3rem;
  font-family: var(--f-serif);
  font-weight: 700;
  font-size: 4rem;
  line-height: 1;
  letter-spacing: .1em;
  color: var(--c-white);
}

.hl-lead {
  position: absolute;
  left: 8.2%;
  top: 11.8rem;
  font-size: 2.6rem;
  line-height: 1.4;
  color: var(--c-white);
}

.creator {
  position: absolute;
  left: 8.07%;
  top: 26.5rem;
  width: 55.3rem;
  height: 32.8rem;
  border-radius: 3.5rem;
  background: var(--c-pink-soft);
  color: var(--c-ink);
}

.creator-icon {
  position: absolute;
  left: 1.6rem;
  top: -.4rem;
  width: 17rem;
  border-radius: 50%;
}

.creator-name {
  position: absolute;
  left: 17.2rem;
  right: 6.3rem;
  top: 5.3rem;
  text-align: center;
  font-weight: 700;
  font-size: 2.2rem;
  line-height: 1.45;
}

.creator-bio {
  position: absolute;
  left: 50%;
  top: 15.9rem;
  transform: translateX(-50%);
  white-space: nowrap;
  font-size: max(1.75rem, 11px);
  line-height: 1.4;
}

.hl-diorama {
  position: absolute;
  left: 35.6%;
  top: 1.4rem;
  width: 62.5%;
  max-width: 120rem;
}

.hl-credit {
  position: absolute;
  left: 72.8%;
  top: 61.5rem;
  font-size: max(1.8rem, 11.5px);
  line-height: 1.2;
  color: #111;
}

/* ===== STUDIO ===== */
.studio {
  position: relative;
  height: 83.3rem;
}

.studio::before {
  content: "";
  position: absolute;
  left: calc(50% - 30rem);
  right: 0;
  top: 0;
  height: 55.8rem;
}

.studio-inner {
  position: relative;
  max-width: 192rem;
  height: 100%;
  margin: 0 auto;
}

.studio-photo {
  position: absolute;
  left: 7.5%;
  top: 13.1rem;
  width: 77.8rem;
}

.studio-photo figcaption {
  position: absolute;
  right: 1.8rem;
  bottom: 1rem;
  font-size: max(1.5rem, 10px);
  line-height: 1.2;
  color: #111;
}

.studio-title {
  position: absolute;
  left: 49.4%;
  top: 4.9rem;
  font-family: var(--f-serif);
  font-weight: 700;
  font-size: 3.9rem;
  line-height: 1;
  color: var(--c-ink);
}

.studio-text {
  position: absolute;
  left: 49.7%;
  top: 13.1rem;
  font-size: 2.5rem;
  line-height: 1.4;
  color: var(--c-ink);
}

/* ===== Goods ===== */
.goods {
  position: relative;
  width: 128.6rem;
  height: 90.1rem;
  margin: 0 auto;
  border-radius: var(--radius-card);
  color: var(--c-white);
  text-align: center;
}

.goods-title {
  padding-top: 4.9rem;
  font-family: var(--f-serif);
  font-weight: 700;
  font-size: 4rem;
  line-height: 1;
  letter-spacing: .03em;
}

.goods-lead {
  margin-top: 5.6rem;
  font-size: 2.5rem;
  line-height: 1.4;
}

.goods-dolls {
  position: absolute;
  left: 50%;
  top: 24.4rem;
  width: 82.6rem;
  transform: translateX(-50%);
}

.goods-credit {
  position: absolute;
  left: 69.7%;
  top: 83.8rem;
  text-align: left;
  white-space: nowrap;
  font-size: max(1.8rem, 11.5px);
  line-height: 1.2;
}

/* ===== Bonus ===== */
.bonus {
  position: relative;
  width: 142.4rem;
  height: 58.5rem;
  margin: 17.2rem auto 0;
  color: var(--c-ink);
}

/* 左上と右下を斜めに切り落とした背景 */
.bonus::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  clip-path: polygon(8.57% 0, 100% 0, 100% 57.26%, 91.43% 100%, 0 100%, 0 42.74%);
}

.bonus-inner {
  position: relative;
  height: 100%;
}

.bonus-title {
  padding-top: 4.4rem;
  padding-left: .3em;
  text-align: center;
  font-family: var(--f-serif);
  font-weight: 700;
  font-size: 3.8rem;
  line-height: 1;
  letter-spacing: .12em;
}

.bonus-text {
  position: absolute;
  left: 59.7rem;
  top: 13.8rem;
  font-size: 2.6rem;
  line-height: 1.35;
}

.bonus-sticker {
  position: absolute;
  left: 15.5rem;
  top: 14rem;
  width: 40.3rem;
  height: auto;
}

.bonus-sparkle {
  left: 8.7rem;
  top: 7.4rem;
  width: 11rem;
  height: auto;
}

.bonus-photo {
  position: absolute;
  left: 101.2rem;
  top: 25.8rem;
  width: 28rem;
  height: auto;
  border-radius: 50%;
}

/* ===== Instagram ===== */
.insta {
  margin-top: 15.1rem;
}

.insta-box {
  width: 90.4rem;
  height: 27.1rem;
  margin: 0 auto;
  padding-top: 5.9rem;
  border-radius: var(--radius-card);
  background: linear-gradient(90deg, var(--c-pink-grad-a), var(--c-peach));
  text-align: center;
}

.insta-title {
  font-family: var(--f-serif);
  font-weight: 700;
  font-size: 3.8rem;
  line-height: 1;
  color: var(--c-ink);
}

.insta-link img {
  width: 100%;
}

.insta-link {
  display: block;
  width: 54rem;
  margin: 3.4rem auto 0;
  transition: transform .25s ease, opacity .25s ease;
}

.insta-link:hover {
  transform: translateY(-.3rem);
  opacity: .9;
}

/* ===== Footer ===== */
.footer {
  margin-top: 18rem;
  padding-bottom: 2.7rem;
  text-align: center;
  font-family: var(--f-serif);
  font-size: max(2rem, 10px);
  line-height: 1.4;
  color: var(--c-ink);
}

/* ===== Page top ===== */
.pagetop {
  position: fixed;
  right: 4.5rem;
  bottom: 3rem;
  z-index: 50;
  width: 18rem;
  height: 16.2rem;
  opacity: .6;
  transition: transform .25s ease, opacity .25s ease;
}

.pagetop:hover {
  transform: translateY(-.4rem);
  opacity: .9;
}

.pagetop svg {
  display: block;
  width: 100%;
  height: 100%;
}

.pagetop-text {
  position: absolute;
  left: 0;
  right: 0;
  top: 38%;
  text-align: center;
  font-family: var(--f-serif);
  font-weight: 700;
  font-size: 3.2rem;
  line-height: 1;
  color: var(--c-navy);
}
