/* Global Styles & Variables */
:root {
  --primary-font: "Helvetica Neue", Arial, sans-serif;
  --heading-font: "Georgia", serif; /* Example, choose a modern sans-serif if preferred */

  --primary-text-color: #333;
  --secondary-text-color: #555;
  --light-text-color: #fff;
  --bg-color: #fff;
  --light-bg-color: #f8f9fa; /* Slightly off-white */
  --dark-bg-color: #343a40;
  --border-color: #dee2e6;

  --link-color: #007bff;
  --link-hover-color: #0056b3;

  /* Business Specific Colors */
  --sim-primary-color: #2980b9; /* Blue */
  --sim-secondary-color: #27ae60; /* Green */
  --sim-accent-color: #d4e6f1; /* Light Blue */

  --english-primary-color: #f39c12; /* Orange */
  --english-secondary-color: #f1c40f; /* Yellow */
  --english-accent-color: #fef9e7; /* Light Yellow */

  --karaoke-primary-color: #c0392b; /* Red */
  --karaoke-secondary-color: #8e44ad; /* Purple */
  --karaoke-accent-color: #f5eef8; /* Light Purple */

  /* Default section theme (can be overridden per page) */
  --section-theme-color: var(--link-color);
  --section-theme-accent: var(--light-bg-color);

  --navbar-height: 70px;
  --box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  --border-radius: 8px;
}

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

.container {
  width: 90%;
  max-width: 1140px;
  margin: 0 auto;
  padding: 0 15px;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: var(--heading-font);
  color: var(--primary-text-color);
  margin-bottom: 0.8em;
  line-height: 1.3;
  font-weight: 600;
}
h1 {
  font-size: 2.8em;
}
h2 {
  font-size: 2.2em;
}
h3 {
  font-size: 1.8em;
}
h4 {
  font-size: 1.4em;
}

p {
  margin-bottom: 1em;
  color: var(--secondary-text-color);
}

a {
  color: var(--link-color);
  text-decoration: none;
  transition: color 0.3s ease;
}
a:hover {
  color: var(--link-hover-color);
  text-decoration: underline;
}

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

ul {
  list-style: none;
}

.section-padding {
  padding: 80px 0;
}

.light-bg {
  background-color: var(--light-bg-color);
}

.dark-bg {
  background-color: var(--dark-bg-color);
  color: var(--light-text-color);
}
.dark-bg h1,
.dark-bg h2,
.dark-bg h3,
.dark-bg h4,
.dark-bg p {
  color: var(--light-text-color);
}

.text-center {
  text-align: center;
}

.page-title {
  text-align: center;
  margin-bottom: 40px;
  font-size: 2.8em;
  color: var(--section-theme-color); /* Use section theme color */
}
.service-page .page-title {
  color: var(--light-text-color); /* For hero sections with dark backgrounds */
}

.section-title {
  text-align: center;
  margin-bottom: 50px;
  font-size: 2.2em;
  position: relative;
  padding-bottom: 15px;
}
.section-title::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 70px;
  height: 4px;
  background-color: var(--section-theme-color); /* Use section theme color */
  border-radius: 2px;
}

/* Buttons */
.btn {
  display: inline-block;
  padding: 12px 28px;
  font-size: 1em;
  font-weight: 600;
  text-align: center;
  text-decoration: none;
  border-radius: var(--border-radius);
  cursor: pointer;
  transition: all 0.3s ease;
  border: 2px solid transparent;
  letter-spacing: 0.5px;
}
.btn-primary {
  background-color: var(--section-theme-color);
  color: var(--light-text-color);
  border-color: var(--section-theme-color);
}
.btn-primary:hover {
  background-color: darken(var(--section-theme-color), 10%);
  border-color: darken(var(--section-theme-color), 10%);
  color: var(--light-text-color);
  transform: translateY(-2px);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}
.btn-secondary {
  background-color: var(--secondary-text-color);
  color: var(--light-text-color);
  border-color: var(--secondary-text-color);
}
.btn-secondary:hover {
  background-color: darken(var(--secondary-text-color), 10%);
  border-color: darken(var(--secondary-text-color), 10%);
  color: var(--light-text-color);
}
.btn-outline {
  background-color: transparent;
  color: var(--section-theme-color);
  border-color: var(--section-theme-color);
}
.btn-outline:hover {
  background-color: var(--section-theme-color);
  color: var(--light-text-color);
}
.btn-light {
  background-color: var(--light-text-color);
  color: var(--section-theme-color);
  border-color: var(--light-text-color);
}
.btn-light:hover {
  background-color: var(--bg-color);
  border-color: var(--bg-color);
  color: var(--section-theme-color);
}
.btn-outline-light {
  background-color: transparent;
  color: var(--light-text-color);
  border-color: var(--light-text-color);
}
.btn-outline-light:hover {
  background-color: var(--light-text-color);
  color: var(--section-theme-color);
}
.btn-large {
  padding: 15px 35px;
  font-size: 1.1em;
}

/* Loader */
#loader {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: var(--bg-color);
  z-index: 9999;
  display: flex;
  justify-content: center;
  align-items: center;
  transition: opacity 0.5s ease, visibility 0.5s ease;
}
#loader.hidden {
  opacity: 0;
  visibility: hidden;
}
.spinner {
  width: 50px;
  height: 50px;
  border: 5px solid var(--light-bg-color);
  border-top-color: var(--section-theme-color);
  border-radius: 50%;
  animation: spin 1s linear infinite;
}
@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

/* Header & Navbar */
.navbar {
  background-color: var(--bg-color);
  height: var(--navbar-height);
  display: flex;
  align-items: center;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 1000;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
  transition: background-color 0.3s ease, box-shadow 0.3s ease;
}
.navbar.scrolled {
  background-color: rgba(255, 255, 255, 0.95);
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
}
.navbar .container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
}
.nav-logo {
  font-size: 1.8em;
  font-weight: bold;
  color: var(--primary-text-color);
  text-decoration: none;
}
.nav-menu {
  display: flex;
  align-items: center;
}
.nav-item {
  margin-left: 25px;
  position: relative; /* For dropdown */
}
.nav-link {
  color: var(--primary-text-color);
  text-decoration: none;
  font-weight: 500;
  padding: 10px 0;
  position: relative;
  transition: color 0.3s ease;
}
.nav-link::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 2px;
  background-color: var(--section-theme-color);
  transition: width 0.3s ease;
}
.nav-link:hover::after,
.nav-link.current::after {
  width: 100%;
}
.nav-link:hover,
.nav-link.current {
  color: var(--section-theme-color);
}

