@charset "UTF-8";

/* Scoped to the standalone front page; no effects on other Cocoon pages. */
body.sekai-page {
  --sekai-background: #020306;
  --sekai-white: #f7f6f2;
  --sekai-gold: #d5c399;
  --sekai-admin-height: 0px;
  margin: 0;
  padding: 0;
  background: var(--sekai-background);
  color: var(--sekai-white);
  font-family: "Yu Mincho", "Hiragino Mincho ProN", "Noto Serif JP", serif;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body.sekai-page.admin-bar {
  --sekai-admin-height: 32px;
}

.sekai-page .sekai-main,
.sekai-page .sekai-hero,
.sekai-page .sekai-hero-content {
  box-sizing: border-box;
  width: 100%;
  margin: 0;
}

.sekai-page .sekai-main {
  min-height: calc(100vh - var(--sekai-admin-height));
  min-height: calc(100svh - var(--sekai-admin-height));
  padding: 0;
}

.sekai-page .sekai-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  display: grid;
  align-items: center;
  justify-items: center;
  min-height: calc(100vh - var(--sekai-admin-height));
  min-height: calc(100svh - var(--sekai-admin-height));
  padding: 80px 24px;
  padding-top: max(80px, env(safe-area-inset-top));
  padding-bottom: max(80px, env(safe-area-inset-bottom));
  background: var(--sekai-background);
  text-align: center;
}

.sekai-page .sekai-hero::before {
  content: "";
  position: absolute;
  z-index: 1;
  top: 68%;
  left: -40%;
  width: 180%;
  height: 120%;
  border-radius: 50%;
  background: radial-gradient(ellipse at 50% 0%, #080707 0%, #020203 40%, #010102 75%);
  box-shadow:
    0 -1px 2px rgba(255, 227, 166, 0.9),
    0 -5px 18px rgba(227, 158, 69, 0.32),
    0 -18px 65px rgba(139, 62, 24, 0.2);
  pointer-events: none;
  animation: sekai-horizon-reveal 2.8s ease-out both;
}

.sekai-page .sekai-hero::after {
  content: "";
  position: absolute;
  z-index: 0;
  inset: 0;
  background:
    radial-gradient(ellipse 12% 9% at 50% 68%, rgba(255, 241, 194, 0.95), rgba(246, 185, 84, 0.55) 30%, transparent 75%),
    radial-gradient(ellipse 42% 18% at 50% 70%, rgba(222, 143, 54, 0.48), rgba(139, 60, 31, 0.22) 48%, transparent 78%),
    radial-gradient(ellipse 34% 48% at 50% 72%, rgba(145, 88, 41, 0.12), transparent 78%);
  pointer-events: none;
  transform-origin: 50% 68%;
  animation: sekai-light-reveal 3.4s ease-out both, sekai-light-breathe 12s ease-in-out 3.4s infinite alternate;
}

.sekai-page .sekai-hero-content {
  position: relative;
  z-index: 2;
  max-width: 960px;
  padding: 0;
}

.sekai-page .sekai-project,
.sekai-page .sekai-coming {
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--sekai-gold);
  font-family: "Helvetica Neue", Arial, sans-serif;
  font-weight: 400;
  line-height: 1.8;
}

.sekai-page .sekai-project {
  margin: 0 0 32px;
  font-size: 11px;
  font-size: clamp(10px, 1vw, 12px);
  letter-spacing: 0.3em;
  text-indent: 0.3em;
  animation: sekai-copy-reveal 1.1s ease-out 0.5s both;
}

.sekai-page .sekai-title {
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--sekai-white);
  font-size: 80px;
  font-size: clamp(48px, 17vw, 128px);
  font-weight: 500;
  line-height: 1.45;
  letter-spacing: 0.12em;
  text-indent: 0.12em;
  text-shadow: 0 0 48px rgba(255, 225, 165, 0.16), 0 2px 18px rgba(0, 0, 0, 0.8);
  animation: sekai-title-reveal 2.3s cubic-bezier(0.2, 0.65, 0.25, 1) 1.1s both;
  overflow-wrap: normal;
  word-break: keep-all;
}

