/**
 * ========================================
 * Responsive CSS - ã‚¯ãƒªã‚¹ãƒžã‚¹ç‰¹è¨­LP
 * ========================================
 * 
 * ãƒ¢ãƒã‚¤ãƒ«ãƒ•ã‚¡ãƒ¼ã‚¹ãƒˆè¨­è¨ˆ
 * ãƒ–ãƒ¬ãƒ¼ã‚¯ãƒã‚¤ãƒ³ãƒˆ: 768px (ã‚¿ãƒ–ãƒ¬ãƒƒãƒˆ), 1024px (PC), 1440px (å¤§ç”»é¢)
 * 
 * @version 1.0.0
 */

/* ========================================
 * ã‚¿ãƒ–ãƒ¬ãƒƒãƒˆ (768pxä»¥ä¸Š)
 * ======================================== */

@media (min-width: 768px) {
  
  /* ----------------------------------------
   * åŸºæœ¬è¨­å®š
   * ---------------------------------------- */
  
  body {
    font-size: var(--font-size-md);
  }
  
  .container {
    padding-left: var(--container-padding-tablet);
    padding-right: var(--container-padding-tablet);
  }
  
  .section-padding {
    padding-top: var(--section-padding-tablet);
    padding-bottom: var(--section-padding-tablet);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãƒ˜ãƒƒãƒ€ãƒ¼
   * ---------------------------------------- */
  
  .section-subtitle {
    font-size: var(--font-size-base);
  }
  
  .section-title {
    font-size: var(--font-size-3xl);
  }
  
  .section-description {
    font-size: var(--font-size-lg);
  }
  
  /* ----------------------------------------
   * ãƒœã‚¿ãƒ³
   * ---------------------------------------- */
  
  .hero-cta {
    flex-direction: row;
  }
  
  .contact-buttons {
    flex-direction: row;
  }
  
  .reservation-actions {
    flex-direction: row;
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³1: ãƒ’ãƒ¼ãƒ­ãƒ¼
   * ---------------------------------------- */
  
  .hero-title {
    font-size: var(--font-size-5xl);
  }
  
  .hero-description {
    font-size: var(--font-size-lg);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³2: ã‚¯ãƒªã‚¹ãƒžã‚¹ã®é­…åŠ›
   * ---------------------------------------- */
  
  .attractions-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-8);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³3: ã‚¤ãƒ™ãƒ³ãƒˆã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«
   * ---------------------------------------- */
  
  .schedule-timeline {
    padding-left: var(--space-8);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³4: ã‚®ãƒ£ãƒ©ãƒªãƒ¼
   * ---------------------------------------- */
  
  .gallery-swiper {
    padding-left: var(--space-6);
    padding-right: var(--space-6);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³5: å†¬ã®ç‰¹åˆ¥ä½“é¨“
   * ---------------------------------------- */
  
  .experience-content {
    flex-direction: row;
    gap: var(--space-16);
  }
  
  .experience-image {
    width: 50%;
    flex-shrink: 0;
  }
  
  .experience-text {
    width: 50%;
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³6: å®¿æ³Šãƒ—ãƒ©ãƒ³
   * ---------------------------------------- */
  
  .plans-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-10);
  }
  
  .plan-card {
    padding: var(--space-10);
  }
  
  .plan-image {
    height: 260px;
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³7: ã‚¢ã‚¯ã‚»ã‚¹
   * ---------------------------------------- */
  
  .access-content {
    flex-direction: row;
    align-items: flex-start;
  }
  
  .access-map {
    width: 50%;
    flex-shrink: 0;
  }
  
  .access-info {
    width: 50%;
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³9: äºˆç´„CTA
   * ---------------------------------------- */
  
  .reservation-title {
    font-size: var(--font-size-4xl);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³10: ãƒ•ãƒƒã‚¿ãƒ¼
   * ---------------------------------------- */
  
  .footer-main {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-12);
  }
  
  .footer-brand {
    grid-column: 1 / -1;
  }
  
  .footer-bottom {
    flex-direction: row;
    justify-content: space-between;
  }
}

/* ========================================
 * ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—å° (1024pxä»¥ä¸Š)
 * ======================================== */

@media (min-width: 1024px) {
  
  /* ----------------------------------------
   * åŸºæœ¬è¨­å®š
   * ---------------------------------------- */
  
  .container {
    padding-left: var(--container-padding-desktop);
    padding-right: var(--container-padding-desktop);
  }
  
  .section-padding {
    padding-top: var(--section-padding-desktop);
    padding-bottom: var(--section-padding-desktop);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãƒ˜ãƒƒãƒ€ãƒ¼
   * ---------------------------------------- */
  
  .section-title {
    font-size: var(--font-size-4xl);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³1: ãƒ’ãƒ¼ãƒ­ãƒ¼
   * ---------------------------------------- */
  
  .hero-title {
    font-size: var(--font-size-6xl);
  }
  
  .hero-subtitle {
    font-size: var(--font-size-lg);
  }
  
  .hero-description {
    font-size: var(--font-size-xl);
    max-width: 730px;
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³2: ã‚¯ãƒªã‚¹ãƒžã‚¹ã®é­…åŠ›
   * ---------------------------------------- */
  
  .attractions-grid {
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-8);
  }
  
  .attraction-card {
    padding: var(--space-10);
  }
  
  .attraction-icon {
    width: 100px;
    height: 100px;
    font-size: var(--font-size-4xl);
  }
  
  .attraction-title {
    font-size: var(--font-size-2xl);
  }
  
  .attraction-description {
    font-size: var(--font-size-md);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³3: ã‚¤ãƒ™ãƒ³ãƒˆã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«
   * ---------------------------------------- */
  
  .schedule-timeline {
    padding-left: var(--space-12);
  }
  
  .schedule-item {
    gap: var(--space-8);
  }
  
  .schedule-time {
    width: 140px;
  }
  
  .time-badge {
    width: 140px;
    height: 60px;
    font-size: var(--font-size-2xl);
  }
  
  .schedule-title {
    font-size: var(--font-size-xl);
  }
  
  .schedule-description {
    font-size: var(--font-size-md);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³4: ã‚®ãƒ£ãƒ©ãƒªãƒ¼
   * ---------------------------------------- */
  
  .gallery-swiper {
    padding-left: var(--space-12);
    padding-right: var(--space-12);
  }
  
  .gallery-title {
    font-size: var(--font-size-xl);
  }
  
  .gallery-description {
    font-size: var(--font-size-base);
  }
  
  /* Swiperã‚¹ãƒ©ã‚¤ãƒ‰è¡¨ç¤ºæ•°èª¿æ•´ */
  .gallery-swiper .swiper-slide {
    width: auto;
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³5: å†¬ã®ç‰¹åˆ¥ä½“é¨“
   * ---------------------------------------- */
  
  .experience-content {
    gap: var(--space-20);
  }
  
  .experience-image {
    width: 55%;
  }
  
  .experience-text {
    width: 45%;
  }
  
  .experience-description p {
    font-size: var(--font-size-md);
  }
  
  .experience-features .feature-item span {
    font-size: var(--font-size-md);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³6: å®¿æ³Šãƒ—ãƒ©ãƒ³
   * ---------------------------------------- */
  
  .plan-name {
    font-size: var(--font-size-2xl);
  }
  
  .plan-subtitle {
    font-size: var(--font-size-md);
  }
  
  .price-value {
    font-size: var(--font-size-5xl);
  }
  
  .price-unit {
    font-size: var(--font-size-md);
  }
  
  .plan-features .feature-item span {
    font-size: var(--font-size-md);
  }
  
  .plan-image {
    height: 280px;
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³7: ã‚¢ã‚¯ã‚»ã‚¹
   * ---------------------------------------- */
  
  .access-map {
    width: 55%;
  }
  
  .access-info {
    width: 45%;
  }
  
  .info-title {
    font-size: var(--font-size-xl);
  }
  
  .info-text {
    font-size: var(--font-size-md);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³8: FAQ
   * ---------------------------------------- */
  
  .question-text {
    font-size: var(--font-size-md);
  }
  
  .faq-answer p {
    font-size: var(--font-size-md);
  }
  
  .contact-text {
    font-size: var(--font-size-xl);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³9: äºˆç´„CTA
   * ---------------------------------------- */
  
  .reservation-title {
    font-size: var(--font-size-5xl);
  }
  
  .reservation-description {
    font-size: var(--font-size-xl);
  }
  
  .reservation-actions {
    max-width: 800px;
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³10: ãƒ•ãƒƒã‚¿ãƒ¼
   * ---------------------------------------- */
  
  .footer-main {
    grid-template-columns: 2fr 1fr 1fr 1.5fr;
    gap: var(--space-16);
  }
  
  .footer-brand {
    grid-column: 1 / 2;
  }
  
  .footer-logo {
    font-size: var(--font-size-3xl);
  }
  
  .footer-description {
    font-size: var(--font-size-md);
  }
  
  .footer-nav-title {
    font-size: var(--font-size-xl);
  }
  
  .footer-nav-list a {
    font-size: var(--font-size-md);
  }
  
  .contact-item {
    font-size: var(--font-size-md);
  }
}

/* ========================================
 * å¤§ç”»é¢ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ— (1440pxä»¥ä¸Š)
 * ======================================== */

@media (min-width: 1440px) {
  
  /* ----------------------------------------
   * åŸºæœ¬è¨­å®š
   * ---------------------------------------- */
  
  .section-header {
    margin-bottom: var(--space-16);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³1: ãƒ’ãƒ¼ãƒ­ãƒ¼
   * ---------------------------------------- */
  
  .hero-content {
    padding: var(--space-16) var(--space-8);
  }
  
  .hero-title {
    font-size: calc(var(--font-size-6xl) * 1.1);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³2: ã‚¯ãƒªã‚¹ãƒžã‚¹ã®é­…åŠ›
   * ---------------------------------------- */
  
  .attractions-grid {
    gap: var(--space-10);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³3: ã‚¤ãƒ™ãƒ³ãƒˆã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«
   * ---------------------------------------- */
  
  .schedule-content {
    padding: var(--space-8);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³5: å†¬ã®ç‰¹åˆ¥ä½“é¨“
   * ---------------------------------------- */
  
  .experience-content {
    gap: var(--space-24);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³6: å®¿æ³Šãƒ—ãƒ©ãƒ³
   * ---------------------------------------- */
  
  .plans-grid {
    gap: var(--space-12);
  }
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³10: ãƒ•ãƒƒã‚¿ãƒ¼
   * ---------------------------------------- */
  
  .footer-section {
    padding: var(--space-20) 0 var(--space-10);
  }
}

/* ========================================
 * è¶…å¤§ç”»é¢ (1920pxä»¥ä¸Š)
 * ======================================== */

@media (min-width: 1920px) {
  
  /* ----------------------------------------
   * ã‚»ã‚¯ã‚·ãƒ§ãƒ³1: ãƒ’ãƒ¼ãƒ­ãƒ¼
   * ---------------------------------------- */
  
  .hero-title {
    font-size: calc(var(--font-size-6xl) * 1.2);
  }
  
  .hero-description {
    max-width: 800px;
  }
}

/* ========================================
 * æ¨ªå‘ãã‚¹ãƒžãƒ¼ãƒˆãƒ•ã‚©ãƒ³å¯¾å¿œ
 * ======================================== */

@media (max-height: 500px) and (orientation: landscape) {
  
  /* ãƒ’ãƒ¼ãƒ­ãƒ¼ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®é«˜ã•èª¿æ•´ */
  .hero-section {
    min-height: 100vh;
    padding: var(--space-8) 0;
  }
  
  .hero-title {
    font-size: var(--font-size-3xl);
    margin-bottom: var(--space-4);
  }
  
  .hero-description {
    font-size: var(--font-size-base);
    margin-bottom: var(--space-4);
  }
  
  .hero-cta {
    gap: var(--space-3);
  }
  
  .scroll-indicator {
    display: none;
  }
}

/* ========================================
 * ãƒ—ãƒªãƒ³ãƒˆæœ€é©åŒ– (è¿½åŠ )
 * ======================================== */

@media print {
  
  /* ã‚»ã‚¯ã‚·ãƒ§ãƒ³ä½™ç™½èª¿æ•´ */
  .section-padding {
    padding-top: var(--space-8);
    padding-bottom: var(--space-8);
  }
  
  /* ãƒ’ãƒ¼ãƒ­ãƒ¼ã‚’1ãƒšãƒ¼ã‚¸ç›®ã«åŽã‚ã‚‹ */
  .hero-section {
    min-height: auto;
    padding: var(--space-12) 0;
    page-break-after: always;
  }
  
  .hero-title {
    font-size: var(--font-size-3xl);
  }
  
  /* ã‚°ãƒªãƒƒãƒ‰ã‚’ç¸¦ä¸¦ã³ã« */
  .attractions-grid,
  .plans-grid {
    grid-template-columns: 1fr;
  }
  
  /* ã‚«ãƒ¼ãƒ‰ã®ã‚·ãƒ£ãƒ‰ã‚¦ã‚’è»½ã */
  .attraction-card,
  .plan-card,
  .schedule-content {
    box-shadow: none;
    border: 1px solid var(--color-gray-300);
  }
  
  /* èƒŒæ™¯ç”»åƒã‚’éžè¡¨ç¤º */
  .hero-section {
    background-image: none;
    background-color: var(--color-navy);
  }
  
  /* ã‚¤ãƒ³ã‚¿ãƒ©ã‚¯ãƒ†ã‚£ãƒ–è¦ç´ ã‚’éžè¡¨ç¤º */
  .hero-cta,
  .plan-cta,
  .experience-cta,
  .reservation-section,
  .faq-contact {
    display: none;
  }
}

/* ========================================
 * ã‚¢ã‚¯ã‚»ã‚·ãƒ“ãƒªãƒ†ã‚£ - å¤§ããªãƒ†ã‚­ã‚¹ãƒˆè¨­å®š
 * ======================================== */

@media (prefers-reduced-motion: no-preference) {
  /* é€šå¸¸ã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³è¨­å®š */
  .attraction-card,
  .schedule-content,
  .plan-card {
    transition: var(--transition-all);
  }
}

/* ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒå¤§ããªãƒ†ã‚­ã‚¹ãƒˆã‚’å¥½ã‚€å ´åˆ */
@media (prefers-contrast: high) {
  /* ã‚³ãƒ³ãƒˆãƒ©ã‚¹ãƒˆå¼·åŒ– */
  .hero-overlay {
    background: linear-gradient(
      to bottom,
      rgba(30, 58, 95, 0.85) 0%,
      rgba(30, 58, 95, 0.7) 50%,
      rgba(30, 58, 95, 0.9) 100%
    );
  }
  
  .gallery-caption {
    background: linear-gradient(
      to top,
      rgba(30, 58, 95, 1) 0%,
      rgba(30, 58, 95, 0.9) 50%,
      rgba(30, 58, 95, 0) 100%
    );
  }
}

/* ========================================
 * ã‚«ã‚¹ã‚¿ãƒ ãƒ–ãƒ¬ãƒ¼ã‚¯ãƒã‚¤ãƒ³ãƒˆ - ã‚®ãƒ£ãƒ©ãƒªãƒ¼æœ€é©åŒ–
 * ======================================== */

/* 3ã‚«ãƒ©ãƒ è¡¨ç¤º (900pxä»¥ä¸Š) */
@media (min-width: 900px) {
  .swiper-slide {
    width: calc(33.333% - 20px);
  }
}

/* 4ã‚«ãƒ©ãƒ è¡¨ç¤º (1200pxä»¥ä¸Š) */
@media (min-width: 1200px) {
  .swiper-slide {
    width: calc(25% - 20px);
  }
}

/* ========================================
 * ã‚¿ãƒƒãƒãƒ‡ãƒã‚¤ã‚¹å¯¾å¿œ
 * ======================================== */

@media (hover: none) and (pointer: coarse) {
  /* ã‚¿ãƒƒãƒãƒ‡ãƒã‚¤ã‚¹ã§ãƒ›ãƒãƒ¼åŠ¹æžœã‚’è»½æ¸› */
  .attraction-card:hover,
  .plan-card:hover,
  .schedule-content:hover {
    transform: none;
  }
  
  /* ãƒœã‚¿ãƒ³ã®ã‚¿ãƒƒãƒ—ã‚¨ãƒªã‚¢æ‹¡å¤§ */
  .btn {
    min-height: 48px;
    padding: var(--space-4) var(--space-8);
  }
  
  /* FAQè³ªå•ã®ã‚¿ãƒƒãƒ—ã‚¨ãƒªã‚¢æ‹¡å¤§ */
  .faq-question {
    min-height: 60px;
  }
  
  /* ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ãƒˆãƒƒãƒ—ãƒœã‚¿ãƒ³ã‚’å¤§ãã */
  .scroll-to-top {
    width: 60px;
    height: 60px;
  }
}

/* ========================================
 * é«˜è§£åƒåº¦ãƒ‡ã‚£ã‚¹ãƒ—ãƒ¬ã‚¤å¯¾å¿œ
 * ======================================== */

@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
  /* é«˜è§£åƒåº¦ç”¨ã®ç”»åƒæœ€é©åŒ–æŒ‡ç¤ºã‚’HTMLã§è¡Œã† */
  /* ã“ã“ã§ã¯ãƒ•ã‚©ãƒ³ãƒˆã®ã‚¢ãƒ³ãƒã‚¨ã‚¤ãƒªã‚¢ã‚·ãƒ³ã‚°ã‚’æœ€é©åŒ– */
  body {
    -webkit-font-smoothing: subpixel-antialiased;
    -moz-osx-font-smoothing: auto;
  }
}

/* ========================================
 * ãƒ€ãƒ¼ã‚¯ãƒ¢ãƒ¼ãƒ‰å¯¾å¿œï¼ˆå°†æ¥ã®æ‹¡å¼µç”¨ï¼‰
 * ======================================== */

/*
@media (prefers-color-scheme: dark) {
  .attractions-section,
  .experience-section,
  .access-section {
    background-color: var(--color-navy-dark);
  }
  
  .attraction-card,
  .plan-card,
  .info-section {
    background-color: var(--color-navy);
    color: var(--color-white);
  }
}
*/

/* ========================================
 * æ¥µå°ãƒ‡ãƒã‚¤ã‚¹å¯¾å¿œ (320pxä»¥ä¸‹)
 * ======================================== */

@media (max-width: 320px) {
  /* æœ€å°ãƒ‡ãƒã‚¤ã‚¹ã§ã®ãƒ•ã‚©ãƒ³ãƒˆã‚µã‚¤ã‚ºèª¿æ•´ */
  .hero-title {
    font-size: var(--font-size-3xl);
  }
  
  .section-title {
    font-size: var(--font-size-xl);
  }
  
  .btn {
    font-size: var(--font-size-sm);
    padding: var(--space-2) var(--space-4);
  }
  
  .time-badge {
    width: 100px;
    height: 45px;
    font-size: var(--font-size-lg);
  }
  
  .schedule-time {
    width: 100px;
  }
}

/* ========================================
 * IE11å¯¾å¿œï¼ˆãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯ï¼‰
 * ======================================== */

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
  /* Gridã®ãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯ */
  .attractions-grid,
  .plans-grid {
    display: flex;
    flex-wrap: wrap;
  }
  
  .attraction-card,
  .plan-card {
    flex: 1 1 calc(50% - var(--space-4));
  }
  
  /* CSSå¤‰æ•°ãŒä½¿ãˆãªã„å ´åˆã®ãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯ */
  .btn--primary {
    background-color: #f4c430;
    color: #1e3a5f;
  }
  
  .btn--secondary {
    background-color: #d4845f;
    color: #ffffff;
  }
}
