@import url('https://fonts.googleapis.com/css2?family=M+PLUS+Rounded+1c:wght@400;500;700;800;900&display=swap');

/* ==========================================================================
   CSS RESET & ROOT VARIABLES
   ========================================================================== */
:root {
  --main-color: #E60012;
  --main-color-hover: #c4000f;
  --main-color-light: #ff4d5a;
  --accent-yellow: #FFF100;
  --accent-orange: #FF9800;
  --text-dark: #000000;
  --text-body: #444444;
  --text-muted: #A9A9A9;
  --bg-card: #FFFFFF;
  --bg-body: #E60012;
  --border-light: #EBEBEB;
  --font-family: 'M PLUS Rounded 1c', sans-serif;
  --card-radius: 60px;
  --card-radius-sp: 24px;
  --pill-radius: 9999px;
  --shadow-sm: 0 4px 12px rgba(0, 0, 0, 0.08);
  --shadow-card: 0 10px 30px rgba(0, 0, 0, 0.12);
  --shadow-hover: 0 14px 35px rgba(0, 0, 0, 0.18);
  --transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
  --u: calc(100cqw / 1680);

}

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  font-size: 16px;
}

body {
  font-family: var(--font-family);
  background-color: var(--bg-body);
  color: var(--text-dark);
  line-height: 1.7;
  overflow-x: hidden;
  position: relative;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  -webkit-font-smoothing: antialiased;
}

main {
  flex: 1 0 auto;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

a {
  text-decoration: none;
  color: inherit;
  transition: var(--transition);
}

ul,
ol {
  list-style: none;
}

button {
  font-family: inherit;
  cursor: pointer;
  border: none;
  background: none;
  outline: none;
}

/* ==========================================================================
   FLOATING BACKGROUND DECORATIVE CIRCLES
   ========================================================================== */
.bg-decorations {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  pointer-events: none;
  z-index: 1;
}

.bubble {
  position: absolute;
  border-radius: 50%;
  transform-origin: center center;
  animation: circlePulse1 6.8s cubic-bezier(0.42, 0, 0.58, 1) infinite;
  backface-visibility: hidden;
  will-change: transform;
}

.bubble:nth-child(2n) {
  animation-name: circlePulse2;
  animation-duration: 7.8s;
}

.bubble:nth-child(3n) {
  animation-name: circlePulse3;
  animation-duration: 6.2s;
}

.bubble:nth-child(4n) {
  animation-name: circlePulse4;
  animation-duration: 7.2s;
}

.bubble-1 {
  top: 2%;
  left: 3%;
  width: 36px;
  height: 36px;
  background: rgba(255, 255, 255, 0.35);
}

.bubble-2 {
  top: 5%;
  right: 6%;
  width: 44px;
  height: 44px;
  background: rgba(255, 152, 0, 0.9);
  animation-duration: 7s;
}

.bubble-3 {
  top: 12%;
  right: 2%;
  width: 38px;
  height: 38px;
  background: rgba(255, 200, 210, 0.7);
  animation-duration: 5.5s;
}

.bubble-4 {
  top: 20%;
  left: 2%;
  width: 34px;
  height: 34px;
  background: rgba(255, 200, 210, 0.8);
  animation-duration: 8s;
}

.bubble-5 {
  top: 28%;
  right: 4%;
  width: 50px;
  height: 50px;
  background: rgba(255, 152, 0, 0.85);
  animation-duration: 6.5s;
}

.bubble-6 {
  top: 37%;
  left: 3%;
  width: 44px;
  height: 44px;
  background: rgba(255, 255, 255, 0.3);
  animation-duration: 7.5s;
}

.bubble-7 {
  top: 46%;
  right: 5%;
  width: 52px;
  height: 52px;
  background: rgba(255, 152, 0, 0.9);
  animation-duration: 5s;
}

.bubble-8 {
  top: 54%;
  left: 4%;
  width: 38px;
  height: 38px;
  background: rgba(255, 255, 255, 0.35);
  animation-duration: 9s;
}

.bubble-9 {
  top: 63%;
  right: 3%;
  width: 46px;
  height: 46px;
  background: rgba(255, 152, 0, 0.85);
  animation-duration: 6s;
}

.bubble-10 {
  top: 72%;
  left: 5%;
  width: 42px;
  height: 42px;
  background: rgba(255, 200, 210, 0.7);
  animation-duration: 7s;
}

.bubble-11 {
  top: 80%;
  right: 4%;
  width: 50px;
  height: 50px;
  background: rgba(255, 152, 0, 0.9);
  animation-duration: 8.5s;
}

.bubble-12 {
  top: 88%;
  left: 3%;
  width: 36px;
  height: 36px;
  background: rgba(255, 255, 255, 0.3);
  animation-duration: 6.5s;
}

.bubble-13 {
  top: 94%;
  right: 5%;
  width: 44px;
  height: 44px;
  background: rgba(255, 152, 0, 0.85);
  animation-duration: 5.5s;
}

.bubble-14 {
  display: none;
}

@keyframes circlePulse1 {

  0%,
  100% {
    transform: translate3d(0, 0, 0) scale(1);
  }

  50% {
    transform: translate3d(4px, -8px, 0) scale(1.14);
  }
}

@keyframes circlePulse2 {

  0%,
  100% {
    transform: translate3d(0, 0, 0) scale(1);
  }

  50% {
    transform: translate3d(-6px, 6px, 0) scale(1.16);
  }
}

@keyframes circlePulse3 {

  0%,
  100% {
    transform: translate3d(0, 0, 0) scale(1);
  }

  50% {
    transform: translate3d(6px, 4px, 0) scale(1.12);
  }
}

@keyframes circlePulse4 {

  0%,
  100% {
    transform: translate3d(0, 0, 0) scale(1);
  }

  50% {
    transform: translate3d(-4px, -6px, 0) scale(1.15);
  }
}

@keyframes photoFloat1 {
  0% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
  }

  50% {
    transform: translate3d(0, -10px, 0) rotate(0.8deg) scale(1.03);
  }

  100% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
  }
}

@keyframes photoFloat2 {
  0% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
  }

  50% {
    transform: translate3d(0, 10px, 0) rotate(-0.8deg) scale(1.03);
  }

  100% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
  }
}

@keyframes photoFloat3 {
  0% {
    transform: translate3d(0, 0, 0) scale(1);
  }

  50% {
    transform: translate3d(0, -8px, 0) scale(1.04);
  }

  100% {
    transform: translate3d(0, 0, 0) scale(1);
  }
}

@keyframes photoFloat4 {
  0% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
  }

  50% {
    transform: translate3d(0, 8px, 0) rotate(0.6deg) scale(1.035);
  }

  100% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
  }
}

