/* ================================
   Variables
================================ */

/* ================================
   Font Families
================================ */
.darumadrop-one-regular {
  font-family: "Darumadrop One", sans-serif;
}

.kiwi-maru-regular {
  font-family: "Kiwi Maru", serif;
}

.mochiy-pop-one-regular {
  font-family: "Mochiy Pop One", sans-serif;
}

/* ================================
   Typography
================================ */
.hero-title {
  font-size: calc(0.5rem + 4.5vw);
  color: #000000 !important;
  line-height: 1.2;
  font-weight: 400;
  margin-bottom: 3rem !important;
}

@media (max-width: 768px) {
  .hero-title {
    font-size: 1.8rem;
  }
}

.hero-subtitle {
  font-size: 1.6rem;
  line-height: 1.3;
}

@media (max-width: 768px) {
  .hero-subtitle {
    font-size: 1.2rem;
  }
}

/* Section Titles */
.about-title,
.event-title,
.sponsors-title,
.partners-title {
  font-size: 3rem;
}

@media (max-width: 991.98px) {
  .about-title,
  .event-title,
  .sponsors-title,
  .partners-title {
    font-size: 2.5rem;
  }
}

@media (max-width: 767.98px) {
  .about-title,
  .event-title,
  .sponsors-title,
  .partners-title {
    font-size: 2.1rem;
  }
}

@media (max-width: 575.98px) {
  .about-title,
  .event-title,
  .sponsors-title,
  .partners-title {
    font-size: 1.85rem;
  }
}

@media (max-width: 575.98px) {
  .about-title {
    font-size: 1.5rem;
  }
}

/* ================================
   Utility
================================ */
.br-sp {
  display: none;
}

@media (max-width: 576px) {
  .br-sp {
    display: block;
  }
}

.text-dark {
  color: #000000 !important;
}

.text-primary {
  color: #00AEEF !important;
}

.bg-dark {
  background-color: #000000 !important;
}

/* ================================
   Marker Highlight
================================ */
.marker {
  display: inline;
  padding: 0.2em 0.3em;
  line-height: 2;
  background: linear-gradient(transparent 30%, rgba(255, 255, 255, 0.95) 30%);
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

/* ================================
   Hero / Header
================================ */
.hero-header,
.page-header {
  background: url(../img/main.webp) center/cover no-repeat;
}

/* ================================
   About Section
================================ */
.about {
  background: linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.5)), url(../img/bg-section-about.jpg) center/cover no-repeat;
}

@media (max-width: 576px) {
  .about {
    background: linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.5)), url(../img/bg-section-about-sp.jpg) center/cover no-repeat;
  }
}

/* ================================
   Media（追加）
================================ */
.media {
  padding: 60px 0;
}

.media-logo-only {
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.media-logo-only img {
  width: auto;
  height: auto;
  max-width: 120px;
  max-height: 60px;
  object-fit: contain;
  filter: grayscale(30%);
  transition: 0.3s;
}

.media-logo-only:hover img {
  filter: grayscale(0%);
  transform: scale(1.05);
}

.media-slider {
  overflow: hidden;
  padding-bottom: 10px;
}

.media-track {
  display: flex;
  gap: 20px;
}

.media-card {
  flex: 0 0 calc((100% - 40px) / 3);
  scroll-snap-align: start;
}

.media-link {
  font-size: 0.9rem;
  color: #00AEEF;
}

.media-catch {
  position: relative;
  display: inline-block;
  padding: 0 30px;
}

.media-article h5 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.media-article p {
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.media-swiper {
  padding-bottom: 40px;
}

@media (max-width: 992px) {
  .media-card {
    flex: 0 0 calc((100% - 20px) / 2);
  }
}

@media (max-width: 576px) {
  .media-card {
    flex: 0 0 100%;
  }
}

/* ================================
   Partners
================================ */
.partner-item {
  padding: 1.5rem;
  background: #ffffff;
  height: 100%;
}

.partner-logo {
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.partner-logo img {
  max-height: 100%;
  max-width: 100%;
}

/* ================================
   Events
================================ */
.events-item {
  display: flex;
  flex-direction: column;
}

.events-text {
  margin-top: auto;
}

/* ================================
   Service
================================ */
.service {
  background-color: #fff31a !important;
}

.service .service-item {
  pointer-events: none !important;
}

.service .service-item:hover {
  border: none !important;
}

.service .service-item:hover .service-content::after {
  background: transparent !important;
  width: 0 !important;
  opacity: 0 !important;
}

.service .service-item:hover .service-content-inner i,
.service .service-item:hover .service-content-inner p,
.service .service-item:hover .service-content-inner a.h4,
.service .service-item:hover .service-content-inner a.btn-primary {
  color: inherit !important;
  background: inherit !important;
}

/* ================================
   Contact
================================ */
.contact {
  background-color: #fff31a !important;
}

/* ================================
   Buttons / Navbar override
================================ */
.btn-primary,
.bg-primary {
  background-color: #fff31a !important;
}

.navbar .navbar-nav .nav-link:hover,
.navbar .navbar-nav .nav-link.active {
  color: #00AEEF;
}

.btn-dark {
  background-color: #000000 !important;
  border-color: #000000 !important;
  color: #ffffff !important;
}

.btn-dark:hover,
.btn-dark:focus,
.btn-dark:active {
  background-color: #000000 !important;
  border-color: #000000 !important;
  color: #ffffff !important;
}

/* ================================
   Floating Animation
================================ */
@keyframes floating-up {
  0% {
    transform: translateY(20px) scale(1);
    opacity: 0.9;
  }
  40% {
    transform: translateY(0) scale(1.02);
    opacity: 1;
  }
  100% {
    transform: translateY(-40px) scale(1);
    opacity: 0.2;
  }
}

.floating-spinner {
  width: 280px;
  animation: floating-up 5s ease-in-out infinite;
}

@media (max-width: 576px) {
  .floating-spinner {
    width: 160px;
  }
}

/* ================================
   Misc
================================ */
.arrow-up {
  background-color: #00AEEF !important;
}

.copyright a {
  color: #ffffff;
}

.video .btn-play::after {
  background: #ff0000 !important;
}