.sekai-page .sekai-title::before,
.sekai-page .sekai-title::after {
  content: none;
}

.sekai-page .sekai-tagline {
  margin: 24px 0 0;
  padding: 0;
  color: var(--sekai-white);
  font-size: 17px;
  font-size: clamp(13px, 2.7vw, 18px);
  font-weight: 400;
  line-height: 2;
  letter-spacing: 0.1em;
  text-indent: 0.1em;
  overflow-wrap: anywhere;
  text-shadow: 0 1px 12px rgba(0, 0, 0, 0.95);
  animation: sekai-copy-reveal 1.4s ease-out 2.7s both;
}

.sekai-page .sekai-divider {
  width: 1px;
  height: 48px;
  margin: 40px auto 24px;
  background: linear-gradient(to bottom, rgba(213, 195, 153, 0), rgba(213, 195, 153, 0.65));
  animation: sekai-copy-reveal 1.2s ease-out 3s both;
}

.sekai-page .sekai-coming {
  margin: 0;
  font-size: 10px;
  letter-spacing: 0.36em;
  text-indent: 0.36em;
  text-shadow: 0 1px 12px rgba(0, 0, 0, 0.95);
  animation: sekai-copy-reveal 1.2s ease-out 3.8s both;
}

@keyframes sekai-horizon-reveal {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes sekai-light-reveal {
  from { opacity: 0; }
  to { opacity: 0.88; }
}

@keyframes sekai-light-breathe {
  from { opacity: 0.88; transform: scale(1); }
  to { opacity: 1; transform: scale(1.015); }
}

@keyframes sekai-title-reveal {
  from { opacity: 0; filter: blur(8px); transform: translateY(14px); }
  to { opacity: 1; filter: blur(0); transform: translateY(0); }
}

@keyframes sekai-copy-reveal {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 782px) {
  body.sekai-page.admin-bar {
    --sekai-admin-height: 46px;
  }
}

@media (max-width: 480px) {
  .sekai-page .sekai-hero::after {
    background:
      radial-gradient(ellipse 22% 8% at 50% 68%, rgba(255, 241, 194, 0.9), rgba(246, 185, 84, 0.48) 30%, transparent 75%),
      radial-gradient(ellipse 70% 16% at 50% 70%, rgba(222, 143, 54, 0.4), rgba(139, 60, 31, 0.2) 48%, transparent 78%),
      radial-gradient(ellipse 60% 42% at 50% 72%, rgba(145, 88, 41, 0.1), transparent 78%);
  }

  .sekai-page .sekai-hero {
    padding: 56px 20px;
    padding-top: max(56px, env(safe-area-inset-top));
    padding-bottom: max(56px, env(safe-area-inset-bottom));
  }

  .sekai-page .sekai-project {
    margin-bottom: 24px;
    letter-spacing: 0.2em;
    text-indent: 0.2em;
  }

  .sekai-page .sekai-tagline {
    margin-top: 20px;
    letter-spacing: 0.04em;
    text-indent: 0.04em;
  }

  .sekai-page .sekai-divider {
    height: 40px;
    margin-top: 32px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .sekai-page .sekai-hero::before,
  .sekai-page .sekai-hero::after,
  .sekai-page .sekai-project,
  .sekai-page .sekai-title,
  .sekai-page .sekai-tagline,
  .sekai-page .sekai-divider,
  .sekai-page .sekai-coming {
    animation: none;
    opacity: 1;
    filter: none;
    transform: none;
  }
}

@media (max-height: 500px) and (min-width: 481px) {
  .sekai-page .sekai-hero {
    padding-top: 32px;
    padding-bottom: 32px;
  }

  .sekai-page .sekai-title {
    font-size: clamp(48px, 12vw, 80px);
  }

  .sekai-page .sekai-project {
    margin-bottom: 16px;
  }

  .sekai-page .sekai-divider {
    height: 24px;
    margin-top: 24px;
    margin-bottom: 16px;
  }
}

/* Share the hero's single viewport and its unchanged horizon backdrop. */
.sekai-page .sekai-main {
  display: grid;
  min-height: max(100vh, 44rem);
  min-height: max(calc(100dvh - var(--sekai-admin-height)), 44rem);
}

.sekai-page .sekai-hero {
  grid-area: 1 / 1;
  min-height: inherit;
}

.sekai-page .sekai-future {
  grid-area: 1 / 1;
  align-self: end;
  position: relative;
  z-index: 3;
  box-sizing: border-box;
  width: 100%;
  margin: 0;
  padding: 0 24px max(20px, 3dvh, env(safe-area-inset-bottom));
  border: 0;
  border-radius: 0;
  box-shadow: none;
  background: transparent;
  color: #e8e6e0;
  font-family: inherit;
  font-weight: 400;
  text-align: center;
}

.sekai-page .sekai-future-content {
  width: 100%;
  max-width: 960px;
  margin: 0 auto;
  font-family: inherit;
}

.sekai-page .sekai-future-group {
  margin: 0;
  padding: 0;
  font-family: inherit;
  font-size: clamp(0.875rem, 1.8dvh, 1.25rem);
  font-weight: 400;
  line-height: 2;
  letter-spacing: 0.08em;
  text-indent: 0.08em;
  overflow-wrap: anywhere;
}

.sekai-page .sekai-future-group + .sekai-future-group {
  margin-top: clamp(12px, 2dvh, 24px);
}

.sekai-page .sekai-future-line {
  display: block;
  opacity: 1;
  filter: none;
  transform: none;
}

/* Begin after COMING SOON finishes at 5s; each line stays visible. */
@media (prefers-reduced-motion: no-preference) {
  .sekai-page .sekai-future-line {
    animation: sekai-future-reveal 2.8s cubic-bezier(0.2, 0.65, 0.25, 1) 5.2s both;
  }
  .sekai-page .sekai-future-line:nth-child(2) {
    animation-delay: 6.6s;
  }
  .sekai-page .sekai-future-group:nth-child(2) .sekai-future-line {
    animation-delay: 8.4s;
  }
  .sekai-page .sekai-future-group:nth-child(2) .sekai-future-line:nth-child(2) {
    animation-delay: 9.8s;
  }
}

@keyframes sekai-future-reveal {
  from { opacity: 0; filter: blur(4px); transform: translateY(6px); }
  to { opacity: 1; filter: none; transform: none; }
}

@media (max-width: 480px) {
  .sekai-page .sekai-main {
    min-height: max(100vh, 34rem);
    min-height: max(calc(100dvh - var(--sekai-admin-height)), 34rem);
  }
  .sekai-page .sekai-future {
    padding: 0 20px max(12px, 2.5dvh, env(safe-area-inset-bottom));
  }
  .sekai-page .sekai-future-group {
    font-size: clamp(0.75rem, 1.8dvh, 1rem);
    letter-spacing: 0.04em;
    text-indent: 0.04em;
    line-height: 1.9;
  }
  .sekai-page .sekai-future-group + .sekai-future-group {
    margin-top: max(12px, 2dvh);
  }
}

/* Lift the complete composition together without changing reveal transforms. */
.sekai-page .sekai-main {
  --sekai-composition-lift: clamp(70px, 8dvh, 90px);
}

.sekai-page .sekai-hero-content {
  top: calc(-1 * var(--sekai-composition-lift));
}

.sekai-page .sekai-hero::before {
  top: calc(68% - var(--sekai-composition-lift));
}

.sekai-page .sekai-hero::after {
  top: calc(-1 * var(--sekai-composition-lift));
  bottom: var(--sekai-composition-lift);
}

.sekai-page .sekai-future {
  padding-bottom: calc(max(20px, 3dvh, env(safe-area-inset-bottom)) + var(--sekai-composition-lift));
}

@media (max-width: 480px) {
  .sekai-page .sekai-main {
    --sekai-composition-lift: clamp(24px, 6dvh, 50px);
  }
  .sekai-page .sekai-future {
    padding-bottom: calc(max(12px, 2.5dvh, env(safe-area-inset-bottom)) + var(--sekai-composition-lift));
  }
}