@keyframes heroFadeInDown {
  0% {
    opacity: 0;
    transform: translateY(-20px);
  }

  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes heroFadeInScale {
  0% {
    opacity: 0;
    transform: scale(0.94);
  }

  100% {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes heroFadeInUp {
  0% {
    opacity: 0;
    transform: translateY(22px);
  }

  100% {
    opacity: 1;
    transform: translateY(0);
  }
}


/* ==========================================================================
   GLOBAL HEADER & NAVIGATION (1100px max-width)
   ========================================================================== */
.site-header {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 100;
  display: flex;
  justify-content: center;
  padding: 33px 16px 0;
}

.nav-pill-wrapper {
  width: 100%;
  max-width: 1100px;
}

.nav-pill {
  width: 100%;
  background: var(--bg-card);
  border-radius: var(--pill-radius);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12);
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: calc(100 * var(--u));
  padding: 0 calc(49 * var(--u)) 0 calc(49 * var(--u));
  gap: 20px
}

.nav-logo {
  display: flex;
  align-items: center;
  height: 100%;
}

.nav-logo-img {
  width: calc(220 * var(--u));
  height: auto;
}

.nav-links {
  display: flex;
  align-items: center;
  gap: 20px;
}

.nav-item {
  font-size: calc(17 * var(--u));
  font-weight: 500;
  color: var(--text-dark);
  /* padding: 0px 8px; */
  border-radius: var(--pill-radius);
  transition: var(--transition);
  white-space: nowrap;
}

.nav-item.low-weight,
.nav-item.is-disabled {
  font-weight: 500;
  color: var(--text-muted) !important;
  pointer-events: none !important;
  cursor: default !important;
  opacity: 0.6;
  text-decoration: none !important;
  user-select: none;
}

.nav-item:hover {
  color: var(--main-color);
}

.nav-item.low-weight:hover,
.nav-item.is-disabled:hover {
  color: var(--text-muted) !important;
  text-decoration-color: transparent !important;
}

.menu-toggle {
  display: none;
  flex-direction: column;
  justify-content: space-around;
  width: 30px;
  height: 24px;
  background: transparent;
  padding: 2px;
}

.hamburger-bar {
  width: 100%;
  height: 3px;
  background-color: var(--main-color);
  border-radius: 4px;
  transition: var(--transition);
}

/* PC: the menu wrapper is transparent to layout, its logo is SP only */
.nav-menu {
  display: contents;
}

.nav-menu-logo {
  display: none;
}

/* ==========================================================================
   HERO SECTION (MAIN VISUAL - Figma トップ-pc frame, 1680px wide)
   Every value below is a Figma pixel value multiplied by --u, so the
   layout keeps the exact Figma proportions at any desktop width.
   ========================================================================== */
.hero-section {
  position: relative;
  z-index: 10;
  width: 100%;
  /* background-color: var(--bg-body); */
  container-type: inline-size;
}

.hero-stage-1440 {
  --u: calc(100cqw / 1680);
  position: relative;
  width: 100%;
  height: calc(1062 * var(--u));
  margin: 0 auto;
}

/* Hero Decorative Polka Dots */
.h-dot {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  z-index: 2;
  transform-origin: center center;
  backface-visibility: hidden;
  will-change: transform;
}

.dot-orange-tr {
  top: calc(30 * var(--u));
  left: calc(1454 * var(--u));
  width: calc(60 * var(--u));
  height: calc(60 * var(--u));
  background: #DFD00080;
  animation: circlePulse1 6.5s cubic-bezier(0.42, 0, 0.58, 1) infinite;
}

.dot-pink-mr {
  top: calc(368 * var(--u));
  left: calc(1559 * var(--u));
  width: calc(56 * var(--u));
  height: calc(56 * var(--u));
  background: #FFFFFF70;
  animation: circlePulse2 7.4s cubic-bezier(0.42, 0, 0.58, 1) infinite 0.6s;
}

.dot-pink-ml {
  top: calc(611 * var(--u));
  left: calc(97 * var(--u));
  width: calc(43 * var(--u));
  height: calc(43 * var(--u));
  background: #FFFFFF70;
  animation: circlePulse3 6.8s cubic-bezier(0.42, 0, 0.58, 1) infinite 1.2s;
}

.dot-pink-bc {
  top: calc(978 * var(--u));
  left: calc(903 * var(--u));
  width: calc(95 * var(--u));
  height: calc(95 * var(--u));
  background: #FFFFFF70;
  animation: circlePulse4 8.0s cubic-bezier(0.42, 0, 0.58, 1) infinite 1.8s;
}

/* Photo Cutout Circles in Hero */
.h-photo {
  position: absolute;
  pointer-events: none;
  z-index: 3;
}

.h-photo img {
  width: 100%;
  height: 100%;
}

/* 1. Top Left: Girl raising arms (アセット 5@4x 1.png - 228x205) */
.p-top-left {
  top: 0;
  left: calc(36 * var(--u));
  width: calc(228 * var(--u));
  height: calc(205 * var(--u));
}

/* 2. Top Center under Nav (アセット 4@4x 1.png - 320x270) */
.p-top-center {
  top: 0;
  left: calc(548 * var(--u));
  width: calc(320 * var(--u));
  height: calc(270 * var(--u));
}

/* 3. Top Right under Nav (Mask group.png - 373x259) */
.p-top-right-nav {
  top: 0;
  left: calc(990 * var(--u));
  width: calc(373 * var(--u));
  height: calc(259 * var(--u));
}

/* 4. Far Top Right (アセット 2@4x 1.png - 223x223) */
.p-far-top-right {
  top: calc(141 * var(--u));
  left: calc(1373 * var(--u));
  width: calc(223 * var(--u));
  height: calc(223 * var(--u));
}

/* 5. Left Middle (アセット 6@4x 1.png - 381x381) */
.p-mid-left {
  top: calc(226 * var(--u));
  left: calc(84 * var(--u));
  width: calc(381 * var(--u));
  height: calc(381 * var(--u));
}

/* 6. Center behind Logo (Mask group (1).png - 211x211) */
.p-center-pink-ball {
  top: calc(258 * var(--u));
  left: calc(697 * var(--u));
  width: calc(211 * var(--u));
  height: calc(211 * var(--u));
}

/* 7. Bottom Left (Mask group (2).png - 326x373) */
.p-bottom-left {
  top: calc(682 * var(--u));
  left: 0;
  width: calc(326 * var(--u));
  height: calc(373 * var(--u));
}

/* 8. Right Giant Circle (NTC building - 695x695) */
.p-building {
  top: calc(405 * var(--u));
  left: calc(984 * var(--u));
  width: calc(695 * var(--u));
  height: calc(695 * var(--u));
  border-radius: 50%;
  overflow: hidden;
}

.p-building img {
  object-fit: cover;
}

/* Hero Foreground Typography & SVGs */
.hero-logo-layer,
.hero-event-layer,
.hero-date-venue-layer {
  position: absolute;
  z-index: 10;
  pointer-events: none;
}

.hero-logo-layer img,
.hero-event-layer img,
.hero-date-venue-layer img {
  width: 100%;
  height: auto;
}

/* Slogan above the logo. Sizes are in logo units (1061 wide); --k scales the block */
.hero-slogan {
  --k: 1;
  position: absolute;
  z-index: 10;
  top: calc(205 * var(--u));
  left: calc(364 * var(--u));
  margin: 0;
  color: #FFFFFF;
  font-family: var(--font-family);
  font-size: calc(32.8 * var(--k) * var(--u));
  font-weight: 800;
  line-height: calc(40.25 * var(--k) * var(--u));
  letter-spacing: 0;
  white-space: nowrap;
  -webkit-text-stroke: calc(8 * var(--k) * var(--u)) #E60012;
  paint-order: stroke fill;
  filter: drop-shadow(calc(2.8 * var(--k) * var(--u)) calc(2.8 * var(--k) * var(--u)) 0 rgba(35, 24, 21, 0.5));
  pointer-events: none;
}

.hero-slogan-line {
  display: block;
  margin-left: calc(138.6 * var(--k) * var(--u));
}

.hero-slogan-line+.hero-slogan-line {
  margin-left: calc(181 * var(--k) * var(--u));
}

.hs-dot {
  margin-left: -0.25em;
  letter-spacing: -0.25em;
}

.hs-comma {
  letter-spacing: -0.5em;
}

/* main-logo.svg - 1061x424 (logo + 参加費無料 badge) */
.hero-logo-layer {
  top: calc(205 * var(--u));
  left: calc(364 * var(--u));
  width: calc(1061 * var(--u));
}

/* object (1).svg - 586x87 (令和8年度「スポーツの日」中央記念行事 特別編) */
.hero-event-layer {
  top: calc(592 * var(--u));
  left: calc(383 * var(--u));
  width: calc(586 * var(--u));
}

/* object.svg - 575x231 (11.3 date / time / venue) */
.hero-date-venue-layer {
  top: calc(708 * var(--u));
  left: calc(384 * var(--u));
  width: calc(575 * var(--u));
}

/* The address line baked into object.svg is no longer in the design */
.hero-date-venue-layer img {
  clip-path: polygon(0 0, 100% 0, 100% 93.5%, 69% 93.5%, 69% 100%, 0 100%);
}

/* ==========================================================================
   SECTION: NEW 新着情報 (Figma 01_new - 1318x463 card)
   Same Figma unit system as the hero: values are Figma px * --u.
   ========================================================================== */
.section-news,
.section-about {
  position: relative;
  /* background-color: var(--bg-body); */
  container-type: inline-size;
}

/* Sits under the hero so the hero circles overlap the card like in Figma */
.section-news {
  z-index: 5;
}

.news-capsule-card,
.about-stage {
  --u: calc(100cqw / 1680);
}

.news-capsule-card {
  width: calc(1318 * var(--u));
  margin: 0 auto;
  background: var(--bg-card);
  height: calc(468 * var(--u));
  margin-top: calc(3 * var(--u));
  border-radius: calc(166 * var(--u));
  padding: calc(99 * var(--u)) calc(66 * var(--u)) 0 calc(100 * var(--u));
  display: flex;
  align-items: flex-start;
}

.news-label-col {
  flex-shrink: 0;
  width: calc(216 * var(--u));
  margin-top: calc(-26 * var(--u));
}

.news-title-en {
  font-family: 'Roboto Condensed', var(--font-family);
  font-size: max(calc(64 * var(--u)), 32px);
  font-weight: 600;
  color: var(--main-color);
  line-height: 1;
  letter-spacing: 0.02em;
}

.news-title-jp {
  font-size: max(calc(30 * var(--u)), 16px);
  font-weight: 700;
  color: #222222;
  letter-spacing: 0.14em;
  line-height: 1.4;
  margin-top: calc(25 * var(--u));
  white-space: nowrap;
}

.news-content-col {
  position: relative;
  flex-grow: 1;
  padding-right: calc(45 * var(--u));
}

/* Scroll indicator bar */
.news-content-col::after {
  content: "";
  position: absolute;
  top: calc(-4 * var(--u));
  right: 0;
  width: calc(4 * var(--u));
  min-width: 2px;
  height: calc(122 * var(--u));
  background-color: #D9D9D9;
  border-radius: 2px;
}

.news-list {
  display: flex;
  flex-direction: column;
}

.news-item {
  display: flex;
  align-items: baseline;
  padding: calc(29.5 * var(--u)) 0;
  border-bottom: 1px solid #222222;
}

.news-item:first-child {
  padding-top: 0;
}

.news-meta,
.news-text {
  font-size: max(calc(16 * var(--u)), 12px);
  font-weight: 500;
  color: #222222;
  line-height: 1.6875;
}

.news-meta {
  flex-shrink: 0;
  width: calc(186 * var(--u));
  white-space: nowrap;
  letter-spacing: 0.065em;
}

.news-text {
  letter-spacing: 0.127em;
}

.news-new {
  color: var(--main-color);
}

/* ==========================================================================
   SECTION: WHAT'S 「スポーツ祭り2026特別編」とは？
   ========================================================================== */
.section-about {
  z-index: 10;
  color: #FFFFFF;
}

.about-stage {
  position: relative;
  padding: calc(122 * var(--u)) 16px calc(116 * var(--u));
  border-bottom: 1px solid rgba(255, 255, 255, 0.25);
}

.about-content {
  position: relative;
  z-index: 3;
  text-align: center;
}

.about-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: calc(233 * var(--u));
  min-width: 120px;
  height: calc(78 * var(--u));
  min-height: 40px;
  background: #FFFFFF;
  color: var(--main-color);
  font-family: 'Roboto Condensed', var(--font-family);
  font-size: max(calc(64 * var(--u)), 32px);
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0;
}

.about-title {
  margin-top: calc(32 * var(--u));
  font-size: max(calc(48 * var(--u)), 24px);
  font-weight: 500;
  line-height: 1.4375;
  letter-spacing: 0.08em;
  color: #FFFFFF;
}

.about-text {
  margin-top: calc(60 * var(--u));
}

.about-text p {
  font-size: max(calc(16 * var(--u)), 12px);
  font-weight: 700;
  line-height: 2.5;
  letter-spacing: 0.1em;
}

.about-text p+p {
  margin-top: 2.5em;
}

/* Decorative dots */
.a-dot {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  z-index: 1;
  transform-origin: center center;
  backface-visibility: hidden;
  will-change: transform;
}

.a-dot-pink {
  top: calc(229.5 * var(--u));
  left: calc(280 * var(--u));
  width: calc(93 * var(--u));
  height: calc(93 * var(--u));
  background: #FFFFFF70;
  animation: circlePulse2 7.0s cubic-bezier(0.42, 0, 0.58, 1) infinite 0.5s;
}

.a-dot-orange {
  top: calc(877.5 * var(--u));
  left: calc(1535 * var(--u));
  width: calc(60 * var(--u));
  height: calc(60 * var(--u));
  background: #DFD00080;
  animation: circlePulse1 6.4s cubic-bezier(0.42, 0, 0.58, 1) infinite 1.0s;
}

/* Photo circles */
.a-photo {
  position: absolute;
  pointer-events: none;
  z-index: 2;
}

.a-photo picture {
  display: block;
  width: 100%;
  height: 100%;
}

.a-photo img {
  width: 100%;
  height: 100%;
}

.a-photo-shooting {
  top: calc(231.5 * var(--u));
  left: calc(1233 * var(--u));
  width: calc(359 * var(--u));
  height: calc(358 * var(--u));
}

.a-photo-pool {
  top: calc(400.5 * var(--u));
  left: 0;
  width: calc(418 * var(--u));
  height: calc(504 * var(--u));
}

.a-photo-boy {
  top: calc(702.3 * var(--u));
  left: calc(1223.8 * var(--u));
  width: calc(220.4 * var(--u));
  height: calc(220.4 * var(--u));
}

/* ==========================================================================
   CONTENT STAGE: PROGRAM / MAP / ENTRY (Figma units: px * --u)
   ========================================================================== */
.content-section,
.section-precautions {
  position: relative;
  z-index: 10;
  container-type: inline-size;
}

.content-section {
  background-color: var(--bg-body);
  overflow: hidden;
}

.content-stage,
.precautions-stage {
  --u: calc(100cqw / 1680);
  position: relative;
}

.content-stage {
  padding: calc(123 * var(--u)) 0 calc(121.5 * var(--u));
}

/* Decorations */
.c-photo,
.c-dot {
  position: absolute;
  pointer-events: none;
  z-index: 1;
}

.c-dot {
  border-radius: 50%;
  background: #FFFFFF70;
  transform-origin: center center;
  backface-visibility: hidden;
  will-change: transform;
}

.c-photo img {
  width: 100%;
  height: 100%;
}

.c-photo-ball {
  top: calc(172 * var(--u));
  left: calc(73 * var(--u));
  width: calc(285 * var(--u));
  height: calc(285 * var(--u));
}

.c-photo-kinball {
  top: calc(963 * var(--u));
  left: calc(1527 * var(--u));
  width: calc(153 * var(--u));
  height: calc(440 * var(--u));
}

.c-photo-throw {
  top: calc(1840 * var(--u));
  left: calc(1305 * var(--u));
  width: calc(285 * var(--u));
  height: calc(285 * var(--u));
}

.c-photo-run {
  top: calc(3007 * var(--u));
  left: 0;
  width: calc(282 * var(--u));
  height: calc(400 * var(--u));
}

.c-photo-run img {
  object-fit: cover;
}

.c-photo picture {
  display: block;
  width: 100%;
  height: 100%;
}

.c-dot-1 {
  top: calc(210 * var(--u));
  left: calc(1334 * var(--u));
  width: calc(93 * var(--u));
  height: calc(93 * var(--u));
  animation: circlePulse1 6.6s cubic-bezier(0.42, 0, 0.58, 1) infinite;
}

.c-dot-2 {
  top: calc(669 * var(--u));
  left: calc(42 * var(--u));
  width: calc(60 * var(--u));
  height: calc(60 * var(--u));
  background: #DFD00080;
  animation: circlePulse2 6.0s cubic-bezier(0.42, 0, 0.58, 1) infinite 0.7s;
}

.c-dot-3 {
  top: calc(1554 * var(--u));
  left: calc(1411 * var(--u));
  width: calc(186 * var(--u));
  height: calc(186 * var(--u));
  animation: circlePulse3 7.8s cubic-bezier(0.42, 0, 0.58, 1) infinite 1.4s;
}

.c-dot-4 {
  top: calc(1783 * var(--u));
  left: calc(161 * var(--u));
  width: calc(294 * var(--u));
  height: calc(294 * var(--u));
  background: #DFD00080;
  animation: circlePulse4 7.2s cubic-bezier(0.42, 0, 0.58, 1) infinite 0.4s;
}

.c-dot-5 {
  top: calc(2226 * var(--u));
  left: calc(92 * var(--u));
  width: calc(122 * var(--u));
  height: calc(122 * var(--u));
  animation: circlePulse1 6.5s cubic-bezier(0.42, 0, 0.58, 1) infinite 1.6s;
}

.c-dot-6 {
  top: calc(3009 * var(--u));
  left: calc(1598 * var(--u));
  width: calc(121 * var(--u));
  height: calc(121 * var(--u));
  animation: circlePulse2 7.0s cubic-bezier(0.42, 0, 0.58, 1) infinite 0.9s;
}

.c-dot-7 {
  top: calc(3676 * var(--u));
  left: calc(1365 * var(--u));
  width: calc(294 * var(--u));
  height: calc(294 * var(--u));
  background: #DFD00080;
  animation: circlePulse3 8.2s cubic-bezier(0.42, 0, 0.58, 1) infinite 2.0s;
}

/* Intro text */
.program-intro {
  position: relative;
  z-index: 2;
  text-align: center;
  font-size: max(calc(28 * var(--u)), 15px);
  font-weight: 700;
  line-height: 2.143;
  letter-spacing: 0.12em;
}

.program-intro-yellow {
  color: #FFF100;
}

.program-intro-white {
  color: #FFFFFF;
  margin-top: calc(22 * var(--u));
}

/* White content cards */
.content-card {
  position: relative;
  z-index: 2;
  width: calc(1318 * var(--u));
  margin: calc(81 * var(--u)) auto 0;
  padding: calc(93 * var(--u)) 0 calc(101.5 * var(--u));
  background: var(--bg-card);
  border-radius: calc(200 * var(--u));
  color: #222222;
}

#program {
  margin-top: calc(79 * var(--u));
  padding-bottom: calc(103.5 * var(--u));
}

