/* ================================================================
   GLOBAL READABLE TEXT
   ================================================================ */
body { font-size:16px; line-height:1.8; color:#1a2535; -webkit-font-smoothing:antialiased; font-family: 'Poppins', Arial, sans-serif; }
p, li { font-size:1rem; line-height:1.85; color:#2d3a4a; }
p { text-align:justify; hyphens:auto; }
h1,h2,h3,h4 { line-height:1.25; color:#0a2154; letter-spacing:-.01em; }
.about-intro-text p, .detail-article-body p, .ep-block-desc,
.epd-article-body, .fac-block-desc, .card-excerpt,
.mv-quote-text, .contact-text span { font-size:.97rem; line-height:1.85; text-align:justify; hyphens:auto; color:#374151; }
.card-meta, .ep-block-date, .ev-list-time, .evp-up-time,
.ann-card-school, small, .td-date { font-size:.8rem; line-height:1.6; color:#5a7090; }
.data-table td { font-size:.87rem; line-height:1.55; color:#2d3a4a; }
.form-label { font-size:.87rem; font-weight:700; color:#0a2154; }
.btn { font-size:.85rem; font-weight:700; letter-spacing:.02em; }

/* ==================================================== */

/* ================================================================
   WAVE PAGE HERO
   ================================================================ */
.page-hero {
  position: relative;
  background: linear-gradient(160deg, #0a1628 0%, #0d1f3c 55%, #071020 100%);
  padding: calc(0rem + 70px) 0 0;
  overflow: hidden;
  z-index: 0;
}
.page-hero-noise {
  position: absolute; inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
  background-size: 200px 200px;
  pointer-events: none; opacity: 0.18; z-index: 0;
}
.page-hero-glow {
  position: absolute; top: -60px; right: -80px;
  width: 500px; height: 500px; border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,0.04) 0%, transparent 70%);
  pointer-events: none; z-index: 0;
}
.page-hero-inner { position: relative; z-index: 2; padding-bottom: 1rem; }
.page-hero-breadcrumb {
  display: flex; align-items: center; gap: 8px;
  font-size: .8rem; color: rgba(255,255,255,.45);
  margin-bottom: 1.1rem;
}
.page-hero-breadcrumb a { color: rgba(255,255,255,.65); text-decoration: none; transition: color .2s; }
.page-hero-breadcrumb a:hover { color: #fff; }
.page-hero-breadcrumb span { color: rgba(255,255,255,.28); }
.page-hero-title {
  font-family: 'Poppins', Arial, sans-serif;
  font-size: clamp(2rem, 4.5vw, 3rem);
  font-weight: 800; color: #fff;
  line-height: 1.15; margin-bottom: .6rem;
  text-shadow: 0 2px 24px rgba(0,0,80,.3);
}
.page-hero-sub {
  font-size: 1rem; color: rgba(255,255,255,.65);
  max-width: 520px; line-height: 1.65;
}
.page-hero-wave { position: relative; z-index: 1; display: block; margin-bottom: -2px; line-height: 0; }
.page-hero-wave svg { display: block; width: 100%; height: 45px; }

/* ==================================================== */

/* ── Contact Page Overrides ── */
body { background: #fff !important; }
.section {
  background: #fff !important;
  padding: 3rem 0 4rem;
}
.contact-card {
  background: #fff !important;
  border-radius: 18px !important;
  box-shadow: 0 8px 40px rgba(13, 27, 42, 0.13), 0 2px 8px rgba(13, 27, 42, 0.07) !important;
  border: 1px solid rgba(13, 27, 42, 0.06) !important;
  padding: 2rem 1.75rem !important;
  transition: box-shadow 0.25s ease, transform 0.25s ease;
}
.contact-card:hover {
  box-shadow: 0 16px 56px rgba(13, 27, 42, 0.18), 0 4px 12px rgba(13, 27, 42, 0.09) !important;
  transform: translateY(-3px);
}
#contactMapWrap {
  border-radius: 18px !important;
  box-shadow: 0 8px 40px rgba(13, 27, 42, 0.13), 0 2px 8px rgba(13, 27, 42, 0.07) !important;
  border: 1px solid rgba(13, 27, 42, 0.06) !important;
  overflow: hidden !important;
}

@keyframes mapModalIn {
  from { opacity:0; transform:scale(0.95) translateY(10px); }
  to   { opacity:1; transform:scale(1) translateY(0); }
}
@media (max-width: 900px) {
  .contact-grid { grid-template-columns: 1fr !important; }
  #contactMapWrap { height: 350px !important; order: -1; }
}
@media (max-width: 480px) {
  #contactMapWrap { height: 260px !important; }
}