/* =========================================================
   IPAKODO HOMEPAGE V4.8 — MOBILE-FIRST SIGNATURE PREMIUM
   Official palette · responsive typography · preserved features
   ========================================================= */
:root {
  --home-primary: #1e3a8a;
  --home-primary-deep: #0a1e5c;
  --home-secondary: #0ea5e9;
  --home-accent: #fbbf24;
  --home-soft: #e0f2fe;
  --home-surface: #ffffff;
  --home-surface-soft: #f8fbff;
  --home-ink: #0f172a;
  --home-muted: #64748b;
  --home-border: rgba(30, 58, 138, .13);
  --home-shadow-sm: 0 14px 35px -28px rgba(10, 30, 92, .5);
  --home-shadow: 0 28px 70px -42px rgba(10, 30, 92, .65);
  --home-shadow-lg: 0 42px 100px -48px rgba(10, 30, 92, .82);
  --home-radius-sm: .95rem;
  --home-radius: 1.35rem;
  --home-radius-lg: 1.8rem;
  --home-container: 78rem;
  --home-nav-offset: 78px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--home-nav-offset) + 1rem); }
body.ipakodo-home-v45 {
  min-width: 320px;
  overflow-x: clip;
  color: var(--home-ink);
  background:
    radial-gradient(circle at 8% 8%, rgba(14, 165, 233, .07), transparent 28rem),
    radial-gradient(circle at 92% 34%, rgba(251, 191, 36, .06), transparent 25rem),
    #f8fafc;
  font-family: "Poppins", sans-serif;
}
body.ipakodo-home-v45 main { position: relative; isolation: isolate; padding-top: var(--home-nav-offset); }
body.ipakodo-home-v45 img { max-width: 100%; }
body.ipakodo-home-v45 h1,
body.ipakodo-home-v45 h2,
body.ipakodo-home-v45 h3 { text-wrap: balance; letter-spacing: -.028em; }
body.ipakodo-home-v45 p { text-wrap: pretty; }
body.ipakodo-home-v45 a,
body.ipakodo-home-v45 button { -webkit-tap-highlight-color: transparent; }
body.ipakodo-home-v45 a:focus-visible,
body.ipakodo-home-v45 button:focus-visible,
body.ipakodo-home-v45 dialog:focus-visible {
  outline: 3px solid rgba(14, 165, 233, .45);
  outline-offset: 3px;
}

[hidden] { display: none !important; }
.home-container { width: min(calc(100% - 2.5rem), var(--home-container)); margin-inline: auto; }
.home-section { position: relative; padding: clamp(4.25rem, 8vw, 7rem) 0; }
.home-section::after {
  content: "";
  position: absolute;
  left: 10%; right: 10%; bottom: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(30, 58, 138, .12), transparent);
}

#home-scroll-progress {
  position: fixed;
  inset: 0 0 auto;
  z-index: 3000;
  height: 3px;
  pointer-events: none;
  background: rgba(255, 255, 255, .08);
}
#home-scroll-progress span {
  display: block;
  width: 0;
  height: 100%;
  background: linear-gradient(90deg, var(--home-secondary), var(--home-accent));
  box-shadow: 0 0 18px rgba(14, 165, 233, .55);
}