.card-head {
  text-align: center;
}

.card-title-en {
  font-family: 'Roboto Condensed', var(--font-family);
  font-size: max(calc(64 * var(--u)), 32px);
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0;
  color: var(--main-color);
}

.card-title-jp {
  margin-top: calc(25 * var(--u));
  font-size: max(calc(30 * var(--u)), 15px);
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: 0.165em;
}

.card-block {
  width: calc(1000 * var(--u));
  margin: calc(30 * var(--u)) auto 0;
}

.card-head+.card-block {
  margin-top: calc(64 * var(--u));
}

.red-bar-heading {
  display: flex;
  align-items: center;
  justify-content: center;
  height: calc(70 * var(--u));
  min-height: 36px;
  padding-left: 0.28em;
  background: var(--main-color);
  color: #FFFFFF;
  font-size: max(calc(30 * var(--u)), 15px);
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.28em;
}

.dot-list {
  margin-top: calc(30 * var(--u));
}

.dot-list li {
  position: relative;
  padding-left: calc(40 * var(--u));
  font-size: max(calc(23 * var(--u)), 12px);
  font-weight: 800;
  line-height: calc(40 * var(--u));
  letter-spacing: 0.04em;
}

.dot-list li+li {
  margin-top: calc(10 * var(--u));
}