/* Dropdown Menu */
.dropdown .dropdown-icon {
  font-size: 0.7em;
  margin-left: 5px;
}
.dropdown-menu {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  background-color: var(--bg-color);
  box-shadow: var(--box-shadow);
  border-radius: 0 0 var(--border-radius) var(--border-radius);
  padding: 10px 0;
  min-width: 200px;
  z-index: 1001;
}
.dropdown:hover .dropdown-menu {
  display: block;
}
.dropdown-menu li {
  margin-left: 0;
}
.dropdown-menu li a {
  display: block;
  padding: 10px 20px;
  color: var(--primary-text-color);
  font-weight: normal;
}
.dropdown-menu li a:hover {
  background-color: var(--light-bg-color);
  color: var(--section-theme-color);
}
.dropdown-menu li a::after {
  /* Remove underline from main nav */
  display: none;
}
.current-service {
  font-weight: bold;
  color: var(--section-theme-color) !important;
}

.hamburger {
  display: none;
  cursor: pointer;
}
.hamburger .bar {
  display: block;
  width: 25px;
  height: 3px;
  margin: 5px auto;
  background-color: var(--primary-text-color);
  transition: all 0.3s ease-in-out;
}

/* Main Content Area */
main {
  padding-top: var(--navbar-height); /* Offset for fixed navbar */
}
.page-content {
  /* For generic content pages */
  min-height: calc(
    100vh - var(--navbar-height) - 150px
  ); /* 150px approx footer height */
}

/* Hero Section */
.hero-section {
  height: calc(100vh - var(--navbar-height));
  min-height: 500px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  position: relative;
  overflow: hidden; /* For parallax */
  color: var(--light-text-color);
}
.hero-background {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
}
.hero-background img.parallax-bg {
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* Parallax effect will be handled by JS if more complex, or simple CSS */
}
.hero-section::before {
  /* Overlay for text readability */
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  z-index: 0;
}
.hero-content {
  position: relative; /* Above overlay */
  z-index: 1;
}
.hero-content h1 {
  font-size: 3.5em;
  margin-bottom: 0.5em;
  color: var(--light-text-color);
  font-weight: 700;
}
.hero-content p {
  font-size: 1.3em;
  margin-bottom: 1.5em;
  max-width: 700px;
  margin-left: auto;
  margin-right: auto;
  color: rgba(255, 255, 255, 0.9);
}
.hero-content .btn-primary {
  background-color: var(--light-text-color);
  color: var(--primary-text-color);
  border-color: var(--light-text-color);
  padding: 15px 35px;
  font-size: 1.1em;
}
.hero-content .btn-primary:hover {
  background-color: rgba(255, 255, 255, 0.85);
  color: var(--primary-text-color);
}

/* Business Overview Section */
.business-overview-section .business-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 30px;
  margin-top: 40px;
}
.business-card {
  background-color: var(--bg-color);
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  padding: 25px;
  text-align: center;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  border-top: 5px solid var(--accent-color, var(--border-color)); /* Use accent color from inline style */
}
.business-card:hover {
  transform: translateY(-10px);
  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.12);
}
.business-card img {
  width: 100%;
  height: 200px;
  object-fit: cover;
  border-radius: var(--border-radius) var(--border-radius) 0 0;
  margin-bottom: 20px;
}
.business-card h3 {
  margin-bottom: 10px;
  font-size: 1.5em;
  color: var(--accent-color, var(--primary-text-color));
}
.business-card p {
  font-size: 0.95em;
  margin-bottom: 20px;
}
.business-card .btn-secondary {
  background-color: var(--accent-color, var(--secondary-text-color));
  border-color: var(--accent-color, var(--secondary-text-color));
  color: var(--light-text-color);
}
.business-card .btn-secondary:hover {
  background-color: darken(
    var(--accent-color, var(--secondary-text-color)),
    10%
  );
  border-color: darken(var(--accent-color, var(--secondary-text-color)), 10%);
}

/* News Section */
.news-item {
  background: var(--bg-color);
  padding: 20px;
  margin-bottom: 20px;
  border-radius: var(--border-radius);
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05);
  transition: box-shadow 0.3s ease;
}
.news-item:hover {
  box-shadow: var(--box-shadow);
}
.news-item h4 a {
  color: var(--primary-text-color);
  font-size: 1.3em;
}
.news-item h4 a:hover {
  color: var(--section-theme-color);
}
.news-date {
  font-size: 0.85em;
  color: #777;
  margin-bottom: 5px;
}

/* CTA Section */
.cta-section {
  background-color: var(--section-theme-color); /* Default theme color */
  color: var(--light-text-color);
}
.cta-section.theme-bg {
  /* For service pages with specific theme */
  background-color: var(--section-theme-color);
}
.cta-section h2 {
  color: var(--light-text-color);
  font-size: 2.5em;
}
.cta-section p {
  color: rgba(255, 255, 255, 0.9);
  font-size: 1.1em;
  margin-bottom: 30px;
}

/* Footer */
footer {
  background-color: var(--dark-bg-color);
  color: rgba(255, 255, 255, 0.7);
  padding: 50px 0 20px;
}
.footer-content {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 30px;
  margin-bottom: 30px;
}
.footer-col h4 {
  color: var(--light-text-color);
  margin-bottom: 15px;
  font-size: 1.2em;
}
.footer-col p,
.footer-col ul li a {
  color: rgba(255, 255, 255, 0.7);
  font-size: 0.95em;
  margin-bottom: 8px;
}
.footer-col ul li a:hover {
  color: var(--light-text-color);
  text-decoration: underline;
}
.social-links {
  display: flex;
}
.social-links li {
  margin-right: 15px;
}
.social-links img {
  width: 24px;
  height: 24px;
  transition: opacity 0.3s ease;
}
.social-links img:hover {
  opacity: 0.8;
}
.footer-bottom {
  text-align: center;
  padding-top: 20px;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  font-size: 0.9em;
}

/* About Page Specific */
.company-info-grid {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 40px;
  align-items: center;
}
.company-info-grid .info-image img {
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
}

/* CEO Message Page Specific */
.ceo-message-flex {
  display: flex;
  gap: 40px;
  align-items: flex-start;
}
.ceo-photo {
  flex-basis: 300px;
  text-align: center;
}
.ceo-photo img {
  border-radius: 50%;
  margin-bottom: 15px;
  width: 200px;
  height: 200px;
  object-fit: cover;
  box-shadow: var(--box-shadow);
}
.ceo-photo h3 {
  font-size: 1.5em;
  margin-bottom: 5px;
}
.ceo-text {
  flex: 1;
}
.ceo-text h2 {
  margin-bottom: 20px;
  color: var(--section-theme-color);
}