/* HERO */
.home-hero {
  position: relative;
  overflow: hidden;
  background: var(--home-primary-deep);
  border-bottom: 4px solid rgba(251, 191, 36, .82);
  box-shadow: 0 30px 80px -52px rgba(10, 30, 92, .95);
}
.hero-orb { position: absolute; z-index: 4; border-radius: 999px; filter: blur(65px); pointer-events: none; opacity: .42; }
.hero-orb-one { width: 18rem; height: 18rem; left: -7rem; top: 12%; background: rgba(14, 165, 233, .45); }
.hero-orb-two { width: 22rem; height: 22rem; right: -9rem; bottom: 2%; background: rgba(251, 191, 36, .28); }
.heroSwiper { height: clamp(36rem, 76svh, 49rem); min-height: 36rem; }
.hero-slide { position: relative; overflow: hidden; height: 100%; }
.hero-media { position: absolute; inset: 0; background-repeat: no-repeat; background-position: center; background-size: cover; transform: scale(1.02); transition: transform 8s ease; }
.swiper-slide-active .hero-media { transform: scale(1.075); }
.hero-overlay { position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.hero-overlay-balanced { background: linear-gradient(90deg, rgba(5, 20, 64, .82) 0%, rgba(10, 30, 92, .48) 48%, rgba(10, 30, 92, .18) 100%); }
.hero-overlay-reunion { background: linear-gradient(180deg, rgba(5, 20, 64, .18), rgba(5, 20, 64, .32) 40%, rgba(5, 20, 64, .86)); }
.hero-overlay-deep { background: linear-gradient(180deg, rgba(5, 20, 64, .34), rgba(5, 20, 64, .62) 48%, rgba(5, 20, 64, .92)); }
.hero-content {
  position: relative;
  z-index: 3;
  display: flex;
  width: min(calc(100% - 3rem), 78rem);
  height: 100%;
  margin-inline: auto;
  padding: clamp(3.2rem, 7vw, 6.25rem) 0 clamp(5rem, 10vw, 7rem);
}
.hero-content-left { align-items: center; justify-content: flex-start; }
.hero-content-right { align-items: center; justify-content: flex-end; }
.hero-content-center { align-items: center; justify-content: center; }
.hero-content-bottom { align-items: flex-end; }
.hero-copy { max-width: 47rem; color: #fff; }
.hero-copy-center { margin-inline: auto; text-align: center; }
.hero-copy-right { margin-left: auto; text-align: right; }
.hero-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  margin-bottom: 1.1rem;
  padding: .52rem .8rem;
  border: 1px solid rgba(255, 255, 255, .24);
  border-radius: 999px;
  color: #fff;
  background: rgba(10, 30, 92, .28);
  backdrop-filter: blur(14px);
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .115em;
  text-transform: uppercase;
  box-shadow: 0 12px 35px -25px rgba(0, 0, 0, .8);
}
.hero-copy h1,
.hero-copy h2 {
  max-width: 15ch;
  margin: 0;
  color: #fff;
  font-size: clamp(2.55rem, 5.7vw, 4.85rem);
  font-weight: 700;
  line-height: 1.04;
  text-shadow: 0 5px 25px rgba(3, 15, 48, .48);
}
.hero-copy-center h1,
.hero-copy-center h2 { margin-inline: auto; max-width: 17ch; }
.hero-copy-right h1,
.hero-copy-right h2 { margin-left: auto; }
.hero-copy p { max-width: 42rem; margin: 1.35rem 0 0; color: rgba(255, 255, 255, .88); font-size: clamp(1rem, 1.7vw, 1.22rem); line-height: 1.72; }
.hero-copy-center p { margin-inline: auto; }
.hero-copy-right p { margin-left: auto; }
.hero-actions { display: flex; flex-wrap: wrap; gap: .85rem; margin-top: 1.8rem; }
.hero-actions-center { justify-content: center; }
.hero-actions-right { justify-content: flex-end; }
.hero-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .65rem;
  min-height: 3.15rem;
  padding: .84rem 1.25rem;
  border: 1px solid transparent;
  border-radius: .95rem;
  font-size: .9rem;
  font-weight: 700;
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease, border-color .2s ease;
}
.hero-button:hover { transform: translateY(-2px); }
.hero-button-gold { color: #172554; background: linear-gradient(135deg, #fbbf24, #fde68a); box-shadow: 0 18px 36px -22px rgba(251, 191, 36, .9); }
.hero-button-glass { color: #fff; border-color: rgba(255, 255, 255, .35); background: rgba(255, 255, 255, .1); backdrop-filter: blur(14px); }
.hero-button-glass:hover { background: rgba(255, 255, 255, .17); border-color: rgba(255, 255, 255, .55); }
.hero-emblem { width: clamp(4rem, 8vw, 6rem); max-height: 6rem; margin: 0 auto 1rem; object-fit: contain; filter: drop-shadow(0 14px 22px rgba(0, 0, 0, .28)); }
.home-hero .swiper-button-next,
.home-hero .swiper-button-prev {
  width: 3rem;
  height: 3rem;
  border: 1px solid rgba(255, 255, 255, .25);
  border-radius: 999px;
  color: #fff;
  background: rgba(10, 30, 92, .38);
  backdrop-filter: blur(12px);
  transition: transform .2s ease, background .2s ease;
}
.home-hero .swiper-button-next:hover,
.home-hero .swiper-button-prev:hover { transform: scale(1.08); background: rgba(30, 58, 138, .75); }
.home-hero .swiper-button-next::after,
.home-hero .swiper-button-prev::after { font-size: 1rem; font-weight: 700; }
.home-hero .swiper-pagination { bottom: 5.5rem !important; display: flex; justify-content: center; align-items: center; }
.home-hero .swiper-pagination-bullet { width: .55rem; height: .55rem; margin: 0 .3rem !important; border: 1px solid rgba(255, 255, 255, .5); background: rgba(255, 255, 255, .45); opacity: 1; transition: width .2s ease, background .2s ease; }
.home-hero .swiper-pagination-bullet-active { width: 1.9rem; border-radius: 999px; background: var(--home-accent); }
.hero-trust-strip {
  position: absolute;
  z-index: 8;
  left: 50%;
  bottom: 1rem;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  width: min(calc(100% - 2rem), 62rem);
  transform: translateX(-50%);
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, .26);
  border-radius: 1.15rem;
  background: rgba(10, 30, 92, .64);
  backdrop-filter: blur(18px);
  box-shadow: 0 24px 52px -32px rgba(0, 0, 0, .9);
}
.hero-trust-strip span { display: grid; grid-template-columns: auto 1fr; gap: .05rem .65rem; align-items: center; min-width: 0; padding: .85rem 1rem; color: #fff; border-right: 1px solid rgba(255, 255, 255, .12); }
.hero-trust-strip span:last-child { border-right: 0; }
.hero-trust-strip i { grid-row: 1 / 3; color: var(--home-accent); font-size: 1.1rem; }
.hero-trust-strip strong { font-size: .9rem; }
.hero-trust-strip small { color: rgba(255, 255, 255, .66); font-size: .67rem; }

/* SHARED HEADINGS & BUTTONS */
.section-kicker {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  color: var(--home-primary);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.section-kicker-light { color: #bfdbfe; }
.section-heading { max-width: 48rem; margin-bottom: clamp(2.4rem, 5vw, 4rem); }
.section-heading-center { margin-inline: auto; text-align: center; }
.section-heading h2,
.home-intro-copy h2,
.president-message h2,
.membership-contribution-copy h2,
.transparency-copy h2,
.final-cta-card h2 {
  margin: .8rem 0 1rem;
  color: var(--home-primary-deep);
  font-size: clamp(2rem, 4.5vw, 3.75rem);
  font-weight: 700;
  line-height: 1.1;
}
.section-heading p,
.home-intro-copy > p,
.transparency-copy > p,
.final-cta-card p { color: #52627a; font-size: clamp(.98rem, 1.5vw, 1.1rem); line-height: 1.78; }
.section-heading-light h2 { color: #fff; }
.section-heading-light p { color: rgba(255, 255, 255, .72); }
.premium-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .65rem;
  min-height: 3.1rem;
  padding: .82rem 1.2rem;
  border: 1px solid transparent;
  border-radius: .95rem;
  font-size: .88rem;
  font-weight: 700;
  transition: transform .18s ease, box-shadow .18s ease, background .18s ease, color .18s ease, border-color .18s ease;
}
.premium-button:hover { transform: translateY(-2px); }
.premium-button-primary { color: #fff; background: linear-gradient(135deg, var(--home-primary), var(--home-primary-deep)); box-shadow: 0 18px 36px -24px rgba(10, 30, 92, .9); }
.premium-button-outline { color: var(--home-primary); border-color: rgba(30, 58, 138, .25); background: rgba(255, 255, 255, .82); }
.premium-button-outline:hover { color: #fff; background: var(--home-primary); border-color: var(--home-primary); }
.premium-button-gold { color: #172554; background: linear-gradient(135deg, var(--home-accent), #fde68a); box-shadow: 0 18px 36px -24px rgba(251, 191, 36, .9); }
.premium-button-glass { color: #fff; border-color: rgba(255, 255, 255, .3); background: rgba(255, 255, 255, .08); backdrop-filter: blur(12px); }
.text-link { display: inline-flex; align-items: center; gap: .55rem; margin-top: 1.6rem; color: var(--home-primary); font-weight: 700; }
.text-link:hover { color: var(--home-secondary); }
.center-action { display: flex; justify-content: center; margin-top: 2.4rem; }

/* INTRO */
.home-intro-section { background: linear-gradient(180deg, #fff 0%, #f8fbff 100%); }
.home-intro-grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(26rem, 1.1fr); gap: clamp(2.5rem, 6vw, 5rem); align-items: center; }
.home-intro-copy h2 { max-width: 13ch; }
.home-intro-copy h2 span { display: block; color: var(--home-secondary); }
.intro-actions { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 1.8rem; }
.intro-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.intro-metrics article {
  position: relative;
  overflow: hidden;
  padding: 1.35rem;
  border: 1px solid var(--home-border);
  border-radius: var(--home-radius);
  background: rgba(255, 255, 255, .9);
  box-shadow: var(--home-shadow-sm);
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.intro-metrics article:hover { transform: translateY(-4px); border-color: rgba(14, 165, 233, .25); box-shadow: var(--home-shadow); }
.intro-metrics article::after { content: ""; position: absolute; width: 8rem; height: 8rem; right: -4rem; bottom: -4rem; border-radius: 999px; background: rgba(14, 165, 233, .06); }
.intro-metrics article > span { display: grid; place-items: center; width: 2.65rem; height: 2.65rem; border-radius: .85rem; color: var(--home-primary); background: linear-gradient(145deg, #e0f2fe, #f4fbff); box-shadow: inset 0 0 0 1px rgba(14, 165, 233, .1); }
.intro-metrics strong { display: block; margin-top: 1rem; color: var(--home-primary-deep); font-size: clamp(1.65rem, 3.5vw, 2.45rem); }
.intro-metrics small { color: var(--home-primary); font-weight: 700; }
.intro-metrics p { margin-top: .35rem; color: var(--home-muted); font-size: .78rem; }

/* PRESIDENT */
.president-section {
  overflow: hidden;
  background:
    radial-gradient(circle at 10% 10%, rgba(14, 165, 233, .11), transparent 22rem),
    linear-gradient(135deg, #edf8ff 0%, #e0f2fe 58%, #f8fbff 100%);
}
.president-layout { display: grid; grid-template-columns: minmax(18rem, .72fr) minmax(0, 1.28fr); gap: clamp(2rem, 6vw, 5rem); align-items: center; }
.president-portrait-card { position: relative; padding: 1.1rem; border: 1px solid rgba(255, 255, 255, .85); border-radius: var(--home-radius-lg); background: rgba(255, 255, 255, .76); box-shadow: var(--home-shadow-lg); backdrop-filter: blur(16px); }
.president-photo-wrap { overflow: hidden; aspect-ratio: 4 / 5; border-radius: calc(var(--home-radius-lg) - .45rem); background: linear-gradient(145deg, #bfdbfe, #dbeafe); }
.president-photo-wrap img { width: 100%; height: 100%; object-fit: cover; object-position: center top; transition: transform .5s ease; }
.president-portrait-card:hover .president-photo-wrap img { transform: scale(1.025); }
.president-identity { padding: 1.15rem .5rem .35rem; }
.president-identity > span { color: var(--home-secondary); font-size: .7rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.president-identity h3 { margin-top: .4rem; color: var(--home-primary-deep); font-size: 1.35rem; font-weight: 700; }
.president-identity p { margin-top: .25rem; color: var(--home-muted); font-size: .8rem; line-height: 1.5; }
.president-seal { position: absolute; top: 1.8rem; right: 1.8rem; display: grid; place-items: center; width: 3rem; height: 3rem; border-radius: 999px; color: var(--home-primary); background: rgba(255, 255, 255, .9); box-shadow: 0 14px 30px -20px rgba(10, 30, 92, .8); }
.president-message h2 { max-width: 13ch; }
.president-meta { color: var(--home-secondary); font-size: .82rem; font-weight: 600; }
.president-copy { margin-top: 1.5rem; padding-left: 1.2rem; border-left: 3px solid rgba(14, 165, 233, .35); }
.president-copy p { margin-bottom: .85rem; color: #475569; font-size: .98rem; line-height: 1.78; }

/* REUNION */
.reunion-section { background: #f8fafc; }
.reunion-gallery { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: minmax(10.5rem, 15vw); gap: .85rem; }
.gallery-item { position: relative; overflow: hidden; border: 0; border-radius: var(--home-radius); cursor: zoom-in; background: #cbd5e1; box-shadow: var(--home-shadow-sm); }
.gallery-item-large { grid-column: span 2; grid-row: span 2; }
.gallery-item-wide { grid-column: span 2; }
.gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease, filter .45s ease; }
.gallery-item::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 42%, rgba(5, 20, 64, .85)); }
.gallery-item span { position: absolute; z-index: 2; left: 1rem; right: 1rem; bottom: 1rem; display: grid; text-align: left; color: #fff; }
.gallery-item small { color: #bfdbfe; font-size: .65rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.gallery-item strong { margin-top: .2rem; font-size: .95rem; }
.gallery-item:hover img { transform: scale(1.055); filter: saturate(1.06); }
.reunion-story-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin-top: 2rem; }
.reunion-story-card { padding: 1.4rem; border: 1px solid var(--home-border); border-radius: var(--home-radius); background: #fff; box-shadow: var(--home-shadow-sm); }
.story-icon { display: grid; place-items: center; width: 2.8rem; height: 2.8rem; border-radius: .9rem; color: var(--home-primary); background: var(--home-soft); }
.reunion-story-card h3 { margin-top: 1rem; color: var(--home-primary-deep); font-size: 1.2rem; font-weight: 700; }
.reunion-story-card p { margin-top: .55rem; color: var(--home-muted); font-size: .84rem; line-height: 1.65; }

/* MUSIC */
.music-section {
  overflow: hidden;
  background:
    radial-gradient(circle at 8% 14%, rgba(14, 165, 233, .18), transparent 24rem),
    radial-gradient(circle at 92% 86%, rgba(251, 191, 36, .12), transparent 26rem),
    linear-gradient(145deg, #071a4a 0%, #0a1e5c 58%, #12347b 100%);
}
.music-section::before { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .17; background-image: linear-gradient(rgba(255, 255, 255, .05) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .05) 1px, transparent 1px); background-size: 42px 42px; mask-image: linear-gradient(to bottom, transparent, #000 15%, #000 85%, transparent); }
.music-section .home-container { position: relative; z-index: 1; }
.music-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.music-card { position: relative; overflow: hidden; display: flex; flex-direction: column; min-height: 25rem; border: 1px solid rgba(255, 255, 255, .15); border-radius: var(--home-radius-lg); color: #fff; background: rgba(255, 255, 255, .075); backdrop-filter: blur(16px); box-shadow: 0 28px 60px -38px rgba(0, 0, 0, .9); transition: transform .22s ease, border-color .22s ease, background .22s ease; }
.music-card:hover { transform: translateY(-5px); border-color: rgba(14, 165, 233, .45); background: rgba(255, 255, 255, .1); }
.music-card::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: linear-gradient(90deg, var(--home-secondary), var(--home-accent)); transform: scaleX(0); transform-origin: left; transition: transform .25s ease; }
.music-card:hover::after,
.music-card.is-playing::after { transform: scaleX(1); }
.music-card.is-playing { border-color: rgba(14, 165, 233, .65); box-shadow: 0 30px 80px -38px rgba(14, 165, 233, .65); }
.music-card.is-playing::before { content: "Now Playing"; position: absolute; top: 1rem; left: 1rem; z-index: 4; padding: .35rem .6rem; border-radius: 999px; color: #082f49; background: #7dd3fc; font-size: .62rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.music-card-top { display: flex; justify-content: space-between; align-items: center; padding: 1.25rem 1.25rem 0; }
.track-number { color: rgba(255, 255, 255, .4); font-size: 2.5rem; font-weight: 700; letter-spacing: -.08em; }
.audio-pulse { position: relative; display: grid; place-items: center; width: 3.2rem; height: 3.2rem; border-radius: 999px; color: var(--home-accent); background: rgba(255, 255, 255, .1); }
.music-card.is-playing .audio-pulse::after { content: ""; position: absolute; inset: -.45rem; border: 2px solid rgba(14, 165, 233, .55); border-radius: inherit; animation: homeAudioPulse 1.7s ease-out infinite; }
@keyframes homeAudioPulse { from { transform: scale(.9); opacity: .8; } to { transform: scale(1.35); opacity: 0; } }
.music-card-copy { flex: 1; padding: 1rem 1.4rem 1.4rem; }
.music-card-copy small { color: #7dd3fc; font-size: .65rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.music-card-copy h3 { margin-top: .45rem; color: #fff; font-size: 1.75rem; font-weight: 700; }
.music-card-copy p { margin-top: .75rem; color: rgba(255, 255, 255, .7); font-size: .87rem; line-height: 1.7; }
.music-card-actions { display: grid; grid-template-columns: 1fr auto; gap: .7rem; padding: 1rem 1.25rem 1.25rem; border-top: 1px solid rgba(255, 255, 255, .1); }
.music-card-actions button,
.music-card-actions a { display: inline-flex; align-items: center; justify-content: center; gap: .55rem; min-height: 2.9rem; padding: .72rem 1rem; border-radius: .85rem; font-size: .8rem; font-weight: 700; }
.music-card-actions button { color: #fff; background: linear-gradient(135deg, var(--home-secondary), #0369a1); box-shadow: 0 16px 30px -22px rgba(14, 165, 233, .9); }
.music-card-actions a { color: #fff; border: 1px solid rgba(255, 255, 255, .18); background: rgba(255, 255, 255, .06); }
.music-more-card { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 1.2rem; padding: 1.15rem 1.25rem; border: 1px solid rgba(255, 255, 255, .13); border-radius: var(--home-radius); color: #fff; background: rgba(255, 255, 255, .065); backdrop-filter: blur(14px); }
.music-more-card > div { display: flex; align-items: center; gap: 1rem; }
.music-more-card > div > span { display: grid; place-items: center; width: 3rem; height: 3rem; border-radius: .9rem; color: var(--home-accent); background: rgba(255, 255, 255, .1); }
.music-more-card h3 { color: #fff; font-size: 1rem; font-weight: 700; }
.music-more-card p { margin-top: .2rem; color: rgba(255, 255, 255, .62); font-size: .75rem; }
.music-more-card > a { display: inline-flex; align-items: center; gap: .55rem; color: var(--home-accent); font-size: .8rem; font-weight: 700; white-space: nowrap; }

/* ACTIVITIES */
.activities-section { background: #fff; }
.birthdays-panel { padding: clamp(1.25rem, 3vw, 2rem); border: 1px solid rgba(251, 191, 36, .24); border-radius: var(--home-radius-lg); background: linear-gradient(145deg, #fffaf0, #fff7dc); box-shadow: var(--home-shadow-sm); }
.birthdays-panel-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; margin-bottom: 1.25rem; }
.birthdays-panel-head span { color: #a16207; font-size: .66rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.birthdays-panel-head h3 { margin-top: .25rem; color: var(--home-primary-deep); font-size: 1.6rem; font-weight: 700; }
.birthdays-panel-head > a { display: inline-flex; align-items: center; gap: .45rem; color: var(--home-primary); font-size: .78rem; font-weight: 700; }
.birthday-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; min-height: 8rem; }
.birthday-grid > * { min-width: 0; }
.birthday-loading { grid-column: 1 / -1; display: flex; align-items: center; justify-content: center; gap: .65rem; min-height: 8rem; color: #92400e; font-size: .85rem; }
.home-countdown-badge { position: absolute; left: 50%; bottom: .7rem; z-index: 20; transform: translateX(-50%); padding: .4rem .75rem; border-radius: 999px; color: #172554; background: rgba(251, 191, 36, .92); box-shadow: 0 12px 25px -16px rgba(146, 64, 14, .85); font-size: .67rem; font-weight: 700; white-space: nowrap; }
.today-ribbon { position: absolute; top: 1rem; left: -2.8rem; z-index: 25; transform: rotate(-45deg); padding: .3rem 3.5rem; color: #172554; background: var(--home-accent); font-size: .65rem; font-weight: 800; box-shadow: 0 8px 18px -12px rgba(0, 0, 0, .6); }
.events-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin-top: 1.4rem; }
.event-card { display: grid; grid-template-columns: 5rem 1fr; gap: 1.2rem; padding: 1.35rem; border: 1px solid var(--home-border); border-radius: var(--home-radius); background: #f8fbff; box-shadow: var(--home-shadow-sm); }
.event-date { display: grid; place-items: center; align-content: center; min-height: 6rem; border-radius: 1rem; color: #fff; background: linear-gradient(145deg, var(--home-primary), var(--home-primary-deep)); }
.event-date strong { font-size: 1.55rem; }
.event-date span { font-size: .68rem; opacity: .8; }
.event-date-gold { color: #172554; background: linear-gradient(145deg, var(--home-accent), #fde68a); }
.event-card small { color: var(--home-secondary); font-size: .65rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.event-card h3 { margin-top: .35rem; color: var(--home-primary-deep); font-size: 1.2rem; font-weight: 700; }
.event-card p { margin-top: .55rem; color: var(--home-muted); font-size: .82rem; line-height: 1.65; }
.event-card a { display: inline-flex; align-items: center; gap: .45rem; margin-top: .85rem; color: var(--home-primary); font-size: .78rem; font-weight: 700; }

/* IMPACT */
.impact-section { background: linear-gradient(180deg, #f8fafc, #edf8ff); }
.impact-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.impact-grid article { position: relative; overflow: hidden; padding: 1.45rem; border: 1px solid var(--home-border); border-radius: var(--home-radius); background: rgba(255, 255, 255, .92); box-shadow: var(--home-shadow-sm); transition: transform .2s ease, box-shadow .2s ease; }
.impact-grid article:hover { transform: translateY(-4px); box-shadow: var(--home-shadow); }
.impact-grid article > span { display: grid; place-items: center; width: 3.1rem; height: 3.1rem; border-radius: 1rem; color: var(--home-primary); background: var(--home-soft); font-size: 1.15rem; }
.impact-grid h3 { margin-top: 1rem; color: var(--home-primary-deep); font-size: 1.18rem; font-weight: 700; }
.impact-grid p { margin-top: .55rem; color: var(--home-muted); font-size: .84rem; line-height: 1.66; }
.impact-grid a { display: inline-flex; align-items: center; gap: .45rem; margin-top: 1rem; color: var(--home-secondary); font-size: .76rem; font-weight: 700; }

/* MEMBERSHIP CONTRIBUTION */
.membership-contribution-section {
  position: relative;
  overflow: hidden;
  padding: clamp(4.5rem, 8vw, 7rem) 0;
  border-block: 1px solid var(--home-border);
  background:
    radial-gradient(circle at 10% 12%, rgba(14, 165, 233, .14), transparent 22rem),
    radial-gradient(circle at 90% 88%, rgba(251, 191, 36, .16), transparent 24rem),
    linear-gradient(135deg, #f8fbff 0%, #eaf6ff 53%, #fffaf0 100%);
}
.membership-contribution-section::before { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .6; background-image: linear-gradient(rgba(30, 58, 138, .03) 1px, transparent 1px), linear-gradient(90deg, rgba(30, 58, 138, .03) 1px, transparent 1px); background-size: 34px 34px; mask-image: linear-gradient(to bottom, transparent, #000 15%, #000 85%, transparent); }
.membership-contribution-grid { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(22rem, .92fr); gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.membership-contribution-copy h2 { max-width: 13ch; }
.membership-greeting { display: inline-flex; align-items: center; gap: .5rem; width: fit-content; margin-top: 1rem; padding: .5rem .75rem; border: 1px solid rgba(14, 165, 233, .18); border-radius: 999px; color: var(--home-secondary); background: rgba(255, 255, 255, .76); font-size: .85rem; font-weight: 700; box-shadow: 0 12px 25px -22px rgba(10, 30, 92, .7); }
.membership-greeting::before { content: ""; width: .48rem; height: .48rem; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 4px rgba(34, 197, 94, .12); }
.membership-lead { max-width: 42rem; color: #475569; font-size: clamp(.96rem, 1.5vw, 1.08rem); line-height: 1.78; }
.membership-benefits { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; margin: 1.7rem 0; }
.membership-benefits span { display: grid; grid-template-columns: auto 1fr; gap: .1rem .65rem; align-items: center; min-width: 0; padding: .95rem; border: 1px solid rgba(30, 58, 138, .11); border-radius: 1rem; background: rgba(255, 255, 255, .78); box-shadow: 0 14px 34px -28px rgba(10, 30, 92, .55); transition: transform .18s ease, border-color .18s ease, background .18s ease; }
.membership-benefits span:hover { transform: translateY(-2px); border-color: rgba(14, 165, 233, .25); background: #fff; }
.membership-benefits i { grid-row: 1 / 3; color: var(--home-primary); font-size: 1.1rem; }
.membership-benefits strong { color: var(--home-primary-deep); font-size: .92rem; white-space: nowrap; }
.membership-benefits small { color: var(--home-muted); font-size: .68rem; line-height: 1.35; }
.membership-actions { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 1.4rem; }
.membership-note { margin-top: 1rem; color: var(--home-muted); font-size: .77rem; line-height: 1.55; }
.membership-account-card { position: relative; overflow: hidden; padding: clamp(1.3rem, 3vw, 2rem); border: 1px solid rgba(255, 255, 255, .5); border-radius: 1.6rem; color: #fff; background: linear-gradient(145deg, #1e3a8a 0%, #0a1e5c 68%, #12347b 100%); box-shadow: 0 42px 95px -42px rgba(10, 30, 92, .95), inset 0 1px rgba(255, 255, 255, .18); }
.membership-account-card::before,
.membership-account-card::after { content: ""; position: absolute; border-radius: 999px; background: rgba(255, 255, 255, .07); }
.membership-account-card::before { width: 14rem; height: 14rem; right: -7rem; top: -7rem; }
.membership-account-card::after { width: 9rem; height: 9rem; left: -4rem; bottom: -5rem; }
.membership-account-card[aria-busy="true"]::after { width: auto; height: auto; left: 0; bottom: 0; inset: 0; z-index: 3; border-radius: 0; background: linear-gradient(110deg, transparent 28%, rgba(255, 255, 255, .08) 45%, transparent 62%); transform: translateX(-100%); animation: membershipLoading 1.35s ease-in-out infinite; }
@keyframes membershipLoading { to { transform: translateX(100%); } }
.membership-card-head { position: relative; z-index: 1; display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.membership-card-head > div > span { color: rgba(255, 255, 255, .64); font-size: .68rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.membership-card-head h3 { margin-top: .35rem; color: #fff; font-size: clamp(1.35rem, 3vw, 2rem); font-weight: 700; }
.membership-status { display: inline-flex; align-items: center; gap: .4rem; padding: .5rem .7rem; border-radius: 999px; font-size: .67rem; font-weight: 800; white-space: nowrap; }
.membership-status-neutral { color: #dbeafe; background: rgba(255, 255, 255, .1); }
.membership-status-paid { color: #052e16; background: #86efac; }
.membership-status-partial { color: #422006; background: #fde68a; }
.membership-status-outstanding { color: #450a0a; background: #fecaca; }
.membership-generic-summary { position: relative; z-index: 1; padding-top: 2rem; }
.membership-generic-icon { display: grid; place-items: center; width: 3.2rem; height: 3.2rem; margin-bottom: 1rem; border-radius: 1rem; color: var(--home-accent); background: rgba(255, 255, 255, .1); font-size: 1.35rem; }
.membership-generic-summary p { color: rgba(255, 255, 255, .78); line-height: 1.75; }
.membership-generic-summary a { display: inline-flex; align-items: center; gap: .5rem; margin-top: 1.2rem; color: var(--home-accent); font-size: .84rem; font-weight: 700; }
.membership-progress-copy { position: relative; z-index: 1; display: flex; justify-content: space-between; margin-top: 1.65rem; color: rgba(255, 255, 255, .75); font-size: .77rem; }
.membership-progress-copy strong { color: #fff; }
.membership-progress-track { position: relative; z-index: 1; height: .62rem; margin-top: .55rem; overflow: hidden; border-radius: 999px; background: rgba(255, 255, 255, .13); }
.membership-progress-track span { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--home-accent), #fff3b0); transition: width .45s ease; }
.membership-financial-grid { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem; margin-top: 1.35rem; }
.membership-financial-grid div { padding: .95rem; border: 1px solid rgba(255, 255, 255, .12); border-radius: .95rem; background: rgba(255, 255, 255, .07); transition: background .18s ease, transform .18s ease; }
.membership-financial-grid div:hover { transform: translateY(-2px); background: rgba(255, 255, 255, .11); }
.membership-financial-grid dt { color: rgba(255, 255, 255, .62); font-size: .67rem; }
.membership-financial-grid dd { margin-top: .25rem; color: #fff; font-size: clamp(1rem, 2.3vw, 1.35rem); font-weight: 700; }
.membership-data-status { position: relative; z-index: 1; display: flex; gap: .5rem; align-items: flex-start; margin-top: 1rem; color: rgba(255, 255, 255, .64); font-size: .69rem; line-height: 1.45; }

/* TRANSPARENCY */
.transparency-section { background: #fff; }
.transparency-layout { display: grid; grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr); gap: clamp(2rem, 6vw, 5rem); align-items: center; }
.transparency-copy h2 { max-width: 13ch; }
.transparency-copy .premium-button { margin-top: 1.5rem; }
.transparency-cards { display: grid; gap: .85rem; }
.transparency-cards article { display: grid; grid-template-columns: 3.2rem 1fr; gap: 1rem; padding: 1.2rem; border: 1px solid var(--home-border); border-radius: var(--home-radius); background: #f8fbff; box-shadow: var(--home-shadow-sm); }
.transparency-cards article > span { display: grid; place-items: center; width: 3.2rem; height: 3.2rem; border-radius: 1rem; color: var(--home-primary); background: var(--home-soft); }
.transparency-cards h3 { color: var(--home-primary-deep); font-size: 1.05rem; font-weight: 700; }
.transparency-cards p { margin-top: .35rem; color: var(--home-muted); font-size: .8rem; line-height: 1.6; }

/* EXPLORE */
.explore-section { background: linear-gradient(180deg, #f8fafc, #edf8ff); }
.explore-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
.explore-grid > a { position: relative; overflow: hidden; min-height: 20rem; padding: 1.35rem; border: 1px solid var(--home-border); border-radius: var(--home-radius); color: inherit; background: rgba(255, 255, 255, .94); box-shadow: var(--home-shadow-sm); transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease; }
.explore-grid > a::after { content: ""; position: absolute; width: 9rem; height: 9rem; right: -4.5rem; bottom: -4.5rem; border-radius: 999px; background: rgba(14, 165, 233, .07); }
.explore-grid > a:hover { transform: translateY(-5px); border-color: rgba(14, 165, 233, .25); box-shadow: var(--home-shadow); }
.explore-grid > a > span { display: grid; place-items: center; width: 3.1rem; height: 3.1rem; border-radius: 1rem; color: var(--home-primary); background: var(--home-soft); font-size: 1.15rem; }
.explore-grid small { display: block; margin-top: 2rem; color: var(--home-secondary); font-size: .65rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.explore-grid h3 { margin-top: .45rem; color: var(--home-primary-deep); font-size: 1.18rem; font-weight: 700; }
.explore-grid p { margin-top: .65rem; color: var(--home-muted); font-size: .82rem; line-height: 1.65; }
.explore-grid b { position: absolute; z-index: 2; left: 1.35rem; bottom: 1.35rem; display: inline-flex; align-items: center; gap: .45rem; color: var(--home-primary); font-size: .75rem; }

/* FINAL CTA */
.final-cta-section { padding: clamp(4rem, 7vw, 6rem) 0; background: #f8fafc; }
.final-cta-card { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1.2fr) auto; gap: 2rem; align-items: center; padding: clamp(1.8rem, 5vw, 3.5rem); border-radius: var(--home-radius-lg); color: #fff; background: linear-gradient(135deg, #1e3a8a, #0a1e5c 66%, #12347b); box-shadow: var(--home-shadow-lg); }
.final-cta-card::before { content: ""; position: absolute; width: 20rem; height: 20rem; top: -10rem; right: -8rem; border-radius: 999px; background: rgba(255, 255, 255, .07); }
.final-cta-card > * { position: relative; z-index: 1; }
.final-cta-card h2 { max-width: 15ch; color: #fff; }
.final-cta-card p { max-width: 42rem; color: rgba(255, 255, 255, .72); }
.final-cta-actions { display: flex; flex-direction: column; gap: .75rem; min-width: 12rem; }

/* MINI PLAYER */
.mini-player { position: fixed; z-index: 2500; right: 1.25rem; bottom: 1.25rem; width: min(calc(100% - 2rem), 23rem); padding: 1rem; border: 1px solid rgba(30, 58, 138, .14); border-radius: 1.25rem; background: rgba(255, 255, 255, .96); backdrop-filter: blur(18px); box-shadow: 0 30px 80px -34px rgba(10, 30, 92, .8); }
.mini-player-main { display: grid; grid-template-columns: auto 1fr auto; gap: .75rem; align-items: center; }
.mini-player-play { display: grid; place-items: center; width: 2.9rem; height: 2.9rem; border-radius: 999px; color: #fff; background: linear-gradient(135deg, var(--home-primary), var(--home-secondary)); box-shadow: 0 14px 28px -18px rgba(14, 165, 233, .8); }
.mini-player-copy { min-width: 0; display: grid; }
.mini-player-copy small { color: var(--home-secondary); font-size: .62rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.mini-player-copy strong { overflow: hidden; color: var(--home-primary-deep); font-size: .9rem; text-overflow: ellipsis; white-space: nowrap; }
.mini-player-copy span { color: var(--home-muted); font-size: .65rem; }
.mini-player-close { color: #94a3b8; }
.mini-progress-wrap { margin-top: .8rem; }
#mini-progress-track { position: relative; display: block; width: 100%; height: .48rem; overflow: hidden; border-radius: 999px; background: #e2e8f0; box-shadow: inset 0 1px 3px rgba(15, 23, 42, .12); }
#mini-progress-bar { position: absolute; inset: 0 auto 0 0; width: 0; border-radius: inherit; background: linear-gradient(90deg, var(--home-primary), var(--home-secondary), var(--home-accent)); }
.mini-progress-wrap > div { display: flex; justify-content: space-between; margin-top: .35rem; color: #94a3b8; font-size: .62rem; }

/* LIGHTBOX */
.gallery-lightbox { width: min(calc(100% - 2rem), 70rem); max-height: calc(100svh - 2rem); padding: 0; overflow: hidden; border: 1px solid rgba(255, 255, 255, .18); border-radius: 1.25rem; background: #06133b; box-shadow: 0 45px 120px -40px rgba(0, 0, 0, .9); }
.gallery-lightbox::backdrop { background: rgba(3, 10, 31, .86); backdrop-filter: blur(8px); }
.gallery-lightbox figure { display: grid; max-height: calc(100svh - 2rem); }
.gallery-lightbox img { width: 100%; max-height: calc(100svh - 7rem); object-fit: contain; background: #020617; }
.gallery-lightbox figcaption { padding: 1rem 1.2rem; color: rgba(255, 255, 255, .82); font-size: .85rem; }
.gallery-lightbox-close { position: absolute; z-index: 3; top: .75rem; right: .75rem; display: grid; place-items: center; width: 2.5rem; height: 2.5rem; border-radius: 999px; color: #fff; background: rgba(5, 20, 64, .72); backdrop-filter: blur(10px); }

.home-back-to-top { position: fixed; z-index: 1900; right: 1.25rem; bottom: 1.25rem; display: grid; place-items: center; width: 2.8rem; height: 2.8rem; border: 1px solid rgba(30, 58, 138, .15); border-radius: 999px; color: #fff; background: linear-gradient(135deg, var(--home-primary), var(--home-primary-deep)); box-shadow: 0 18px 36px -22px rgba(10, 30, 92, .9); opacity: 0; visibility: hidden; transform: translateY(.7rem); transition: opacity .2s ease, transform .2s ease, visibility .2s ease; }
.home-back-to-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
body:has(.mini-player:not([hidden])) .home-back-to-top { bottom: 8rem; }

/* REVEAL */
[data-reveal] { opacity: 0; transform: translateY(1.1rem); transition: opacity .65s ease, transform .65s ease; }
[data-reveal].is-visible { opacity: 1; transform: none; }

/* DARK THEME */
body[data-theme="dark"].ipakodo-home-v45,
body.dark.ipakodo-home-v45 { color: #eaf2ff; background: #06133b; }
body[data-theme="dark"].ipakodo-home-v45 .home-intro-section,
body[data-theme="dark"].ipakodo-home-v45 .activities-section,
body[data-theme="dark"].ipakodo-home-v45 .transparency-section,
body.dark.ipakodo-home-v45 .home-intro-section,
body.dark.ipakodo-home-v45 .activities-section,
body.dark.ipakodo-home-v45 .transparency-section { background: #081b4b; }
body[data-theme="dark"].ipakodo-home-v45 .reunion-section,
body[data-theme="dark"].ipakodo-home-v45 .impact-section,
body[data-theme="dark"].ipakodo-home-v45 .explore-section,
body[data-theme="dark"].ipakodo-home-v45 .final-cta-section,
body.dark.ipakodo-home-v45 .reunion-section,
body.dark.ipakodo-home-v45 .impact-section,
body.dark.ipakodo-home-v45 .explore-section,
body.dark.ipakodo-home-v45 .final-cta-section { background: #071a4a; }
body[data-theme="dark"].ipakodo-home-v45 .intro-metrics article,
body[data-theme="dark"].ipakodo-home-v45 .reunion-story-card,
body[data-theme="dark"].ipakodo-home-v45 .impact-grid article,
body[data-theme="dark"].ipakodo-home-v45 .explore-grid > a,
body.dark.ipakodo-home-v45 .intro-metrics article,
body.dark.ipakodo-home-v45 .reunion-story-card,
body.dark.ipakodo-home-v45 .impact-grid article,
body.dark.ipakodo-home-v45 .explore-grid > a { border-color: rgba(255, 255, 255, .1); background: #10275f; }
body[data-theme="dark"].ipakodo-home-v45 .section-heading h2,
body[data-theme="dark"].ipakodo-home-v45 .home-intro-copy h2,
body[data-theme="dark"].ipakodo-home-v45 .president-message h2,
body[data-theme="dark"].ipakodo-home-v45 .transparency-copy h2,
body[data-theme="dark"].ipakodo-home-v45 .intro-metrics strong,
body[data-theme="dark"].ipakodo-home-v45 .reunion-story-card h3,
body[data-theme="dark"].ipakodo-home-v45 .impact-grid h3,
body[data-theme="dark"].ipakodo-home-v45 .explore-grid h3,
body.dark.ipakodo-home-v45 .section-heading h2,
body.dark.ipakodo-home-v45 .home-intro-copy h2,
body.dark.ipakodo-home-v45 .president-message h2,
body.dark.ipakodo-home-v45 .transparency-copy h2,
body.dark.ipakodo-home-v45 .intro-metrics strong,
body.dark.ipakodo-home-v45 .reunion-story-card h3,
body.dark.ipakodo-home-v45 .impact-grid h3,
body.dark.ipakodo-home-v45 .explore-grid h3 { color: #f8fbff; }
body[data-theme="dark"].ipakodo-home-v45 .section-heading p,
body[data-theme="dark"].ipakodo-home-v45 .home-intro-copy > p,
body[data-theme="dark"].ipakodo-home-v45 .president-copy p,
body[data-theme="dark"].ipakodo-home-v45 .reunion-story-card p,
body[data-theme="dark"].ipakodo-home-v45 .impact-grid p,
body[data-theme="dark"].ipakodo-home-v45 .explore-grid p,
body[data-theme="dark"].ipakodo-home-v45 .transparency-copy > p,
body.dark.ipakodo-home-v45 .section-heading p,
body.dark.ipakodo-home-v45 .home-intro-copy > p,
body.dark.ipakodo-home-v45 .president-copy p,
body.dark.ipakodo-home-v45 .reunion-story-card p,
body.dark.ipakodo-home-v45 .impact-grid p,
body.dark.ipakodo-home-v45 .explore-grid p,
body.dark.ipakodo-home-v45 .transparency-copy > p { color: #cbdaf5; }

/* RESPONSIVE */
@media (max-width: 1120px) {
  :root { --home-nav-offset: 72px; }
  .home-intro-grid,
  .president-layout,
  .membership-contribution-grid,
  .transparency-layout { grid-template-columns: 1fr; }
  .president-portrait-card { max-width: 30rem; }
  .membership-account-card { max-width: 43rem; }
  .explore-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
  .heroSwiper { height: clamp(34rem, 72svh, 44rem); }
  .hero-content { width: min(calc(100% - 2rem), 78rem); }
  .hero-copy h1,
  .hero-copy h2 { font-size: clamp(2.35rem, 7vw, 4rem); }
  .hero-trust-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); bottom: .75rem; width: min(calc(100% - 1.5rem), 40rem); }
  .hero-trust-strip span:nth-child(2) { border-right: 0; }
  .hero-trust-strip span:nth-child(-n+2) { border-bottom: 1px solid rgba(255, 255, 255, .12); }
  .home-hero .swiper-pagination { bottom: 7rem !important; }
  .reunion-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 13rem; }
  .gallery-item-large { grid-column: span 2; grid-row: span 2; }
  .music-grid,
  .reunion-story-grid,
  .impact-grid { grid-template-columns: 1fr; }
  .music-card { min-height: 0; }
  .birthday-grid { grid-template-columns: 1fr 1fr; }
  .events-grid { grid-template-columns: 1fr; }
  .final-cta-card { grid-template-columns: 1fr; }
  .final-cta-actions { flex-direction: row; flex-wrap: wrap; }
}

@media (max-width: 640px) {
  :root { --home-nav-offset: 68px; }
  .home-container { width: min(calc(100% - 1.25rem), var(--home-container)); }
  .home-section { padding: 3.6rem 0; }
  .home-section::after { left: 1rem; right: 1rem; }
  .heroSwiper { height: clamp(36rem, 82svh, 43rem); min-height: 36rem; }
  .hero-content { width: calc(100% - 1.25rem); padding: 2.8rem 0 8.4rem; align-items: center; justify-content: center; }
  .hero-copy,
  .hero-copy-right { width: 100%; margin: 0 auto; text-align: center; }
  .hero-copy h1,
  .hero-copy h2,
  .hero-copy-right h1,
  .hero-copy-right h2 { max-width: 16ch; margin-inline: auto; font-size: clamp(2.05rem, 10.8vw, 3.1rem); line-height: 1.06; }
  .hero-copy p,
  .hero-copy-right p { margin-inline: auto; max-width: 29rem; font-size: .92rem; line-height: 1.65; }
  .hero-eyebrow { font-size: .61rem; letter-spacing: .09em; }
  .hero-actions,
  .hero-actions-right { display: grid; width: 100%; max-width: 20rem; margin-inline: auto; }
  .hero-button { width: 100%; min-height: 3rem; font-size: .82rem; }
  .home-hero .swiper-button-next,
  .home-hero .swiper-button-prev { display: none; }
  .home-hero .swiper-pagination { bottom: 7.3rem !important; }
  .hero-trust-strip { bottom: .55rem; width: calc(100% - 1rem); border-radius: .95rem; }
  .hero-trust-strip span { padding: .65rem .7rem; }
  .hero-trust-strip i { font-size: .95rem; }
  .hero-trust-strip strong { font-size: .78rem; }
  .hero-trust-strip small { font-size: .58rem; }
  .section-heading h2,
  .home-intro-copy h2,
  .president-message h2,
  .membership-contribution-copy h2,
  .transparency-copy h2,
  .final-cta-card h2 { font-size: clamp(1.75rem, 8vw, 2.45rem); }
  .section-heading { margin-bottom: 2.2rem; }
  .intro-actions,
  .membership-actions,
  .final-cta-actions { display: grid; grid-template-columns: 1fr; }
  .premium-button { width: 100%; }
  .intro-metrics { grid-template-columns: 1fr 1fr; gap: .7rem; }
  .intro-metrics article { padding: 1rem; }
  .intro-metrics strong { font-size: 1.65rem; }
  .president-portrait-card { max-width: 100%; }
  .reunion-gallery { grid-auto-rows: 9.5rem; gap: .55rem; }
  .gallery-item { border-radius: .9rem; }
  .gallery-item-large { grid-row: span 2; }
  .gallery-item span { left: .75rem; right: .75rem; bottom: .75rem; }
  .gallery-item strong { font-size: .78rem; }
  .music-grid { gap: .8rem; }
  .music-card-actions { grid-template-columns: 1fr; }
  .music-more-card { align-items: flex-start; flex-direction: column; }
  .music-more-card > a { white-space: normal; }
  .birthdays-panel { padding: 1rem; }
  .birthdays-panel-head { align-items: flex-start; flex-direction: column; }
  .birthday-grid { grid-template-columns: 1fr; }
  .event-card { grid-template-columns: 4.3rem 1fr; padding: 1rem; }
  .event-date { min-height: 5.2rem; }
  .membership-benefits { grid-template-columns: 1fr; }
  .membership-benefits span { grid-template-columns: 2rem 1fr; }
  .membership-account-card { padding: 1.2rem; border-radius: 1.2rem; }
  .membership-card-head { align-items: center; }
  .membership-financial-grid { grid-template-columns: 1fr 1fr; }
  .transparency-cards article { grid-template-columns: 2.8rem 1fr; padding: 1rem; }
  .transparency-cards article > span { width: 2.8rem; height: 2.8rem; }
  .explore-grid { grid-template-columns: 1fr; }
  .explore-grid > a { min-height: 17.5rem; }
  .final-cta-card { padding: 1.4rem; border-radius: 1.2rem; }
  .mini-player { left: .65rem; right: .65rem; bottom: max(.65rem, env(safe-area-inset-bottom)); width: auto; }
  body:has(.mini-player:not([hidden])) .home-back-to-top { bottom: 8rem; }
  .home-back-to-top { right: .75rem; bottom: max(.75rem, env(safe-area-inset-bottom)); }
}

@media (max-width: 390px) {
  .heroSwiper { min-height: 37rem; }
  .intro-metrics { grid-template-columns: 1fr; }
  .membership-financial-grid { grid-template-columns: 1fr; }
  .hero-trust-strip span { grid-template-columns: auto 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  body.ipakodo-home-v45 *,
  body.ipakodo-home-v45 *::before,
  body.ipakodo-home-v45 *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  [data-reveal] { opacity: 1; transform: none; }
}

@media print {
  #navbar,
  #footer,
  .home-hero,
  .music-section,
  .mini-player,
  .home-back-to-top,
  #home-scroll-progress { display: none !important; }
  body.ipakodo-home-v45 main { padding-top: 0; }
  .home-section { padding: 1.5rem 0; break-inside: avoid; }
}

/* =========================================================
   IPAKODO HOMEPAGE V4.7 — USER-EDITED SIGNATURE ENHANCEMENT
   Additive visual layer only. Existing content and behaviours remain intact.
   ========================================================= */
body.ipakodo-home-v47 {
  --home-primary: #1e3a8a;
  --home-primary-deep: #0a1e5c;
  --home-secondary: #0ea5e9;
  --home-accent: #fbbf24;
  --home-accent-soft: #fde68a;
  --home-soft: #e0f2fe;
  --home-surface: #ffffff;
  --home-surface-soft: #f7fbff;
  --home-ink: #0f172a;
  --home-muted: #5f6f86;
  --home-border: rgba(30, 58, 138, .12);
  --home-shadow-sm: 0 18px 42px -30px rgba(10, 30, 92, .45);
  --home-shadow: 0 30px 78px -42px rgba(10, 30, 92, .62);
  --home-shadow-lg: 0 48px 120px -52px rgba(10, 30, 92, .78);
  background:
    radial-gradient(circle at 3% 7%, rgba(14, 165, 233, .085), transparent 30rem),
    radial-gradient(circle at 96% 26%, rgba(251, 191, 36, .075), transparent 27rem),
    linear-gradient(180deg, #f8fbff 0%, #f7f9fd 48%, #f8fafc 100%);
}
body.ipakodo-home-v47::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -2;
  pointer-events: none;
  opacity: .28;
  background-image:
    linear-gradient(rgba(30, 58, 138, .025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(30, 58, 138, .025) 1px, transparent 1px);
  background-size: 42px 42px;
  mask-image: linear-gradient(to bottom, rgba(0,0,0,.7), transparent 70%);
}
body.ipakodo-home-v47 main { overflow: clip; }
body.ipakodo-home-v47 .home-container { width: min(calc(100% - 2.25rem), 80rem); }
body.ipakodo-home-v47 .home-section { padding-block: clamp(4.6rem, 8vw, 7.6rem); }
body.ipakodo-home-v47 .home-section::after { left: 8%; right: 8%; }
body.ipakodo-home-v47 .section-heading { max-width: 48rem; margin-inline: auto; }
body.ipakodo-home-v47 .section-heading h2,
body.ipakodo-home-v47 .home-intro-copy h2,
body.ipakodo-home-v47 .president-message h2,
body.ipakodo-home-v47 .membership-contribution-copy h2,
body.ipakodo-home-v47 .transparency-copy h2 {
  font-size: clamp(2rem, 4.1vw, 3.5rem);
  line-height: 1.08;
  letter-spacing: -.045em;
}
body.ipakodo-home-v47 .section-kicker {
  gap: .62rem;
  padding: .52rem .78rem;
  border: 1px solid rgba(30, 58, 138, .1);
  border-radius: 999px;
  background: rgba(255, 255, 255, .68);
  box-shadow: 0 10px 28px -24px rgba(10, 30, 92, .7);
  backdrop-filter: blur(12px);
}
body.ipakodo-home-v47 .section-kicker-light {
  color: rgba(255,255,255,.88);
  border-color: rgba(255,255,255,.18);
  background: rgba(255,255,255,.08);
}

/* Hero: refined without restoring removed user content. */
body.ipakodo-home-v47 .home-hero {
  border-bottom-width: 3px;
  border-bottom-color: rgba(251, 191, 36, .74);
  box-shadow: 0 38px 95px -58px rgba(10, 30, 92, .98);
}
body.ipakodo-home-v47 .home-hero::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  z-index: 5;
  height: 22%;
  pointer-events: none;
  background: linear-gradient(to top, rgba(5, 20, 64, .22), transparent);
}
body.ipakodo-home-v47 .heroSwiper { height: clamp(35rem, 74svh, 47rem); min-height: 35rem; }
body.ipakodo-home-v47 .hero-media { filter: saturate(1.03) contrast(1.02); }
body.ipakodo-home-v47 .hero-overlay-balanced {
  background:
    linear-gradient(90deg, rgba(5, 20, 64, .86) 0%, rgba(10, 30, 92, .52) 46%, rgba(10, 30, 92, .16) 100%),
    linear-gradient(180deg, rgba(5,20,64,.08), rgba(5,20,64,.25));
}
body.ipakodo-home-v47 .hero-content { width: min(calc(100% - 3rem), 80rem); }
body.ipakodo-home-v47 .hero-copy { max-width: 44rem; }
body.ipakodo-home-v47 .hero-copy h1,
body.ipakodo-home-v47 .hero-copy h2 {
  max-width: 16ch;
  font-size: clamp(2.35rem, 5.25vw, 4.45rem);
  line-height: 1.035;
  letter-spacing: -.052em;
  text-shadow: 0 8px 30px rgba(3, 15, 48, .52);
}
body.ipakodo-home-v47 .hero-copy p { max-width: 39rem; font-size: clamp(.98rem, 1.55vw, 1.16rem); }
body.ipakodo-home-v47 .hero-actions:empty { display: none; margin: 0; }
body.ipakodo-home-v47 .hero-eyebrow {
  border-color: rgba(255,255,255,.27);
  background: rgba(10,30,92,.34);
  box-shadow: inset 0 1px rgba(255,255,255,.08), 0 16px 42px -30px rgba(0,0,0,.9);
}
body.ipakodo-home-v47 .hero-button {
  border-radius: 1rem;
  box-shadow: inset 0 1px rgba(255,255,255,.18), 0 20px 44px -28px rgba(0,0,0,.72);
}
body.ipakodo-home-v47 .home-hero .swiper-button-next,
body.ipakodo-home-v47 .home-hero .swiper-button-prev {
  width: 3.15rem;
  height: 3.15rem;
  box-shadow: inset 0 1px rgba(255,255,255,.15), 0 18px 40px -28px rgba(0,0,0,.9);
}
body.ipakodo-home-v47 .home-hero .swiper-pagination { bottom: 1.7rem !important; z-index: 8; }

/* Intro: premium editorial panel. */
body.ipakodo-home-v47 .home-intro-section {
  background:
    radial-gradient(circle at 82% 20%, rgba(14,165,233,.12), transparent 23rem),
    linear-gradient(180deg, #fff, #f8fbff);
}
body.ipakodo-home-v47 .home-intro-grid { gap: clamp(2.4rem, 5vw, 5rem); }
body.ipakodo-home-v47 .home-intro-copy {
  position: relative;
  padding: clamp(1.5rem, 3vw, 2.3rem);
  border: 1px solid rgba(30,58,138,.1);
  border-radius: 1.75rem;
  background: rgba(255,255,255,.8);
  box-shadow: var(--home-shadow);
  backdrop-filter: blur(12px);
}
body.ipakodo-home-v47 .home-intro-copy::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  border-radius: 1.75rem 0 0 1.75rem;
  background: linear-gradient(var(--home-secondary), var(--home-accent));
}
body.ipakodo-home-v47 .intro-metrics { gap: 1rem; }
body.ipakodo-home-v47 .intro-metrics article {
  min-height: 12rem;
  border-color: rgba(30,58,138,.11);
  background: linear-gradient(155deg, rgba(255,255,255,.98), rgba(240,249,255,.84));
  box-shadow: var(--home-shadow-sm);
}
body.ipakodo-home-v47 .intro-metrics article::after {
  content: "";
  position: absolute;
  inset: auto -2rem -2.8rem auto;
  width: 7rem;
  height: 7rem;
  border-radius: 999px;
  background: rgba(14,165,233,.075);
}
body.ipakodo-home-v47 .intro-metrics article:hover { transform: translateY(-6px); box-shadow: var(--home-shadow); }

/* President section. */
body.ipakodo-home-v47 .president-section {
  background:
    linear-gradient(120deg, rgba(224,242,254,.74), rgba(255,255,255,.94) 50%, rgba(254,243,199,.34));
}
body.ipakodo-home-v47 .president-layout { gap: clamp(2.5rem, 6vw, 6rem); }
body.ipakodo-home-v47 .president-portrait-card {
  border-color: rgba(30,58,138,.12);
  background: linear-gradient(160deg, #fff, #f3f9ff);
  box-shadow: var(--home-shadow-lg);
}
body.ipakodo-home-v47 .president-portrait-card::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.76);
}
body.ipakodo-home-v47 .president-photo-wrap img { transition: transform .65s cubic-bezier(.2,.75,.25,1); }
body.ipakodo-home-v47 .president-portrait-card:hover .president-photo-wrap img { transform: scale(1.035); }
body.ipakodo-home-v47 .president-message {
  padding: clamp(1.2rem, 2vw, 2rem) 0;
}
body.ipakodo-home-v47 .president-copy {
  position: relative;
  padding-left: 1.25rem;
  border-left: 3px solid rgba(14,165,233,.24);
}

/* Reunion gallery and story cards. */
body.ipakodo-home-v47 .reunion-section {
  background:
    radial-gradient(circle at 8% 15%, rgba(251,191,36,.08), transparent 20rem),
    #f8fafc;
}
body.ipakodo-home-v47 .reunion-gallery { gap: .85rem; }
body.ipakodo-home-v47 .gallery-item {
  border: 1px solid rgba(255,255,255,.7);
  box-shadow: 0 28px 70px -44px rgba(10,30,92,.85);
}
body.ipakodo-home-v47 .gallery-item::after {
  background: linear-gradient(180deg, transparent 36%, rgba(5,20,64,.78));
}
body.ipakodo-home-v47 .gallery-item:hover { transform: translateY(-4px); box-shadow: 0 38px 86px -44px rgba(10,30,92,.9); }
body.ipakodo-home-v47 .reunion-story-card {
  border-color: rgba(30,58,138,.11);
  background: linear-gradient(150deg, #fff, #f8fbff);
  box-shadow: var(--home-shadow-sm);
}
body.ipakodo-home-v47 .reunion-story-card:hover { transform: translateY(-6px); box-shadow: var(--home-shadow); }

/* Music: preserve player mechanics, elevate presentation. */
body.ipakodo-home-v47 .music-section {
  background:
    radial-gradient(circle at 13% 18%, rgba(14,165,233,.22), transparent 24rem),
    radial-gradient(circle at 90% 78%, rgba(251,191,36,.15), transparent 25rem),
    linear-gradient(145deg, #071743, #0a1e5c 52%, #102d78);
}
body.ipakodo-home-v47 .music-section::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: .2;
  background-image: radial-gradient(rgba(255,255,255,.5) .75px, transparent .75px);
  background-size: 22px 22px;
}
body.ipakodo-home-v47 .music-grid { position: relative; z-index: 1; }
body.ipakodo-home-v47 .music-card {
  border-color: rgba(255,255,255,.16);
  background: linear-gradient(155deg, rgba(255,255,255,.13), rgba(255,255,255,.055));
  box-shadow: inset 0 1px rgba(255,255,255,.12), 0 35px 72px -42px rgba(0,0,0,.92);
  backdrop-filter: blur(18px);
}
body.ipakodo-home-v47 .music-card::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  background: linear-gradient(120deg, rgba(255,255,255,.08), transparent 35%);
}
body.ipakodo-home-v47 .music-card:hover { transform: translateY(-8px); border-color: rgba(251,191,36,.42); }
body.ipakodo-home-v47 .music-card.is-playing {
  border-color: rgba(251,191,36,.82);
  box-shadow: 0 0 0 1px rgba(251,191,36,.22), 0 42px 90px -42px rgba(14,165,233,.85);
}
body.ipakodo-home-v47 .music-card-actions button,
body.ipakodo-home-v47 .music-card-actions a { min-height: 3rem; border-radius: .9rem; }
body.ipakodo-home-v47 .music-more-card {
  border-color: rgba(255,255,255,.16);
  background: rgba(255,255,255,.09);
  box-shadow: inset 0 1px rgba(255,255,255,.1);
  backdrop-filter: blur(16px);
}

/* Activities and birthdays. */
body.ipakodo-home-v47 .activities-section {
  background: linear-gradient(180deg, #fff, #f7fbff);
}
body.ipakodo-home-v47 .birthdays-panel {
  border-color: rgba(251,191,36,.28);
  background:
    radial-gradient(circle at 94% 4%, rgba(251,191,36,.18), transparent 14rem),
    linear-gradient(145deg, #fffdf5, #fff 60%, #f3faff);
  box-shadow: var(--home-shadow);
}
body.ipakodo-home-v47 .birthdays-panel-head {
  padding-bottom: 1.2rem;
  border-bottom: 1px solid rgba(30,58,138,.09);
}
body.ipakodo-home-v47 .birthday-grid > * { box-shadow: 0 22px 48px -36px rgba(10,30,92,.75); }

/* Membership contribution centre. */
body.ipakodo-home-v47 .membership-contribution-section {
  background:
    radial-gradient(circle at 15% 20%, rgba(14,165,233,.12), transparent 26rem),
    linear-gradient(135deg, #eef8ff, #fff 50%, #fff9e8);
}
body.ipakodo-home-v47 .membership-contribution-grid { gap: clamp(2.2rem, 5vw, 5rem); }
body.ipakodo-home-v47 .membership-contribution-copy {
  position: relative;
  padding: clamp(1.5rem, 3vw, 2.25rem);
  border: 1px solid rgba(30,58,138,.1);
  border-radius: 1.7rem;
  background: rgba(255,255,255,.76);
  box-shadow: var(--home-shadow-sm);
  backdrop-filter: blur(12px);
}
body.ipakodo-home-v47 .membership-greeting {
  width: fit-content;
  padding: .48rem .75rem;
  border-radius: 999px;
  color: var(--home-primary-deep);
  background: rgba(251,191,36,.22);
  box-shadow: inset 0 0 0 1px rgba(251,191,36,.24);
}
body.ipakodo-home-v47 .membership-benefits span {
  border-color: rgba(30,58,138,.1);
  background: linear-gradient(150deg, #fff, #f5faff);
  box-shadow: 0 16px 36px -30px rgba(10,30,92,.6);
}
body.ipakodo-home-v47 .membership-account-card {
  border-color: rgba(255,255,255,.18);
  background:
    radial-gradient(circle at 100% 0, rgba(251,191,36,.24), transparent 13rem),
    linear-gradient(145deg, #0a1e5c, #12357f);
  box-shadow: 0 42px 100px -48px rgba(10,30,92,.98);
}
body.ipakodo-home-v47 .membership-account-card::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  box-shadow: inset 0 1px rgba(255,255,255,.14);
}
body.ipakodo-home-v47 .membership-financial-grid > div {
  background: rgba(255,255,255,.09);
  box-shadow: inset 0 1px rgba(255,255,255,.08);
}

/* Transparency and explore. */
body.ipakodo-home-v47 .transparency-section {
  background:
    radial-gradient(circle at 90% 14%, rgba(14,165,233,.09), transparent 25rem),
    #fff;
}
body.ipakodo-home-v47 .transparency-copy {
  padding: clamp(1.7rem, 3vw, 2.6rem);
  border: 1px solid rgba(30,58,138,.1);
  border-radius: 1.75rem;
  background: linear-gradient(145deg, #fff, #f7fbff);
  box-shadow: var(--home-shadow);
}
body.ipakodo-home-v47 .transparency-cards article {
  border-color: rgba(30,58,138,.11);
  background: rgba(255,255,255,.88);
  box-shadow: var(--home-shadow-sm);
}
body.ipakodo-home-v47 .transparency-cards article:hover { transform: translateX(6px); box-shadow: var(--home-shadow); }
body.ipakodo-home-v47 .explore-section {
  background: linear-gradient(180deg, #f7fbff, #fff);
}
body.ipakodo-home-v47 .explore-grid > a {
  border-color: rgba(30,58,138,.1);
  background:
    radial-gradient(circle at 100% 0, rgba(14,165,233,.09), transparent 10rem),
    linear-gradient(150deg, #fff, #f8fbff);
  box-shadow: var(--home-shadow-sm);
}
body.ipakodo-home-v47 .explore-grid > a:hover {
  transform: translateY(-8px);
  border-color: rgba(14,165,233,.25);
  box-shadow: var(--home-shadow);
}

/* Final CTA and utility UI. */
body.ipakodo-home-v47 .final-cta-section {
  padding: clamp(3.8rem, 7vw, 6.5rem) 0;
  background: linear-gradient(180deg, #fff, #eff7ff);
}
body.ipakodo-home-v47 .final-cta-card {
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.14);
  background:
    radial-gradient(circle at 8% 0, rgba(14,165,233,.28), transparent 22rem),
    radial-gradient(circle at 96% 100%, rgba(251,191,36,.2), transparent 20rem),
    linear-gradient(135deg, #071743, #0a1e5c 58%, #12357f);
  box-shadow: 0 46px 110px -50px rgba(10,30,92,.98);
}
body.ipakodo-home-v47 .mini-player {
  border: 1px solid rgba(30,58,138,.13);
  background: rgba(255,255,255,.93);
  box-shadow: 0 32px 76px -32px rgba(10,30,92,.72);
  backdrop-filter: blur(20px) saturate(1.25);
}
body.ipakodo-home-v47 .mini-player-play {
  box-shadow: 0 14px 30px -18px rgba(30,58,138,.9);
}
body.ipakodo-home-v47 .gallery-lightbox {
  border: 1px solid rgba(255,255,255,.18);
  background: rgba(5,15,40,.92);
  box-shadow: 0 42px 120px rgba(0,0,0,.54);
  backdrop-filter: blur(22px);
}
body.ipakodo-home-v47 .home-back-to-top {
  box-shadow: 0 18px 40px -22px rgba(10,30,92,.85);
}

/* Coherent motion. */
@media (hover: hover) and (pointer: fine) {
  body.ipakodo-home-v47 .premium-button,
  body.ipakodo-home-v47 .text-link,
  body.ipakodo-home-v47 .music-more-card a,
  body.ipakodo-home-v47 .birthdays-panel-head a {
    transition: transform .22s ease, box-shadow .22s ease, color .22s ease, background .22s ease, border-color .22s ease;
  }
  body.ipakodo-home-v47 .premium-button:hover { transform: translateY(-3px); }
}

/* Tablet and mobile refinement. */
@media (max-width: 900px) {
  body.ipakodo-home-v47 .heroSwiper { height: clamp(33rem, 70svh, 42rem); min-height: 33rem; }
  body.ipakodo-home-v47 .hero-content { width: min(calc(100% - 2rem), 80rem); padding-bottom: 4.8rem; }
  body.ipakodo-home-v47 .hero-copy-right { text-align: left; margin-left: 0; }
  body.ipakodo-home-v47 .hero-copy-right h1,
  body.ipakodo-home-v47 .hero-copy-right h2,
  body.ipakodo-home-v47 .hero-copy-right p { margin-left: 0; }
  body.ipakodo-home-v47 .hero-actions-right { justify-content: flex-start; }
  body.ipakodo-home-v47 .home-intro-copy,
  body.ipakodo-home-v47 .membership-contribution-copy,
  body.ipakodo-home-v47 .transparency-copy { padding: 1.35rem; }
  body.ipakodo-home-v47 .transparency-cards article:hover { transform: translateY(-4px); }
}

@media (max-width: 640px) {
  body.ipakodo-home-v47 { background: #f8fafc; }
  body.ipakodo-home-v47 .home-container { width: min(calc(100% - 1.2rem), 80rem); }
  body.ipakodo-home-v47 .home-section { padding-block: 4rem; }
  body.ipakodo-home-v47 .heroSwiper { height: min(42rem, 76svh); min-height: 31rem; }
  body.ipakodo-home-v47 .hero-content {
    align-items: flex-end;
    width: calc(100% - 1.35rem);
    padding: 4rem 0 4.3rem;
  }
  body.ipakodo-home-v47 .hero-copy,
  body.ipakodo-home-v47 .hero-copy-center,
  body.ipakodo-home-v47 .hero-copy-right { text-align: left; }
  body.ipakodo-home-v47 .hero-copy h1,
  body.ipakodo-home-v47 .hero-copy h2 {
    max-width: 15ch;
    margin-inline: 0;
    font-size: clamp(2.05rem, 10vw, 3rem);
    line-height: 1.06;
  }
  body.ipakodo-home-v47 .hero-copy p { margin-inline: 0; font-size: .96rem; line-height: 1.62; }
  body.ipakodo-home-v47 .hero-actions,
  body.ipakodo-home-v47 .hero-actions-center,
  body.ipakodo-home-v47 .hero-actions-right { justify-content: flex-start; width: 100%; }
  body.ipakodo-home-v47 .hero-button { width: 100%; min-height: 3.15rem; }
  body.ipakodo-home-v47 .home-hero .swiper-button-next,
  body.ipakodo-home-v47 .home-hero .swiper-button-prev { display: none; }
  body.ipakodo-home-v47 .home-hero .swiper-pagination { bottom: 1rem !important; }
  body.ipakodo-home-v47 .home-intro-copy,
  body.ipakodo-home-v47 .membership-contribution-copy,
  body.ipakodo-home-v47 .transparency-copy,
  body.ipakodo-home-v47 .president-portrait-card,
  body.ipakodo-home-v47 .birthdays-panel,
  body.ipakodo-home-v47 .membership-account-card,
  body.ipakodo-home-v47 .final-cta-card { border-radius: 1.35rem; }
  body.ipakodo-home-v47 .intro-metrics { grid-template-columns: 1fr 1fr; }
  body.ipakodo-home-v47 .intro-metrics article { min-height: 10.7rem; padding: 1.15rem; }
  body.ipakodo-home-v47 .reunion-gallery { gap: .65rem; }
  body.ipakodo-home-v47 .music-card { border-radius: 1.25rem; }
  body.ipakodo-home-v47 .membership-benefits { grid-template-columns: 1fr; }
  body.ipakodo-home-v47 .membership-actions,
  body.ipakodo-home-v47 .final-cta-actions { display: grid; grid-template-columns: 1fr; }
  body.ipakodo-home-v47 .membership-actions .premium-button,
  body.ipakodo-home-v47 .final-cta-actions .premium-button { width: 100%; }
  body.ipakodo-home-v47 .mini-player {
    left: .65rem;
    right: .65rem;
    bottom: max(.65rem, env(safe-area-inset-bottom));
    width: auto;
    border-radius: 1.15rem;
  }
}

@media (max-width: 390px) {
  body.ipakodo-home-v47 .intro-metrics { grid-template-columns: 1fr; }
  body.ipakodo-home-v47 .hero-eyebrow { max-width: 100%; white-space: normal; line-height: 1.45; }
  body.ipakodo-home-v47 .section-kicker { white-space: normal; line-height: 1.45; }
}

@media (prefers-reduced-motion: reduce) {
  body.ipakodo-home-v47 .hero-media,
  body.ipakodo-home-v47 .gallery-item img,
  body.ipakodo-home-v47 .president-photo-wrap img { transition: none !important; transform: none !important; }
}

/* =========================================================
   IPAKODO HOMEPAGE V4.8 — COMPLETE MOBILE-FIRST OPTIMISATION
   Preserves V4.7 content and behaviour while strengthening
   handheld layout, safe areas, touch interaction and performance.
   ========================================================= */
:root {
  --home-safe-top: env(safe-area-inset-top, 0px);
  --home-safe-right: env(safe-area-inset-right, 0px);
  --home-safe-bottom: env(safe-area-inset-bottom, 0px);
  --home-safe-left: env(safe-area-inset-left, 0px);
  --home-mobile-gutter: clamp(.75rem, 3.8vw, 1.15rem);
  --home-mobile-card-radius: 1.25rem;
  --home-viewport-height: 100dvh;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  overflow-x: hidden;
}

body.ipakodo-home-v48 {
  max-width: 100%;
  overscroll-behavior-x: none;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body.ipakodo-home-v48 main,
body.ipakodo-home-v48 section,
body.ipakodo-home-v48 article,
body.ipakodo-home-v48 aside,
body.ipakodo-home-v48 div {
  min-width: 0;
}

body.ipakodo-home-v48 img {
  display: block;
  height: auto;
}

body.ipakodo-home-v48 button,
body.ipakodo-home-v48 a {
  touch-action: manipulation;
}

body.ipakodo-home-v48 button,
body.ipakodo-home-v48 .premium-button,
body.ipakodo-home-v48 .hero-button,
body.ipakodo-home-v48 .music-card-actions a,
body.ipakodo-home-v48 .music-card-actions button {
  min-height: 44px;
}

body.ipakodo-home-v48 .home-container {
  padding-left: max(0px, var(--home-safe-left));
  padding-right: max(0px, var(--home-safe-right));
}

body.ipakodo-home-v48 .home-section {
  content-visibility: auto;
  contain-intrinsic-size: 1px 760px;
}

body.ipakodo-home-v48 .home-hero,
body.ipakodo-home-v48 .music-section,
body.ipakodo-home-v48 .membership-contribution-section {
  content-visibility: visible;
  contain-intrinsic-size: auto;
}

/* Tablet landscape and smaller laptops. */
@media (max-width: 1024px) {
  :root { --home-nav-offset: 72px; }

  body.ipakodo-home-v48 .home-section {
    padding-block: clamp(3.75rem, 8vw, 5.25rem);
  }

  body.ipakodo-home-v48 .home-intro-grid,
  body.ipakodo-home-v48 .president-layout,
  body.ipakodo-home-v48 .membership-contribution-grid,
  body.ipakodo-home-v48 .transparency-layout {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  body.ipakodo-home-v48 .home-intro-copy h2,
  body.ipakodo-home-v48 .president-message h2,
  body.ipakodo-home-v48 .membership-contribution-copy h2,
  body.ipakodo-home-v48 .transparency-copy h2 {
    max-width: 18ch;
  }

  body.ipakodo-home-v48 .president-layout {
    align-items: start;
  }

  body.ipakodo-home-v48 .president-portrait-card {
    width: min(100%, 31rem);
    margin-inline: auto;
  }

  body.ipakodo-home-v48 .music-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body.ipakodo-home-v48 .music-card:last-child {
    grid-column: 1 / -1;
    min-height: 20rem;
  }

  body.ipakodo-home-v48 .explore-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Full handheld experience. */
@media (max-width: 767px) {
  :root {
    --home-nav-offset: 66px;
    --home-radius-sm: .85rem;
    --home-radius: 1.1rem;
    --home-radius-lg: 1.35rem;
  }

  html {
    scroll-padding-top: calc(var(--home-nav-offset) + .75rem + var(--home-safe-top));
  }

  body.ipakodo-home-v48 main {
    padding-top: calc(var(--home-nav-offset) + var(--home-safe-top));
  }

  body.ipakodo-home-v48 .home-container {
    width: calc(100% - (var(--home-mobile-gutter) * 2));
  }

  body.ipakodo-home-v48 .home-section {
    padding-block: clamp(3.2rem, 12vw, 4.35rem);
  }

  body.ipakodo-home-v48 .home-section::after {
    left: var(--home-mobile-gutter);
    right: var(--home-mobile-gutter);
  }

  body.ipakodo-home-v48 .section-heading {
    margin-bottom: 2rem;
  }

  body.ipakodo-home-v48 .section-heading h2,
  body.ipakodo-home-v48 .home-intro-copy h2,
  body.ipakodo-home-v48 .president-message h2,
  body.ipakodo-home-v48 .membership-contribution-copy h2,
  body.ipakodo-home-v48 .transparency-copy h2,
  body.ipakodo-home-v48 .final-cta-card h2 {
    margin-top: .65rem;
    font-size: clamp(1.8rem, 8.2vw, 2.45rem);
    line-height: 1.12;
    letter-spacing: -.035em;
  }

  body.ipakodo-home-v48 .section-heading p,
  body.ipakodo-home-v48 .home-intro-copy > p,
  body.ipakodo-home-v48 .transparency-copy > p,
  body.ipakodo-home-v48 .final-cta-card p,
  body.ipakodo-home-v48 .membership-lead {
    font-size: .94rem;
    line-height: 1.7;
  }

  body.ipakodo-home-v48 .section-kicker {
    max-width: 100%;
    gap: .45rem;
    font-size: .64rem;
    letter-spacing: .105em;
    line-height: 1.45;
    white-space: normal;
  }

  body.ipakodo-home-v48 .premium-button,
  body.ipakodo-home-v48 .hero-button {
    width: 100%;
    min-height: 48px;
    padding: .85rem 1rem;
    border-radius: .9rem;
    font-size: .86rem;
  }

  /* Hero: true mobile viewport, safe-area aware and content-safe. */
  body.ipakodo-home-v48 .home-hero {
    border-bottom-width: 3px;
  }

  body.ipakodo-home-v48 .heroSwiper {
    height: clamp(34rem, calc(var(--home-viewport-height) - var(--home-nav-offset) - var(--home-safe-top)), 45rem);
    min-height: 34rem;
    max-height: 45rem;
  }

  body.ipakodo-home-v48 .hero-slide {
    min-height: 34rem;
  }

  body.ipakodo-home-v48 .hero-content,
  body.ipakodo-home-v48 .hero-content-bottom,
  body.ipakodo-home-v48 .hero-content-center,
  body.ipakodo-home-v48 .hero-content-right,
  body.ipakodo-home-v48 .hero-content-left {
    align-items: flex-end;
    justify-content: flex-start;
    width: calc(100% - (var(--home-mobile-gutter) * 2));
    padding: 4rem 0 calc(4.25rem + var(--home-safe-bottom));
  }

  body.ipakodo-home-v48 .hero-copy,
  body.ipakodo-home-v48 .hero-copy-center,
  body.ipakodo-home-v48 .hero-copy-right {
    width: 100%;
    max-width: 34rem;
    margin: 0;
    text-align: left;
  }

  body.ipakodo-home-v48 .hero-copy h1,
  body.ipakodo-home-v48 .hero-copy h2,
  body.ipakodo-home-v48 .hero-copy-center h1,
  body.ipakodo-home-v48 .hero-copy-center h2,
  body.ipakodo-home-v48 .hero-copy-right h1,
  body.ipakodo-home-v48 .hero-copy-right h2 {
    max-width: 14ch;
    margin-inline: 0;
    font-size: clamp(2rem, 10vw, 2.85rem);
    line-height: 1.05;
  }

  body.ipakodo-home-v48 .hero-copy p,
  body.ipakodo-home-v48 .hero-copy-center p,
  body.ipakodo-home-v48 .hero-copy-right p {
    max-width: 31rem;
    margin: 1rem 0 0;
    font-size: clamp(.9rem, 3.8vw, 1rem);
    line-height: 1.62;
  }

  body.ipakodo-home-v48 .hero-eyebrow {
    max-width: 100%;
    margin-bottom: .85rem;
    padding: .45rem .65rem;
    font-size: .61rem;
    letter-spacing: .085em;
    line-height: 1.45;
    white-space: normal;
  }

  body.ipakodo-home-v48 .hero-actions,
  body.ipakodo-home-v48 .hero-actions-center,
  body.ipakodo-home-v48 .hero-actions-right {
    display: grid;
    grid-template-columns: 1fr;
    justify-content: stretch;
    width: 100%;
    gap: .65rem;
    margin-top: 1.35rem;
  }

  body.ipakodo-home-v48 .hero-emblem {
    width: 4rem;
    margin: 0 0 .8rem;
  }

  body.ipakodo-home-v48 .hero-orb {
    display: none;
  }

  body.ipakodo-home-v48 .hero-overlay-balanced {
    background: linear-gradient(180deg, rgba(5,20,64,.13), rgba(5,20,64,.34) 38%, rgba(5,20,64,.92) 100%);
  }

  body.ipakodo-home-v48 .hero-overlay-reunion,
  body.ipakodo-home-v48 .hero-overlay-deep {
    background: linear-gradient(180deg, rgba(5,20,64,.12), rgba(5,20,64,.4) 42%, rgba(5,20,64,.94));
  }

  body.ipakodo-home-v48 .hero-slide:nth-child(1) .hero-media,
  body.ipakodo-home-v48 .hero-slide:nth-child(3) .hero-media {
    background-position: center center;
  }

  body.ipakodo-home-v48 .hero-slide:nth-child(2) .hero-media {
    background-position: 56% center;
  }

  body.ipakodo-home-v48 .hero-slide:nth-child(4) .hero-media,
  body.ipakodo-home-v48 .hero-slide:nth-child(5) .hero-media,
  body.ipakodo-home-v48 .hero-slide:nth-child(6) .hero-media {
    background-position: center top;
  }

  body.ipakodo-home-v48 .home-hero .swiper-button-next,
  body.ipakodo-home-v48 .home-hero .swiper-button-prev {
    display: none;
  }

  body.ipakodo-home-v48 .home-hero .swiper-pagination {
    bottom: calc(.8rem + var(--home-safe-bottom)) !important;
    padding: .35rem .5rem;
  }

  body.ipakodo-home-v48 .home-hero .swiper-pagination-bullet {
    width: .5rem;
    height: .5rem;
    margin: 0 .24rem !important;
  }

  body.ipakodo-home-v48 .home-hero .swiper-pagination-bullet-active {
    width: 1.45rem;
  }

  /* Introduction. */
  body.ipakodo-home-v48 .home-intro-grid {
    gap: 1.8rem;
  }

  body.ipakodo-home-v48 .home-intro-copy,
  body.ipakodo-home-v48 .membership-contribution-copy,
  body.ipakodo-home-v48 .transparency-copy {
    padding: 1.15rem;
    border-radius: var(--home-mobile-card-radius);
  }

  body.ipakodo-home-v48 .intro-actions,
  body.ipakodo-home-v48 .membership-actions,
  body.ipakodo-home-v48 .final-cta-actions {
    display: grid;
    grid-template-columns: 1fr;
    gap: .65rem;
  }

  body.ipakodo-home-v48 .intro-metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .65rem;
  }

  body.ipakodo-home-v48 .intro-metrics article {
    min-height: 9.5rem;
    padding: 1rem;
    border-radius: 1rem;
  }

  body.ipakodo-home-v48 .intro-metrics strong {
    margin-top: .7rem;
    font-size: clamp(1.45rem, 7vw, 1.9rem);
  }

  body.ipakodo-home-v48 .intro-metrics small {
    font-size: .72rem;
  }

  body.ipakodo-home-v48 .intro-metrics p {
    font-size: .7rem;
    line-height: 1.45;
  }

  /* President section. */
  body.ipakodo-home-v48 .president-layout {
    gap: 1.7rem;
  }

  body.ipakodo-home-v48 .president-portrait-card {
    width: 100%;
    padding: .8rem;
    border-radius: var(--home-mobile-card-radius);
  }

  body.ipakodo-home-v48 .president-photo-wrap {
    aspect-ratio: 4 / 4.7;
    max-height: 30rem;
  }

  body.ipakodo-home-v48 .president-identity {
    padding: .9rem .25rem .2rem;
  }

  body.ipakodo-home-v48 .president-identity h3 {
    font-size: 1.15rem;
  }

  body.ipakodo-home-v48 .president-seal {
    top: 1.25rem;
    right: 1.25rem;
    width: 2.65rem;
    height: 2.65rem;
  }

  body.ipakodo-home-v48 .president-copy {
    margin-top: 1.2rem;
    padding-left: .9rem;
  }

  body.ipakodo-home-v48 .president-copy p {
    font-size: .91rem;
    line-height: 1.68;
  }

  /* Reunion gallery becomes a thumb-friendly snap rail. */
  body.ipakodo-home-v48 .reunion-gallery {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: min(86vw, 23rem);
    grid-template-columns: none;
    grid-auto-rows: 20rem;
    gap: .75rem;
    margin-inline: calc(var(--home-mobile-gutter) * -1);
    padding: .1rem var(--home-mobile-gutter) 1rem;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: var(--home-mobile-gutter);
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }

  body.ipakodo-home-v48 .reunion-gallery::-webkit-scrollbar {
    display: none;
  }

  body.ipakodo-home-v48 .gallery-item,
  body.ipakodo-home-v48 .gallery-item-large,
  body.ipakodo-home-v48 .gallery-item-wide {
    grid-column: auto;
    grid-row: auto;
    min-height: 20rem;
    border-radius: var(--home-mobile-card-radius);
    scroll-snap-align: center;
  }

  body.ipakodo-home-v48 .gallery-item span {
    left: .9rem;
    right: .9rem;
    bottom: .9rem;
  }

  body.ipakodo-home-v48 .reunion-story-grid {
    grid-template-columns: 1fr;
    gap: .75rem;
    margin-top: 1.35rem;
  }

  body.ipakodo-home-v48 .reunion-story-card {
    display: grid;
    grid-template-columns: 2.8rem 1fr;
    gap: 0 .8rem;
    align-items: start;
    padding: 1rem;
    border-radius: 1rem;
  }

  body.ipakodo-home-v48 .reunion-story-card .story-icon {
    grid-row: 1 / 3;
  }

  body.ipakodo-home-v48 .reunion-story-card h3 {
    margin-top: .05rem;
  }

  body.ipakodo-home-v48 .reunion-story-card p {
    margin-top: .3rem;
  }

  /* Music cards. */
  body.ipakodo-home-v48 .music-section::before {
    background-size: 32px 32px;
  }

  body.ipakodo-home-v48 .music-grid {
    grid-template-columns: 1fr;
    gap: .8rem;
  }

  body.ipakodo-home-v48 .music-card,
  body.ipakodo-home-v48 .music-card:last-child {
    grid-column: auto;
    min-height: 0;
    border-radius: var(--home-mobile-card-radius);
  }

  body.ipakodo-home-v48 .music-card-top {
    padding: 1rem 1rem .25rem;
  }

  body.ipakodo-home-v48 .music-card-copy {
    padding: 1rem;
  }

  body.ipakodo-home-v48 .music-card-copy h3 {
    font-size: 1.45rem;
  }

  body.ipakodo-home-v48 .music-card-copy p {
    font-size: .86rem;
    line-height: 1.6;
  }

  body.ipakodo-home-v48 .music-card-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .55rem;
    padding: .85rem 1rem 1rem;
  }

  body.ipakodo-home-v48 .music-card-actions button,
  body.ipakodo-home-v48 .music-card-actions a {
    width: 100%;
    min-width: 0;
    padding-inline: .65rem;
    font-size: .76rem;
  }

  body.ipakodo-home-v48 .music-more-card {
    align-items: flex-start;
    flex-direction: column;
    gap: 1rem;
    padding: 1rem;
    border-radius: 1rem;
  }

  body.ipakodo-home-v48 .music-more-card > a {
    width: 100%;
    justify-content: center;
  }

  /* Activities and birthday cards. */
  body.ipakodo-home-v48 .birthdays-panel {
    padding: 1rem;
    border-radius: var(--home-mobile-card-radius);
  }

  body.ipakodo-home-v48 .birthdays-panel-head {
    align-items: flex-start;
    flex-direction: column;
    gap: .75rem;
    padding-bottom: .85rem;
  }

  body.ipakodo-home-v48 .birthdays-panel-head h3 {
    font-size: 1.35rem;
  }

  body.ipakodo-home-v48 .birthdays-panel-head > a {
    min-height: 44px;
    padding: .65rem .8rem;
    border: 1px solid rgba(30,58,138,.14);
    border-radius: .8rem;
    background: rgba(255,255,255,.76);
  }

  body.ipakodo-home-v48 .birthday-grid {
    grid-template-columns: 1fr;
    gap: .75rem;
  }

  body.ipakodo-home-v48 .birthday-grid > * {
    width: 100%;
    max-width: none;
  }

  body.ipakodo-home-v48 .home-countdown-badge {
    max-width: calc(100% - 1rem);
    overflow: hidden;
    text-overflow: ellipsis;
  }

  /* Membership contribution. */
  body.ipakodo-home-v48 .membership-contribution-grid {
    gap: 1.25rem;
  }

  body.ipakodo-home-v48 .membership-benefits {
    grid-template-columns: 1fr;
    gap: .6rem;
  }

  body.ipakodo-home-v48 .membership-benefits span {
    min-height: 4.6rem;
    grid-template-columns: 2.45rem 1fr;
    padding: .8rem;
  }

  body.ipakodo-home-v48 .membership-account-card {
    padding: 1rem;
    border-radius: var(--home-mobile-card-radius);
  }

  body.ipakodo-home-v48 .membership-card-head {
    align-items: flex-start;
    gap: .75rem;
  }

  body.ipakodo-home-v48 .membership-card-head h3 {
    font-size: 1.15rem;
    overflow-wrap: anywhere;
  }

  body.ipakodo-home-v48 .membership-status {
    flex: 0 0 auto;
    max-width: 44%;
    white-space: normal;
    text-align: center;
  }

  body.ipakodo-home-v48 .membership-financial-grid {
    grid-template-columns: 1fr 1fr;
    gap: .55rem;
  }

  body.ipakodo-home-v48 .membership-financial-grid > div {
    min-height: 5.2rem;
    padding: .75rem;
  }

  body.ipakodo-home-v48 .membership-financial-grid dd {
    font-size: clamp(.95rem, 4.4vw, 1.18rem);
    overflow-wrap: anywhere;
  }

  /* Transparency and explore. */
  body.ipakodo-home-v48 .transparency-layout {
    gap: 1rem;
  }

  body.ipakodo-home-v48 .transparency-cards {
    gap: .65rem;
  }

  body.ipakodo-home-v48 .transparency-cards article {
    grid-template-columns: 2.75rem 1fr;
    gap: .75rem;
    padding: .9rem;
    border-radius: 1rem;
  }

  body.ipakodo-home-v48 .transparency-cards article > span {
    width: 2.75rem;
    height: 2.75rem;
    border-radius: .8rem;
  }

  body.ipakodo-home-v48 .explore-grid {
    grid-template-columns: 1fr;
    gap: .75rem;
  }

  body.ipakodo-home-v48 .explore-grid > a {
    min-height: 0;
    padding: 1.05rem 1rem 3.25rem;
    border-radius: 1rem;
  }

  body.ipakodo-home-v48 .explore-grid small {
    margin-top: 1rem;
  }

  body.ipakodo-home-v48 .explore-grid b {
    left: 1rem;
    bottom: 1rem;
  }

  /* Final CTA. */
  body.ipakodo-home-v48 .final-cta-section {
    padding-block: 3.2rem;
  }

  body.ipakodo-home-v48 .final-cta-card {
    grid-template-columns: 1fr;
    gap: 1.2rem;
    padding: 1.2rem;
    border-radius: var(--home-mobile-card-radius);
  }

  body.ipakodo-home-v48 .final-cta-actions {
    width: 100%;
    min-width: 0;
  }

  /* Floating controls and lightbox. */
  body.ipakodo-home-v48 .mini-player {
    left: max(.55rem, var(--home-safe-left));
    right: max(.55rem, var(--home-safe-right));
    bottom: max(.55rem, var(--home-safe-bottom));
    width: auto;
    padding: .8rem;
    border-radius: 1rem;
  }

  body.ipakodo-home-v48 .mini-player-main {
    gap: .6rem;
  }

  body.ipakodo-home-v48 .mini-player-play {
    width: 2.75rem;
    height: 2.75rem;
  }

  body.ipakodo-home-v48 .mini-player-copy strong {
    font-size: .84rem;
  }

  body.ipakodo-home-v48 .gallery-lightbox {
    width: 100vw;
    max-width: 100vw;
    height: var(--home-viewport-height);
    max-height: var(--home-viewport-height);
    margin: 0;
    border: 0;
    border-radius: 0;
  }

  body.ipakodo-home-v48 .gallery-lightbox figure {
    min-height: var(--home-viewport-height);
    max-height: var(--home-viewport-height);
    grid-template-rows: minmax(0, 1fr) auto;
  }

  body.ipakodo-home-v48 .gallery-lightbox img {
    max-height: none;
    height: 100%;
    padding: calc(.75rem + var(--home-safe-top)) var(--home-mobile-gutter) .5rem;
  }

  body.ipakodo-home-v48 .gallery-lightbox figcaption {
    padding: .85rem var(--home-mobile-gutter) calc(.85rem + var(--home-safe-bottom));
  }

  body.ipakodo-home-v48 .gallery-lightbox-close {
    top: calc(.55rem + var(--home-safe-top));
    right: max(.55rem, var(--home-safe-right));
    width: 2.8rem;
    height: 2.8rem;
  }

  body.ipakodo-home-v48 .home-back-to-top {
    right: max(.65rem, var(--home-safe-right));
    bottom: max(.65rem, var(--home-safe-bottom));
    width: 2.75rem;
    height: 2.75rem;
  }

  body.ipakodo-home-v48:has(.mini-player:not([hidden])) .home-back-to-top {
    bottom: calc(7.5rem + var(--home-safe-bottom));
  }

  body.ipakodo-home-v48 [data-reveal] {
    transform: translateY(.65rem);
  }
}

/* Very narrow phones. */
@media (max-width: 420px) {
  :root { --home-mobile-gutter: .7rem; }

  body.ipakodo-home-v48 .heroSwiper {
    height: clamp(33rem, calc(var(--home-viewport-height) - var(--home-nav-offset)), 42rem);
    min-height: 33rem;
  }

  body.ipakodo-home-v48 .hero-content,
  body.ipakodo-home-v48 .hero-content-bottom,
  body.ipakodo-home-v48 .hero-content-center,
  body.ipakodo-home-v48 .hero-content-right,
  body.ipakodo-home-v48 .hero-content-left {
    padding-bottom: calc(3.8rem + var(--home-safe-bottom));
  }

  body.ipakodo-home-v48 .hero-copy h1,
  body.ipakodo-home-v48 .hero-copy h2 {
    font-size: clamp(1.85rem, 10.4vw, 2.45rem);
  }

  body.ipakodo-home-v48 .intro-metrics {
    grid-template-columns: 1fr 1fr;
  }

  body.ipakodo-home-v48 .intro-metrics article {
    min-height: 9rem;
    padding: .85rem;
  }

  body.ipakodo-home-v48 .music-card-actions {
    grid-template-columns: 1fr;
  }

  body.ipakodo-home-v48 .membership-financial-grid {
    grid-template-columns: 1fr;
  }

  body.ipakodo-home-v48 .membership-status {
    max-width: 48%;
    font-size: .58rem;
  }
}

@media (max-width: 350px) {
  body.ipakodo-home-v48 .intro-metrics {
    grid-template-columns: 1fr;
  }

  body.ipakodo-home-v48 .hero-eyebrow i,
  body.ipakodo-home-v48 .section-kicker i {
    display: none;
  }

  body.ipakodo-home-v48 .membership-card-head {
    flex-direction: column;
  }

  body.ipakodo-home-v48 .membership-status {
    max-width: 100%;
  }
}

/* Touch devices should not inherit desktop hover movement. */
@media (hover: none), (pointer: coarse) {
  body.ipakodo-home-v48 .gallery-item:hover img,
  body.ipakodo-home-v48 .intro-metrics article:hover,
  body.ipakodo-home-v48 .music-card:hover,
  body.ipakodo-home-v48 .explore-grid > a:hover,
  body.ipakodo-home-v48 .premium-button:hover,
  body.ipakodo-home-v48 .hero-button:hover,
  body.ipakodo-home-v48 .transparency-cards article:hover {
    transform: none;
  }

  body.ipakodo-home-v48 .swiper-slide-active .hero-media {
    transform: scale(1.03);
  }
}

/* Low-data preference: reduce decorative rendering cost without changing content. */
@media (prefers-reduced-data: reduce) {
  body.ipakodo-home-v48 .hero-media,
  body.ipakodo-home-v48 .music-section::before,
  body.ipakodo-home-v48 .membership-contribution-section::before {
    animation: none !important;
    transition: none !important;
  }

  body.ipakodo-home-v48 .hero-orb {
    display: none;
  }
}

html.gallery-is-open,
html.gallery-is-open body {
  overflow: hidden;
  overscroll-behavior: none;
}

/* =========================================================
   V4.9 PRODUCTION + APP EXPERIENCE LAYER
   Preserves the V4.8 visual system while improving loading,
   offline feedback, installability and mobile resilience.
   ========================================================= */
.ipakodo-home-v49 {
  overflow-x: clip;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  background: #f8fafc;
  color: #1e293b;
}

.ipakodo-home-v49 button,
.ipakodo-home-v49 a {
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

.ipakodo-home-v49 img {
  max-width: 100%;
}

.ipakodo-home-v49 .home-section,
.ipakodo-home-v49 .membership-contribution-section,
.ipakodo-home-v49 .final-cta-section {
  content-visibility: auto;
  contain-intrinsic-size: auto 760px;
}

.ipakodo-home-v49 .home-hero,
.ipakodo-home-v49 .music-section {
  content-visibility: visible;
}

.home-network-status {
  position: fixed;
  inset: calc(var(--navbar-height, 76px) + env(safe-area-inset-top, 0px)) 50% auto auto;
  z-index: 9998;
  display: inline-flex;
  align-items: center;
  gap: .65rem;
  max-width: min(92vw, 520px);
  transform: translateX(50%);
  padding: .72rem 1rem;
  border: 1px solid rgba(255,255,255,.26);
  border-radius: 999px;
  background: rgba(15,23,42,.94);
  color: #fff;
  box-shadow: 0 16px 40px rgba(15,23,42,.28);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  font-size: .82rem;
  font-weight: 600;
  line-height: 1.35;
}

.home-network-status[hidden] {
  display: none !important;
}

.home-network-status i {
  color: #fbbf24;
}

.home-app-prompt {
  position: fixed;
  right: max(1rem, env(safe-area-inset-right, 0px));
  bottom: max(1rem, env(safe-area-inset-bottom, 0px));
  z-index: 9999;
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto auto;
  align-items: center;
  gap: .8rem;
  width: min(440px, calc(100vw - 2rem));
  padding: .8rem;
  border: 1px solid rgba(30,58,138,.14);
  border-radius: 1.2rem;
  background: rgba(255,255,255,.96);
  color: #0f172a;
  box-shadow: 0 24px 70px rgba(15,23,42,.24);
  opacity: 0;
  transform: translateY(18px) scale(.98);
  transition: opacity .22s ease, transform .22s ease;
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
}

.home-app-prompt[hidden] {
  display: none !important;
}

.home-app-prompt.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.home-app-prompt-icon {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  overflow: hidden;
  border-radius: .9rem;
  background: #e0f2fe;
  box-shadow: inset 0 0 0 1px rgba(30,58,138,.1);
}

.home-app-prompt-icon img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.home-app-prompt-copy {
  min-width: 0;
  display: grid;
  gap: .18rem;
}

.home-app-prompt-copy strong {
  color: #0A1E5C;
  font-size: .92rem;
  line-height: 1.2;
}

.home-app-prompt-copy span {
  color: #64748b;
  font-size: .75rem;
  line-height: 1.35;
}

#home-app-prompt-action {
  min-height: 42px;
  padding: .68rem .95rem;
  border: 0;
  border-radius: .85rem;
  background: linear-gradient(135deg, #1e3a8a, #0ea5e9);
  color: #fff;
  font: inherit;
  font-size: .78rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: 0 10px 24px rgba(30,58,138,.2);
}

#home-app-prompt-close {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: .8rem;
  background: #f1f5f9;
  color: #475569;
  cursor: pointer;
}

.prefers-data-saving .hero-orb,
.prefers-data-saving [data-reveal],
.prefers-data-saving .audio-pulse::after {
  animation: none !important;
  transition-duration: .01ms !important;
}

.prefers-data-saving .hero-orb {
  display: none;
}

.is-offline .membership-data-status::before {
  content: 'Offline · ';
  font-weight: 700;
}

@media (max-width: 767px) {
  .ipakodo-home-v49 .home-section,
  .ipakodo-home-v49 .membership-contribution-section,
  .ipakodo-home-v49 .final-cta-section {
    contain-intrinsic-size: auto 620px;
  }

  .home-network-status {
    top: calc(var(--navbar-height, 70px) + env(safe-area-inset-top, 0px) + .45rem);
    width: calc(100vw - 1.5rem);
    justify-content: center;
    border-radius: 1rem;
    text-align: center;
    font-size: .76rem;
  }

  .home-app-prompt {
    left: max(.75rem, env(safe-area-inset-left, 0px));
    right: max(.75rem, env(safe-area-inset-right, 0px));
    bottom: max(.75rem, env(safe-area-inset-bottom, 0px));
    grid-template-columns: 40px minmax(0, 1fr) auto;
    gap: .65rem;
    width: auto;
    border-radius: 1.05rem;
  }

  .home-app-prompt-icon {
    width: 40px;
    height: 40px;
  }

  #home-app-prompt-action {
    grid-column: 2 / 4;
    width: 100%;
  }

  #home-app-prompt-close {
    grid-column: 3;
    grid-row: 1;
    width: 38px;
    height: 38px;
  }
}

@media (max-width: 360px) {
  .home-app-prompt-copy span {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .home-app-prompt {
    transition: none;
  }
}