.dot-list li::before {
  content: "";
  position: absolute;
  top: calc(11 * var(--u));
  left: calc(8 * var(--u));
  width: calc(18 * var(--u));
  height: calc(18 * var(--u));
  border-radius: 50%;
  background: var(--main-color);
}

.dot-list sup {
  font-size: 0.6em;
  line-height: 0;
}

.card-note {
  margin-top: calc(30 * var(--u));
  font-size: max(calc(17 * var(--u)), 11px);
  font-weight: 500;
  line-height: 1.6875;
  letter-spacing: 0.06em;
}

.venue {
  margin-top: calc(60 * var(--u));
  text-align: center;
}

.venue+.card-block {
  margin-top: calc(64 * var(--u));
}

.venue-name {
  font-size: max(calc(30 * var(--u)), 15px);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.085em;
}

.venue-address {
  margin-top: calc(22 * var(--u));
  font-size: max(calc(22 * var(--u)), 12px);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.07em;
}

/* Buttons */
.card-buttons {
  display: flex;
  justify-content: center;
  gap: calc(33 * var(--u));
  margin-top: calc(60 * var(--u));
}

.card-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: calc(447 * var(--u));
  min-width: 200px;
  height: calc(97 * var(--u));
  min-height: 44px;
  padding-left: 0.2em;
  border: max(calc(3 * var(--u)), 1.5px) solid var(--main-color);
  border-radius: var(--pill-radius);
  font-size: max(calc(20 * var(--u)), 12px);
  font-weight: 700;
  letter-spacing: 0.2em;
  box-shadow: 0 calc(14 * var(--u)) 0 var(--shadow-color);
}

.card-btn:hover {
  transform: translateY(calc(6 * var(--u)));
  box-shadow: 0 calc(6 * var(--u)) 0 var(--shadow-color);
}

.card-btn-outline,
.card-btn-solid {
  --shadow-color: #B5000E;
  background: var(--main-color);
  color: #FFFFFF;
}

.card-btn-wide {
  width: calc(685 * var(--u));
  min-width: 300px;
}

/* ==========================================================================
   PRECAUTIONS / CONTACT / SPONSORS
   ========================================================================== */
.section-precautions {
  background: var(--bg-card);
  border-radius: calc(213 * 100cqw / 1680);
  color: #222222;
}

/* PC / SP only helpers */
.sp-br,
.sp-only {
  display: none;
}

.precautions-stage {
  padding: calc(113 * var(--u)) 0 calc(118 * var(--u));
}

.p-dot-orange {
  top: calc(-201 * var(--u));
  left: calc(-27 * var(--u));
  width: calc(118 * var(--u));
  height: calc(118 * var(--u));
  background: #DFD00080;
  transform-origin: center center;
  backface-visibility: hidden;
  will-change: transform;
  animation: circlePulse4 7.5s cubic-bezier(0.42, 0, 0.58, 1) infinite;
}