/* Service Page General Styles */
.service-hero {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  color: var(--light-text-color);
}
.service-hero .page-title {
  color: var(--light-text-color);
  margin-bottom: 20px;
}
.service-hero p {
  font-size: 1.1em;
  max-width: 800px;
  margin: 0 auto;
  color: rgba(255, 255, 255, 0.9);
}
.content-block {
  margin-bottom: 30px;
}
.content-block h2.section-title {
  /* For inline section titles */
  text-align: left;
  font-size: 1.8em;
  margin-bottom: 15px;
}
.content-block h2.section-title::after {
  left: 0;
  transform: translateX(0);
  width: 50px;
}

/* Mobile Service Page */
.mobile-service-page .plan-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 30px;
  margin-top: 30px;
}
.plan-card {
  background: var(--bg-color);
  padding: 30px;
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  text-align: center;
  border-top: 5px solid var(--sim-primary-color);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.plan-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
}
.plan-card h3 {
  color: var(--sim-primary-color);
  font-size: 1.6em;
  margin-bottom: 15px;
}
.plan-card .price {
  font-size: 2em;
  font-weight: bold;
  color: var(--primary-text-color);
  margin-bottom: 10px;
}
.plan-card .tax {
  font-size: 0.7em;
  font-weight: normal;
}
.plan-card ul {
  margin: 20px 0;
  text-align: left;
  padding-left: 20px;
}
.plan-card ul li {
  margin-bottom: 8px;
  list-style: disc;
  color: var(--secondary-text-color);
}
.plan-card .btn {
  margin-top: 15px;
  background-color: var(--sim-secondary-color);
  border-color: var(--sim-secondary-color);
}
.plan-card .btn:hover {
  background-color: darken(var(--sim-secondary-color), 10%);
  border-color: darken(var(--sim-secondary-color), 10%);
}
.mobile-service-page .cta-section .btn-light {
  background-color: var(--light-text-color);
  color: var(--sim-primary-color);
}

/* English School Page */
.english-school-page .course-cards {
  display: grid;
  /* Default to 1 column for smaller screens (mobile-first) */
  grid-template-columns: 1fr;
  gap: 30px;
}

/* For screens 768px and wider (tablets and desktops), display 2 columns */
@media (min-width: 768px) {
  .english-school-page .course-cards {
    grid-template-columns: repeat(2, 1fr);
  }
}
.course-card:hover {
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);
}
.course-card img {
  width: 100%;
  height: 200px;
  object-fit: cover;
}
.course-card h3 {
  padding: 20px 20px 0;
  color: var(--english-primary-color);
  font-size: 1.5em;
}
.course-card .price {
  padding: 0 20px;
  font-size: 1.3em;
  font-weight: bold;
  color: var(--primary-text-color);
}
.course-card > p {
  /* Short description */
  padding: 0 20px 10px;
  font-size: 0.95em;
}
.course-card .btn-secondary {
  margin: 0 20px 20px;
  background-color: var(--english-secondary-color);
  border-color: var(--english-secondary-color);
}
.course-card .btn-secondary:hover {
  background-color: darken(var(--english-secondary-color), 10%);
  border-color: darken(var(--english-secondary-color), 10%);
}
.accordion-content {
  padding: 0 20px 20px;
  background-color: var(--english-accent-color);
  display: none; /* Hidden by default */
}
.accordion-content.active {
  display: block;
}

.instructor-profiles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 30px;
  margin-top: 30px;
}
.instructor-profile {
  text-align: center;
}
.instructor-profile img {
  width: 150px;
  height: 150px;
  border-radius: 50%;
  object-fit: cover;
  margin: 0 auto 15px;
  box-shadow: var(--box-shadow);
}
.instructor-profile h4 {
  color: var(--english-primary-color);
  font-size: 1.3em;
}

.schedule-tabs {
  margin-bottom: 20px;
  text-align: center;
}
.tab-link {
  background-color: var(--light-bg-color);
  border: none;
  padding: 10px 20px;
  cursor: pointer;
  margin: 0 5px;
  border-radius: var(--border-radius) var(--border-radius) 0 0;
  transition: background-color 0.3s ease;
  font-weight: 500;
}
.tab-link.active {
  background-color: var(--english-primary-color);
  color: var(--light-text-color);
}
.tab-content {
  display: none;
  padding: 20px;
  border: 1px solid var(--border-color);
  border-top: none;
  border-radius: 0 0 var(--border-radius) var(--border-radius);
}
.tab-content.active {
  display: block;
}
.schedule-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 10px;
}
.schedule-table th,
.schedule-table td {
  border: 1px solid var(--border-color);
  padding: 12px;
  text-align: left;
}
.schedule-table th {
  background-color: var(--english-accent-color);
  font-weight: 600;
}
.schedule-table td {
  font-size: 0.95em;
}
.note {
  font-size: 0.9em;
  color: #777;
  margin-top: 15px;
}
.english-school-page .cta-section .btn-light {
  background-color: var(--light-text-color);
  color: var(--english-primary-color);
}

/* Karaoke & Izakaya Page */
.karaoke-izakaya-page .gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 20px;
  margin-top: 30px;
}
.gallery-item img {
  width: 100%;
  height: 250px;
  object-fit: cover;
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  transition: transform 0.3s ease;
}
.gallery-item img:hover {
  transform: scale(1.05);
}
#banquets-parties ul {
  list-style: disc;
  padding-left: 20px;
  margin-top: 10px;
}
#banquets-parties ul li {
  margin-bottom: 8px;
}
.karaoke-izakaya-page .cta-section .btn-light {
  background-color: var(--light-text-color);
  color: var(--karaoke-primary-color);
}
.karaoke-izakaya-page .cta-section .btn-outline-light {
  border-color: var(--light-text-color);
  color: var(--light-text-color);
}
.karaoke-izakaya-page .cta-section .btn-outline-light:hover {
  background-color: var(--light-text-color);
  color: var(--karaoke-primary-color);
}