.precautions-head {
  text-align: center;
}

.precautions-title-jp {
  color: #222222;
}

.precautions-body {
  width: calc(1320 * var(--u));
  margin: calc(106 * var(--u)) auto 0;
}

.precaution-item {
  max-width: calc(980 * var(--u));
}

.precaution-item+.precaution-item {
  margin-top: calc(41.5 * var(--u));
}

.precaution-heading {
  position: relative;
  padding-left: calc(30 * var(--u));
  font-size: max(calc(24 * var(--u)), 14px);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0;
}

.precaution-heading::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  width: max(calc(20 * var(--u)), 10px);
  height: max(calc(20 * var(--u)), 10px);
  border-radius: 50%;
  background: var(--main-color);
  transform: translateY(-50%);
}

.precaution-item p,
.precaution-list {
  margin-top: calc(12 * var(--u));
  font-size: max(calc(17 * var(--u)), 12px);
  font-weight: 500;
  line-height: calc(30 * var(--u));
  letter-spacing: 0.06em;
}

.precaution-list li {
  padding-left: 1em;
  text-indent: -1em;
}

.precaution-list li::before {
  content: "●";
}

/* Contact red card */
.contact-card {
  width: calc(1318 * var(--u));
  margin: calc(100 * var(--u)) auto 0;
  padding: calc(82 * var(--u)) calc(74 * var(--u)) calc(79 * var(--u));
  background: var(--main-color);
  border-radius: calc(150 * var(--u));
  color: #FFFFFF;
  text-align: center;
}

.contact-title {
  font-size: max(calc(48 * var(--u)), 22px);
  font-weight: 500;
  line-height: 1.4375;
  letter-spacing: 0.096em;
}

.contact-office {
  margin-top: calc(36 * var(--u));
  font-size: max(calc(32 * var(--u)), 15px);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.1em;
}

.contact-grid {
  display: grid;
  grid-template-columns: 301fr 491fr 338fr;
  gap: calc(20 * var(--u));
  margin-top: calc(36 * var(--u));
}

.contact-box {
  display: flex;
  flex-direction: column;
  align-items: center;
  height: calc(284 * var(--u));
  padding-top: calc(60 * var(--u));
  background: #FFFFFF;
  border-radius: calc(45 * var(--u));
  color: var(--main-color);
  font-weight: 700;
}

.contact-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  height: calc(57 * var(--u));
}

.contact-icon img,
.sponsor-box img {
  width: calc(var(--w) * var(--u));
  height: auto;
}

.contact-label,
.contact-value {
  font-size: max(calc(22 * var(--u)), 12px);
  line-height: 1.6;
  letter-spacing: 0.05em;
}

.contact-label {
  margin-top: calc(21 * var(--u));
}

.contact-value {
  margin-top: calc(8 * var(--u));
}

.contact-small {
  font-size: max(calc(16 * var(--u)), 10px);
  line-height: 1.5;
}

.contact-note {
  margin-top: calc(21 * var(--u));
  padding-left: 1em;
  text-indent: -1em;
  text-align: left;
  font-size: max(calc(18 * var(--u)), 11px);
  font-weight: 500;
  line-height: 1.72;
  letter-spacing: 0;
}

/* Sponsors */
.sponsors {
  margin-top: calc(100 * var(--u));
}

.sponsors-title {
  text-align: center;
  font-size: max(calc(47 * var(--u)), 22px);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.12em;
}

.sponsor-grid+.sponsors-title,
.supporters+.sponsors-title {
  margin-top: calc(80 * var(--u));
}

.sponsor-grid-single+.sponsors-title {
  margin-top: calc(79 * var(--u));
}

.sponsor-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: calc(39 * var(--u)) calc(16 * var(--u));
  width: calc(1318 * var(--u));
  margin: calc(41 * var(--u)) auto 0;
}

.sponsor-grid-single {
  grid-template-columns: calc(429 * var(--u));
  justify-content: center;
}

.sponsor-box {
  display: flex;
  align-items: center;
  justify-content: center;
  height: calc(247 * var(--u));
  border: max(calc(2 * var(--u)), 1px) solid #F08C96;
  border-radius: calc(45 * var(--u));
}

.supporters {
  margin-top: calc(19 * var(--u));
  text-align: center;
  font-size: max(calc(24 * var(--u)), 12px);
  font-weight: 500;
  line-height: 1.6;
  letter-spacing: 0.096em;
}

.sponsor-name {
  margin-top: calc(20 * var(--u));
  text-align: center;
  font-size: max(calc(23 * var(--u)), 12px);
  font-weight: 500;
  line-height: 1.6;
  letter-spacing: 0.11em;
}

/* ==========================================================================
   GLOBAL FOOTER
   ========================================================================== */
.site-footer {
  --u: calc(100vw / 1680);
  position: relative;
  z-index: 10;
  color: #FFFFFF;
  background: var(--main-color);
  padding: calc(65 * var(--u)) 0 0;
  text-align: center;
  margin-top: auto;
}

.footer-container {
  /* padding-bottom: calc(55 * var(--u)); */
}

.footer-links-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: calc(22 * var(--u));
  margin-bottom: 40px;
}

.footer-links {
  display: flex;
  justify-content: center;
  align-items: center;
}

.footer-links li {
  position: relative;
  padding: 0 calc(32 * var(--u));
}

.footer-links li+li::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  width: 1px;
  height: calc(22 * var(--u));
  background: #FFFFFF;
  transform: translateY(-50%);
}

.footer-links a,
.footer-links .is-disabled {
  font-size: calc(22 * var(--u));
  font-weight: 500;
  line-height: calc(32 * var(--u));
  color: #FFFFFF;
  letter-spacing: 0.08em;
  transition: opacity 0.2s ease, color 0.2s ease;
}

.footer-links a:hover {
  color: var(--accent-yellow);
}

.footer-links .is-disabled {
  pointer-events: none;
  cursor: default;
}

.copyright {
  background: #FFFFFF;
  color: var(--main-color);
  padding: calc(16 * var(--u)) calc(16 * var(--u));
  font-size: calc(16 * var(--u));
  font-weight: 500;
  line-height: 1.4;
  margin: 0;
  text-align: center;
  letter-spacing: 0.05em;
}

/* ==========================================================================
   BACK TO TOP BUTTON
   ========================================================================== */
.back-to-top {
  position: fixed;
  bottom: 24px;
  right: 24px;
  width: 54px;
  height: 54px;
  background: #FFFFFF;
  color: var(--main-color);
  border-radius: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
  z-index: 999;
  opacity: 0;
  visibility: hidden;
  transform: translateY(20px);
  transition: var(--transition);
  border: 2px solid var(--main-color);
}

.back-to-top.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.back-to-top:hover {
  background: var(--main-color);
  color: #FFFFFF;
  transform: translateY(-4px);
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.35);
}

.arrow-up {
  font-size: 0.75rem;
  line-height: 1;
}

.top-text {
  font-size: 0.65rem;
  font-weight: 900;
  line-height: 1;
  margin-top: 2px;
}

/* ==========================================================================
   RESPONSIVE DESIGN (SP / TABLET / MOBILE BREAKPOINTS)
   ========================================================================== */
@media (max-width: 991px) {

  .a-photo,
  .a-dot,
  .c-photo,
  .c-dot {
    display: none;
  }
}

/* ==========================================================================
   SP (Figma トップ-sp frame, 375px wide) - values are Figma px * --u
   ========================================================================== */