/* Contact Page */
.contact-form {
  max-width: 700px;
  margin: 30px auto 0;
  background: var(--bg-color);
  padding: 30px;
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
}
.form-group {
  margin-bottom: 20px;
}
.form-group label {
  display: block;
  margin-bottom: 8px;
  font-weight: 600;
  color: var(--primary-text-color);
}
.form-group .required {
  color: var(--karaoke-primary-color); /* Red for asterisk */
  margin-left: 2px;
}
.form-group input[type="text"],
.form-group input[type="email"],
.form-group input[type="tel"],
.form-group textarea {
  width: 100%;
  padding: 12px;
  border: 1px solid var(--border-color);
  border-radius: var(--border-radius);
  font-size: 1em;
  font-family: var(--primary-font);
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.form-group input[type="text"]:focus,
.form-group input[type="email"]:focus,
.form-group input[type="tel"]:focus,
.form-group textarea:focus {
  outline: none;
  border-color: var(--section-theme-color);
  box-shadow: 0 0 0 0.2rem
    rgba(var(--section-theme-color-rgb, 0, 123, 255), 0.25); /* Needs RGB version of theme color */
}
.form-group textarea {
  resize: vertical;
  min-height: 120px;
}
.form-message {
  margin-top: 15px;
  text-align: center;
  font-weight: bold;
}
.contact-details .contact-info-blocks {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 30px;
  margin-top: 30px;
}
.contact-block {
  background: var(--bg-color);
  padding: 25px;
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  text-align: center;
}
.contact-icon {
  width: 64px;
  height: 64px;
  margin-bottom: 15px;
  border-radius: 50%;
  padding: 10px; /* If image is just text, this helps center */
}
.contact-block h3 {
  color: var(--section-theme-color);
  margin-bottom: 10px;
}

/* Animation Classes (for JS scroll trigger) */
.animate-on-scroll {
  opacity: 0;
  transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}
.animate-on-scroll.fade-in {
  opacity: 1;
}
.animate-on-scroll.fade-in-up {
  transform: translateY(50px);
}
.animate-on-scroll.fade-in-up.visible {
  opacity: 1;
  transform: translateY(0);
}
.animate-on-scroll.slide-in-left {
  transform: translateX(-100px);
}
.animate-on-scroll.slide-in-left.visible {
  opacity: 1;
  transform: translateX(0);
}
.animate-on-scroll.slide-in-right {
  transform: translateX(100px);
}
.animate-on-scroll.slide-in-right.visible {
  opacity: 1;
  transform: translateX(0);
}
.animate-on-scroll.zoom-in {
  transform: scale(0.8);
}
.animate-on-scroll.zoom-in.visible {
  opacity: 1;
  transform: scale(1);
}

/* Responsive Design */
@media (max-width: 992px) {
  .company-info-grid {
    grid-template-columns: 1fr;
  }
  .company-info-grid .info-image {
    order: -1; /* Image on top on smaller screens */
    margin-bottom: 30px;
  }
  .ceo-message-flex {
    flex-direction: column;
    align-items: center;
  }
  .ceo-photo {
    margin-bottom: 30px;
  }
}

@media (max-width: 768px) {
  h1 {
    font-size: 2.2em;
  }
  h2 {
    font-size: 1.8em;
  }
  .hero-content h1 {
    font-size: 2.5em;
  }
  .hero-content p {
    font-size: 1.1em;
  }

  .nav-menu {
    position: fixed;
    left: -100%; /* Hidden by default */
    top: var(--navbar-height);
    flex-direction: column;
    background-color: var(--bg-color);
    width: 100%;
    height: calc(100vh - var(--navbar-height));
    text-align: center;
    transition: 0.3s;
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
    overflow-y: auto;
    padding-top: 20px;
  }
  .nav-menu.active {
    left: 0;
  }
  .nav-item {
    margin: 20px 0;
  }
  .nav-link {
    font-size: 1.2em;
  }
  .dropdown:hover .dropdown-menu {
    /* Click to open on mobile might be better */
    display: none; /* Default behavior, JS will handle toggle */
  }
  .dropdown-menu {
    position: static; /* Unset absolute positioning */
    box-shadow: none;
    border-radius: 0;
    background-color: var(--light-bg-color); /* Slight differentiation */
    width: 100%;
    padding: 10px 0;
    margin-top: 10px;
    display: none; /* Hidden by default, JS toggles */
  }
  .dropdown-menu.active {
    display: block;
  }
  .dropdown-menu li a {
    padding: 12px 20px;
  }

  .hamburger {
    display: block;
  }
  .hamburger.active .bar:nth-child(2) {
    opacity: 0;
  }
  .hamburger.active .bar:nth-child(1) {
    transform: translateY(8px) rotate(45deg);
  }
  .hamburger.active .bar:nth-child(3) {
    transform: translateY(-8px) rotate(-45deg);
  }

  .footer-content {
    grid-template-columns: 1fr;
    text-align: center;
  }
  .social-links {
    justify-content: center;
  }
}

@media (max-width: 576px) {
  .section-padding {
    padding: 60px 0;
  }
  .plan-cards,
  .course-cards,
  .instructor-profiles,
  .gallery,
  .contact-info-blocks {
    grid-template-columns: 1fr; /* Stack cards */
  }
  .hero-content h1 {
    font-size: 2em;
  }
  .hero-content p {
    font-size: 1em;
  }
  .page-title {
    font-size: 2em;
  }
  .section-title {
    font-size: 1.8em;
  }
}

/* ... (your existing CSS) ... */

/* Contact Page - Enhanced Contact Info Section */
.contact-main-info {
  background-color: var(--light-bg-color);
  padding: 30px;
  border-radius: var(--border-radius);
  margin-bottom: 40px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}

.contact-details-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 25px;
}

.contact-detail-item {
  display: flex;
  align-items: flex-start;
  padding: 15px;
  background-color: var(--bg-color);
  border-radius: var(--border-radius);
  border: 1px solid var(--border-color);
}

.contact-icon-small {
  width: 40px; /* Adjusted size */
  height: 40px;
  margin-right: 15px;
  flex-shrink: 0;
  border-radius: 50%; /* Make icons circular */
  object-fit: cover; /* If using actual image icons */
  padding: 8px; /* If using placeholder text icons */
  background-color: var(--section-theme-color); /* Default, can be overridden */
}
/* Specific icon background colors if needed, or use the placeholder's color */
.contact-detail-item img[alt*="住所"] {
  background-color: #007bff;
}
.contact-detail-item img[alt*="電話"] {
  background-color: #28a745;
}
.contact-detail-item img[alt*="メール"] {
  background-color: #ffc107;
}
.contact-detail-item img[alt*="SIM"] {
  background-color: #17a2b8;
}
.contact-detail-item img[alt*="英語"] {
  background-color: #fd7e14;
}
.contact-detail-item img[alt*="カラオケ"] {
  background-color: #dc3545;
}

.contact-detail-item h4 {
  font-size: 1.15em;
  color: var(--primary-text-color);
  margin-bottom: 5px;
}