@media (max-width: 767px) {

  .hero-stage-1440,
  .news-capsule-card,
  .about-stage,
  .content-stage,
  .precautions-stage {
    --u: calc(100cqw / 375);
  }

  .site-header,
  .site-footer {
    --u: calc(100vw / 375);
  }

  .pc-br {
    display: none;
  }

  .sp-br,
  .sp-only {
    display: inline;
  }

  .pc-only {
    display: none;
  }

  /* ---------- Header ---------- */
  .site-header {
    padding: 0;
  }

  .nav-pill-wrapper {
    max-width: none;
  }

  .nav-pill {
    position: relative;
    height: 0;
    padding: 0;
    background: transparent;
    border-radius: 0;
    box-shadow: none;
  }

  .nav-logo {
    display: none;
  }

  .menu-toggle {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    position: absolute;
    z-index: 2;
    top: calc(13.25 * var(--u));
    right: calc(20 * var(--u));
    width: calc(20 * var(--u));
    height: calc(14.5 * var(--u));
    padding: 0;
  }

  .hamburger-bar {
    height: calc(1.5 * var(--u));
    background-color: #FFFFFF;
    border-radius: 0;
    transform-origin: center;
  }

  /* Open state: bars turn into a close (×) icon */
  .menu-toggle[aria-expanded="true"] .hamburger-bar:nth-child(1) {
    transform: translateY(calc(6.5 * var(--u))) rotate(45deg);
  }

  .menu-toggle[aria-expanded="true"] .hamburger-bar:nth-child(2) {
    opacity: 0;
  }

  .menu-toggle[aria-expanded="true"] .hamburger-bar:nth-child(3) {
    transform: translateY(calc(-6.5 * var(--u))) rotate(-45deg);
  }

  /* Full-screen menu (Figma ハンバーガー 750x1308) */
  .nav-menu {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 1;
    overflow-y: auto;
    padding: calc(29.5 * var(--u)) calc(17.5 * var(--u)) calc(77 * var(--u));
    background: var(--main-color);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
  }

  .nav-menu.is-open {
    opacity: 1;
    visibility: visible;
  }

  .nav-menu .nav-links {
    display: block;
    margin: 0;
  }

  .nav-menu .nav-links li+li {
    border-top: 1px solid #FFFFFF;
  }

  .nav-menu .nav-links .nav-item {
    display: block;
    padding: calc(21 * var(--u)) calc(0.5 * var(--u)) calc(19.5 * var(--u));
    border-radius: 0;
    color: #FFFFFF;
    font-size: calc(15 * var(--u));
    font-weight: 500;
    line-height: calc(22.5 * var(--u));
    letter-spacing: 0.065em;
    text-align: left;
    white-space: nowrap;
  }

  .nav-menu .nav-links .nav-item.low-weight,
  .nav-menu .nav-links .nav-item.is-disabled {
    color: rgb(255 255 255) !important;
    opacity: 0.6;
    pointer-events: none !important;
    cursor: default !important;
  }

  .nav-menu .nav-links .nav-item:hover {
    color: #FFFFFF;
    opacity: 0.8;
  }

  .nav-menu-logo {
    display: block;
    width: calc(300 * var(--u));
    margin: calc(16.8 * var(--u)) auto 0;
  }

  .nav-menu-logo img {
    width: 100%;
    height: auto;
  }

  body.menu-open {
    overflow: hidden;
  }

  body.menu-open .back-to-top {
    opacity: 0;
    visibility: hidden;
  }

  /* ---------- Hero ---------- */
  .hero-section,
  .section-about,
  .content-section {
    overflow-x: clip;
  }

  .content-section {
    overflow: visible;
    overflow-x: clip;
  }

  .hero-stage-1440 {
    height: calc(405 * var(--u));
  }

  .p-top-left,
  .dot-orange-tr {
    display: none;
  }

  .p-top-center {
    top: calc(-1.25 * var(--u));
    left: calc(70 * var(--u));
    width: calc(88 * var(--u));
    height: calc(74.25 * var(--u));
  }

  .p-top-right-nav {
    top: 0;
    left: calc(204 * var(--u));
    width: calc(94 * var(--u));
    height: calc(65.3 * var(--u));
  }

  .p-far-top-right {
    top: calc(34 * var(--u));
    left: calc(328.5 * var(--u));
    width: calc(62 * var(--u));
    height: calc(62 * var(--u));
  }

  .p-mid-left {
    top: calc(76 * var(--u));
    left: calc(-50.5 * var(--u));
    width: calc(114 * var(--u));
    height: calc(114 * var(--u));
  }

  .p-center-pink-ball {
    top: calc(87.5 * var(--u));
    left: calc(125 * var(--u));
    width: calc(75 * var(--u));
    height: calc(75 * var(--u));
  }

  .p-bottom-left {
    top: calc(360.5 * var(--u));
    left: calc(-5.3 * var(--u));
    width: calc(74.3 * var(--u));
    height: calc(85 * var(--u));
  }

  .p-building {
    top: calc(152.5 * var(--u));
    left: calc(313 * var(--u));
    width: calc(106.5 * var(--u));
    height: calc(106.5 * var(--u));
  }

  .dot-pink-mr {
    top: calc(128 * var(--u));
    left: calc(352.5 * var(--u));
    width: calc(16.5 * var(--u));
    height: calc(16.5 * var(--u));
  }

  .dot-pink-ml {
    top: calc(295 * var(--u));
    left: calc(14.5 * var(--u));
    width: calc(16.5 * var(--u));
    height: calc(16.5 * var(--u));
  }

  .dot-pink-bc {
    top: calc(379.5 * var(--u));
    left: calc(255.5 * var(--u));
    width: calc(46.5 * var(--u));
    height: calc(46.5 * var(--u));
  }

  /* Slogan: same text block as PC, scale 0.391 */
  .hero-slogan {
    --k: 0.391;
    top: calc(63.7 * var(--u));
    left: calc(-12.1 * var(--u));
  }

  /* Logo + badge, scale 0.3186 */
  .hero-logo-layer {
    top: calc(73.8 * var(--u));
    left: calc(23.06 * var(--u));
    width: calc(340.2 * var(--u));
  }

  .hero-event-layer {
    top: calc(209 * var(--u));
    left: calc(43.25 * var(--u));
    width: calc(214.2 * var(--u));
  }

  .hero-date-venue-layer {
    top: calc(249.5 * var(--u));
    left: calc(44.4 * var(--u));
    width: calc(286.9 * var(--u));
  }

  /* ---------- News ---------- */
  .news-capsule-card {
    position: relative;
    flex-direction: column;
    width: calc(335 * var(--u));
    height: calc(371 * var(--u));
    margin-top: 0;
    padding: calc(35 * var(--u)) calc(30 * var(--u)) 0 calc(31 * var(--u));
    border-radius: calc(75 * var(--u));
    overflow: hidden;
  }

  .news-label-col {
    display: flex;
    align-items: center;
    gap: calc(13 * var(--u));
    width: auto;
    height: calc(35 * var(--u));
    margin: 0;
  }

  .news-title-en {
    font-size: calc(32 * var(--u));
  }

  .news-title-jp {
    margin: 0;
    font-size: calc(16 * var(--u));
    line-height: 1;
    letter-spacing: 0.08em;
  }

  .news-content-col {
    position: static;
    width: 100%;
    margin-top: calc(14.8 * var(--u));
    padding-right: 0;
  }

  .news-content-col::after {
    top: calc(47 * var(--u));
    right: calc(15 * var(--u));
    width: calc(2.5 * var(--u));
    min-width: 0;
    height: calc(40 * var(--u));
  }

  .news-item {
    flex-direction: column;
    align-items: stretch;
    gap: calc(5.1 * var(--u));
    padding: calc(15.6 * var(--u)) 0 calc(13.9 * var(--u));
    border-bottom: 0.5px solid #222222;
  }

  .news-item:first-child {
    padding-top: 0;
  }

  .news-item:last-child {
    border-bottom: none;
  }

  .news-meta {
    width: auto;
    font-size: calc(12 * var(--u)) !important;
  }

  .section-news {
    z-index: 11;
  }

  .news-meta,
  .news-text {
    font-size: calc(13 * var(--u));
    line-height: 1.5;
    letter-spacing: 0;
  }

  /* ---------- What's ---------- */
  .a-photo,
  .a-dot,
  .c-photo,
  .c-dot {
    display: block;
  }

  .about-stage {
    padding: calc(50 * var(--u)) 0 calc(39.5 * var(--u));
    border-bottom-width: 0.5px;
  }

  .about-badge {
    width: calc(116 * var(--u));
    min-width: 0;
    height: calc(39 * var(--u));
    min-height: 0;
    font-size: calc(32 * var(--u));
  }

  .about-title {
    margin-top: calc(16 * var(--u));
    font-size: calc(24 * var(--u));
  }

  .about-text {
    margin-top: calc(32 * var(--u));
  }

  .about-text p {
    font-size: calc(13 * var(--u));
    line-height: 1.923;
    letter-spacing: 0.015em;
  }

  .about-text p+p {
    margin-top: calc(25 * var(--u));
  }

  .a-photo-shooting {
    top: calc(2.5 * var(--u));
    left: calc(292.5 * var(--u));
    width: calc(82.5 * var(--u));
    height: calc(94.5 * var(--u));
  }

  .a-photo-pool {
    top: calc(150.5 * var(--u));
    left: 0;
    width: calc(68.5 * var(--u));
    height: calc(93 * var(--u));
  }

  .a-photo-boy {
    top: calc(648 * var(--u));
    left: calc(317 * var(--u));
    width: calc(68 * var(--u));
    height: calc(68 * var(--u));
  }

  .a-dot-pink {
    top: calc(58 * var(--u));
    left: calc(56 * var(--u));
    width: calc(29 * var(--u));
    height: calc(29 * var(--u));
  }

  .a-dot-orange {
    top: calc(790 * var(--u));
    left: calc(349 * var(--u));
    width: calc(32 * var(--u));
    height: calc(32 * var(--u));
  }

  /* ---------- Program / Map / Entry ---------- */
  .content-stage {
    padding: calc(39 * var(--u)) 0 calc(40 * var(--u));
  }

  .program-intro {
    font-size: calc(15 * var(--u));
    line-height: 2;
    letter-spacing: 0.065em;
  }

  .program-intro-white {
    margin-top: calc(10 * var(--u));
  }

  .content-card {
    width: calc(335 * var(--u));
    margin-top: calc(29 * var(--u));
    padding: calc(46.7 * var(--u)) 0 calc(51 * var(--u));
    border-radius: calc(75 * var(--u));
  }

  #program {
    z-index: 4;
    margin-top: calc(30.5 * var(--u));
    padding-bottom: calc(51 * var(--u));
  }

  .card-title-en {
    font-size: calc(32 * var(--u));
  }

  .card-title-jp {
    margin-top: calc(12.5 * var(--u));
    font-size: calc(14 * var(--u));
    letter-spacing: 0.25em;
  }

  .card-block {
    width: calc(272 * var(--u));
    margin-top: calc(15 * var(--u));
  }

  .card-head+.card-block {
    margin-top: calc(33.5 * var(--u));
  }

  .red-bar-heading {
    height: calc(35 * var(--u));
    min-height: 0;
    padding-left: 0.25em;
    font-size: calc(15 * var(--u));
    letter-spacing: 0.25em;
  }

  .dot-list {
    margin-top: calc(15 * var(--u));
    margin-right: calc(-5 * var(--u));
  }

  .dot-list li {
    padding-left: calc(16 * var(--u));
    font-size: calc(13 * var(--u));
    line-height: calc(20 * var(--u));
    letter-spacing: 0;
  }

  .dot-list li+li {
    margin-top: calc(5 * var(--u));
  }

  .dot-list li::before {
    top: calc(5.5 * var(--u));
    left: calc(1 * var(--u));
    width: calc(9 * var(--u));
    height: calc(9 * var(--u));
  }

  .venue {
    margin-top: calc(33.7 * var(--u));
  }

  .venue-name {
    font-size: calc(15 * var(--u));
    line-height: calc(25 * var(--u));
    letter-spacing: 0.04em;
  }

  .venue-address {
    margin-top: calc(9.75 * var(--u));
    font-size: calc(13 * var(--u));
    letter-spacing: 0;
  }

  .venue+.card-block {
    margin-top: calc(31.25 * var(--u));
  }

  .card-buttons {
    flex-direction: column;
    align-items: center;
    gap: calc(15.5 * var(--u));
    margin-top: calc(30 * var(--u));
  }

  .card-btn {
    width: calc(225 * var(--u));
    min-width: 0;
    height: calc(49.5 * var(--u));
    min-height: 0;
    border-width: 1px;
    font-size: calc(14 * var(--u));
    letter-spacing: 0.1em;
    padding-left: 0.1em;
    box-shadow: 0 calc(6 * var(--u)) 0 var(--shadow-color);
  }

  .card-btn-wide {
    width: calc(305 * var(--u));
    min-width: 0;
    font-size: calc(13 * var(--u));
    letter-spacing: 0.05em;
  }

  .c-photo-kinball,
  .c-dot-2,
  .c-dot-5 {
    display: none;
  }

  .c-photo-ball {
    top: calc(150 * var(--u));
    left: calc(-17.5 * var(--u));
    width: calc(103 * var(--u));
    height: calc(103 * var(--u));
  }

  .c-photo-throw {
    top: calc(1063 * var(--u));
    left: calc(258 * var(--u));
    width: calc(130 * var(--u));
    height: calc(130 * var(--u));
    z-index: 3;
  }

  .c-photo-run {
    top: calc(1812.3 * var(--u));
    left: 0;
    width: calc(141 * var(--u));
    height: calc(154 * var(--u));
  }

  .c-dot-1 {
    top: calc(118 * var(--u));
    left: calc(311 * var(--u));
    width: calc(47 * var(--u));
    height: calc(47 * var(--u));
  }

  .c-dot-3 {
    top: calc(938.85 * var(--u));
    left: calc(319.7 * var(--u));
    width: calc(45.8 * var(--u));
    height: calc(45.8 * var(--u));
  }

  .c-dot-4 {
    top: calc(1096 * var(--u));
    left: calc(-8 * var(--u));
    width: calc(93 * var(--u));
    height: calc(93 * var(--u));
  }

  .c-dot-6 {
    top: calc(1568 * var(--u));
    left: calc(361 * var(--u));
    width: calc(45 * var(--u));
    height: calc(45 * var(--u));
  }

  .c-dot-7 {
    top: calc(2213.9 * var(--u));
    left: calc(295.3 * var(--u));
    width: calc(92.3 * var(--u));
    height: calc(92.3 * var(--u));
  }

  /* ---------- Precautions / Contact / Sponsors ---------- */
  .section-precautions {
    border-radius: calc(75 * 100vw / 375);
  }

  .precautions-stage {
    padding: calc(46.5 * var(--u)) 0 calc(49.5 * var(--u));
  }

  .bubble-3 {
    display: none;
  }

  .p-dot-orange {
    display: none;
    top: calc(-179.2 * var(--u));
    left: calc(11.5 * var(--u));
    width: calc(36.4 * var(--u));
    height: calc(36.4 * var(--u));
  }

  .precautions-title-jp {
    font-size: calc(16 * var(--u));
    letter-spacing: 0.08em;
  }

  .precautions-body {
    width: auto;
    margin: calc(30.75 * var(--u)) calc(20 * var(--u)) 0;
  }

  .precaution-item {
    max-width: none;
  }

  .precaution-item+.precaution-item {
    margin-top: calc(30.5 * var(--u));
  }

  .precaution-heading {
    padding-left: calc(15 * var(--u));
    font-size: calc(13 * var(--u));
    line-height: 1.5;
    letter-spacing: 0;
  }

  .precaution-heading::before {
    width: calc(10 * var(--u));
    height: calc(10 * var(--u));
  }

  .precaution-item p,
  .precaution-list {
    margin-top: calc(5 * var(--u));
    font-size: calc(13 * var(--u));
    line-height: calc(20 * var(--u));
    letter-spacing: 0;
  }

  .card-note {
    margin: calc(30 * var(--u)) calc(-5 * var(--u)) 0 0;
    font-size: calc(13 * var(--u));
    line-height: calc(20 * var(--u));
    letter-spacing: 0;
  }

  .contact-card {
    width: calc(335 * var(--u));
    margin-top: calc(30.25 * var(--u));
    padding: calc(40 * var(--u)) calc(32 * var(--u)) calc(38.5 * var(--u));
    border-radius: calc(75 * var(--u));
  }

  .contact-title {
    font-size: calc(24 * var(--u));
    line-height: 1.5;
    letter-spacing: 0.085em;
  }

  .contact-office {
    margin-top: calc(12 * var(--u));
    font-size: calc(16 * var(--u));
    letter-spacing: 0.12em;
  }

  .contact-grid {
    margin-right: calc(4 * var(--u));
    grid-template-columns: 1fr;
    gap: calc(10 * var(--u));
    margin-top: calc(28 * var(--u));
  }

  .contact-box {
    justify-content: center;
    height: calc(142.5 * var(--u));
    padding: 0;
    border-radius: calc(25 * var(--u));
  }

  .contact-icon {
    height: calc(21 * var(--u));
  }

  .contact-icon img {
    width: calc(var(--w) * var(--u) / 2);
  }

  .contact-label,
  .contact-value {
    font-size: calc(14 * var(--u));
    line-height: calc(20 * var(--u));
    letter-spacing: 0;
  }

  .contact-label {
    margin-top: calc(15 * var(--u));
  }

  .contact-value {
    margin-top: 0;
    letter-spacing: 0.03em;
  }

  .contact-small {
    position: relative;
    top: calc(4 * var(--u));
    font-size: calc(11 * var(--u));
    letter-spacing: 0.08em;
    line-height: calc(11 * var(--u));
  }

  .contact-note {
    margin: calc(15.5 * var(--u)) calc(-12 * var(--u)) 0 calc(-10.5 * var(--u));
    padding-left: calc(11.5 * var(--u));
    text-indent: calc(-11.5 * var(--u));
    font-size: calc(12 * var(--u));
    line-height: calc(20 * var(--u));
  }

  .sponsors {
    margin-top: calc(31 * var(--u));
  }

  .sponsors-title {
    font-size: calc(23.5 * var(--u));
    letter-spacing: 0.1em;
  }

  .sponsor-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: calc(9.5 * var(--u)) calc(5 * var(--u));
    width: calc(335 * var(--u));
    margin-top: calc(15.5 * var(--u));
  }

  .sponsor-grid-single {
    grid-template-columns: calc(165 * var(--u));
  }

  .sponsor-grid+.sponsors-title,
  .sponsor-grid-single+.sponsors-title,
  .supporters+.sponsors-title {
    margin-top: calc(30 * var(--u));
  }

  .sponsor-box {
    height: calc(123 * var(--u));
    border: 0.5px solid var(--main-color);
    border-radius: calc(24.5 * var(--u));
  }

  .sponsor-box img {
    width: calc(var(--w) * var(--u) * var(--sp-scale, 0.5));
    transform: translate(calc(var(--sp-x, 0) * var(--u)), calc(var(--sp-y, 0) * var(--u)));
  }

  .sponsor-name {
    margin: calc(10 * var(--u)) calc(-6 * var(--u)) 0;
    font-size: calc(13 * var(--u));
    line-height: calc(20 * var(--u));
    letter-spacing: 0.12em;
  }

  .supporters {
    margin-top: calc(13.5 * var(--u));
    font-size: calc(13 * var(--u));
    line-height: calc(20 * var(--u));
    letter-spacing: 0.09em;
  }

  /* ---------- Footer ---------- */
  .site-footer {
    padding: calc(48 * var(--u)) 0 0;
    margin-top: auto;
  }

  .footer-container {
    /* padding-bottom: calc(42 * var(--u)); */
  }

  .footer-links-wrap {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: calc(18 * var(--u));
    row-gap: calc(22 * var(--u));
    width: calc(324 * var(--u));
    max-width: calc(100% - calc(32 * var(--u)));
    margin: 0 auto;
    text-align: left;
    margin-bottom: 40px;
  }

  .footer-links {
    display: contents;
  }

  .footer-links li {
    padding: 0 0 calc(10 * var(--u)) 0;
    border-bottom: 1px solid #FFFFFF;
    display: flex;
    align-items: center;
  }

  .footer-links li+li::before {
    display: none;
  }

  .footer-links a,
  .footer-links .is-disabled {
    font-weight: 500;
    font-size: calc(14.5 * var(--u));
    line-height: calc(22 * var(--u));
    letter-spacing: 0.04em;
    white-space: nowrap;
    color: #FFFFFF;
  }

  .copyright {
    padding: calc(12 * var(--u)) calc(10 * var(--u));
    font-size: calc(9.5 * var(--u));
  }

  .back-to-top {
    bottom: 16px;
    right: 16px;
    width: 48px;
    height: 48px;
  }
}