.contact-detail-item p {
  font-size: 0.95em;
  color: var(--secondary-text-color);
  margin-bottom: 3px;
  line-height: 1.5;
}
.contact-detail-item p a {
  color: var(--link-color);
}
.contact-detail-item p a:hover {
  color: var(--link-hover-color);
}

/* Contact Form - Select element styling */
.form-group select {
  width: 100%;
  padding: 12px;
  border: 1px solid var(--border-color);
  border-radius: var(--border-radius);
  font-size: 1em;
  font-family: var(--primary-font);
  background-color: white; /* Ensure consistent background */
  appearance: none; /* Remove default system appearance */
  -webkit-appearance: none;
  -moz-appearance: none;
  background-image: url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007bff%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 12px auto;
  cursor: pointer;
}
.form-group select:focus {
  outline: none;
  border-color: var(--section-theme-color);
  box-shadow: 0 0 0 0.2rem
    rgba(var(--section-theme-color-rgb, 0, 123, 255), 0.25);
}

/* Responsive adjustments for contact details */
@media (max-width: 768px) {
  .contact-details-grid {
    grid-template-columns: 1fr; /* Stack items on smaller screens */
  }
  .contact-main-info {
    padding: 20px;
  }
}

/* ... (rest of your existing CSS) ... */

/* ... (keep all other existing CSS rules) ... */

:root {
  --primary-font: "Arial", sans-serif;
  --bg-color: #f4f4f4;
  --navbar-height: 60px;
  --primary-text-color: #333;
  --primary-text-color-rgb: 51, 51, 51; /* #333 */
  --sim-primary-color-rgb: 41, 128, 185;
  --sim-secondary-color-rgb: 39, 174, 96;
  --english-primary-color-rgb: 243, 156, 18;
  --english-secondary-color-rgb: 241, 196, 15;
  --karaoke-primary-color-rgb: 192, 57, 43;
  --karaoke-secondary-color-rgb: 142, 68, 173;
  --hero-highlight-color: #ffd700; /* Gold for hero highlight */
  --light-text-color: #fff; /* Light text color for service hero */
}

main {
  padding-top: var(--navbar-height); /* Offset for fixed navbar */
  overflow-x: hidden; /* ★ 横方向のオーバーフローをクリップ */
}

/* English School Page */
.english-school-page .course-cards {
  display: grid;
  /* Default to 1 column for smaller screens (mobile-first) */
  grid-template-columns: 1fr;
  gap: 30px;
}

/* For screens 768px and wider (tablets and desktops), display 2 columns */
@media (min-width: 768px) {
  .english-school-page .course-cards {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* Hero Section Enhancements */
.hero-section {
  position: relative;
  overflow: hidden;
  /* ::before オーバーレイを削除またはコメントアウトし、新しい .hero-overlay を使用 */
}
/* .hero-section::before { display: none; } */ /* もしあれば */

.hero-section .hero-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    45deg,
    rgba(0, 0, 0, 0.6),
    rgba(0, 0, 0, 0.4)
  ); /* 少し角度をつけた濃いめのグラデーション */
  z-index: 0;
  /* オプション: アニメーションするグラデーション背景 */
  /*
  background: linear-gradient(-45deg, #23a6d5, #23d5ab, #ee7752, #e73c7e);
  background-size: 400% 400%;
  animation: gradientBG 18s ease infinite;
  */
}

/* オプション: アニメーションするグラデーションのキーフレーム */
/*
@keyframes gradientBG {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
*/

.hero-content h1 {
  /* ... (既存の hero-content h1 スタイル) ... */
  text-shadow: 2px 2px 6px rgba(0, 0, 0, 0.7); /* テキストシャドウを強調 */
}

.hero-content h1 .highlight-text {
  color: var(--hero-highlight-color); /* 例: ゴールド系のハイライトカラー */
  display: inline-block; /* アニメーションのため */
  /* animation: pulseHighlight 2s infinite alternate; */ /* オプション: 点滅するようなハイライト */
}

/* オプション: ハイライトテキストの点滅アニメーション */
/*
@keyframes pulseHighlight {
  from { text-shadow: 0 0 5px var(--hero-highlight-color), 2px 2px 6px rgba(0,0,0,0.7); }
  to { text-shadow: 0 0 20px var(--hero-highlight-color), 0 0 30px var(--hero-highlight-color), 2px 2px 6px rgba(0,0,0,0.7); }
}
*/

/* ヒーローテキストのアニメーション */
@keyframes heroTextFadeInUp {
  from {
    opacity: 0;
    transform: translateY(40px); /* 少し大きく動かす */
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.animate-hero-text-1,
.animate-hero-text-2,
.animate-hero-text-3 {
  opacity: 0; /* 初期状態は非表示 */
}
/* アニメーションのタイミングとイージングを調整 */
.animate-hero-text-1 {
  animation: heroTextFadeInUp 1s 0.3s forwards cubic-bezier(0.2, 0.8, 0.2, 1);
}
.animate-hero-text-2 {
  animation: heroTextFadeInUp 1s 0.6s forwards cubic-bezier(0.2, 0.8, 0.2, 1);
}
.animate-hero-text-3 {
  animation: heroTextFadeInUp 1s 0.9s forwards cubic-bezier(0.2, 0.8, 0.2, 1);
}

/* ヒーロー背景画像の微妙なズームアニメーション */
.hero-background img.parallax-bg {
  /* ... (既存のスタイル) ... */
  animation: subtleZoom 25s ease-in-out infinite alternate;
}

@keyframes subtleZoom {
  from {
    transform: scale(1);
  }
  to {
    transform: scale(1.08);
  } /* 少しズームを大きく */
}

/* Service Hero Enhancements */
.service-hero {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  color: var(--light-text-color);
  position: relative; /* オーバーレイのため */
}
.service-hero::before {
  /* グラデーションオーバーレイ */
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
}
.service-hero .container {
  /* テキストがオーバーレイより手前に来るように */
  position: relative;
  z-index: 2;
}

.service-hero .page-title {
  /* ... (既存のスタイル) ... */
  text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.65); /* シャドウを少し調整 */
}

/* サービスごとのハイライトカラー */
.mobile-service-page .service-hero .highlight-service-text,
.mobile-service-hero .highlight-service-text {
  /* クラス名での指定も追加 */
  color: var(--sim-secondary-color);
  /* text-shadow: 0 0 8px var(--sim-secondary-color); */ /* オプション: ネオン風 */
}
.english-school-page .service-hero .highlight-service-text,
.english-school-hero .highlight-service-text {
  color: var(--english-secondary-color);
  /* text-shadow: 0 0 8px var(--english-secondary-color); */
}
.karaoke-izakaya-page .service-hero .highlight-service-text,
.karaoke-izakaya-hero .highlight-service-text {
  color: var(
    --karaoke-secondary-color
  ); /* 紫系、または明るいピンクなど #FF69B4 */
  /* text-shadow: 0 0 8px var(--karaoke-secondary-color); */
}

/* サービスヒーローテキストのアニメーション (メインヒーローと同じものを再利用可能) */
.animate-service-hero-text-1,
.animate-service-hero-text-2 {
  opacity: 0; /* 初期状態は非表示 */
}
.animate-service-hero-text-1 {
  animation: heroTextFadeInUp 1s 0.4s forwards cubic-bezier(0.2, 0.8, 0.2, 1);
}
.animate-service-hero-text-2 {
  animation: heroTextFadeInUp 1s 0.7s forwards cubic-bezier(0.2, 0.8, 0.2, 1);
}

/* 各サービスページのヒーロー背景とオーバーレイ */
.mobile-service-hero {
  background-image: url("https://via.placeholder.com/1920x400/2980b9/ffffff?text=Mobile+Service+Banner");
}
.mobile-service-hero::before {
  background: linear-gradient(
    to right,
    rgba(var(--sim-primary-color-rgb), 0.8),
    rgba(var(--sim-secondary-color-rgb), 0.6)
  );
}

.english-school-hero {
  /* english-school.html の service-hero にこのクラスを追加 */
  background-image: url("https://via.placeholder.com/1920x400/f39c12/ffffff?text=English+School+Banner");
}
.english-school-hero::before {
  background: linear-gradient(
    to right,
    rgba(var(--english-primary-color-rgb), 0.8),
    rgba(var(--english-secondary-color-rgb), 0.6)
  );
}

.karaoke-izakaya-hero {
  /* karaoke-izakaya.html の service-hero にこのクラスを追加 */
  background-image: url("https://via.placeholder.com/1920x400/c0392b/ffffff?text=Karaoke+Izakaya+Banner");
}
.karaoke-izakaya-hero::before {
  background: linear-gradient(
    to right,
    rgba(var(--karaoke-primary-color-rgb), 0.8),
    rgba(var(--karaoke-secondary-color-rgb), 0.6)
  );
}

/* ... (keep all other existing CSS rules that follow) ... */

/* ... (既存のスタイル) ... */

/* Global Body - for single page scroll behavior */
html {
  scroll-behavior: smooth;
}
body {
  font-family: var(--primary-font);
  line-height: 1.7;
  color: var(--primary-text-color);
  background-color: var(--bg-color);
  font-size: 16px;
  overflow-x: hidden; /* 横スクロール防止 */
}

/* Navbar - Current link highlighting for single page */
.nav-link.active {
  /* JSでアクティブなセクションに応じて付与 */
  color: var(--section-theme-color);
  font-weight: bold;
}
.nav-link.active::after {
  width: 100%;
}

/* About Us Section (Single Page) */
.about-content-grid {
  display: grid;
  grid-template-columns: 1.8fr 1fr; /* テキスト多め */
  gap: 40px;
  align-items: center;
}
.about-text h3 {
  color: var(--primary-text-color);
  margin-bottom: 15px;
}
.about-text h4 {
  color: var(--secondary-text-color);
  font-size: 1.1em;
  margin-bottom: 8px;
}
.about-text p em {
  /* 代表メッセージの強調 */
  display: block;
  padding-left: 15px;
  border-left: 3px solid var(--section-theme-color);
  font-style: normal;
  color: #444;
}
.about-image img {
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  width: 100%;
  height: auto;
  object-fit: cover;
}

/* Services Section (Single Page) */
.service-item {
  background-color: var(--bg-color);
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  margin-bottom: 40px;
  overflow: hidden; /* For header background */
  border: 1px solid var(--border-color);
}
.service-item-header {
  padding: 20px 25px;
  display: flex;
  align-items: center;
  color: var(--light-text-color);
}
.service-item-header.mobile-service-theme {
  background-color: var(--sim-primary-color);
}
.service-item-header.english-school-theme {
  background-color: var(--english-primary-color);
}
.service-item-header.karaoke-izakaya-theme {
  background-color: var(--karaoke-primary-color);
}

.service-icon {
  width: 50px; /* アイコンサイズ調整 */
  height: 50px;
  margin-right: 20px;
  border-radius: 50%;
  /* background-color: rgba(255,255,255,0.2); */ /* アイコン背景を少し透明に */
  /* padding: 8px; */ /* アイコン画像が小さい場合 */
  object-fit: contain; /* アイコンがはみ出ないように */
}

.service-item-header h3 {
  font-size: 1.8em;
  margin-bottom: 0;
  color: var(--light-text-color);
}
.service-item-content {
  padding: 25px;
}
.service-item-content p {
  margin-bottom: 15px;
}
.service-item-content h4 {
  font-size: 1.3em;
  color: var(--primary-text-color);
  margin-top: 20px;
  margin-bottom: 10px;
}
.service-item-content ul {
  list-style: disc;
  padding-left: 25px;
  margin-bottom: 15px;
}
.service-item-content ul li {
  margin-bottom: 8px;
}
.course-list li {
  /* 英会話コースのリストスタイル */
  display: inline-block;
  margin-right: 15px;
  padding: 5px 10px;
  background-color: var(--english-accent-color);
  border-radius: 4px;
  font-size: 0.9em;
}
.service-details-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 20px;
  margin-top: 15px;
}
.service-cta-button {
  font-size: 1.05em;
  padding: 10px 25px;
}
.service-cta-button.mobile-service-theme {
  background-color: var(--sim-secondary-color);
  border-color: var(--sim-secondary-color);
}
.service-cta-button.english-school-theme {
  background-color: var(--english-secondary-color);
  border-color: var(--english-secondary-color);
}
.service-cta-button.karaoke-izakaya-theme {
  background-color: var(--karaoke-secondary-color);
  border-color: var(--karaoke-secondary-color);
}

.service-cta-button:hover {
  opacity: 0.9;
  transform: translateY(-1px);
}

/* Contact Info Section (Single Page) */
.contact-info-blocks-singlepage {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 30px;
  margin-top: 20px;
}
.contact-block-sp {
  background: var(--bg-color);
  padding: 25px;
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  text-align: center;
  border-top: 4px solid var(--section-theme-color); /* テーマカラーでアクセント */
}
.contact-block-sp .contact-icon {
  /* 既存の .contact-icon を流用または調整 */
  width: 50px;
  height: 50px;
  margin-bottom: 15px;
  border-radius: 50%;
}
.contact-block-sp h3 {
  color: var(--primary-text-color);
  margin-bottom: 10px;
  font-size: 1.3em;
}
.contact-block-sp p {
  font-size: 0.95em;
  margin-bottom: 8px;
}
.contact-block-sp p a {
  color: var(--link-color);
  font-weight: 500;
}
.contact-block-sp p a:hover {
  text-decoration: underline;
}