/* ==========================================================================
   NAV: hover underline + current page
   ========================================================================== */
.nav-pill .nav-links .nav-item {
  text-decoration: underline;
  text-decoration-color: transparent;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.45em;
  transition: color 0.3s ease, text-decoration-color 0.3s ease, opacity 0.3s ease;
}

.nav-pill .nav-links .nav-item:hover,
.nav-pill .nav-links .nav-item.is-current {
  color: var(--main-color);
  text-decoration-color: currentColor;
}

.nav-pill .nav-links .nav-item.low-weight:hover,
.nav-pill .nav-links .nav-item.is-disabled:hover {
  color: var(--text-muted) !important;
  text-decoration-color: transparent !important;
}

@media (max-width: 767px) {
  .nav-pill .nav-menu .nav-links .nav-item:hover {
    color: #FFFFFF;
  }

  .nav-pill .nav-menu .nav-links .nav-item.is-current {
    color: var(--accent-yellow);
  }
}

/* ==========================================================================
   MICRO-INTERACTIONS & HOVER EFFECTS
   ========================================================================== */

.contact-box {
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}

.contact-box:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
}

.sponsor-box {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.sponsor-box:hover {
  transform: translateY(-3px) scale(1.02);
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.07);
}

.back-to-top {
  transition: opacity 0.4s cubic-bezier(0.16, 1, 0.3, 1), transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), background-color 0.3s ease;
}

@media (prefers-reduced-motion: reduce) {

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  .reveal-init {
    opacity: 1 !important;
    transform: none !important;
  }
}