/* Responsive adjustments for single page layout */
@media (max-width: 992px) {
  .about-content-grid {
    grid-template-columns: 1fr;
  }
  .about-image {
    margin-top: 30px;
  }
}

@media (max-width: 768px) {
  .service-item-header {
    flex-direction: column;
    text-align: center;
  }
  .service-icon {
    margin-right: 0;
    margin-bottom: 10px;
  }
  .service-item-header h3 {
    font-size: 1.6em;
  }
  .course-list li {
    display: block; /* モバイルでは縦積み */
    margin-right: 0;
    margin-bottom: 8px;
  }
  .contact-info-blocks-singlepage {
    grid-template-columns: 1fr;
  }
}

/* ... (既存のフッターや他の汎用スタイルは維持) ... */

/* ... (既存のスタイル) ... */

/* Navbar Dropdown for Single Page */
.nav-item.dropdown .dropdown-menu {
  /* 基本的なドロップダウンスタイルは維持 */
  /* JSで表示・非表示を制御する場合、display:none; はJS側で行うか、
     CSSで :hover だけでなくクラスで制御する */
}
.nav-item.dropdown:hover .dropdown-menu {
  /* ホバーで表示 */
  display: block;
}
@media (max-width: 768px) {
  .nav-item.dropdown .dropdown-menu {
    position: static; /* モバイルではインライン展開 */
    background-color: rgba(0, 0, 0, 0.05); /* 少し背景色を変える */
    box-shadow: none;
    padding-left: 20px; /* インデント */
    display: none; /* 初期非表示、JSでトグル */
  }
  .nav-item.dropdown.open .dropdown-menu {
    /* JSで .open クラスを付与 */
    display: block;
  }
  .nav-item.dropdown .dropdown-menu li a {
    padding: 10px 15px;
    font-size: 0.95em;
  }
}

/* Services Section - Article Structure */
.service-item h2 {
  /* 各サービスセクションのメインタイトル */
  font-size: 2em; /* service-item-header内のh3から変更 */
  margin-bottom: 0;
  color: var(--light-text-color);
}
.service-subtitle {
  /* 各サービスセクション内のサブタイトル */
  font-size: 1.6em;
  color: var(--primary-text-color);
  margin-bottom: 20px;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--border-color);
}

/* Mobile Service - Plan Cards Inline */
.plan-cards-inline {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  margin-bottom: 15px;
}
.plan-card-inline {
  background-color: var(--sim-accent-color);
  padding: 15px;
  border-radius: var(--border-radius);
  border-left: 5px solid var(--sim-primary-color);
  flex: 1;
  min-width: 220px; /* 最小幅 */
}
.plan-card-inline .plan-name {
  font-weight: bold;
  font-size: 1.1em;
  color: var(--sim-primary-color);
  margin-bottom: 5px;
}
.plan-card-inline .plan-price {
  font-size: 1.2em;
  color: var(--primary-text-color);
}
.plan-card-inline .tax {
  font-size: 0.8em;
}

/* English School - Course Details Grid */
.course-details-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
  margin-bottom: 20px;
}
.course-details-grid > div {
  background-color: var(--english-accent-color);
  padding: 15px;
  border-radius: var(--border-radius);
}
.course-details-grid p {
  font-size: 0.95em;
  margin-bottom: 5px;
}
.course-details-grid strong {
  color: var(--english-primary-color);
}

/* English School - Schedule Table (既存のスタイルを微調整) */
.schedule-table {
  width: 100%;
  border-collapse: collapse;
  margin: 20px 0;
  font-size: 0.9em;
}
.schedule-table th,
.schedule-table td {
  border: 1px solid var(--border-color);
  padding: 10px;
  text-align: left;
}
.schedule-table th {
  background-color: var(--english-accent-color);
  font-weight: 600;
}
.schedule-table .note {
  /* .note はテーブルの外に配置 */
  font-size: 0.85em;
  color: #777;
  margin-top: 10px;
}

/* Service CTA Area */
.service-cta-area {
  margin-top: 30px;
  padding-top: 20px;
  border-top: 1px dashed var(--border-color);
}
.service-cta-area h4 {
  font-size: 1.4em;
  color: var(--primary-text-color);
  margin-bottom: 10px;
}
.service-cta-area p {
  font-size: 0.95em;
  margin-bottom: 15px;
}
.btn-outline.service-cta-button.english-school-theme {
  color: var(--english-primary-color);
  border-color: var(--english-primary-color);
}
.btn-outline.service-cta-button.english-school-theme:hover {
  background-color: var(--english-primary-color);
  color: var(--light-text-color);
}
.btn-outline.service-cta-button.karaoke-izakaya-theme {
  color: var(--karaoke-primary-color);
  border-color: var(--karaoke-primary-color);
}
.btn-outline.service-cta-button.karaoke-izakaya-theme:hover {
  background-color: var(--karaoke-primary-color);
  color: var(--light-text-color);
}

/* Contact Info Section - Note */
.contact-block-sp .note {
  font-size: 0.85em;
  color: #777;
  margin-top: 5px;
}

/* ... (既存のレスポンシブスタイルなども確認・調整) ... */

/* ... (既存のスタイル) ... */

/* Navbar Dropdown for Single Page */
.nav-item.dropdown .dropdown-menu {
  /* 基本的なドロップダウンスタイルは維持 */
  /* JSで表示・非表示を制御する場合、display:none; はJS側で行うか、
     CSSで :hover だけでなくクラスで制御する */
}
.nav-item.dropdown:hover .dropdown-menu {
  /* ホバーで表示 */
  display: block;
}
@media (max-width: 768px) {
  .nav-item.dropdown .dropdown-menu {
    position: static; /* モバイルではインライン展開 */
    background-color: rgba(0, 0, 0, 0.05); /* 少し背景色を変える */
    box-shadow: none;
    padding-left: 20px; /* インデント */
    display: none; /* 初期非表示、JSでトグル */
  }
  .nav-item.dropdown.open .dropdown-menu {
    /* JSで .open クラスを付与 */
    display: block;
  }
  .nav-item.dropdown .dropdown-menu li a {
    padding: 10px 15px;
    font-size: 0.95em;
  }
}

/* Services Section - Article Structure */
.service-item h2 {
  /* 各サービスセクションのメインタイトル */
  font-size: 2em; /* service-item-header内のh3から変更 */
  margin-bottom: 0;
  color: var(--light-text-color);
}
.service-subtitle {
  /* 各サービスセクション内のサブタイトル */
  font-size: 1.6em;
  color: var(--primary-text-color);
  margin-bottom: 20px;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--border-color);
}

/* Mobile Service - Plan Cards Inline */
.plan-cards-inline {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  margin-bottom: 15px;
}
.plan-card-inline {
  background-color: var(--sim-accent-color);
  padding: 15px;
  border-radius: var(--border-radius);
  border-left: 5px solid var(--sim-primary-color);
  flex: 1;
  min-width: 220px; /* 最小幅 */
}
.plan-card-inline .plan-name {
  font-weight: bold;
  font-size: 1.1em;
  color: var(--sim-primary-color);
  margin-bottom: 5px;
}
.plan-card-inline .plan-price {
  font-size: 1.2em;
  color: var(--primary-text-color);
}
.plan-card-inline .tax {
  font-size: 0.8em;
}

/* English School - Course Details Grid */
.course-details-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
  margin-bottom: 20px;
}
.course-details-grid > div {
  background-color: var(--english-accent-color);
  padding: 15px;
  border-radius: var(--border-radius);
}
.course-details-grid p {
  font-size: 0.95em;
  margin-bottom: 5px;
}
.course-details-grid strong {
  color: var(--english-primary-color);
}

/* English School - Schedule Table (既存のスタイルを微調整) */
.schedule-table {
  width: 100%;
  border-collapse: collapse;
  margin: 20px 0;
  font-size: 0.9em;
}
.schedule-table th,
.schedule-table td {
  border: 1px solid var(--border-color);
  padding: 10px;
  text-align: left;
}
.schedule-table th {
  background-color: var(--english-accent-color);
  font-weight: 600;
}
.schedule-table .note {
  /* .note はテーブルの外に配置 */
  font-size: 0.85em;
  color: #777;
  margin-top: 10px;
}

/* Service CTA Area */
.service-cta-area {
  margin-top: 30px;
  padding-top: 20px;
  border-top: 1px dashed var(--border-color);
}
.service-cta-area h4 {
  font-size: 1.4em;
  color: var(--primary-text-color);
  margin-bottom: 10px;
}
.service-cta-area p {
  font-size: 0.95em;
  margin-bottom: 15px;
}
.btn-outline.service-cta-button.english-school-theme {
  color: var(--english-primary-color);
  border-color: var(--english-primary-color);
}
.btn-outline.service-cta-button.english-school-theme:hover {
  background-color: var(--english-primary-color);
  color: var(--light-text-color);
}
.btn-outline.service-cta-button.karaoke-izakaya-theme {
  color: var(--karaoke-primary-color);
  border-color: var(--karaoke-primary-color);
}
.btn-outline.service-cta-button.karaoke-izakaya-theme:hover {
  background-color: var(--karaoke-primary-color);
  color: var(--light-text-color);
}

/* Contact Info Section - Note */
.contact-block-sp .note {
  font-size: 0.85em;
  color: #777;
  margin-top: 5px;
}

/* Hero Section Enhancements */
.hero-section {
  height: 90vh; /* Hoặc chiều cao bạn muốn */
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  overflow: hidden; /* Ngăn gradient tràn ra ngoài nếu có animation */
  color: #fff; /* Màu chữ mặc định cho hero */
}

.hero-background {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  /* Animated Gradient Background */
  background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
  background-size: 400% 400%;
  animation: gradientBG 15s ease infinite;
}

@keyframes gradientBG {
  0% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
  100% {
    background-position: 0% 50%;
  }
}

.hero-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.4); /* Điều chỉnh độ mờ nếu cần */
  z-index: 2;
}

.hero-content {
  position: relative;
  z-index: 3;
  padding: 20px;
}

.hero-content h1 {
  font-size: 3.5rem; /* Tăng kích thước chữ */
  font-weight: 700;
  margin-bottom: 20px;
  line-height: 1.2;
  /* Text gradient effect */
  background: linear-gradient(
    45deg,
    #ffffff,
    #f0f0f0,
    #e0e0e0
  ); /* Gradient cho chữ trắng sáng */
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  text-fill-color: transparent; /* Nên dùng text-fill-color thay vì color: transparent */
  text-shadow: 2px 2px 8px rgba(0, 0, 0, 0.5); /* Bóng đổ rõ hơn */
}

.hero-content h1 .highlight-text {
  /* Highlight với gradient khác hoặc màu nổi bật */
  background: linear-gradient(45deg, #f7b733, #fc4a1a);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  text-fill-color: transparent;
  padding: 0 0.1em; /* Thêm chút padding nếu cần */
}

.hero-content p {
  font-size: 1.3rem; /* Tăng kích thước chữ */
  margin-bottom: 30px;
  color: #f0f0f0; /* Màu chữ sáng hơn một chút */
  text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.5);
  max-width: 700px; /* Giới hạn chiều rộng cho dễ đọc */
  margin-left: auto;
  margin-right: auto;
}

.hero-content .btn-primary {
  font-size: 1.1rem;
  padding: 12px 30px;
  text-transform: uppercase;
  letter-spacing: 1px;
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
  transition: all 0.3s ease;
}
.hero-content .btn-primary:hover {
  transform: translateY(-3px);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);
}

/* Animations for Hero Content */
.hero-title-animated {
  animation: fadeInDown 1s ease-out 0.2s backwards;
}

.hero-subtitle-animated {
  animation: fadeInUp 1s ease-out 0.5s backwards;
}

.hero-button-animated {
  animation: fadeInUp 1s ease-out 0.8s backwards;
}

/* Common Keyframes (nếu chưa có) */
@keyframes fadeInDown {
  from {
    opacity: 0;
    transform: translateY(-30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Xóa style cũ của parallax-bg nếu có */
.parallax-bg {
  /* Các style cũ của parallax-bg (nếu có) sẽ không còn tác dụng vì img đã bị xóa */
}

/* Điều chỉnh lại style cũ của .animate-hero-text-* nếu chúng vẫn còn ở đâu đó */
.animate-hero-text-1,
.animate-hero-text-2,
.animate-hero-text-3 {
  /* Các class này đã được đổi tên, nên style cũ sẽ không áp dụng.
     Nếu bạn muốn giữ lại tên cũ, hãy điều chỉnh keyframes và tên class animation ở trên. */
}

/* ... (既存のレスポンシブスタイルなども確認・調整) ... */