/* css/skeleton.css */
.sk{position:relative;overflow:hidden;background:#E9EFF5;border-radius:8px}
.sk::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent);animation:tsa-sk-shimmer 1.3s ease-in-out infinite}
@keyframes tsa-sk-shimmer{to{transform:translateX(100%)}}
.sk-line{display:block;height:12px;margin-top:10px}.sk-title{display:block;height:20px;margin-top:12px}.sk-chip{display:inline-block;width:110px;height:26px;border-radius:999px}.sk-btn{display:inline-block;width:120px;height:44px;border-radius:999px}.sk-img{display:block;border-radius:0}.sk-wrap{pointer-events:none}
.tsa-sk-layer{position:absolute;inset:0;z-index:4;overflow:hidden;background:var(--tsa-sk-paper,#fff);border-radius:inherit;pointer-events:none}
.tsa-sk-layer>.sk-wrap{height:100%;width:100%}.tsa-sk-shape{height:100%;min-height:100%;width:100%}
.tsa-sk-lines{display:grid;align-content:start;gap:12px;padding:20px}.tsa-sk-lines .sk{margin:0;min-height:12px}.tsa-sk-lines .sk:nth-child(3n){width:65%}
.tsa-sk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:16px;height:100%}
.tsa-sk-card{overflow:hidden;border:1px solid #E3EAF1;border-radius:20px;min-width:0}.tsa-sk-card>.sk-img{height:150px}.tsa-sk-card>.tsa-sk-lines{padding:16px}
.tsa-sk-course-feature{display:grid;grid-template-columns:1fr 1.15fr;height:100%;min-height:320px;border-radius:24px;overflow:hidden}.tsa-sk-course-feature>.sk-img{height:100%}
.sk-slow,.sk-error{padding:12px 16px;border-radius:14px;background:#FFF8E6;color:#5C4200;font:400 14px/1.7 "Noto Sans Thai",sans-serif}
.sk-slow{position:absolute;bottom:12px;left:12px;right:12px;z-index:6;margin:0}.sk-error{background:#FDECEC;color:#7A1C1C}
.sk-slow button,.sk-error button{min-height:36px;margin-left:8px;padding:0 4px;border:0;background:none;color:#0F5FD6;font:500 14px/1.5 "Noto Sans Thai",sans-serif;cursor:pointer}
.sk-row td{padding:12px 14px}.sk-row .sk{display:block;height:12px}
.tsa-sk-table{position:absolute;z-index:5;pointer-events:none;background:var(--tsa-sk-paper,#fff);overflow:hidden}.tsa-sk-table-row{display:grid;align-items:center;border-bottom:1px solid #E3EAF1;padding:0 14px;gap:24px}.tsa-sk-table-row>.sk{height:12px}
.tsa-load-progress{position:fixed;inset:0 auto auto 0;height:3px;width:70%;z-index:2147483000;background:#0F5FD6;transform-origin:left;animation:tsa-load-progress 12s ease-out forwards;pointer-events:none}
@keyframes tsa-load-progress{from{transform:scaleX(.08)}to{transform:scaleX(1.35)}}
.tsa-sk-sr,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
img.tsa-image-ready{animation:tsa-image-in .2s ease-out}@keyframes tsa-image-in{from{opacity:0}to{opacity:1}}
.tsa-image-fallback{position:absolute;inset:0;display:grid;place-items:center;background:#E9EFF5;color:#7190b0;font-size:32px}
[data-theme=dark] .tsa-sk-layer,.dark .tsa-sk-layer{--tsa-sk-paper:#111e30}[data-theme=dark] .sk,.dark .sk{background:#1C2A3D}[data-theme=dark] .sk::after,.dark .sk::after{background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent)}
@media(max-width:760px){.tsa-sk-course-feature{grid-template-columns:1fr;grid-template-rows:180px 1fr}.tsa-sk-course-feature>.sk-img{height:180px}}
@media(prefers-reduced-motion:reduce){.sk::after,.tsa-load-progress,img.tsa-image-ready{animation:none}}
/* Spinner ในปุ่มที่กดแล้วต้องรอ (ส่งฟอร์ม / โหลดข้อมูล) — ใช้ผ่าน TSA.busy() */
.tsa-spin{display:inline-block;flex:none;width:1em;height:1em;margin-inline-end:.45em;vertical-align:-.15em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:tsa-spin .7s linear infinite}
.tsa-spin.tsa-action-spinner,.tsa-spin.tsa-dlg-spin{box-sizing:border-box;width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;animation:tsa-spin .7s linear infinite}
@keyframes tsa-spin{to{transform:rotate(360deg)}}
[data-tsa-busy]{cursor:progress}a[data-tsa-busy]{pointer-events:none}
@media(prefers-reduced-motion:reduce){.tsa-spin,.tsa-spin.tsa-action-spinner,.tsa-spin.tsa-dlg-spin{animation:none;border-style:dotted}}
@media(prefers-reduced-motion:reduce){.tsa-ticker-active [data-ticker-copy]{display:none}}

/* v2/local-fonts.css */
/* Local Noto Sans Thai — OFL: ../fonts/noto-sans-thai/OFL.txt */
@font-face {
  font-family: "Noto Sans Thai";
  src: url("/assets/fonts/noto-sans-thai/NotoSansThai-Weight.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

/* Sarabun fallback weights if variable font fails */
@font-face {
  font-family: "Sarabun";
  src: url("/assets/fonts/sarabun/Sarabun-Regular.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Sarabun";
  src: url("/assets/fonts/sarabun/Sarabun-Medium.ttf") format("truetype");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Sarabun";
  src: url("/assets/fonts/sarabun/Sarabun-SemiBold.ttf") format("truetype");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Sarabun";
  src: url("/assets/fonts/sarabun/Sarabun-Bold.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

html,
body,
body.tpl-landing,
body.abouts-page,
body.tpl-list {
  font-family: "Noto Sans Thai", Tahoma, sans-serif;
}

/* v2/site-nav.css */
/* =========================================================
   Site Nav Shell — extracted from cinematic for all pages
   Use with site-foundation.css. Landing may still load cinematic
   for motion-hero / map-intro only.
   ========================================================= */

:root {
  --ink: #071b34;
  --blue: #126cf3;
  --paper: #f4f7fa;
  --ease: cubic-bezier(0.16, 1, 0.3, 1);
  --site-wrap: 1200px;
  --site-gutter: clamp(16px, 4vw, 40px);
  --nav-top: 16px;
  --nav-h: 64px;
  --nav-gap: 32px;
  --nav-offset: calc(var(--nav-top) + var(--nav-h) + var(--nav-gap));
}

*,
*::before,
*::after { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--nav-top) + var(--nav-h) + 16px);
}

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: "Noto Sans Thai", sans-serif;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }

.skip {
  position: fixed;
  left: 12px;
  top: -80px;
  z-index: 2100;
  background: #fff;
  padding: 10px 16px;
  border-radius: 8px;
}
.skip:focus { top: 12px; }

.noise {
  position: fixed;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  opacity: 0.035;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E");
}

/* ——— Loader ——— */
.loader {
  position: fixed;
  inset: 0;
  z-index: 2500;
  overflow: hidden;
  display: grid;
  place-items: center;
  align-content: center;
  color: #fff;
  background: radial-gradient(circle at 50% 48%, #0c2d59 0, #071f40 42%, #06182f 100%);
  transition: clip-path 1s var(--ease), visibility 1s;
  clip-path: inset(0);
}
.loader.done {
  clip-path: inset(0 0 100% 0);
  visibility: hidden;
}
.loader:before {
  content: "";
  position: absolute;
  inset: -25%;
  pointer-events: none;
  background: conic-gradient(from 180deg at 50% 50%, transparent, rgba(25, 135, 255, 0.09), transparent 28%, rgba(93, 203, 255, 0.07), transparent 62%);
  animation: loaderAtmosphere 8s linear infinite;
}
.loader-brand-stage {
  position: relative;
  width: 410px;
  height: 154px;
  display: grid;
  place-items: center;
  animation: loaderBrandIn 0.9s var(--ease) both;
}
.loader-logo-card {
  position: relative;
  z-index: 3;
  width: 340px;
  height: 102px;
  display: grid;
  place-items: center;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.72);
  border-radius: 30px;
  background: linear-gradient(120deg, rgba(255, 255, 255, 0.98), rgba(238, 247, 255, 0.86));
  box-shadow: 0 30px 90px rgba(0, 0, 0, 0.28), 0 0 58px rgba(29, 137, 255, 0.22), inset 0 1px 0 #fff;
  backdrop-filter: blur(18px);
  animation: loaderCardFloat 2.6s ease-in-out 0.8s infinite alternate;
}
.loader-logo-card:after {
  content: "";
  position: absolute;
  top: -45%;
  bottom: -45%;
  left: -38%;
  width: 24%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.95), rgba(109, 197, 255, 0.38), transparent);
  filter: blur(2px);
  transform: skewX(-18deg);
  animation: loaderLogoSweep 1.7s var(--ease) 0.35s infinite;
}
.loader-logo-card img {
  position: relative;
  z-index: 1;
  width: 270px;
  height: 76px;
  object-fit: contain;
  mix-blend-mode: multiply;
  animation: loaderLogoFocus 0.95s var(--ease) 0.12s both;
}
.loader-orbit {
  position: absolute;
  z-index: 1;
  inset: 2px;
  border: 1px solid rgba(90, 190, 255, 0.28);
  border-radius: 50%;
  animation: loaderOrbit 3.2s linear infinite;
}
.loader-orbit:before {
  content: "";
  position: absolute;
  left: 11%;
  top: 9%;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #43bfff;
  box-shadow: 0 0 18px #2a9fff, 0 0 36px rgba(42, 159, 255, 0.7);
}
.loader-orbit.orbit-b {
  inset: 17px -10px;
  opacity: 0.48;
  animation-direction: reverse;
  animation-duration: 4.6s;
}
.loader-orbit.orbit-b:before {
  left: auto;
  right: 15%;
  top: auto;
  bottom: 4%;
  width: 5px;
  height: 5px;
}
.loader-track {
  position: relative;
  width: 230px;
  height: 2px;
  margin-top: 24px;
  overflow: hidden;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.13);
}
.loader-track i {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, #25a7ff 38%, #fff 52%, #25a7ff 66%, transparent);
  transform: translateX(-100%);
  animation: loaderTrack 1.05s var(--ease) infinite;
}
.loader > p {
  position: relative;
  margin: 15px 0 0;
  font-size: 10px;
  letter-spacing: 0.14em;
  color: #8da6c6;
  animation: loaderCaption 1.1s ease 0.35s both;
}
@keyframes loaderBrandIn {
  from { opacity: 0; transform: scale(0.88); filter: blur(12px); }
  to { opacity: 1; transform: none; filter: none; }
}
@keyframes loaderLogoFocus {
  from { opacity: 0; transform: scale(1.12); filter: blur(8px); }
  to { opacity: 1; transform: none; filter: none; }
}
@keyframes loaderCardFloat {
  to {
    transform: translateY(-5px);
    box-shadow: 0 38px 100px rgba(0, 0, 0, 0.3), 0 0 76px rgba(29, 137, 255, 0.3), inset 0 1px 0 #fff;
  }
}
@keyframes loaderLogoSweep {
  0%, 18% { left: -38%; opacity: 0; }
  32% { opacity: 1; }
  58%, 100% { left: 118%; opacity: 0; }
}
@keyframes loaderOrbit { to { transform: rotate(360deg); } }
@keyframes loaderTrack { to { transform: translateX(100%); } }
@keyframes loaderAtmosphere { to { transform: rotate(360deg); } }
@keyframes loaderCaption {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: none; }
}
@media (max-width: 520px) {
  .loader-brand-stage { width: 330px; height: 130px; }
  .loader-logo-card { width: 286px; height: 88px; border-radius: 26px; }
  .loader-logo-card img { width: 228px; height: 64px; }
  .loader-track { width: 190px; margin-top: 18px; }
  .loader > p { font-size: 9px; }
}
@media (prefers-reduced-motion: reduce) {
  .loader { display: none; }
  .loader:before,
  .loader-brand-stage,
  .loader-logo-card,
  .loader-logo-card:after,
  .loader-logo-card img,
  .loader-orbit,
  .loader-track i,
  .loader > p { animation: none !important; }
}

/* ——— Capsule navigation ——— */
.nav-shell {
  position: fixed;
  z-index: 1500;
  top: var(--nav-top);
  left: 50%;
  right: auto;
  width: min(var(--site-wrap), calc(100% - var(--site-gutter) - var(--site-gutter)));
  height: var(--nav-h);
  padding: 5px 12px;
  display: flex;
  align-items: center;
  transform: translateX(-50%);
  border: 1px solid rgba(255, 255, 255, 0.46);
  border-radius: 19px;
  background: linear-gradient(115deg, rgba(255, 255, 255, 0.32), rgba(244, 250, 255, 0.1));
  box-shadow:
    0 18px 50px rgba(8, 35, 67, 0.09),
    inset 0 1px 0 rgba(255, 255, 255, 0.66),
    inset 0 -1px 0 rgba(123, 164, 203, 0.06);
  backdrop-filter: blur(22px) saturate(165%);
  -webkit-backdrop-filter: blur(22px) saturate(165%);
  transition: top 0.45s var(--ease), width 0.45s var(--ease), height 0.45s var(--ease), box-shadow 0.45s var(--ease), background 0.45s ease;
  animation: navEnter 0.8s var(--ease) 0.15s both;
  pointer-events: auto;
}
.nav-shell.is-scrolled {
  top: var(--nav-top);
  width: min(var(--site-wrap), calc(100% - var(--site-gutter) - var(--site-gutter)));
  height: var(--nav-h);
  background: rgba(255, 255, 255, 0.96);
  border-color: rgba(7, 27, 52, 0.08);
  box-shadow: 0 8px 24px rgba(7, 27, 52, 0.08);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
@keyframes navEnter {
  from { opacity: 0; transform: translate(-50%, -18px) scale(0.97); }
  to { opacity: 1; transform: translateX(-50%) scale(1); }
}

.brand { width: 170px; flex: 0 0 auto; }
.brand img {
  width: 100%;
  height: 40px;
  object-fit: contain;
  display: block;
  mix-blend-mode: normal;
  transition: height 0.45s var(--ease);
}
.nav-shell.is-scrolled .brand img { height: 40px; }

.desktop-nav {
  display: flex;
  gap: 2px;
  margin: auto;
  align-self: stretch;
  align-items: center;
  font-size: 12px;
  font-weight: 650;
  padding: 4px;
  border-radius: 15px;
}
.desktop-nav .nav-primary-link {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--ink);
  font: 500 11.5px/1.45 "Noto Sans Thai", sans-serif;
  padding: 10px 9px;
  border-radius: 999px;
  white-space: nowrap;
  cursor: pointer;
  transition: color 0.3s ease, background 0.3s ease, transform 0.3s var(--ease);
}
.desktop-nav .nav-primary-link:hover,
.desktop-nav .nav-primary-link:focus-visible {
  color: var(--blue);
  background: rgba(255, 255, 255, 0.45);
  transform: translateY(-1px);
}
.desktop-nav .nav-primary-link.active {
  color: #fff;
  background: var(--blue);
  box-shadow: 0 8px 20px rgba(31, 130, 242, 0.22);
}
.nav-primary-link > span { display: none; }

.nav-group {
  position: relative;
  display: flex;
  align-items: center;
  height: 100%;
}
.nav-group.open .nav-dropdown-trigger {
  color: var(--blue);
  background: rgba(225, 240, 255, 0.58);
}
.nav-dropdown {
  position: absolute;
  z-index: 100;
  left: 50%;
  top: calc(100% + 7px);
  width: 250px;
  padding: 10px;
  border: 1px solid rgba(255, 255, 255, 0.76);
  border-radius: 22px;
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.94), rgba(239, 247, 255, 0.88));
  box-shadow: 0 24px 60px rgba(7, 24, 49, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.95);
  backdrop-filter: blur(28px) saturate(155%);
  -webkit-backdrop-filter: blur(28px) saturate(155%);
  opacity: 0;
  visibility: hidden;
  transform: translate(-50%, -9px) scale(0.97);
  transform-origin: top;
  transition: opacity 0.25s ease, visibility 0.25s ease, transform 0.35s var(--ease);
}
.nav-group.open > .nav-dropdown {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0) scale(1);
}
.desktop-nav .nav-dropdown a {
  display: block;
  padding: 10px 12px;
  border-radius: 12px;
  color: #203751;
  font-size: 10px;
  font-weight: 500;
  line-height: 1.45;
  transition: color 0.22s ease, background 0.22s ease, transform 0.22s var(--ease);
}
.desktop-nav .nav-dropdown a:hover,
.desktop-nav .nav-dropdown a:focus-visible {
  color: var(--blue);
  background: rgba(255, 255, 255, 0.72);
  transform: translateX(3px);
}
.nav-subgroup {
  padding: 6px 6px 7px;
  margin-bottom: 5px;
  border-radius: 14px;
  background: rgba(227, 240, 252, 0.52);
}
.nav-subgroup b {
  display: block;
  padding: 3px 6px 5px;
  font-size: 8px;
  letter-spacing: 0.08em;
  color: #70839a;
}
.desktop-nav .nav-subgroup a { padding-left: 16px; }
.compact-dropdown { width: 215px; }
.stats-dropdown { width: 240px; }

.nav-actions {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-shrink: 0;
}
.language {
  border: 0;
  background: transparent;
  height: 38px;
  padding: 0 10px;
  border-radius: 12px;
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
}
.language span { color: #98a2b1; font-weight: 400; }
.login {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  min-width: 112px;
  min-height: 40px;
  padding: 0 17px;
  border-radius: 999px;
  background: var(--ink);
  color: #fff;
  font-size: 11.5px;
  font-weight: 700;
  line-height: 1.4;
  white-space: nowrap;
  transition: transform 0.3s var(--ease), background 0.3s ease, box-shadow 0.3s ease;
}
.login:hover {
  background: var(--blue);
  transform: translateY(-1px);
  box-shadow: 0 9px 20px rgba(31, 130, 242, 0.23);
}
.login span { display: inline-block; line-height: 1; }
.menu-button { display: none; }
.mobile-menu { display: none; }

@media (min-width: 1101px) and (max-width: 1250px) {
  .desktop-nav .nav-primary-link { padding-inline: 7px; font-size: 10.35px; }
  .language { display: none; }
  .login { min-width: 100px; padding-inline: 17px; font-size: 10.35px; }
}

@media (max-width: 1100px) {
  .nav-shell,
  .nav-shell.is-scrolled {
    top: var(--nav-top);
    width: min(var(--site-wrap), calc(100% - var(--site-gutter) - var(--site-gutter)));
    height: var(--nav-h);
    padding: 4px 12px;
    border-radius: 18px;
  }
  .nav-shell {
    background: linear-gradient(115deg, rgba(255, 255, 255, 0.36), rgba(238, 248, 255, 0.14));
    border-color: rgba(255, 255, 255, 0.5);
  }
  .nav-shell .brand { width: 166px; }
  .nav-shell .brand img,
  .nav-shell.is-scrolled .brand img { height: 39px; }
  .desktop-nav,
  .language { display: none; }
  .nav-actions { margin-left: auto; }
  .nav-actions .login { display: none !important; }
  .menu-button {
    display: flex;
    width: 40px;
    height: 40px;
    border: 0;
    border-radius: 0;
    background: transparent;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    box-shadow: none;
  }
  .menu-button i {
    width: 20px;
    height: 1.5px;
    background: var(--ink);
    transition: transform 0.35s var(--ease), background 0.25s ease;
  }
  .menu-button:hover i,
  .menu-button[aria-expanded="true"] i { background: var(--blue); }
  .menu-button[aria-expanded="true"] i:first-child { transform: translateY(3.5px) rotate(45deg); }
  .menu-button[aria-expanded="true"] i:last-child { transform: translateY(-3.5px) rotate(-45deg); }

  .mobile-menu {
    display: flex;
    position: absolute;
    z-index: 1600;
    top: calc(100% + 8px);
    left: 0;
    right: 0;
    max-height: calc(100vh - 100px);
    overflow: auto;
    padding: 14px;
    flex-direction: column;
    gap: 3px;
    border: 1px solid rgba(7, 24, 49, 0.08);
    border-radius: 22px;
    background: rgba(255, 255, 255, 0.97);
    box-shadow: 0 24px 60px rgba(7, 24, 49, 0.18);
    backdrop-filter: blur(18px);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-12px) scale(0.98);
    transform-origin: top;
    transition: opacity 0.35s ease, visibility 0.35s ease, transform 0.45s var(--ease);
    pointer-events: auto;
  }
  .mobile-menu.open {
    opacity: 1;
    visibility: visible;
    transform: none;
  }
  body.nav-open { overflow: hidden; }
  .mobile-menu .mobile-direct,
  .mobile-accordion-trigger {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 48px;
    padding: 13px 14px;
    border: 0;
    border-radius: 13px;
    background: transparent;
    color: var(--ink);
    font-size: 17px;
    font-weight: 500;
    text-align: left;
    cursor: pointer;
  }
  .mobile-menu .mobile-direct:hover,
  .mobile-accordion-trigger:hover {
    color: var(--blue);
    background: #eef6ff;
  }
  .mobile-accordion-trigger span {
    font-size: 19px;
    font-weight: 300;
    transition: transform 0.35s var(--ease);
  }
  .mobile-accordion.open .mobile-accordion-trigger span { transform: rotate(45deg); }
  .mobile-submenu {
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    padding: 0 9px;
    transition: max-height 0.45s var(--ease), opacity 0.3s ease;
  }
  .mobile-accordion.open .mobile-submenu {
    max-height: 720px;
    opacity: 1;
  }
  .mobile-submenu a,
  .mobile-submenu b {
    display: block;
    padding: 9px 15px;
    border-left: 1px solid #dce7f1;
    color: #5e728a;
    font-size: 13px;
    font-weight: 500;
  }
  .mobile-submenu b {
    padding-top: 12px;
    font-size: 9px;
    letter-spacing: 0.08em;
    color: #90a0b2;
  }
  .mobile-submenu a.nav-nested { padding-left: 24px; }
  .mobile-submenu a:hover {
    color: var(--blue);
    background: rgba(238, 246, 255, 0.7);
  }
  .mobile-menu .mobile-login {
    margin-top: 10px;
  }
}

@media (max-width: 760px) {
  :root {
    --nav-top: 8px;
    --nav-h: 56px;
    --nav-gap: 20px;
  }
}

@media (max-width: 430px) {
  .nav-shell .brand { width: 154px; }
  .nav-shell .brand img,
  .nav-shell.is-scrolled .brand img { height: 37px; }
}

@media (prefers-reduced-motion: reduce) {
  .nav-shell { animation: none; transition: none; }
  .desktop-nav a,
  .login,
  .menu-button,
  .mobile-menu { transition: none; }
}

/* ——— Footer ——— */
body > footer,
#footer {
  background: #06162e;
  color: #a9bad0;
  padding: 16px 4vw 10px;
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.85fr) minmax(0, 0.85fr) minmax(0, 1.15fr);
  gap: 10px 16px;
  position: relative;
  overflow-x: clip;
}
.footer-brand img {
  width: auto;
  max-width: min(168px, 100%);
  max-height: 46px;
  height: auto;
  object-fit: contain;
  box-sizing: border-box;
  background: #fff;
  padding: 4px 8px;
  border-radius: 12px;
}
#footer .footer-brand,
body > footer .footer-brand {
  display: flex;
  align-items: center;
  align-self: stretch;
}
.footer-brand ~ div h3,
body > footer address h3,
#footer address h3 {
  font-size: 11px;
  color: #fff;
  margin: 0 0 4px;
}
.footer-brand ~ div > a,
body > footer address a,
#footer address a {
  display: block;
  font-size: 12px;
  line-height: 1.35;
  margin: 2px 0;
}
.footer-brand ~ div > a:hover { color: #fff; }
body > footer address,
#footer address {
  font-style: normal;
  font-size: 10px;
  line-height: 1.7;
}
.footer-bottom {
  grid-column: 1 / -1;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  display: flex;
  justify-content: space-between;
  padding-top: 8px;
  margin-top: 2px;
  font: 600 7px "Noto Sans Thai";
  letter-spacing: 0.1em;
}
@media (max-width: 760px) {
  body > footer,
  #footer {
    grid-template-columns: 1fr 1fr;
    padding: 14px 16px 8px;
    gap: 10px 14px;
  }
  .footer-brand,
  body > footer address,
  #footer address { grid-column: 1 / -1; }
  .footer-brand img { width: auto; max-width: min(150px, 100%); }
}

/* v2/cinematic.css */
:root{--paper:#f7f7f3;--white:#fff;--ink:#071831;--blue:#1176f3;--cyan:#4bc8f5;--lime:#c9ff4a;--muted:#657185;--line:#dce2e8;--ease:cubic-bezier(.16,1,.3,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Noto Sans Thai',sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.skip{position:fixed;left:12px;top:-80px;z-index:200;background:#fff;padding:10px 16px}.skip:focus{top:12px}.noise{position:fixed;inset:0;z-index:99;pointer-events:none;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E")}.loader{position:fixed;inset:0;z-index:300;background:var(--ink);color:#fff;display:grid;place-items:center;align-content:center;transition:clip-path 1s var(--ease),visibility 1s;clip-path:inset(0)}.loader.done{clip-path:inset(0 0 100% 0);visibility:hidden}.loader-mark{display:flex;align-items:center;gap:14px;font:900 64px 'Noto Sans Thai'}.loader-mark i{width:80px;height:2px;background:var(--blue);position:relative;overflow:hidden}.loader-mark i:after{content:"";position:absolute;inset:0;background:#fff;animation:load 1.1s var(--ease) infinite}.loader p{font-size:10px;letter-spacing:.12em;color:#8799b3}@keyframes load{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
.nav-shell{position:absolute;z-index:80;top:0;left:0;right:0;height:92px;padding:0 4vw;display:flex;align-items:center;border-bottom:1px solid rgba(7,24,49,.1)}.brand{width:214px}.brand img{width:100%;height:65px;object-fit:contain;display:block;mix-blend-mode:multiply}.desktop-nav{display:flex;gap:34px;margin:auto;font-size:12px;font-weight:650}.desktop-nav a{position:relative}.desktop-nav a:after{content:"";position:absolute;left:0;right:100%;bottom:-6px;height:1px;background:var(--blue);transition:right .35s var(--ease)}.desktop-nav a:hover:after{right:0}.nav-actions{display:flex;align-items:center;gap:13px}.language{border:0;background:transparent;font-size:11px;font-weight:700}.language span{color:#98a2b1;font-weight:400}.login{background:var(--ink);color:#fff;border-radius:999px;padding:12px 18px;font-size:11px;font-weight:700;display:flex;gap:16px}.menu-button{display:none}.mobile-menu{display:none}
.cinema-hero{height:100svh;min-height:760px;position:relative;overflow:hidden;background:#fff}.hero-word{position:absolute;inset:10% 0 auto 2.4%;font:900 clamp(160px,23vw,350px)/.69 'Noto Sans Thai',sans-serif;letter-spacing:-.105em;color:#edf1f4;display:flex;flex-direction:column;pointer-events:none}.hero-visual{position:absolute;inset:8% -8% -3% 28%;overflow:hidden;clip-path:polygon(25% 0,100% 0,100% 100%,0 100%,8% 72%,4% 34%)}.hero-visual:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#fff 0%,rgba(255,255,255,.92) 13%,transparent 42%)}.hero-visual img{width:100%;height:100%;object-fit:cover;object-position:center;transform:scale(1.06);animation:heroZoom 2s var(--ease) forwards}.hero-lines i{position:absolute;border:1px solid rgba(17,118,243,.16);border-radius:50%;width:950px;height:270px;right:-120px;bottom:-90px;transform:rotate(-14deg)}.hero-lines i:nth-child(2){width:760px;right:40px;bottom:-35px}.hero-lines i:nth-child(3){width:560px;right:170px;bottom:20px}.hero-copy{position:absolute;z-index:4;left:6.8vw;top:19%;width:min(690px,52vw)}.overline{font:700 10px/1.2 'Noto Sans Thai';letter-spacing:.16em;color:var(--blue);display:flex;gap:12px;align-items:center}.overline span{display:inline-grid;place-items:center;width:27px;height:27px;border:1px solid currentColor;border-radius:50%;font-size:8px}.overline.light{color:#7ccfff}.hero-copy h1{font-size:clamp(66px,7.6vw,116px);line-height:.81;letter-spacing:-.075em;margin:30px 0 26px;font-weight:900}.hero-copy h1 span{display:block;opacity:0;transform:translateY(60px);animation:titleIn .85s var(--ease) forwards}.hero-copy h1 span:nth-child(2){animation-delay:.12s}.hero-copy h1 span:nth-child(3){animation-delay:.23s}.hero-copy .blue{color:var(--blue)}.hero-bottom{display:flex;align-items:center;gap:35px}.hero-bottom>p{font-size:13px;line-height:1.8;color:#5f6c80;margin:0}.circle-cta{width:106px;height:106px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;gap:11px;font-size:10px;font-weight:700;transition:.4s var(--ease)}.circle-cta:hover{background:var(--blue);transform:rotate(-8deg) scale(1.06)}.circle-cta i{font-style:normal;font-size:17px}.hero-meter{position:absolute;z-index:4;left:4vw;right:4vw;bottom:23px;display:flex;align-items:center;gap:17px;font:700 7px 'Noto Sans Thai';letter-spacing:.16em}.hero-meter i{height:1px;background:#cfd7df;flex:1}.hero-data{position:absolute;z-index:5;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(255,255,255,.88);backdrop-filter:blur(12px);box-shadow:0 20px 60px rgba(12,38,71,.12)}.hero-data b{font:800 22px 'Noto Sans Thai';color:var(--blue)}.hero-data span{font:700 6px/1.4 'Noto Sans Thai';letter-spacing:.13em;text-align:center}.data-a{right:8%;top:26%;width:128px;height:128px}.data-b{right:32%;top:16%;width:84px;height:84px}.data-b b{font-size:18px}@keyframes titleIn{to{opacity:1;transform:none}}@keyframes heroZoom{to{transform:scale(1)}}
.manifesto{padding:150px 7vw 130px;background:var(--paper);position:relative}.manifesto-label{font:700 8px 'Noto Sans Thai';letter-spacing:.16em;color:#778497;margin-bottom:65px}.manifesto-text{font-size:clamp(47px,6.1vw,94px);line-height:1.16;letter-spacing:-.06em;font-weight:750;margin:0}.manifesto-text em{font-style:normal;color:var(--blue)}.image-word{display:inline-block;width:170px;height:74px;margin:0 18px;border-radius:999px;vertical-align:middle;overflow:hidden;transform:rotate(-4deg)}.image-word img{width:100%;height:100%;object-fit:cover}.manifesto-foot{display:flex;justify-content:flex-end;gap:42px;margin-top:70px;font-size:10px;color:#778497}.manifesto-foot span:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--blue);margin-right:8px}
.nation{background:#f6f6f2;color:var(--ink);padding:115px 4vw 130px;position:relative;border-top:1px solid rgba(10,18,41,.06)}.nation-head{display:flex;justify-content:space-between;align-items:flex-end;max-width:1320px;margin:0 auto 55px}.nation-head h2,.story-intro h2,.places-head h2,.events-title h2,.finale h2{font-size:clamp(54px,6.2vw,92px);line-height:.97;letter-spacing:-.065em;margin:20px 0 0}.nation-head h2 em,.story-intro h2 em,.places-head h2 em,.events-title h2 em,.finale h2 em{font-style:normal;color:var(--blue)}.nation-head>p{font-size:12px;color:#96a8c1;line-height:1.7}.map-app{max-width:1320px;margin:auto;display:grid;grid-template-columns:260px 1fr;grid-template-rows:680px auto;background:#0c2141;border:1px solid rgba(255,255,255,.1);border-radius:27px;overflow:hidden;box-shadow:0 50px 120px rgba(0,0,0,.28)}.map-controls{padding:27px;border-right:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column}.map-status{display:flex;align-items:center;gap:8px;font-size:9px;color:#98abc4;margin-bottom:35px}.map-status i{width:7px;height:7px;border-radius:50%;background:#47db91;box-shadow:0 0 0 5px rgba(71,219,145,.12)}.map-controls label{font-size:9px;color:#8195b0;margin:14px 0 7px}.map-controls select,.map-search{height:46px;border:1px solid rgba(255,255,255,.13);background:#10294e;color:#fff;border-radius:9px}.map-controls select{padding:0 12px}.map-search{display:flex}.map-search input{min-width:0;flex:1;border:0;background:transparent;color:white;padding:0 12px;outline:0;font-size:11px}.map-search button{border:0;background:transparent;color:#6cccf5;width:40px}.map-filters{display:flex;gap:5px;margin-top:15px}.map-filters button{border:1px solid rgba(255,255,255,.12);background:transparent;color:#8ca0ba;border-radius:999px;font-size:8px;padding:7px 9px;cursor:pointer}.map-filters button.active{background:#fff;color:var(--ink)}.selected-place{margin-top:auto;padding-top:24px;border-top:1px solid rgba(255,255,255,.1)}.selected-place small{font:700 7px 'Noto Sans Thai';letter-spacing:.15em;color:#59c8f5}.selected-place h3{font-size:18px;line-height:1.35;margin:9px 0}.selected-place p{font-size:10px;color:#8fa4bf}.selected-place div{display:flex;gap:5px}.selected-place div span{border:1px solid rgba(255,255,255,.1);border-radius:999px;padding:4px 8px;font-size:7px;color:#8fa4bf}.map-stage{position:relative;overflow:hidden;background:radial-gradient(circle at 50% 44%,#143663 0,#091c38 70%)}#map-canvas{width:100%;height:100%;display:block;cursor:crosshair}.map-tooltip{position:absolute;z-index:3;pointer-events:none;background:#fff;color:var(--ink);border-radius:10px;padding:10px 12px;box-shadow:0 16px 45px rgba(0,0,0,.25);font-size:10px;opacity:0;transform:translate(12px,12px);transition:opacity .2s}.map-tooltip.visible{opacity:1}.map-tooltip strong{display:block;max-width:220px;font-size:11px}.map-tooltip span{color:#66758a}.map-loading{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:12px;background:#091c38;z-index:4;transition:.5s}.map-loading.done{opacity:0;visibility:hidden}.map-loading i{width:34px;height:34px;border-radius:50%;border:2px solid rgba(255,255,255,.15);border-top-color:#4fc3f7;animation:spin .8s linear infinite}.map-loading span{font-size:9px;color:#91a5bf}@keyframes spin{to{transform:rotate(360deg)}}.map-zoom{position:absolute;right:18px;top:18px;display:flex;flex-direction:column;gap:4px}.map-zoom button{width:36px;height:36px;border:1px solid rgba(255,255,255,.14);background:rgba(10,29,57,.85);color:#fff;border-radius:8px;cursor:pointer}.map-key{position:absolute;left:20px;bottom:17px;display:flex;gap:16px;font-size:8px;color:#8da2bd}.map-key i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#48c8f5;margin-right:4px}.map-key span+span i{background:var(--lime)}.map-totals{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid rgba(255,255,255,.1)}.map-totals>div{padding:23px 28px}.map-totals>div+div{border-left:1px solid rgba(255,255,255,.1)}.map-totals strong{font:800 25px 'Noto Sans Thai';display:block}.map-totals span{font-size:8px;color:#8195b0}
.data-story{padding:140px 7vw;background:var(--paper);position:relative}.story-rail{position:absolute;left:1.3vw;top:180px;bottom:110px;display:flex;flex-direction:column;align-items:center;gap:13px;font:700 7px 'Noto Sans Thai';letter-spacing:.13em}.story-rail i{width:1px;background:#bdc6d0;flex:1}.story-rail b{writing-mode:vertical-rl}.story-intro{margin-bottom:80px}.story-scenes{display:grid;gap:25px}.story-scene{min-height:500px;background:#e9eff5;border-radius:30px;padding:45px;display:grid;grid-template-columns:80px 1fr 1fr;align-items:center;position:relative;overflow:hidden}.scene-number{position:absolute;right:30px;top:20px;font:900 96px 'Noto Sans Thai';color:rgba(7,24,49,.055)}.scene-copy small,.image-overlay small{font:700 8px 'Noto Sans Thai';letter-spacing:.17em;color:var(--blue)}.scene-copy h3,.image-overlay h3{font-size:clamp(43px,5vw,72px);line-height:1.02;letter-spacing:-.06em;margin:16px 0}.scene-copy p,.image-overlay p{font-size:12px;color:#657287;max-width:350px}.scene-stat{justify-self:center;display:flex;flex-direction:column}.scene-stat b{font:900 clamp(60px,8vw,118px) 'Noto Sans Thai';letter-spacing:-.07em;color:var(--blue)}.scene-stat span{font-size:10px;color:#68778b}.scene-stat svg{width:290px;margin-top:20px}.scene-stat path{fill:none;stroke:#1f82f2;stroke-width:3}.story-scene.invert{background:var(--ink);color:#fff}.invert .scene-copy p{color:#8ea1bb}.invert .scene-number{color:rgba(255,255,255,.05)}.pulse-rings{position:absolute;width:360px;height:360px;right:-50px;bottom:-120px}.pulse-rings i{position:absolute;inset:20%;border:1px solid rgba(79,195,247,.25);border-radius:50%;animation:ring 3s ease-out infinite}.pulse-rings i:nth-child(2){animation-delay:1s}.pulse-rings i:nth-child(3){animation-delay:2s}@keyframes ring{from{transform:scale(.4);opacity:1}to{transform:scale(1.7);opacity:0}}.image-scene{display:block;padding:0;height:650px}.image-scene>img{width:100%;height:100%;object-fit:cover;transition:1s var(--ease)}.image-scene:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,20,42,.95),rgba(5,20,42,.1))}.image-scene:hover>img{transform:scale(1.04)}.image-overlay{position:absolute;z-index:2;left:55px;top:50%;transform:translateY(-50%);color:#fff}.image-overlay p{color:#d5deea}
.places{padding:140px 6vw;background:#fff}.places-head{position:relative;margin-bottom:70px}.places-head>a{position:absolute;right:0;bottom:10px;border-bottom:1px solid var(--ink);padding-bottom:4px;font-size:11px;font-weight:700}.place-gallery{display:grid;grid-template-columns:1.2fr .8fr;grid-template-rows:560px 390px;gap:24px}.place-card{border:0;padding:0;position:relative;overflow:hidden;border-radius:27px;color:#fff;text-align:left;cursor:pointer;background:#111}.place-card.large{grid-row:1/3}.place-card img{width:100%;height:100%;object-fit:cover;transition:1s var(--ease);filter:saturate(.85)}.place-card:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(4,18,38,.9),transparent 60%)}.place-card:hover img{transform:scale(1.06)}.place-card>div{position:absolute;z-index:2;left:30px;right:30px;bottom:28px}.place-card small{font:700 7px 'Noto Sans Thai';letter-spacing:.14em}.place-card h3{font-size:clamp(26px,3vw,46px);line-height:1.05;letter-spacing:-.045em;margin:10px 0}.place-card>div>span{font-size:9px}.place-index{position:absolute;z-index:2;right:22px;top:18px;width:44px;height:44px;border:1px solid rgba(255,255,255,.65);border-radius:50%;display:grid;place-items:center;font:700 9px 'Noto Sans Thai'}
.events{background:var(--ink);color:#fff;padding:130px 0 145px;overflow:hidden}.events-title{padding:0 7vw;position:relative}.event-arrows{position:absolute;right:7vw;bottom:10px;display:flex;gap:7px}.event-arrows button{width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:transparent;color:#fff;cursor:pointer}.events-track{display:flex;gap:18px;overflow-x:auto;scrollbar-width:none;padding:65px 7vw 0;scroll-snap-type:x mandatory}.events-track::-webkit-scrollbar{display:none}.event-card{flex:0 0 360px;min-height:380px;border:1px solid rgba(255,255,255,.13);border-radius:22px;padding:27px;scroll-snap-align:start;display:flex;flex-direction:column;transition:.4s var(--ease)}.event-card:hover{background:#fff;color:var(--ink);transform:translateY(-8px)}.event-date{font:800 38px 'Noto Sans Thai';color:#59c9f7}.event-date small{font-size:10px;color:#8296b1;margin-left:5px}.event-card h3{font-size:21px;line-height:1.4;margin:35px 0}.event-card p{font-size:10px;color:#899db7;margin-top:auto}.event-card footer{display:flex!important;justify-content:space-between;background:transparent!important;padding:17px 0 0!important;border-top:1px solid rgba(128,148,174,.25);font-size:9px}.event-card footer span:last-child{color:#59c9f7}
.finale{height:720px;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;position:relative;overflow:hidden}.finale-bg{position:absolute;font:900 20vw/.8 'Noto Sans Thai';color:#f0f3f5;letter-spacing:-.08em}.finale>p{position:relative;font:700 8px 'Noto Sans Thai';letter-spacing:.16em;color:#68768a}.finale h2{position:relative}.finale>a{position:relative;background:var(--blue);color:#fff;border-radius:999px;padding:16px 24px;font-size:11px;font-weight:700;margin-top:35px}.finale-stats{position:absolute;left:7vw;right:7vw;bottom:35px;display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:18px;font-size:9px;color:#647287}
body>footer{background:#06162e;color:#a9bad0;padding:16px 4vw 10px;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.85fr) minmax(0,.85fr) minmax(0,1.15fr);gap:10px 16px;position:relative;overflow-x:clip}.footer-brand img{width:auto;max-width:min(168px,100%);max-height:46px;height:auto;object-fit:contain;box-sizing:border-box;background:#fff;padding:4px 8px;border-radius:12px}.footer-brand p{font:700 7px 'Noto Sans Thai';letter-spacing:.18em}.footer-brand~div h3,body>footer address h3{font-size:11px;color:#fff;margin:0 0 4px}.footer-brand~div>a,body>footer address a{display:block;font-size:10px;margin:2px 0}.footer-brand~div>a:hover{color:#fff}body>footer address{font-style:normal;font-size:10px;line-height:1.7}.footer-bottom{grid-column:1/-1;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;padding-top:8px;margin-top:2px;font:600 7px 'Noto Sans Thai';letter-spacing:.1em}
.reveal{opacity:0;transform:translateY(40px);transition:1s var(--ease)}.reveal.in{opacity:1;transform:none}
@media(max-width:1000px){.desktop-nav{gap:18px}.cinema-hero{min-height:700px}.hero-visual{left:18%;opacity:.68}.hero-copy{width:70vw}.hero-data{display:none}.map-app{grid-template-columns:220px 1fr}.place-gallery{grid-template-rows:470px 340px}}
@media(max-width:760px){.nav-shell{height:74px;padding:0 18px;background:rgba(255,255,255,.88);backdrop-filter:blur(14px);position:fixed}.brand{width:170px}.brand img{height:56px}.desktop-nav,.language,.login{display:none}.menu-button{display:flex;width:42px;height:42px;border:0;border-radius:50%;background:var(--ink);flex-direction:column;justify-content:center;align-items:center;gap:5px}.menu-button i{width:17px;height:1px;background:#fff;transition:.3s}.menu-button[aria-expanded=true] i:first-child{transform:translateY(3px) rotate(45deg)}.menu-button[aria-expanded=true] i:last-child{transform:translateY(-3px) rotate(-45deg)}.mobile-menu{display:flex;position:fixed;z-index:75;inset:74px 0 auto;background:#fff;padding:30px 22px;flex-direction:column;gap:18px;transform:translateY(-120%);transition:.5s var(--ease);box-shadow:0 20px 50px rgba(5,25,50,.14)}.mobile-menu.open{transform:none}.mobile-menu a{font-size:20px;font-weight:700}.cinema-hero{min-height:800px;height:auto;padding-bottom:30px}.hero-word{top:14%;font-size:135px;left:-5%}.hero-visual{inset:72px -85% 0 -5%;opacity:.36;clip-path:none}.hero-visual:after{background:linear-gradient(90deg,#fff 0%,rgba(255,255,255,.85) 48%,transparent)}.hero-copy{position:relative;left:auto;top:auto;width:auto;padding:155px 18px 0}.hero-copy h1{font-size:66px;line-height:.86;margin-top:32px}.hero-bottom{display:block}.hero-bottom>p{font-size:12px}.circle-cta{width:88px;height:88px;position:absolute;right:22px;bottom:-95px}.hero-meter{display:none}.manifesto{padding:105px 20px}.manifesto-text{font-size:43px}.image-word{width:92px;height:44px;margin:0 7px}.manifesto-foot{gap:12px;justify-content:flex-start;flex-wrap:wrap}.nation{padding:90px 15px}.nation-head{display:block}.nation-head h2,.story-intro h2,.places-head h2,.events-title h2,.finale h2{font-size:54px}.nation-head>p{margin-top:24px}.map-app{display:flex;flex-direction:column;border-radius:20px}.map-controls{order:2;border:0;border-top:1px solid rgba(255,255,255,.1)}.map-stage{height:560px;order:1}.map-totals{order:3;grid-template-columns:1fr 1fr}.map-totals>div:nth-child(3){border-left:0}.selected-place{margin-top:30px}.data-story{padding:100px 15px}.story-rail{display:none}.story-scene{min-height:530px;padding:28px;grid-template-columns:1fr;align-content:center}.scene-stat{justify-self:start}.scene-stat b{font-size:62px}.scene-stat svg{width:230px}.image-scene{height:560px}.image-overlay{left:28px;right:28px}.places{padding:100px 15px}.places-head>a{position:static;display:inline-block;margin-top:25px}.place-gallery{display:flex;overflow-x:auto;scroll-snap-type:x mandatory}.place-card{flex:0 0 87vw;height:520px;scroll-snap-align:start}.place-card.large{height:520px}.events{padding:95px 0}.events-title{padding:0 18px}.event-arrows{position:static;margin-top:30px}.events-track{padding:45px 18px 0}.event-card{flex-basis:84vw}.finale{height:650px}.finale-bg{font-size:34vw}.finale-stats{left:18px;right:18px;gap:8px}body>footer{grid-template-columns:1fr 1fr;padding:14px 16px 8px;gap:10px 14px}.footer-brand,body>footer address{grid-column:1/-1}}
@media(max-width:430px){.hero-copy h1{font-size:57px}.hero-word{font-size:105px}.hero-copy{padding-top:145px}.manifesto-text{font-size:37px}.nation-head h2,.story-intro h2,.places-head h2,.events-title h2,.finale h2{font-size:46px}.map-stage{height:500px}.map-totals>div{padding:18px}.map-totals strong{font-size:20px}.story-scene{min-height:500px}.scene-copy h3,.image-overlay h3{font-size:42px}.finale h2{font-size:48px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.loader{display:none}.hero-copy h1 span,.reveal{opacity:1;transform:none}.hero-visual img{transform:none}}
@media(max-width:760px){.nav-actions{margin-left:auto}}

/* Scroll-driven opening scene */
.cinema-hero,.finale{display:none}
.motion-hero{height:100svh;min-height:680px;background:#fff;position:relative;isolation:isolate}
.motion-stage{position:relative;height:100%;min-height:680px;overflow:hidden;display:grid;place-items:center;background:radial-gradient(circle at 50% 32%,#fff 0,#fff 48%,#f8fbfe 100%)}
.motion-stage:after{display:none}
.motion-sports{position:absolute;z-index:0;left:50%;top:43%;width:max-content;transform:translate(-50%,-50%);font:900 clamp(180px,24vw,380px)/.72 'Noto Sans Thai',sans-serif;letter-spacing:-.1em;color:#eef2f5;white-space:nowrap;will-change:transform,letter-spacing,opacity}
.motion-copy{position:absolute;z-index:4;top:20%;left:50%;width:min(900px,88vw);transform:translateX(-50%);text-align:center;will-change:transform,opacity}
.motion-copy>p{margin:0 0 24px;font:700 10px 'Noto Sans Thai';letter-spacing:.2em;color:#5c6d83}
.motion-copy h1{margin:0;font-size:clamp(64px,7vw,108px);line-height:.92;letter-spacing:-.07em;font-weight:900}
.motion-copy h1 em{font-style:normal;color:var(--blue)}
.motion-copy>a{display:inline-flex;align-items:center;gap:10px;margin-top:34px;padding:17px 28px;border-radius:999px;background:var(--blue);color:#fff;font-size:12px;font-weight:750;box-shadow:0 16px 40px rgba(20,121,245,.2);transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
.motion-copy>a:hover{transform:translateY(-4px);box-shadow:0 24px 55px rgba(20,121,245,.28)}
.hero-search{position:relative;width:min(500px,100%)}
.hero-search>label{display:block;margin-bottom:7px;font-size:9px;font-weight:750;color:#233b58}
.hero-search-box{height:58px;display:flex;align-items:center;padding:0 7px 0 18px;border:1px solid #cfdae5;border-radius:15px;background:rgba(255,255,255,.92);box-shadow:0 18px 55px rgba(20,67,110,.1);backdrop-filter:blur(12px)}
.hero-search-box>span{margin-right:10px;color:var(--blue);font-size:21px}.hero-search-box input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:var(--ink);font-size:12px}.hero-search-box input::placeholder{color:#8c9bad}.hero-search-box button{height:44px;padding:0 20px;border:0;border-radius:10px;background:var(--blue);color:#fff;font-size:10px;font-weight:750;cursor:pointer}
.hero-search-results{display:none;position:absolute;z-index:20;left:0;right:0;top:calc(100% + 7px);overflow:hidden;border:1px solid #d7e0e8;border-radius:14px;background:#fff;box-shadow:0 22px 55px rgba(7,24,49,.16)}.hero-search-results.open{display:block}.hero-search-result{width:100%;display:grid;grid-template-columns:1fr;gap:5px 14px;padding:12px 15px;border:0;border-bottom:1px solid #edf1f4;background:#fff;color:var(--ink);text-align:left;cursor:pointer}.hero-search-result:last-child{border-bottom:0}.hero-search-result:hover,.hero-search-result:focus{background:#f1f7ff;outline:0}.hero-search-result b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}.hero-search-result span{grid-row:1/3;grid-column:2;color:var(--blue);font-size:15px}.hero-search-result small{color:#748397;font-size:8px}.hero-search-empty{padding:16px;color:#748397;font-size:10px}
.motion-map-panel{position:absolute;z-index:3;right:3.5vw;top:12%;width:min(47vw,680px);height:74%;min-height:540px}.motion-map-panel:before{content:"";position:absolute;inset:8% 7% 7%;border:1px solid rgba(17,118,243,.1);border-radius:50%;transform:rotate(-12deg)}.motion-map-panel:after{content:"";position:absolute;inset:17% 2% 1% 18%;border:1px solid rgba(17,118,243,.07);border-radius:50%;transform:rotate(16deg)}
.motion-map-label{position:absolute;z-index:5;left:5%;bottom:8%;display:grid;gap:4px}.motion-map-label span{font:800 7px 'Noto Sans Thai';letter-spacing:.18em;color:var(--blue)}.motion-map-label b{font:650 8px 'Noto Sans Thai';letter-spacing:.1em;color:#7b899a}
#hero-map-canvas{position:absolute;z-index:2;left:22%;top:3%;width:55%;height:91%;filter:drop-shadow(0 20px 28px rgba(17,118,243,.12))}
.motion-map-lines{position:absolute;z-index:3;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.motion-map-lines path{fill:none;stroke:#87a7c5;stroke-width:1.2;stroke-dasharray:1;stroke-dashoffset:1}.motion-map-lines circle{fill:#fff;stroke:var(--blue);stroke-width:2;opacity:0;transform-box:fill-box;transform-origin:center;transform:scale(.2)}
.map-callout{position:absolute;z-index:5;min-width:132px;padding:15px 17px;border:1px solid rgba(179,197,214,.66);border-radius:17px;background:rgba(255,255,255,.89);box-shadow:0 17px 45px rgba(22,63,100,.1);backdrop-filter:blur(14px)}.map-callout small,.map-callout strong,.map-callout span{display:block}.map-callout small{font:750 6px 'Noto Sans Thai';letter-spacing:.14em;color:#728296}.map-callout strong{margin:3px 0 1px;font:850 24px 'Noto Sans Thai';color:var(--blue);letter-spacing:-.04em}.map-callout span{font-size:8px;color:#53667c}.callout-provinces{left:0;top:5%}.callout-facilities{right:0;top:17%}.callout-coverage{right:2%;bottom:8%}
.motion-map-legend{position:absolute;z-index:5;left:2%;top:36%;width:118px;display:flex;align-items:flex-start;gap:7px;color:#6f8094;font-size:7px;line-height:1.55}.motion-map-legend i{width:7px;height:7px;flex:0 0 auto;margin-top:2px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 5px rgba(17,118,243,.09)}
.map-intro{min-height:920px;position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-columns:minmax(390px,.82fr) minmax(560px,1.18fr);align-items:center;gap:3vw;padding:110px 5vw;background:radial-gradient(circle at 74% 47%,#e8f5ff 0,rgba(232,245,255,.18) 35%,transparent 58%),linear-gradient(135deg,#fff,#f8fbfd)}.map-intro:before{content:"THAILAND";position:absolute;z-index:-1;left:-3vw;top:50%;transform:translateY(-50%);font:900 18vw/.72 'Noto Sans Thai';color:#eef2f5;letter-spacing:-.08em;white-space:nowrap}.map-intro:after{content:"";position:absolute;z-index:50;inset:0;background:radial-gradient(circle at 72% 48%,#1698ff 0,#0769d8 32%,#062e6a 72%,#041f4c 100%);opacity:1;visibility:visible;pointer-events:none;transition:opacity 1.45s var(--ease),visibility 1.45s}.map-intro.in-view:after{opacity:0;visibility:hidden}.map-intro-copy{position:relative;z-index:10;opacity:0;transform:translateY(46px);transition:opacity .9s var(--ease) .38s,transform 1.1s var(--ease) .38s}.map-intro.in-view .map-intro-copy{opacity:1;transform:none}.map-intro-copy h2{margin:20px 0 0;font-size:clamp(58px,6.5vw,102px);font-weight:900;line-height:.88;letter-spacing:-.07em}.map-intro-copy h2 em{display:block;color:var(--blue);font-style:normal}.map-intro-copy .motion-lead{max-width:500px;margin:28px 0 22px;color:#66758a;font-size:12px;line-height:1.75}.map-intro .hero-search{width:min(500px,100%)}.map-intro-link{display:inline-flex;align-items:center;gap:10px;margin-top:20px;padding:13px 20px;border-radius:999px;background:var(--ink);color:#fff;font-size:10px;font-weight:750;box-shadow:0 16px 40px rgba(7,24,49,.13)}.map-intro .motion-map-panel{position:relative;right:auto;top:auto;width:100%;height:680px;min-height:0;opacity:0;transform:translateY(42px) scale(.965);transition:opacity 1s var(--ease) .58s,transform 1.2s var(--ease) .58s}.map-intro.in-view .motion-map-panel{opacity:1;transform:none}.map-intro #hero-map-canvas{clip-path:inset(0 0 100% 0);transition:clip-path 1.35s var(--ease) .72s,filter .7s ease}.map-intro.in-view #hero-map-canvas{clip-path:inset(0)}.map-intro .map-callout{opacity:0;transform:translateY(18px) scale(.78)}.map-intro.in-view .map-callout{opacity:1;transform:none;transition:opacity .55s var(--ease),transform .7s var(--ease)}.map-intro.in-view .callout-provinces{transition-delay:1s}.map-intro.in-view .callout-facilities{transition-delay:1.18s}.map-intro.in-view .callout-coverage{transition-delay:1.36s}.map-intro.in-view .motion-map-lines path{stroke-dashoffset:0;transition:stroke-dashoffset .8s var(--ease)}.map-intro.in-view .motion-map-lines path:nth-of-type(1){transition-delay:.9s}.map-intro.in-view .motion-map-lines path:nth-of-type(2){transition-delay:1.08s}.map-intro.in-view .motion-map-lines path:nth-of-type(3){transition-delay:1.26s}.map-intro.in-view .motion-map-lines circle{opacity:1;transform:scale(1);transition:opacity .25s ease,transform .45s var(--ease);transition-delay:1.15s}.map-intro.in-view .motion-map-panel:before{animation:mapOrbitA 10s ease-in-out 1.4s infinite alternate}.map-intro.in-view .motion-map-panel:after{animation:mapOrbitB 13s ease-in-out 1.4s infinite alternate}.map-intro .motion-map-legend{opacity:0;transition:opacity .6s ease 1.45s}.map-intro.in-view .motion-map-legend{opacity:1}@keyframes mapOrbitA{to{transform:rotate(-6deg) scale(1.045)}}@keyframes mapOrbitB{to{transform:rotate(9deg) scale(.96)}}
.motion-scroll{position:absolute;z-index:7;left:6vw;bottom:46px;display:flex;align-items:center;gap:12px;font:700 8px 'Noto Sans Thai';letter-spacing:.16em;color:#5e6f84}
.motion-scroll i{width:70px;height:1px;background:#bccbd9;position:relative;overflow:hidden}
.motion-scroll i:after{content:"";position:absolute;inset:0;background:var(--blue);transform:translateX(-100%);animation:scrollCue 1.7s ease-in-out infinite}
.motion-scroll b{font-size:10px;color:var(--blue)}
.motion-stats{position:absolute;z-index:7;right:6vw;bottom:45px;display:flex;gap:32px;font-size:9px;color:#627287}
@keyframes scrollCue{50%,100%{transform:translateX(100%)}}

@media(max-width:760px){
  .motion-hero{height:100svh;min-height:620px}
  .motion-stage{min-height:620px}
  .motion-sports{left:50%;top:38%;font-size:35vw}
  .motion-copy{top:20%;left:50%;width:calc(100% - 34px)}
  .motion-copy>p{font-size:8px;margin-bottom:20px}
  .motion-copy h1{font-size:clamp(48px,14vw,64px);line-height:.9}
  .motion-copy>a{margin-top:25px;padding:14px 20px;font-size:10px}
  .map-intro{min-height:1020px;display:block;padding:92px 18px 70px}.map-intro:before{top:24%;font-size:38vw}.map-intro-copy h2{font-size:clamp(49px,14vw,62px)}.map-intro-copy .motion-lead{margin:22px 0;font-size:11px}.hero-search{margin-top:20px}.hero-search-box{height:52px;padding-left:13px}.hero-search-box button{height:40px;padding:0 14px}.map-intro-link{margin-top:16px}.map-intro .motion-map-panel{height:430px;margin-top:48px}.map-callout{min-width:104px;padding:10px 12px;border-radius:13px}.map-callout strong{font-size:19px}.callout-provinces{left:0;top:0}.callout-facilities{right:0;top:7%}.callout-coverage{right:0;bottom:3%}#hero-map-canvas{left:21%;top:0;width:58%;height:100%}.motion-map-label{display:none}.motion-map-legend{left:0;top:31%;width:93px}.motion-map-lines{opacity:.75}
  .motion-scroll{left:18px;bottom:37px}
  .motion-scroll span{display:none}
  .motion-scroll i{width:42px}
  .motion-stats{right:18px;bottom:36px;gap:10px;font-size:7px}
  .motion-stage:after{left:18px;right:18px;bottom:19px}
}

@media(prefers-reduced-motion:reduce){
  .motion-hero{height:100svh}
  .motion-sports{letter-spacing:.02em!important;transform:translate(-50%,-50%) scale(1.06)!important}
  .motion-scroll{display:none}
  .map-intro:after{display:none}
  .map-intro-copy,.map-intro .motion-map-panel,.map-intro .map-callout,.map-intro .motion-map-legend{opacity:1!important;transform:none!important;transition:none!important}
  .map-intro #hero-map-canvas{clip-path:none!important;transition:none!important}
  .map-intro .motion-map-lines path{stroke-dashoffset:0!important;transition:none!important}
  .map-intro .motion-map-lines circle{opacity:1!important;transform:none!important;transition:none!important}
  .map-intro .motion-map-panel:before,.map-intro .motion-map-panel:after{animation:none!important}
}

/* Scroll-linked blue reveal for Section 2 */
.map-intro:after,.map-intro.in-view:after{opacity:calc(1 - var(--map-reveal,0));visibility:visible;transition:none}
@media(prefers-reduced-motion:reduce){.map-intro:after,.map-intro.in-view:after{display:none}}

/* New horizontal brand mark */
.brand{width:250px}.footer-brand img{width:auto;max-width:min(168px,100%);max-height:46px}.footer-brand p{display:none}
@media(max-width:760px){.brand{width:205px}.brand img{height:52px}.footer-brand img{width:auto;max-width:min(150px,100%);max-height:46px}}

/* Editorial heading weight */
.hero-copy h1,
.motion-copy h1,
.map-intro-copy h2,
.manifesto-text,
.nation-head h2,
.story-intro h2,
.places-head h2,
.events-title h2,
.finale h2,
.scene-copy h3,
.image-overlay h3,
.place-card h3,
.event-card h3,
.selected-place h3{font-weight:500}

/* Floating capsule navigation inspired by premium fitness interfaces */
.nav-shell{
  position:fixed;top:18px;left:50%;right:auto;width:min(1180px,calc(100% - 40px));height:72px;
  padding:7px 8px 7px 18px;transform:translateX(-50%);border:1px solid rgba(7,24,49,.08);border-radius:22px;
  background:rgba(255,255,255,.9);box-shadow:0 16px 45px rgba(7,24,49,.11),inset 0 1px 0 rgba(255,255,255,.9);
  backdrop-filter:blur(18px) saturate(145%);-webkit-backdrop-filter:blur(18px) saturate(145%);
  transition:top .45s var(--ease),width .45s var(--ease),height .45s var(--ease),box-shadow .45s var(--ease),background .45s ease;
  animation:navEnter .8s var(--ease) .15s both;
}
.nav-shell.is-scrolled{top:10px;width:min(1080px,calc(100% - 32px));height:64px;background:rgba(255,255,255,.96);box-shadow:0 12px 38px rgba(7,24,49,.16),inset 0 1px 0 #fff}
.nav-shell .brand{width:210px;flex:0 0 auto}.nav-shell .brand img{height:50px;transition:height .45s var(--ease)}.nav-shell.is-scrolled .brand img{height:44px}
.desktop-nav{gap:8px;margin-left:auto;margin-right:auto;padding:4px;border-radius:15px}
.desktop-nav a{padding:10px 13px;border-radius:11px;font-size:11px;font-weight:500;white-space:nowrap;transition:color .3s ease,background .3s ease,transform .3s var(--ease)}
.desktop-nav a:after{display:none}.desktop-nav a:hover{color:var(--blue);background:#f1f6fb;transform:translateY(-1px)}
.desktop-nav a.active{color:#fff;background:var(--blue);box-shadow:0 8px 20px rgba(31,130,242,.22)}
.nav-actions{gap:7px}.language{height:44px;padding:0 10px;border-radius:12px;transition:background .3s ease}.language:hover{background:#f1f6fb}
.login{min-height:44px;padding:0 17px;border-radius:14px;align-items:center;transition:transform .3s var(--ease),background .3s ease,box-shadow .3s ease}
.login:hover{background:var(--blue);transform:translateY(-1px);box-shadow:0 9px 20px rgba(31,130,242,.23)}
.desktop-nav a:focus-visible,.language:focus-visible,.login:focus-visible,.menu-button:focus-visible,.mobile-menu a:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
@keyframes navEnter{from{opacity:0;transform:translate(-50%,-18px) scale(.97)}to{opacity:1;transform:translateX(-50%) scale(1)}}

@media(max-width:1100px){
  .nav-shell,.nav-shell.is-scrolled{top:12px;width:calc(100% - 24px);height:64px;padding:6px 7px 6px 15px;border-radius:19px}
  .nav-shell .brand{width:198px}.nav-shell .brand img,.nav-shell.is-scrolled .brand img{height:46px}
  .desktop-nav,.language,.login{display:none}.nav-actions{margin-left:auto}
  .menu-button{display:flex;width:46px;height:46px;border:0;border-radius:14px;background:var(--ink);flex-direction:column;justify-content:center;align-items:center;gap:6px;cursor:pointer;transition:background .3s ease,transform .3s var(--ease)}
  .menu-button:hover,.menu-button[aria-expanded=true]{background:var(--blue)}.menu-button i{width:18px;height:1px;background:#fff;transition:transform .35s var(--ease)}
  .menu-button[aria-expanded=true] i:first-child{transform:translateY(3.5px) rotate(45deg)}.menu-button[aria-expanded=true] i:last-child{transform:translateY(-3.5px) rotate(-45deg)}
  .mobile-menu{display:flex;position:absolute;z-index:75;top:calc(100% + 10px);left:0;right:0;bottom:auto;padding:18px;flex-direction:column;gap:5px;border:1px solid rgba(7,24,49,.08);border-radius:22px;background:rgba(255,255,255,.97);box-shadow:0 24px 60px rgba(7,24,49,.18);backdrop-filter:blur(18px);opacity:0;visibility:hidden;transform:translateY(-12px) scale(.98);transform-origin:top;transition:opacity .35s ease,visibility .35s ease,transform .45s var(--ease)}
  .mobile-menu.open{opacity:1;visibility:visible;transform:none}
  .mobile-menu a{display:flex;align-items:center;gap:14px;padding:13px 14px;border-radius:13px;font-size:18px;font-weight:500;transition:background .25s ease,color .25s ease}
  .mobile-menu a:before{font:600 8px 'Noto Sans Thai';color:#8aa0b9;letter-spacing:.08em}.mobile-menu a:nth-child(1):before{content:'01'}.mobile-menu a:nth-child(2):before{content:'02'}.mobile-menu a:nth-child(3):before{content:'03'}.mobile-menu a:nth-child(4):before{content:'04'}
  .mobile-menu a:hover,.mobile-menu a.active{color:var(--blue);background:#eef6ff}
}
@media(max-width:430px){.nav-shell .brand{width:174px}.nav-shell .brand img,.nav-shell.is-scrolled .brand img{height:43px}.mobile-menu a{font-size:17px}}
@media(prefers-reduced-motion:reduce){.nav-shell{animation:none;transition:none}.desktop-nav a,.login,.menu-button,.mobile-menu{transition:none}}

/* Venue search promoted to the opening headline */
.motion-copy .hero-search{margin:30px auto 0;text-align:left}
.motion-copy .hero-search>label{color:#536a85}
@media(max-width:760px){.motion-copy .hero-search{margin-top:24px}.motion-copy .hero-search-box{box-shadow:0 14px 38px rgba(20,67,110,.12)}}

/* Soft pill surfaces and dimensional search interaction */
.nav-shell,.nav-shell.is-scrolled{border-radius:999px}
.hero-search-box{
  position:relative;overflow:hidden;border-radius:999px;
  transition:transform .4s var(--ease),border-color .35s ease,box-shadow .4s var(--ease),background .35s ease;
}
.hero-search-box:before{
  content:"";position:absolute;z-index:0;top:-65%;bottom:-65%;left:-38%;width:25%;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.95),rgba(90,187,255,.32),transparent);
  filter:blur(2px);transform:skewX(-18deg);opacity:0;
}
.hero-search-box>*{position:relative;z-index:1}
.hero-search-box:hover,.hero-search-box:focus-within{
  transform:translateY(-3px);border-color:rgba(31,130,242,.5);background:#fff;
  box-shadow:0 24px 55px rgba(7,24,49,.14),0 8px 24px rgba(31,130,242,.16),0 0 0 5px rgba(31,130,242,.06);
}
.hero-search-box:hover:before,.hero-search-box:focus-within:before{opacity:1;animation:searchShine .9s var(--ease) both}
.hero-search-box button{border-radius:999px;transition:transform .3s var(--ease),box-shadow .3s ease,background .3s ease}
.hero-search-box button:hover{background:#086bdd;transform:scale(1.035);box-shadow:0 8px 18px rgba(31,130,242,.28)}
.hero-search-box input:focus{outline:0}
.hero-search-results{border-radius:22px}
@keyframes searchShine{from{left:-38%}to{left:118%}}
@media(max-width:1100px){.nav-shell,.nav-shell.is-scrolled{border-radius:999px}.menu-button{border-radius:50%}}
@media(prefers-reduced-motion:reduce){.hero-search-box,.hero-search-box button{transition:none}.hero-search-box:hover:before,.hero-search-box:focus-within:before{animation:none;opacity:0}}

/* Softer motion choreography for the opening experience */
.motion-stage:before{
  content:"";position:absolute;z-index:0;inset:-18%;pointer-events:none;opacity:.55;
  background:radial-gradient(circle 320px at var(--stage-x,50%) var(--stage-y,42%),rgba(67,170,255,.14),transparent 72%);
  transition:opacity .6s ease;
}
.motion-copy>p{animation:heroEyebrowReveal .8s var(--ease) .72s both}
.motion-copy h1>span,.motion-copy h1>em{display:inline-block;will-change:transform,clip-path,opacity}
.motion-copy h1>span{animation:heroLineReveal 1.15s var(--ease) .82s both}
.motion-copy h1>em{animation:heroLineReveal 1.15s var(--ease) 1.02s both}
.motion-copy .hero-search{isolation:isolate;animation:heroSearchReveal 1s var(--ease) 1.22s both}
.motion-copy .hero-search:before{
  content:"";position:absolute;z-index:-1;inset:20px 6% -20px;border-radius:999px;pointer-events:none;
  background:rgba(35,142,246,.18);filter:blur(28px);opacity:.42;animation:searchAura 4.8s ease-in-out 2.1s infinite alternate;
}
.hero-search-box{--mx:50%;--my:50%;transform:none;background:rgba(255,255,255,.86);box-shadow:0 14px 42px rgba(20,67,110,.09)}
.hero-search-box:before{
  inset:-70%;left:-35%;width:170%;height:240%;opacity:0;filter:none;transform:none;
  background:radial-gradient(circle 105px at var(--mx) var(--my),rgba(74,179,255,.24),rgba(255,255,255,.18) 42%,transparent 72%);
  transition:opacity .45s ease;
}
.hero-search-box:hover,.hero-search-box:focus-within{
  transform:translateY(-1px);border-color:rgba(64,156,239,.42);background:rgba(255,255,255,.95);
  box-shadow:0 22px 55px rgba(7,24,49,.11),0 7px 22px rgba(31,130,242,.11),0 0 0 4px rgba(31,130,242,.045);
}
.hero-search-box:hover:before,.hero-search-box:focus-within:before{opacity:1;animation:none}
.hero-search-box>span{animation:searchIconBreathe 2.8s ease-in-out 2.2s infinite}
.hero-search-box button{overflow:hidden;position:relative;box-shadow:0 7px 16px rgba(31,130,242,.18)}
.hero-search-box button:after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 20%,rgba(255,255,255,.36) 46%,transparent 70%);transform:translateX(-130%);transition:transform .75s var(--ease)}
.hero-search-box button:hover{transform:translateY(-1px);box-shadow:0 10px 22px rgba(31,130,242,.25)}
.hero-search-box button:hover:after{transform:translateX(130%)}
.desktop-nav a{animation:navItemReveal .7s var(--ease) both}.desktop-nav a:nth-child(1){animation-delay:.48s}.desktop-nav a:nth-child(2){animation-delay:.56s}.desktop-nav a:nth-child(3){animation-delay:.64s}.desktop-nav a:nth-child(4){animation-delay:.72s}
@keyframes heroEyebrowReveal{from{opacity:0;transform:translateY(10px);letter-spacing:.32em}to{opacity:1;transform:none}}
@keyframes heroLineReveal{from{opacity:0;clip-path:inset(0 0 100%);transform:translateY(38px) skewY(2deg)}to{opacity:1;clip-path:inset(0);transform:none}}
@keyframes heroSearchReveal{from{opacity:0;transform:translateY(24px) scale(.965);filter:blur(7px)}to{opacity:1;transform:none;filter:none}}
@keyframes searchAura{to{opacity:.72;transform:scale(1.08) translateY(-3px)}}
@keyframes searchIconBreathe{50%{opacity:.58;transform:scale(.88)}}
@keyframes navItemReveal{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){
  .motion-copy>p,.motion-copy h1>span,.motion-copy h1>em,.motion-copy .hero-search,.motion-copy .hero-search:before,.hero-search-box>span,.desktop-nav a{animation:none!important;opacity:1;clip-path:none;transform:none;filter:none}
  .motion-stage:before{display:none}
}

/* Compact glass navigation and safe Thai glyph reveal */
.nav-shell{
  width:min(1040px,calc(100% - 40px));
  background:linear-gradient(115deg,rgba(255,255,255,.32),rgba(244,250,255,.1));
  border-color:rgba(255,255,255,.46);
  box-shadow:0 18px 50px rgba(8,35,67,.09),inset 0 1px 0 rgba(255,255,255,.66),inset 0 -1px 0 rgba(123,164,203,.06);
  backdrop-filter:blur(22px) saturate(165%);-webkit-backdrop-filter:blur(22px) saturate(165%);
}
.nav-shell.is-scrolled{width:min(940px,calc(100% - 32px));background:linear-gradient(115deg,rgba(255,255,255,.36),rgba(235,246,255,.14));border-color:rgba(255,255,255,.5);box-shadow:0 14px 42px rgba(8,35,67,.12),inset 0 1px 0 rgba(255,255,255,.7)}
.nav-shell .brand{width:188px}.nav-shell .brand img{height:46px}.nav-shell.is-scrolled .brand img{height:42px}
.desktop-nav a{line-height:1.45}
.nav-actions,.language,.login{flex-shrink:0}
.login{min-width:112px;min-height:46px;border-radius:999px;padding:0 20px;line-height:1.4;white-space:nowrap;overflow:visible;justify-content:center}
.login span{display:inline-block;line-height:1}
.motion-copy h1>span,.motion-copy h1>em{padding:.18em .08em .1em;margin:-.18em -.08em -.1em}
@keyframes heroLineReveal{from{opacity:0;clip-path:inset(0 -12% 100%);transform:translateY(38px) skewY(2deg)}to{opacity:1;clip-path:inset(-28% -12%);transform:none}}
@media(max-width:1100px){
  .nav-shell,.nav-shell.is-scrolled{width:calc(100% - 24px);background:linear-gradient(115deg,rgba(255,255,255,.36),rgba(238,248,255,.14));border-color:rgba(255,255,255,.5)}
  .nav-shell .brand{width:184px}.nav-shell .brand img,.nav-shell.is-scrolled .brand img{height:44px}
}
@media(max-width:430px){.nav-shell .brand{width:168px}.nav-shell .brand img,.nav-shell.is-scrolled .brand img{height:41px}}

/* Branded loading experience */
.loader{overflow:hidden;background:radial-gradient(circle at 50% 48%,#0c2d59 0,#071f40 42%,#06182f 100%)}
.loader:before{content:"";position:absolute;inset:-25%;pointer-events:none;background:conic-gradient(from 180deg at 50% 50%,transparent,rgba(25,135,255,.09),transparent 28%,rgba(93,203,255,.07),transparent 62%);animation:loaderAtmosphere 8s linear infinite}
.loader-brand-stage{position:relative;width:410px;height:154px;display:grid;place-items:center;animation:loaderBrandIn .9s var(--ease) both}
.loader-logo-card{position:relative;z-index:3;width:340px;height:102px;display:grid;place-items:center;overflow:hidden;border:1px solid rgba(255,255,255,.72);border-radius:30px;background:linear-gradient(120deg,rgba(255,255,255,.98),rgba(238,247,255,.86));box-shadow:0 30px 90px rgba(0,0,0,.28),0 0 58px rgba(29,137,255,.22),inset 0 1px 0 #fff;backdrop-filter:blur(18px);animation:loaderCardFloat 2.6s ease-in-out .8s infinite alternate}
.loader-logo-card:after{content:"";position:absolute;top:-45%;bottom:-45%;left:-38%;width:24%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95),rgba(109,197,255,.38),transparent);filter:blur(2px);transform:skewX(-18deg);animation:loaderLogoSweep 1.7s var(--ease) .35s infinite}
.loader-logo-card img{position:relative;z-index:1;width:270px;height:76px;object-fit:contain;mix-blend-mode:multiply;animation:loaderLogoFocus .95s var(--ease) .12s both}
.loader-orbit{position:absolute;z-index:1;inset:2px;border:1px solid rgba(90,190,255,.28);border-radius:50%;animation:loaderOrbit 3.2s linear infinite}
.loader-orbit:before{content:"";position:absolute;left:11%;top:9%;width:7px;height:7px;border-radius:50%;background:#43bfff;box-shadow:0 0 18px #2a9fff,0 0 36px rgba(42,159,255,.7)}
.loader-orbit.orbit-b{inset:17px -10px;opacity:.48;animation-direction:reverse;animation-duration:4.6s}.loader-orbit.orbit-b:before{left:auto;right:15%;top:auto;bottom:4%;width:5px;height:5px}
.loader-track{position:relative;width:230px;height:2px;margin-top:24px;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.13)}
.loader-track i{position:absolute;inset:0;background:linear-gradient(90deg,transparent,#25a7ff 38%,#fff 52%,#25a7ff 66%,transparent);transform:translateX(-100%);animation:loaderTrack 1.05s var(--ease) infinite}
.loader>p{position:relative;margin:15px 0 0;font-size:10px;letter-spacing:.14em;color:#8da6c6;animation:loaderCaption 1.1s ease .35s both}
@keyframes loaderBrandIn{from{opacity:0;transform:scale(.88);filter:blur(12px)}to{opacity:1;transform:none;filter:none}}
@keyframes loaderLogoFocus{from{opacity:0;transform:scale(1.12);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
@keyframes loaderCardFloat{to{transform:translateY(-5px);box-shadow:0 38px 100px rgba(0,0,0,.3),0 0 76px rgba(29,137,255,.3),inset 0 1px 0 #fff}}
@keyframes loaderLogoSweep{0%,18%{left:-38%;opacity:0}32%{opacity:1}58%,100%{left:118%;opacity:0}}
@keyframes loaderOrbit{to{transform:rotate(360deg)}}
@keyframes loaderTrack{to{transform:translateX(100%)}}
@keyframes loaderAtmosphere{to{transform:rotate(360deg)}}
@keyframes loaderCaption{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:520px){.loader-brand-stage{width:330px;height:130px}.loader-logo-card{width:286px;height:88px;border-radius:26px}.loader-logo-card img{width:228px;height:64px}.loader-track{width:190px;margin-top:18px}.loader>p{font-size:9px}}
@media(prefers-reduced-motion:reduce){.loader:before,.loader-brand-stage,.loader-logo-card,.loader-logo-card:after,.loader-logo-card img,.loader-orbit,.loader-track i,.loader>p{animation:none!important}}

/* Clean section titles without numbered eyebrow labels */
.map-intro-copy h2,.nation-head h2,.story-intro h2,.places-head h2,.events-title h2,.finale h2{margin-top:0}

/* Sitemap navigation */
.desktop-nav{gap:2px;align-self:stretch;align-items:center}
.desktop-nav .nav-primary-link{appearance:none;border:0;background:transparent;color:var(--ink);font:500 10px/1.45 'Noto Sans Thai',sans-serif;padding:10px 9px;border-radius:999px;white-space:nowrap;cursor:pointer;transition:color .3s ease,background .3s ease,transform .3s var(--ease)}
.desktop-nav .nav-primary-link:hover,.desktop-nav .nav-primary-link:focus-visible{color:var(--blue);background:rgba(255,255,255,.45);transform:translateY(-1px)}
.desktop-nav .nav-primary-link.active{color:#fff;background:var(--blue);box-shadow:0 8px 20px rgba(31,130,242,.22)}
.nav-primary-link>span{display:none}
.nav-group{position:relative;display:flex;align-items:center;height:100%}
.nav-dropdown-trigger{position:relative}
.nav-group.open .nav-dropdown-trigger{color:var(--blue);background:rgba(225,240,255,.58)}
.nav-dropdown{position:absolute;z-index:100;left:50%;top:calc(100% + 7px);width:250px;padding:10px;border:1px solid rgba(255,255,255,.76);border-radius:22px;background:linear-gradient(135deg,rgba(255,255,255,.94),rgba(239,247,255,.88));box-shadow:0 24px 60px rgba(7,24,49,.18),inset 0 1px 0 rgba(255,255,255,.95);backdrop-filter:blur(28px) saturate(155%);-webkit-backdrop-filter:blur(28px) saturate(155%);opacity:0;visibility:hidden;transform:translate(-50%,-9px) scale(.97);transform-origin:top;transition:opacity .25s ease,visibility .25s ease,transform .35s var(--ease)}
.nav-group.open>.nav-dropdown{opacity:1;visibility:visible;transform:translate(-50%,0) scale(1)}
.desktop-nav .nav-dropdown a{display:block;padding:10px 12px;border-radius:12px;color:#203751;font-size:10px;font-weight:500;line-height:1.45;animation:none;transition:color .22s ease,background .22s ease,transform .22s var(--ease)}
.desktop-nav .nav-dropdown a:hover,.desktop-nav .nav-dropdown a:focus-visible{color:var(--blue);background:rgba(255,255,255,.72);transform:translateX(3px)}
.nav-subgroup{padding:6px 6px 7px;margin-bottom:5px;border-radius:14px;background:rgba(227,240,252,.52)}.nav-subgroup b{display:block;padding:3px 6px 5px;font-size:8px;letter-spacing:.08em;color:#70839a}.desktop-nav .nav-subgroup a{padding-left:16px}
.compact-dropdown{width:215px}
.stats-dropdown{width:240px}
@media(min-width:1101px) and (max-width:1250px){.nav-shell{width:min(1020px,calc(100% - 28px));padding-left:13px}.nav-shell .brand{width:166px}.nav-shell .brand img{height:42px}.desktop-nav .nav-primary-link{padding-inline:7px;font-size:9px}.language{display:none}.login{min-width:100px;padding-inline:15px}}
@media(max-width:1100px){
  .mobile-menu{max-height:calc(100vh - 100px);overflow:auto;gap:3px;padding:14px}
  .mobile-menu>a:before,.mobile-menu a:nth-child(n):before{content:none}
  .mobile-menu .mobile-direct,.mobile-accordion-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;padding:13px 14px;border:0;border-radius:13px;background:transparent;color:var(--ink);font-size:17px;font-weight:500;text-align:left;cursor:pointer}
  .mobile-menu .mobile-direct:hover,.mobile-menu .mobile-direct.active,.mobile-accordion-trigger:hover,.mobile-accordion-trigger.active{color:var(--blue);background:#eef6ff}
  .mobile-accordion-trigger span{font-size:19px;font-weight:300;transition:transform .35s var(--ease)}.mobile-accordion.open .mobile-accordion-trigger span{transform:rotate(45deg)}
  .mobile-submenu{max-height:0;overflow:hidden;opacity:0;padding:0 9px;transition:max-height .45s var(--ease),opacity .3s ease}.mobile-accordion.open .mobile-submenu{max-height:720px;opacity:1}
  .mobile-submenu a,.mobile-submenu b{display:block;padding:9px 15px;border-left:1px solid #dce7f1;border-radius:0;color:#5e728a;font-size:13px;font-weight:500}.mobile-submenu b{padding-top:12px;font-size:9px;letter-spacing:.08em;color:#90a0b2}.mobile-submenu a.nav-nested{padding-left:24px}.mobile-submenu a:hover{color:var(--blue);background:rgba(238,246,255,.7)}
}

/* Slimmer navigation and a background-free mobile menu icon */
.nav-shell{height:60px;padding-block:5px;border-radius:19px}
.nav-shell.is-scrolled{height:56px}
.nav-shell .brand{width:170px}.nav-shell .brand img,.nav-shell.is-scrolled .brand img{height:40px;mix-blend-mode:normal}
.language{height:38px}.login{min-height:40px;padding-inline:17px}
.desktop-nav .nav-primary-link,.login{font-size:11.5px}
@media(min-width:1101px) and (max-width:1250px){.desktop-nav .nav-primary-link,.login{font-size:10.35px}}
@media(max-width:1100px){
  .nav-shell,.nav-shell.is-scrolled{height:56px;padding:4px 10px 4px 14px;border-radius:18px}
  .nav-shell .brand{width:166px}.nav-shell .brand img,.nav-shell.is-scrolled .brand img{height:39px}
  .menu-button,.menu-button:hover,.menu-button[aria-expanded=true]{width:40px;height:40px;border-radius:0;background:transparent;box-shadow:none}
  .menu-button i{width:20px;height:1.5px;background:var(--ink)}
  .menu-button:hover i,.menu-button[aria-expanded=true] i{background:var(--blue)}
  .mobile-menu{top:calc(100% + 8px)}
}
@media(max-width:430px){.nav-shell .brand{width:154px}.nav-shell .brand img,.nav-shell.is-scrolled .brand img{height:37px}}

/* Sports data gateway — original network navigation */
.sports-network{position:relative;isolation:isolate;overflow:hidden;min-height:940px;padding:118px 5vw 105px;background:radial-gradient(circle at 50% 58%,#123d75 0,#09264e 27%,#061a36 58%,#041429 100%);color:#fff}
.sports-network:before,.sports-network:after{content:"";position:absolute;z-index:-1;border-radius:50%;pointer-events:none;filter:blur(2px)}
.sports-network:before{width:640px;height:640px;left:50%;top:58%;transform:translate(-50%,-50%);border:1px solid rgba(73,165,255,.12);box-shadow:0 0 0 100px rgba(38,130,226,.025),0 0 0 220px rgba(38,130,226,.018)}
.sports-network:after{width:300px;height:300px;left:10%;top:8%;background:rgba(46,137,255,.08);filter:blur(100px)}
.network-heading{position:relative;z-index:4;display:flex;align-items:flex-end;justify-content:space-between;max-width:1280px;margin:0 auto 28px}
.network-heading h2{margin:0;font-size:clamp(48px,5.2vw,78px);font-weight:500;line-height:.98;letter-spacing:-.055em}.network-heading h2 em{font-style:normal;color:#2d92ff}
.network-heading p{max-width:360px;margin:0 0 8px;color:#8fa8c7;font-size:12px;line-height:1.8}
.network-field{position:relative;width:min(1280px,100%);height:610px;margin:auto}
.network-connections{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.network-connections>path{fill:none;stroke:url(#network-line);stroke-width:1.35;stroke-linecap:round;opacity:.5;stroke-dasharray:600;stroke-dashoffset:600;transition:stroke-dashoffset 1.45s var(--ease),opacity .4s ease}.sports-network.in-view .network-connections>path{stroke-dashoffset:0}.network-connections>path:nth-of-type(2),.network-connections>path:nth-of-type(5){transition-delay:.12s}.network-connections>path:nth-of-type(3),.network-connections>path:nth-of-type(6){transition-delay:.24s}
.sports-network.in-view .network-connections>path.active{opacity:1;stroke-width:2.4;filter:drop-shadow(0 0 6px rgba(68,180,255,.8))}
.network-pulses{fill:#72ddff;filter:drop-shadow(0 0 7px #2298ff);opacity:0;transition:opacity .6s ease 1.25s}.sports-network.in-view .network-pulses{opacity:1}
.network-core{position:absolute;z-index:3;left:50%;top:51%;width:184px;height:184px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid rgba(125,199,255,.34);border-radius:50%;background:radial-gradient(circle at 40% 30%,rgba(54,150,255,.36),rgba(8,42,82,.86) 58%,rgba(4,22,45,.96));box-shadow:0 0 70px rgba(27,133,255,.24),inset 0 0 36px rgba(75,170,255,.16);opacity:0;transform:translate(-50%,-50%) scale(.72);transition:opacity .8s ease .3s,transform 1.1s var(--ease) .3s}.sports-network.in-view .network-core{opacity:1;transform:translate(-50%,-50%) scale(1)}
.network-core>svg{width:68px;height:68px;margin-bottom:7px;fill:none;stroke:#6ed7ff;stroke-width:1.5;filter:drop-shadow(0 0 8px rgba(61,181,255,.65))}.network-core strong{font:700 11px/1.05 'Noto Sans Thai',sans-serif;letter-spacing:.12em;text-align:center}.network-core>span{margin-top:5px;color:#8fb0d3;font-size:9px}
.network-orbit{position:absolute;inset:-18px;border:1px solid rgba(92,183,255,.22);border-radius:50%;animation:networkOrbit 9s linear infinite}.network-orbit:after{content:"";position:absolute;top:12%;left:11%;width:6px;height:6px;border-radius:50%;background:#59cdff;box-shadow:0 0 16px #39aaff}.network-orbit.orbit-two{inset:-37px;border-style:dashed;opacity:.55;animation-duration:15s;animation-direction:reverse}.network-orbit.orbit-two:after{left:auto;right:18%;top:auto;bottom:5%;width:4px;height:4px}
.network-node{position:absolute;z-index:4;width:238px;min-height:76px;display:flex;align-items:center;gap:13px;padding:13px 15px;border:1px solid rgba(142,198,255,.19);border-radius:20px;background:linear-gradient(120deg,rgba(255,255,255,.105),rgba(122,188,255,.035));box-shadow:0 18px 48px rgba(0,0,0,.14),inset 0 1px 0 rgba(255,255,255,.13);backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);opacity:0;transform:translateY(20px) scale(.92);transition:opacity .6s ease,transform .75s var(--ease),border-color .35s ease,background .35s ease,box-shadow .35s ease}
.sports-network.in-view .network-node{opacity:1;transform:none}.sports-network.in-view .network-node:nth-of-type(1){transition-delay:.6s}.sports-network.in-view .network-node:nth-of-type(2){transition-delay:.72s}.sports-network.in-view .network-node:nth-of-type(3){transition-delay:.84s}.sports-network.in-view .network-node:nth-of-type(4){transition-delay:.66s}.sports-network.in-view .network-node:nth-of-type(5){transition-delay:.78s}.sports-network.in-view .network-node:nth-of-type(6){transition-delay:.9s}
.network-node:hover,.network-node:focus-visible{border-color:rgba(89,187,255,.72);background:linear-gradient(120deg,rgba(33,137,244,.3),rgba(70,178,255,.12));box-shadow:0 22px 58px rgba(0,0,0,.2),0 0 32px rgba(28,137,255,.18);transform:translateY(-5px)}
.node-icon{width:48px;height:48px;flex:0 0 auto;display:grid;place-items:center;border:1px solid rgba(99,190,255,.28);border-radius:15px;background:rgba(16,75,137,.52);color:#6dd8ff}.node-icon svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}.network-node>span:last-child{min-width:0}.network-node strong,.network-node small{display:block}.network-node strong{font-size:14px;font-weight:500}.network-node small{margin-top:3px;color:#8da8c8;font-size:9px;white-space:nowrap}
.node-about{left:3%;top:7%}.node-venue{left:0;top:44%}.node-knowledge{left:10%;bottom:2%}.node-data{right:6%;top:7%}.node-events{right:0;top:44%}.node-help{right:9%;bottom:2%}
@keyframes networkOrbit{to{transform:rotate(360deg)}}
@media(max-width:980px){
  .sports-network{min-height:auto;padding:92px 20px}.network-heading{display:block;margin-bottom:42px}.network-heading p{margin-top:20px}.network-field{height:auto;display:grid;grid-template-columns:1fr 1fr;gap:12px;padding-top:240px}.network-connections{display:none}.network-core{top:94px}.network-node{position:relative;inset:auto!important;width:100%;min-height:82px}.sports-network.in-view .network-node{transform:none}
}
@media(max-width:620px){.sports-network{padding:82px 16px}.network-heading h2{font-size:46px}.network-field{grid-template-columns:1fr;padding-top:220px}.network-core{top:88px;width:160px;height:160px}.network-node{border-radius:18px}.network-node strong{font-size:15px}.network-node small{font-size:10px}}
@media(prefers-reduced-motion:reduce){.network-orbit{animation:none}.network-pulses{display:none}.network-connections>path{stroke-dashoffset:0}.network-core,.network-node{opacity:1;transition:none}.network-core{transform:translate(-50%,-50%)}}

/* Network redesign: one continuous sports information diagram */
.sports-network{background:radial-gradient(circle at 50% 59%,rgba(48,145,245,.16),transparent 26%),linear-gradient(180deg,#f9fcff 0,#edf5fb 100%);color:var(--ink)}
.sports-network:before{border-color:rgba(29,119,218,.1);box-shadow:0 0 0 100px rgba(38,130,226,.025),0 0 0 220px rgba(38,130,226,.018)}
.sports-network:after{background:rgba(46,137,255,.11)}
.network-heading h2 em{color:var(--blue)}.network-heading p{color:#62758b}
.network-connections>path{stroke:url(#network-line);stroke-width:1.6;opacity:.58}.sports-network.in-view .network-connections>path.active{stroke-width:2.7;opacity:1;filter:drop-shadow(0 0 5px rgba(27,132,242,.5))}
.network-pulses{fill:#168eff;filter:drop-shadow(0 0 6px rgba(22,142,255,.75))}
.network-core{border-color:rgba(28,126,229,.24);background:radial-gradient(circle at 38% 28%,#fff,#f0f7fd 58%,#dbeaf7);box-shadow:0 25px 65px rgba(19,79,139,.15),inset 0 1px 0 #fff}
.network-core>svg{stroke:var(--blue);filter:drop-shadow(0 0 7px rgba(17,118,243,.24))}.network-core strong{color:var(--ink)}.network-core>span{color:#60758d}
.network-orbit{border-color:rgba(30,127,227,.18)}.network-orbit:after{background:var(--blue);box-shadow:0 0 14px rgba(17,118,243,.65)}
.network-node{width:255px;min-height:76px;padding:8px 5px;border:0;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}
.network-node:hover,.network-node:focus-visible{border-color:transparent;background:transparent;box-shadow:none;transform:translateY(-3px)}
.network-node:hover strong,.network-node:focus-visible strong{color:var(--blue)}
.node-icon{width:56px;height:56px;border-color:rgba(17,118,243,.2);border-radius:50%;background:#fff;color:var(--blue);box-shadow:0 12px 28px rgba(22,83,143,.12),inset 0 0 0 7px rgba(226,241,254,.75)}
.node-icon svg{width:25px;height:25px;stroke-width:1.55}.network-node strong{color:var(--ink);font-size:16px;transition:color .3s ease}.network-node small{color:#6e8196;font-size:10px}
.node-about,.node-venue,.node-knowledge{flex-direction:row-reverse;text-align:right}
.node-about{left:3%;top:8%}.node-venue{left:0;top:45%}.node-knowledge{left:10%;bottom:1%}.node-data{right:6%;top:8%}.node-events{right:0;top:45%}.node-help{right:9%;bottom:1%}
@media(max-width:980px){
  .network-node{padding:13px 15px;border:1px solid rgba(17,118,243,.12);border-radius:18px;background:rgba(255,255,255,.55);box-shadow:0 14px 34px rgba(22,83,143,.07);backdrop-filter:blur(10px)}
  .network-node:hover,.network-node:focus-visible{background:#fff;box-shadow:0 18px 42px rgba(22,83,143,.11)}
  .node-about,.node-venue,.node-knowledge{flex-direction:row;text-align:left}
}

/* Section 2 — compact animated data story */
.map-intro{height:100svh;min-height:680px;max-height:940px;grid-template-columns:minmax(330px,.72fr) minmax(520px,1.28fr);align-items:center;gap:2.5vw;padding:104px 5vw 142px;background:radial-gradient(circle at 73% 43%,rgba(216,240,255,.9) 0,rgba(238,248,255,.5) 31%,transparent 57%),linear-gradient(135deg,#fff 0%,#f8fbfe 100%)}
.map-intro:before{top:46%;font-size:16vw;opacity:.72}.map-intro-copy{align-self:center;max-width:580px}.map-intro-copy h2{margin:0;font-size:clamp(50px,5.25vw,82px);line-height:.87}.map-intro-copy .motion-lead{max-width:470px;margin:21px 0 17px;font-size:11px;line-height:1.7}
.map-intro-link{margin-top:16px;padding:12px 18px;background:rgba(7,24,49,.96);transition:transform .35s var(--ease),box-shadow .35s ease,background .35s ease}.map-intro-link:hover,.map-intro-link:focus-visible{transform:translateY(-3px);background:var(--blue);box-shadow:0 18px 40px rgba(17,118,243,.25)}
.map-live-insight{position:relative;width:min(455px,100%);min-height:68px;display:flex;align-items:center;gap:14px;padding:13px 16px;border:1px solid rgba(144,177,208,.38);border-radius:20px;background:rgba(255,255,255,.54);box-shadow:0 18px 50px rgba(25,73,115,.07);backdrop-filter:blur(18px);overflow:hidden}.map-live-insight:after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 25%,rgba(255,255,255,.75) 46%,transparent 67%);transform:translateX(-120%)}.map-intro.in-view .map-live-insight:after{animation:insightShine 4.8s ease 1.7s infinite}
.map-live-pulse{position:relative;width:10px;height:10px;flex:0 0 auto;border-radius:50%;background:var(--blue);box-shadow:0 0 0 7px rgba(17,118,243,.1)}.map-live-pulse:after{content:"";position:absolute;inset:-8px;border:1px solid rgba(17,118,243,.45);border-radius:50%;animation:dataPulse 2s ease-out infinite}.map-live-insight div{position:relative;z-index:1;display:grid;gap:1px}.map-live-insight small{font:750 6px 'Noto Sans Thai';letter-spacing:.17em;color:var(--blue)}.map-live-insight strong{font-size:10px;font-weight:650;color:var(--ink);transition:opacity .2s ease,transform .25s var(--ease)}.map-live-insight p{margin:0;color:#708095;font-size:8px}.map-live-insight.is-changing strong,.map-live-insight.is-changing p{opacity:0;transform:translateY(6px)}
.map-intro .motion-map-panel{height:clamp(440px,58vh,570px);align-self:center;overflow:visible;border:1px solid rgba(158,190,220,.25);border-radius:38% 46% 42% 48%/45% 38% 50% 43%;background:radial-gradient(circle at 54% 44%,rgba(255,255,255,.92),rgba(234,247,255,.34) 48%,rgba(255,255,255,.15) 68%);box-shadow:inset 0 0 70px rgba(17,118,243,.035),0 30px 80px rgba(25,73,115,.07);will-change:transform}.map-intro .motion-map-panel:before{inset:7% 9% 8%;border-color:rgba(17,118,243,.15)}.map-intro .motion-map-panel:after{inset:15% 4% 3% 17%;border-color:rgba(17,118,243,.1)}.map-intro #hero-map-canvas{left:25%;top:2%;width:50%;height:92%;filter:drop-shadow(0 24px 28px rgba(17,118,243,.14));z-index:3}
.map-scan{position:absolute;z-index:4;left:24%;top:2%;width:52%;height:92%;overflow:hidden;border-radius:50%;pointer-events:none;opacity:0}.map-scan:before{content:"";position:absolute;left:-10%;right:-10%;height:22%;top:-25%;background:linear-gradient(180deg,transparent,rgba(44,164,255,.08),rgba(44,164,255,.42),transparent);filter:blur(2px)}.map-intro.in-view .map-scan{opacity:1;transition:opacity .4s ease 1.2s}.map-intro.in-view .map-scan:before{animation:mapScan 4.2s cubic-bezier(.45,0,.3,1) 1.45s infinite}
.motion-map-label{left:50%;bottom:auto;top:5%;transform:translateX(-50%);padding:7px 12px;border:1px solid rgba(151,185,216,.28);border-radius:999px;background:rgba(255,255,255,.54);backdrop-filter:blur(12px);text-align:center}.motion-map-legend{left:5%;top:auto;bottom:8%;width:132px}.map-intro .map-callout{padding:13px 15px;border-radius:18px;background:rgba(255,255,255,.66);box-shadow:0 18px 45px rgba(22,63,100,.09);backdrop-filter:blur(18px)}.map-intro .map-callout strong{font-size:22px}.callout-provinces{left:5%;top:19%}.callout-coverage{right:4%;top:18%;bottom:auto;display:flex;align-items:center;gap:10px}
.coverage-ring{position:relative;width:35px;height:35px;border-radius:50%;background:conic-gradient(var(--blue) calc(var(--coverage-progress,0)*1%),rgba(17,118,243,.1) 0);transition:background 1s ease}.coverage-ring:after{content:"";position:absolute;inset:5px;border-radius:50%;background:rgba(255,255,255,.9)}.coverage-ring i{position:absolute;z-index:2;inset:13px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 5px rgba(17,118,243,.12)}
.map-story-strip{position:absolute;z-index:12;left:5vw;right:5vw;bottom:25px;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:8px;border:1px solid rgba(158,187,214,.32);border-radius:25px;background:rgba(255,255,255,.57);box-shadow:0 22px 60px rgba(23,65,103,.09);backdrop-filter:blur(22px)}.map-story-strip article{position:relative;min-width:0;height:89px;display:flex;flex-direction:column;justify-content:center;padding:11px 18px;border-radius:18px;overflow:hidden;opacity:0;transform:translateY(22px);background:linear-gradient(135deg,rgba(255,255,255,.7),rgba(241,248,253,.35))}.map-story-strip article:not(:last-child):after{content:"";position:absolute;right:-4px;top:20%;bottom:20%;width:1px;background:rgba(126,157,186,.18)}
.map-story-strip small{color:#617286;font-size:8px}.map-story-strip strong{margin:1px 0;font:850 clamp(21px,2vw,30px) 'Noto Sans Thai';color:var(--blue);letter-spacing:-.05em}.map-story-strip>article>span{font:700 6px 'Noto Sans Thai';letter-spacing:.13em;color:#8a98a8}.map-story-strip .map-top-sport div{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.map-top-sport b{font-size:14px;font-weight:650}.map-top-sport strong{font-size:19px}.map-story-strip .map-bar{height:3px;margin-top:4px;border-radius:4px;background:rgba(17,118,243,.1);overflow:hidden}.map-bar i{display:block;width:100%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--blue),#54c3ff);transform:scaleX(0);transform-origin:left}
.map-intro.in-view .map-story-strip article{opacity:1;transform:none;transition:opacity .65s var(--ease),transform .75s var(--ease)}.map-intro.in-view .map-story-strip article:nth-child(1){transition-delay:.85s}.map-intro.in-view .map-story-strip article:nth-child(2){transition-delay:1s}.map-intro.in-view .map-story-strip article:nth-child(3){transition-delay:1.15s}.map-intro.in-view .map-story-strip article:nth-child(4){transition-delay:1.3s}.map-intro.in-view .map-bar i{transform:scaleX(1);transition:transform 1.2s var(--ease) 1.65s}
@keyframes mapScan{0%{transform:translateY(-20%);opacity:0}15%{opacity:1}72%{opacity:.85}100%{transform:translateY(560%);opacity:0}}@keyframes dataPulse{0%{transform:scale(.45);opacity:.9}100%{transform:scale(1.65);opacity:0}}@keyframes insightShine{0%,55%{transform:translateX(-120%)}85%,100%{transform:translateX(120%)}}
@media(max-width:1100px) and (min-width:761px){.map-intro{grid-template-columns:minmax(300px,.72fr) minmax(430px,1.28fr);padding-left:3.5vw;padding-right:3.5vw}.map-story-strip{left:3.5vw;right:3.5vw}.map-intro-copy h2{font-size:clamp(47px,5.6vw,68px)}.map-intro #hero-map-canvas{left:23%;width:54%}.map-intro .map-callout{padding:11px 12px}.map-story-strip article{padding-inline:13px}}
@media(max-width:760px){.map-intro{height:auto;max-height:none;min-height:0;display:grid;grid-template-columns:1fr;gap:25px;padding:104px 18px 30px}.map-intro:before{top:19%;font-size:36vw}.map-intro-copy h2{font-size:clamp(47px,13vw,60px)}.map-intro-copy .motion-lead{font-size:10px}.map-live-insight{min-height:64px}.map-intro .motion-map-panel{height:490px;margin:0;border-radius:31px}.map-intro #hero-map-canvas{left:23%;top:3%;width:54%;height:86%}.map-scan{left:22%;width:56%;height:86%}.motion-map-label{left:18px;top:18px}.motion-map-legend{left:18px;bottom:18px}.callout-provinces{left:15px;top:24%}.callout-coverage{right:12px;top:16%}.coverage-ring{display:none}.map-intro .map-callout strong{font-size:18px}.map-story-strip{position:relative;left:auto;right:auto;bottom:auto;grid-template-columns:1fr 1fr;gap:6px;padding:6px;border-radius:21px}.map-story-strip article{height:82px;padding:10px 13px}.map-story-strip article:not(:last-child):after{display:none}.map-story-strip strong{font-size:22px}.map-top-sport b{font-size:12px}.map-top-sport strong{font-size:17px}}
@media(prefers-reduced-motion:reduce){.map-live-pulse:after,.map-intro.in-view .map-live-insight:after,.map-intro.in-view .map-scan:before{animation:none!important}.map-story-strip article{opacity:1!important;transform:none!important;transition:none!important}.map-bar i{transform:none!important;transition:none!important}}

/* Interactive province layer */
.map-intro #hero-map-canvas{cursor:crosshair;touch-action:manipulation;transition:clip-path 1.35s var(--ease) .72s,filter .7s ease,transform .7s var(--ease)}
.motion-map-panel.has-province #hero-map-canvas{filter:drop-shadow(0 26px 32px rgba(17,118,243,.2));transform:translateX(-6%)}
.province-map-tooltip{position:absolute;z-index:12;min-width:120px;padding:9px 12px;border:1px solid rgba(132,171,207,.38);border-radius:13px;background:rgba(7,24,49,.88);box-shadow:0 14px 35px rgba(7,24,49,.18);backdrop-filter:blur(14px);color:#fff;pointer-events:none;opacity:0;transform:translate(-50%,calc(-100% - 14px)) scale(.92);transition:opacity .18s ease,transform .22s var(--ease)}
.province-map-tooltip.visible{opacity:1;transform:translate(-50%,calc(-100% - 14px)) scale(1)}.province-map-tooltip strong,.province-map-tooltip span{display:block}.province-map-tooltip strong{font-size:10px;font-weight:650}.province-map-tooltip span{margin-top:2px;color:#9ccfff;font-size:8px}
.map-action-hint{position:absolute;z-index:6;left:50%;bottom:5.5%;display:flex;align-items:center;gap:8px;padding:8px 13px;border:1px solid rgba(137,175,211,.3);border-radius:999px;background:rgba(255,255,255,.6);box-shadow:0 10px 30px rgba(23,65,103,.07);backdrop-filter:blur(12px);color:#587088;font-size:8px;transform:translateX(-50%);transition:opacity .3s ease,transform .4s var(--ease)}.map-action-hint i{width:7px;height:7px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 5px rgba(17,118,243,.1);animation:dataPulse 2s ease-out infinite}.motion-map-panel.has-province .map-action-hint{opacity:0;transform:translate(-50%,10px);pointer-events:none}
.province-detail{position:absolute;z-index:15;right:3%;top:8%;bottom:8%;width:min(255px,38%);display:flex;flex-direction:column;padding:22px;border:1px solid rgba(143,177,208,.4);border-radius:24px;background:rgba(255,255,255,.82);box-shadow:0 28px 70px rgba(10,53,94,.17);backdrop-filter:blur(24px);opacity:0;visibility:hidden;transform:translateX(28px) scale(.96);transition:opacity .35s ease,visibility .35s,transform .5s var(--ease)}
.motion-map-panel.has-province .province-detail{opacity:1;visibility:visible;transform:none}.province-detail>small{font:750 6px 'Noto Sans Thai';letter-spacing:.16em;color:var(--blue)}.province-detail h3{margin:7px 0 0;font-size:clamp(22px,2.1vw,31px);font-weight:600;line-height:1.05;letter-spacing:-.045em}.province-detail>p{margin:5px 0 15px;color:#6c7d91;font-size:8px}.province-detail-close{position:absolute;right:13px;top:12px;width:28px;height:28px;border:1px solid rgba(121,154,184,.28);border-radius:50%;background:rgba(255,255,255,.75);color:#60748a;font-size:18px;line-height:1;cursor:pointer;transition:transform .25s ease,background .25s ease}.province-detail-close:hover{transform:rotate(90deg);background:#fff}
.province-detail-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:15px}.province-detail-kpis div{min-width:0;padding:9px 7px;border-radius:12px;background:rgba(231,244,255,.65)}.province-detail-kpis strong,.province-detail-kpis span{display:block}.province-detail-kpis strong{font:800 15px 'Noto Sans Thai';color:var(--blue);letter-spacing:-.04em}.province-detail-kpis span{margin-top:2px;color:#687c92;font-size:6px;white-space:nowrap}
.province-sports{display:grid;gap:8px;margin:auto 0 15px}.province-sport-row{display:grid;grid-template-columns:1fr auto;gap:4px 10px;align-items:center}.province-sport-row b{overflow:hidden;color:#263a51;font-size:8px;font-weight:550;text-overflow:ellipsis;white-space:nowrap}.province-sport-row em{color:var(--blue);font:700 8px 'Noto Sans Thai';font-style:normal}.province-sport-row span{grid-column:1/3;height:3px;overflow:hidden;border-radius:4px;background:rgba(17,118,243,.1)}.province-sport-row i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--blue),#55c5ff);transform:scaleX(0);transform-origin:left}.motion-map-panel.has-province .province-sport-row i{transform:scaleX(var(--bar-scale));transition:transform .8s var(--ease)}
.province-detail-link{height:42px;display:flex;align-items:center;justify-content:space-between;padding:0 14px;border:0;border-radius:13px;background:var(--ink);color:#fff;font-size:8px;font-weight:650;cursor:pointer;transition:transform .3s var(--ease),background .3s ease}.province-detail-link:hover,.province-detail-link:focus-visible{transform:translateY(-2px);background:var(--blue)}
.motion-map-panel.has-province .callout-coverage{opacity:0;transform:translateX(18px) scale(.9);pointer-events:none}.motion-map-panel.has-province .motion-map-lines{opacity:.28;transition:opacity .35s ease}
@media(max-width:760px){.map-action-hint{bottom:16px}.motion-map-legend{display:none}.province-detail{left:12px;right:12px;top:auto;bottom:12px;width:auto;max-height:310px;padding:17px;border-radius:20px}.province-detail h3{font-size:24px}.province-detail>p{margin-bottom:10px}.province-detail-kpis{margin-bottom:10px}.province-sports{margin:0 0 10px;gap:6px}.motion-map-panel.has-province #hero-map-canvas{transform:translateY(-17%) scale(.82)}.motion-map-panel.has-province .callout-provinces,.motion-map-panel.has-province .callout-coverage{opacity:0;pointer-events:none}}
@media(prefers-reduced-motion:reduce){.map-action-hint i{animation:none}.province-detail,.province-map-tooltip,.province-sport-row i{transition:none!important}}

/* Larger map and focus state */
.map-intro{grid-template-columns:minmax(285px,.56fr) minmax(620px,1.44fr);gap:1vw}
.map-intro-copy{max-width:500px}.map-intro-copy .motion-lead{max-width:420px;margin-bottom:0}
.map-intro .motion-map-panel{z-index:13;height:clamp(500px,64vh,610px)}
.map-intro #hero-map-canvas{left:18%;top:1%;width:64%;height:96%}.map-scan{left:17%;top:1%;width:66%;height:96%}
.callout-provinces{left:2%;top:18%}.callout-coverage{right:1%;top:17%}.motion-map-legend{left:2%;bottom:7%}
.map-focus-backdrop{position:absolute;z-index:11;inset:0;background:transparent;opacity:0;visibility:hidden;pointer-events:none}
.map-intro.province-focus .map-focus-backdrop{opacity:1;visibility:visible;pointer-events:auto}.map-intro.province-focus .map-story-strip{z-index:9;filter:none}.map-intro.province-focus .motion-map-panel{filter:none}
@media(max-width:1100px) and (min-width:761px){.map-intro{grid-template-columns:minmax(270px,.6fr) minmax(500px,1.4fr)}.map-intro #hero-map-canvas{left:16%;width:68%}.map-scan{left:15%;width:70%}}
@media(max-width:760px){.map-intro{grid-template-columns:1fr;gap:22px}.map-intro .motion-map-panel{height:520px}.map-intro #hero-map-canvas{left:16%;top:1%;width:68%;height:91%}.map-scan{left:15%;top:1%;width:70%;height:91%}.map-intro.province-focus .map-story-strip{filter:none}}
@media(prefers-reduced-motion:reduce){.map-focus-backdrop,.map-intro.province-focus .map-story-strip{transition:none!important}}

/* Centered static province explorer */
.motion-copy h1 em{font-size:.82em;letter-spacing:-.055em}
.map-intro{height:100svh;min-height:720px;max-height:960px;display:block;padding:88px 4vw 138px;background:linear-gradient(180deg,#fbfdff,#f7fbfe)}
.map-intro:before,.map-intro:after,.motion-map-panel:before,.motion-map-panel:after{display:none!important}
.map-intro .motion-map-panel{position:relative;z-index:13;width:min(1180px,100%);height:clamp(550px,67vh,650px);margin:0 auto;border:0;border-radius:0;background:transparent;box-shadow:none;opacity:1;transform:none;transition:none;overflow:visible}
.map-intro #hero-map-canvas{left:0;top:0;width:calc(100% - 340px);height:calc(100% - 48px);clip-path:none!important;filter:drop-shadow(0 18px 28px rgba(17,118,243,.12));transform:none;transition:none}
.motion-map-panel.has-province #hero-map-canvas{transform:none;filter:drop-shadow(0 22px 34px rgba(17,118,243,.2));transition:filter .45s ease}
.map-story-strip article{opacity:1;transform:none;transition:none}.map-bar i{transform:scaleX(1);transition:none}.map-intro.in-view .map-story-strip article{transition:none}
.province-search{position:absolute;z-index:22;left:auto;right:0;top:auto;bottom:0;width:310px;height:54px;display:flex;align-items:center;gap:10px;padding:5px 6px 5px 17px;border:1px solid rgba(144,175,204,.42);border-radius:999px;background:rgba(255,255,255,.9);box-shadow:0 18px 48px rgba(27,72,111,.12);backdrop-filter:blur(18px);transform:none}
.province-search label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.province-search>span{color:var(--blue);font-size:23px;line-height:1;transform:rotate(-18deg)}.province-search input{min-width:0;flex:1;height:100%;border:0;outline:0;background:transparent;color:var(--ink);font-size:11px}.province-search input::placeholder{color:#8798aa}.province-search button{height:42px;padding:0 21px;border:0;border-radius:999px;background:var(--blue);color:#fff;font-size:9px;font-weight:700;cursor:pointer;transition:background .25s ease}.province-search button:hover{background:var(--ink)}
.map-type-legend{position:absolute;z-index:8;left:calc((100% - 340px)/2);bottom:2px;display:flex;align-items:center;justify-content:center;gap:15px;padding:9px 15px;border:1px solid rgba(147,179,208,.3);border-radius:999px;background:rgba(255,255,255,.82);box-shadow:0 12px 35px rgba(21,67,108,.07);backdrop-filter:blur(14px);transform:translateX(-50%);white-space:nowrap}.map-type-legend span{display:flex;align-items:center;gap:6px;color:#60748a;font-size:7px}.map-type-legend i{position:relative;width:8px;height:8px;display:inline-block;flex:0 0 auto}.pin-football{border-radius:50%;background:#0878f5}.pin-court{background:#12b8d7}.pin-fitness{background:#ff8b35;transform:rotate(45deg)}.pin-water{background:#08a787;clip-path:polygon(50% 0,100% 100%,0 100%)}.pin-general:before,.pin-general:after{content:"";position:absolute;background:#7659df;border-radius:2px}.pin-general:before{left:3px;top:0;width:2px;height:8px}.pin-general:after{left:0;top:3px;width:8px;height:2px}.pin-other{border-radius:50%;background:#7890a8;transform:scale(.7)}
.province-detail{right:0;top:0;bottom:72px;width:310px;opacity:1;visibility:visible;transform:none;background:#fff;border:1px solid #d9e7f3;box-shadow:0 24px 65px rgba(17,67,111,.15),inset 0 1px 0 #fff;backdrop-filter:none}.province-detail .province-sport-row i{transform:scaleX(var(--bar-scale));transition:transform .8s var(--ease)}.province-detail-close{opacity:0;pointer-events:none}.motion-map-panel.has-province .province-detail-close{opacity:1;pointer-events:auto}.province-detail-link{opacity:0;pointer-events:none}.motion-map-panel.has-province .province-detail-link{opacity:1;pointer-events:auto}.map-intro.province-focus .province-search,.map-intro.province-focus .map-type-legend{opacity:1;pointer-events:auto}.map-focus-backdrop{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
@media(max-width:760px){.motion-copy h1 em{font-size:.72em}.map-intro{height:auto;max-height:none;min-height:0;padding:88px 12px 28px}.map-intro .motion-map-panel{height:930px}.map-intro #hero-map-canvas{left:0;top:0;width:100%;height:355px}.province-detail{left:6px;right:6px;top:370px;bottom:auto;width:auto;height:380px;max-height:none}.province-search{left:6px;right:6px;top:765px;bottom:auto;width:auto;height:52px;padding-left:13px}.province-search input{font-size:10px}.province-search button{height:40px;padding:0 16px}.map-type-legend{left:6px;right:6px;bottom:0;width:auto;gap:7px 12px;flex-wrap:wrap;border-radius:18px;transform:none;white-space:normal}.map-type-legend span{font-size:7px}.motion-map-panel.has-province #hero-map-canvas{transform:none}}

/* Province data hub */
.province-category-network{position:absolute;z-index:14;left:0;top:0;width:calc(100% - 340px);height:calc(100% - 48px);pointer-events:none;opacity:0;visibility:hidden;transition:opacity .4s ease,visibility .4s}.motion-map-panel.has-province .province-category-network{opacity:1;visibility:visible}.province-network-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.province-network-lines>path{fill:none;stroke:url(#province-network-gradient);stroke-width:1.65;stroke-linecap:round;vector-effect:non-scaling-stroke;opacity:.58;stroke-dasharray:900;stroke-dashoffset:900;transition:stroke-dashoffset 1.2s var(--ease),stroke-width .3s ease,opacity .3s ease}.motion-map-panel.has-province .province-network-lines>path{stroke-dashoffset:0}.province-network-core-dot{fill:#1687f6;filter:drop-shadow(0 0 7px rgba(22,135,246,.72))}.province-network-pulses{fill:#64cfff;filter:drop-shadow(0 0 7px rgba(22,135,246,.9));opacity:0;transition:opacity .4s ease .9s}.motion-map-panel.has-province .province-network-pulses{opacity:1}.province-network-lines>path.active{stroke-width:2.7;opacity:1;filter:drop-shadow(0 0 6px rgba(8,120,245,.5))}
.province-category-card{position:absolute;z-index:2;width:142px;min-height:62px;display:grid;grid-template-columns:22px 1fr auto;grid-template-rows:auto auto;align-items:center;gap:0 7px;padding:10px 12px;border:1px solid rgba(140,181,217,.48);border-radius:18px;background:rgba(255,255,255,.94);box-shadow:0 15px 38px rgba(21,72,117,.12);color:#29425f;text-align:left;pointer-events:auto;cursor:pointer;opacity:0;transform:translateY(12px) scale(.94);transition:opacity .45s ease,transform .55s var(--ease),border-color .25s ease,box-shadow .25s ease}.province-category-card i{grid-row:1/3;width:10px;height:10px;justify-self:center}.province-category-card span{font-size:8px;font-weight:600;white-space:nowrap}.province-category-card strong{grid-row:1/3;grid-column:3;font:800 17px 'Noto Sans Thai';color:var(--blue)}.province-category-card small{grid-column:2;color:#8193a6;font-size:6px}.province-category-card:hover,.province-category-card.active{border-color:#268cf4;box-shadow:0 18px 42px rgba(17,118,243,.2),0 0 0 3px rgba(17,118,243,.08);transform:translateY(-2px)!important}.motion-map-panel.has-province .province-category-card{opacity:1;transform:none}.category-football{left:0;top:7%}.category-court{left:0;top:45%}.category-fitness{left:2%;bottom:5%}.category-water{right:0;top:7%}.category-general{right:0;top:45%}.category-other{right:1%;bottom:5%}.motion-map-panel.has-province .province-category-card:nth-of-type(2){transition-delay:.08s}.motion-map-panel.has-province .province-category-card:nth-of-type(3){transition-delay:.14s}.motion-map-panel.has-province .province-category-card:nth-of-type(4){transition-delay:.2s}.motion-map-panel.has-province .province-category-card:nth-of-type(5){transition-delay:.26s}.motion-map-panel.has-province .province-category-card:nth-of-type(6){transition-delay:.32s}
.motion-map-panel.has-province .province-sports{display:none}.motion-map-panel.has-province .province-detail-link{margin-top:10px}.motion-map-panel.has-province .province-detail{bottom:auto;height:260px;min-height:260px}.motion-map-panel.has-province .province-search{top:276px;bottom:auto}.motion-map-panel.has-province .map-type-legend{opacity:0;pointer-events:none}
@media(max-width:760px){.map-intro .motion-map-panel{height:1080px}.map-intro #hero-map-canvas{left:0;top:0;width:100%;height:390px}.province-detail,.motion-map-panel.has-province .province-detail{left:6px;right:6px;top:590px;bottom:auto;width:auto;height:285px;min-height:0;max-height:none}.province-search,.motion-map-panel.has-province .province-search{left:6px;right:6px;top:890px;bottom:auto;width:auto;height:52px}.province-category-network{top:390px;width:100%;height:185px;display:grid;grid-template-columns:repeat(2,1fr);gap:7px;padding:0 6px}.province-network-lines{display:none}.province-category-card,.category-football,.category-court,.category-fitness,.category-water,.category-general,.category-other{position:relative;inset:auto;width:auto;min-height:54px}.motion-map-panel:not(.has-province) .province-category-network{display:none}}

/* Readable national and province hub */
.province-category-network{opacity:1;visibility:visible}.province-network-lines>path{stroke-dashoffset:0}.province-network-pulses{opacity:1}.province-category-card{width:165px;min-height:70px;grid-template-columns:24px 1fr auto;padding:11px 13px;opacity:1;transform:none}.province-category-card i{position:relative;display:block;width:11px;height:11px}.province-category-card span{font-size:11.5px;line-height:1.3}.province-category-card strong{font-size:20px}.province-category-card small{font-size:9.5px}.map-type-legend{opacity:0;pointer-events:none}.province-detail>small{font-size:9px}.province-detail>p{font-size:11.5px}.province-detail-kpis strong{font-size:18px}.province-detail-kpis span{font-size:9.5px}.province-sport-row b,.province-sport-row em{font-size:11px}.province-detail-link{font-size:11.5px}.province-search input,.province-search button{font-size:11.5px}.map-story-strip small{font-size:10.5px}.map-story-strip>article>span{font-size:9px}
@media(max-width:760px){.motion-map-panel:not(.has-province) .province-category-network{display:grid}.province-category-card{width:auto;min-height:58px}.province-category-card span{font-size:11px}.province-category-card small{font-size:9px}}
@media(prefers-reduced-motion:reduce){.province-network-pulses{display:none}.province-network-lines>path{transition:none}}

/* Facility data hub: one visual language for card, route and map marker */
.province-network-lines>path{stroke:var(--route-color,#1677ff)}
.province-network-lines>[data-category-line="stadium"]{--route-color:#1677ff}.province-network-lines>[data-category-line="multipurpose"]{--route-color:#7c5cff}.province-network-lines>[data-category-line="public"]{--route-color:#14a87b}.province-network-lines>[data-category-line="fitness"]{--route-color:#ff8a3d}.province-network-lines>[data-category-line="training"]{--route-color:#0db7d6}.province-network-lines>[data-category-line="science"]{--route-color:#d954b8}
.province-network-pulses .pulse-stadium{fill:#1677ff}.province-network-pulses .pulse-multipurpose{fill:#7c5cff}.province-network-pulses .pulse-public{fill:#14a87b}.province-network-pulses .pulse-fitness{fill:#ff8a3d}.province-network-pulses .pulse-training{fill:#0db7d6}.province-network-pulses .pulse-science{fill:#d954b8}
.province-category-card{width:178px;min-height:78px;grid-template-columns:30px minmax(0,1fr) auto;column-gap:9px;padding:11px 13px;border-color:color-mix(in srgb,var(--category-color) 24%,#c9d9e7);overflow:hidden}
.province-category-card svg{grid-row:1/3;width:27px;height:27px;justify-self:center;fill:none;stroke:var(--category-color);stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 5px 8px color-mix(in srgb,var(--category-color) 25%,transparent))}
.province-category-card span{font-size:11.5px;font-weight:650;line-height:1.25;white-space:normal;color:#203952}.province-category-card strong{font-size:22px;line-height:1;color:var(--category-color)}.province-category-card small{font-size:9.5px;line-height:1.2;color:#74889d}
.province-category-card:hover,.province-category-card.active{border-color:var(--category-color);box-shadow:0 19px 46px color-mix(in srgb,var(--category-color) 18%,transparent),0 0 0 3px color-mix(in srgb,var(--category-color) 9%,transparent)}
.category-stadium,.category-multipurpose,.category-public,.category-fitness,.category-training,.category-science{left:auto;right:auto;top:auto;bottom:auto}.category-stadium{--category-color:#1677ff;left:0;top:7%}.category-multipurpose{--category-color:#7c5cff;left:0;top:43%}.category-public{--category-color:#14a87b;left:2%;bottom:4%}.category-fitness{--category-color:#ff8a3d;right:0;top:7%}.category-training{--category-color:#0db7d6;right:0;top:43%}.category-science{--category-color:#d954b8;right:1%;bottom:4%}
.province-detail-kpis div:first-child{background:linear-gradient(145deg,#fff,#edf6ff);box-shadow:inset 0 0 0 1px rgba(22,119,255,.12)}.province-detail-kpis div:first-child strong{font-size:22px;color:#075ccd}.province-detail-kpis span{line-height:1.25}.province-detail>p{line-height:1.55}.province-map-tooltip strong{font-size:13px}.province-map-tooltip span{font-size:10.5px}
@media(max-width:760px){.map-intro .motion-map-panel{height:1110px}.province-category-network{height:205px}.province-detail,.motion-map-panel.has-province .province-detail{top:610px}.province-search,.motion-map-panel.has-province .province-search{top:910px}.province-category-card,.category-stadium,.category-multipurpose,.category-public,.category-fitness,.category-training,.category-science{position:relative;inset:auto;width:auto;min-height:64px}.province-category-card{grid-template-columns:27px minmax(0,1fr) auto;padding:9px 10px}.province-category-card svg{width:23px;height:23px}.province-category-card span{font-size:11px}.province-category-card strong{font-size:19px}.province-category-card small{font-size:9px}}

/* National overview is intentionally different from province/district mode */
.national-facility-total{display:none}
.motion-map-panel:not(.has-province) .province-detail{display:none}
.motion-map-panel:not(.has-province) .province-search{top:0;bottom:auto}
.motion-map-panel:not(.has-province) #hero-map-canvas{left:33%;top:1%;width:40%;height:96%}
.motion-map-panel:not(.has-province) .province-category-network{left:0;top:0;width:370px;height:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:118px repeat(3,82px);align-content:start;gap:10px;padding-top:18px}
.motion-map-panel:not(.has-province) .province-network-lines{display:none}
.motion-map-panel:not(.has-province) .national-facility-total{grid-column:1/-1;display:flex;flex-direction:column;justify-content:center;padding:20px 24px;border:1px solid rgba(22,119,255,.24);border-radius:25px;background:linear-gradient(135deg,#fff 0%,#edf6ff 100%);box-shadow:0 22px 52px rgba(22,99,174,.13);pointer-events:none}
.national-facility-total small{color:#5f7690;font-size:11.5px;font-weight:650}.national-facility-total strong{margin:3px 0 0;color:#075ccd;font:850 34px/1 'Noto Sans Thai';letter-spacing:-.055em}.national-facility-total span{margin-top:5px;color:#71859a;font-size:10px}
.motion-map-panel:not(.has-province) .province-category-card{position:relative;inset:auto;width:auto;min-height:0;grid-template-columns:26px minmax(0,1fr) auto;padding:9px 10px;border-radius:18px}
.motion-map-panel:not(.has-province) .province-category-card svg{width:23px;height:23px}.motion-map-panel:not(.has-province) .province-category-card span{font-size:10.5px}.motion-map-panel:not(.has-province) .province-category-card strong{font-size:19px}.motion-map-panel:not(.has-province) .province-category-card small{font-size:8.5px}
@media(max-width:1050px) and (min-width:761px){.motion-map-panel:not(.has-province) .province-category-network{width:330px}.motion-map-panel:not(.has-province) #hero-map-canvas{left:35%;width:36%}}
@media(max-width:760px){.map-intro .motion-map-panel:not(.has-province){height:820px}.motion-map-panel:not(.has-province) #hero-map-canvas{left:0;top:0;width:100%;height:360px}.motion-map-panel:not(.has-province) .province-category-network{left:6px;right:6px;top:370px;width:auto;height:auto;grid-template-rows:96px repeat(3,64px);gap:7px;padding:0}.motion-map-panel:not(.has-province) .national-facility-total{padding:15px 18px;border-radius:20px}.national-facility-total strong{font-size:29px}.motion-map-panel:not(.has-province) .province-search{top:775px}.motion-map-panel:not(.has-province) .province-category-card span{font-size:10.5px}}

/* Scroll handoff: section one transmits the data signal into the map */
.motion-stage{--handoff:0}
.motion-handoff{position:absolute;z-index:3;left:50%;top:54%;bottom:22px;width:80px;pointer-events:none;opacity:calc(var(--handoff)*.95);transform:translateX(-50%)}
.motion-handoff i{position:absolute;left:50%;top:0;width:1px;height:100%;overflow:hidden;background:linear-gradient(180deg,rgba(22,119,255,0),rgba(22,119,255,.65) 32%,#1677ff);transform:scaleY(var(--handoff));transform-origin:top;box-shadow:0 0 16px rgba(22,119,255,.4)}
.motion-handoff span{position:absolute;z-index:2;left:50%;top:calc(var(--handoff)*92%);width:10px;height:10px;border:2px solid #fff;border-radius:50%;background:#1677ff;box-shadow:0 0 0 7px rgba(22,119,255,.1),0 0 24px rgba(22,119,255,.75);transform:translate(-50%,-50%)}
.motion-handoff:after{content:"";position:absolute;left:50%;bottom:-80px;width:280px;height:150px;border-radius:50%;background:radial-gradient(circle,rgba(22,119,255,.2),transparent 68%);opacity:var(--handoff);transform:translateX(-50%)}
.map-intro-handoff{position:absolute;z-index:12;left:50%;top:0;width:100px;height:105px;pointer-events:none;opacity:calc(1 - var(--map-reveal,0));transform:translateX(-50%)}
.map-intro-handoff i{position:absolute;left:50%;top:0;width:1px;height:82px;background:linear-gradient(#1677ff,rgba(22,119,255,.08));box-shadow:0 0 14px rgba(22,119,255,.38)}.map-intro-handoff span{position:absolute;left:50%;top:78px;width:11px;height:11px;border:2px solid #fff;border-radius:50%;background:#1677ff;box-shadow:0 0 0 8px rgba(22,119,255,.08),0 0 24px rgba(22,119,255,.55);transform:translate(-50%,-50%)}

/* Section two arrives in a readable sequence instead of appearing at once */
.map-intro:not(.in-view) .motion-map-panel:not(.has-province) #hero-map-canvas{opacity:0;transform:translateY(24px) scale(.94)}
.map-intro.in-view .motion-map-panel:not(.has-province) #hero-map-canvas{animation:mapArrival 1.05s var(--ease) .08s both}
.map-intro:not(.in-view) .motion-map-panel:not(.has-province) .national-facility-total,.map-intro:not(.in-view) .motion-map-panel:not(.has-province) .province-category-card,.map-intro:not(.in-view) .motion-map-panel:not(.has-province) .province-search{opacity:0;transform:translateY(20px)}
.map-intro.in-view .motion-map-panel:not(.has-province) .national-facility-total{animation:dataCardArrival .72s var(--ease) .25s both}.map-intro.in-view .motion-map-panel:not(.has-province) .province-category-card{animation:dataCardArrival .68s var(--ease) both}.map-intro.in-view .motion-map-panel:not(.has-province) .province-category-card:nth-of-type(1){animation-delay:.36s}.map-intro.in-view .motion-map-panel:not(.has-province) .province-category-card:nth-of-type(2){animation-delay:.44s}.map-intro.in-view .motion-map-panel:not(.has-province) .province-category-card:nth-of-type(3){animation-delay:.52s}.map-intro.in-view .motion-map-panel:not(.has-province) .province-category-card:nth-of-type(4){animation-delay:.60s}.map-intro.in-view .motion-map-panel:not(.has-province) .province-category-card:nth-of-type(5){animation-delay:.68s}.map-intro.in-view .motion-map-panel:not(.has-province) .province-category-card:nth-of-type(6){animation-delay:.76s}.map-intro.in-view .motion-map-panel:not(.has-province) .province-search{animation:searchArrival .78s var(--ease) .42s both}
@keyframes mapArrival{from{opacity:0;transform:translateY(24px) scale(.94);filter:blur(7px) drop-shadow(0 18px 28px rgba(17,118,243,.04))}to{opacity:1;transform:none;filter:blur(0) drop-shadow(0 18px 28px rgba(17,118,243,.12))}}
@keyframes dataCardArrival{from{opacity:0;transform:translateX(-22px) scale(.97)}to{opacity:1;transform:none}}
@keyframes searchArrival{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
@media(max-width:760px){.motion-handoff{top:58%;bottom:20px}.map-intro-handoff{height:72px}.map-intro-handoff i{height:54px}.map-intro-handoff span{top:52px}}
@media(prefers-reduced-motion:reduce){.motion-handoff,.map-intro-handoff{display:none}.map-intro #hero-map-canvas,.map-intro .national-facility-total,.map-intro .province-category-card,.map-intro .province-search{animation:none!important;opacity:1!important;transform:none!important;filter:none!important}}

/* Association marquee — sourced from wp_association and its profile_image attachments */
.association-ticker{position:absolute;z-index:8;left:0;right:0;bottom:18px;overflow:hidden;padding:11px 0;border-top:1px solid rgba(120,157,190,.2);border-bottom:1px solid rgba(120,157,190,.2);background:linear-gradient(180deg,rgba(244,249,253,.28),rgba(255,255,255,.5));mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.association-ticker-track{display:flex;width:max-content;will-change:transform;animation:associationTicker 60s linear infinite}
.association-ticker:hover .association-ticker-track,.association-ticker:focus-within .association-ticker-track{animation-play-state:paused}
.association-ticker-group{display:flex;align-items:center;gap:12px;padding-right:12px}
.association-chip{height:60px;display:flex;align-items:center;gap:10px;padding:7px 17px 7px 8px;border:1px solid rgba(142,177,208,.22);border-radius:999px;background:rgba(255,255,255,.64);box-shadow:0 9px 24px rgba(21,72,117,.045),inset 0 1px 0 rgba(255,255,255,.9);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);white-space:nowrap}
.association-chip img{width:44px;height:44px;flex:0 0 44px;border-radius:50%;background:rgba(255,255,255,.86);object-fit:contain;padding:4px;box-shadow:0 2px 9px rgba(21,72,117,.08)}
.association-chip b{color:#36516d;font-size:11px;font-weight:560;letter-spacing:-.01em}
@keyframes associationTicker{to{transform:translate3d(-50%,0,0)}}
@media(max-width:760px){.association-ticker{bottom:10px;padding:9px 0;mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent)}.association-ticker-track{animation-duration:50s}.association-ticker-group{gap:8px;padding-right:8px}.association-chip{height:52px;gap:8px;padding:5px 13px 5px 6px}.association-chip img{width:40px;height:40px;flex-basis:40px}.association-chip b{font-size:9.5px}}
@media(prefers-reduced-motion:reduce){.association-ticker{overflow-x:auto;mask-image:none;-webkit-mask-image:none}.association-ticker-track{animation:none}.association-ticker-group[aria-hidden="true"]{display:none}}

/* Sticky data takeover — facts from the current Sports Almanac dataset */
.stat-scroll{position:relative;height:400svh;background:#061528;color:#fff;isolation:isolate}
.stat-sticky{position:sticky;top:0;height:100svh;min-height:680px;overflow:hidden;background:linear-gradient(145deg,#061528 0%,#092442 58%,#08355b 100%)}
.stat-sticky:before{content:"";position:absolute;inset:0;z-index:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:64px 64px;mask-image:radial-gradient(circle at center,#000,transparent 72%);-webkit-mask-image:radial-gradient(circle at center,#000,transparent 72%)}
.stat-sticky:after{content:"DATA";position:absolute;z-index:0;left:50%;top:50%;color:rgba(255,255,255,.025);font:900 clamp(180px,31vw,500px)/.7 'Noto Sans Thai',sans-serif;letter-spacing:-.12em;transform:translate(-51%,-50%);pointer-events:none}
.stat-eyebrow{position:absolute;z-index:4;left:5vw;right:5vw;top:104px;display:flex;align-items:center;justify-content:space-between;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.14);font-size:9px;letter-spacing:.14em}.stat-eyebrow span{color:#81c7ff;font:700 9px 'Noto Sans Thai',sans-serif}.stat-eyebrow b{color:#9db0c3;font-weight:500}
.stat-slide{position:absolute;z-index:2;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 24px 100px;text-align:center;opacity:0;transform:translateY(48px) scale(.94);filter:blur(8px);transition:opacity .55s ease,transform .7s var(--ease),filter .55s ease;pointer-events:none}
.stat-slide:before{content:"";position:absolute;z-index:-1;width:min(760px,78vw);aspect-ratio:1;left:50%;top:50%;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--stat-accent) 19%,transparent),transparent 67%);opacity:0;transform:translate(-50%,-50%) scale(.8);transition:opacity .7s ease,transform 1s var(--ease)}
.stat-slide.active{opacity:1;transform:none;filter:none;pointer-events:auto}.stat-slide.active:before{opacity:1;transform:translate(-50%,-50%) scale(1)}
.stat-slide small{color:var(--stat-accent);font:750 10px 'Noto Sans Thai',sans-serif;letter-spacing:.16em}
.stat-number{display:flex;align-items:flex-end;justify-content:center;gap:14px;margin:20px 0 10px;color:var(--stat-accent);line-height:.8}.stat-number strong{font:800 clamp(88px,15vw,210px)/.82 'Noto Sans Thai',sans-serif;letter-spacing:-.075em}.stat-number em{margin-bottom:13px;color:color-mix(in srgb,var(--stat-accent) 78%,#fff);font-size:clamp(17px,2vw,28px);font-style:normal;font-weight:650}
.stat-slide h2{margin:20px 0 5px;color:#fff;font-size:clamp(28px,3.4vw,52px);font-weight:600;line-height:1.15;letter-spacing:-.04em}.stat-slide p{max-width:590px;margin:8px 0 0;color:#a9bacb;font-size:14px;line-height:1.75}.stat-slide-final:after{content:"";position:absolute;z-index:-2;inset:0;background:radial-gradient(circle at center,rgba(23,120,255,.6),rgba(5,21,40,.2) 52%,transparent 76%)}
.stat-progress{position:absolute;z-index:5;left:50%;bottom:43px;display:flex;gap:8px;transform:translateX(-50%)}.stat-progress span{width:42px;height:3px;overflow:hidden;border-radius:4px;background:rgba(255,255,255,.16)}.stat-progress i{display:block;width:0;height:100%;border-radius:inherit;background:#72c6ff}.stat-progress span.done i{width:100%}.stat-progress span.active i{width:var(--stat-progress,0%)}
.stat-scroll-note{position:absolute;z-index:4;right:5vw;bottom:36px;display:flex;align-items:center;gap:10px;color:#7f94a8;font-size:9px}.stat-scroll-note i{width:34px;height:1px;overflow:hidden;background:rgba(255,255,255,.2)}.stat-scroll-note i:after{content:"";display:block;width:50%;height:100%;background:#72c6ff;animation:statCue 1.8s ease-in-out infinite}@keyframes statCue{from{transform:translateX(-120%)}to{transform:translateX(220%)}}
@media(max-width:760px){.stat-scroll{height:360svh}.stat-sticky{min-height:620px}.stat-eyebrow{left:18px;right:18px;top:92px}.stat-eyebrow b{display:none}.stat-slide{padding:90px 18px 100px}.stat-slide small{font-size:8px}.stat-number{display:block;margin:18px 0 12px}.stat-number strong{display:block;font-size:clamp(82px,27vw,118px)}.stat-number em{display:block;margin:18px 0 0;font-size:17px}.stat-slide h2{font-size:32px}.stat-slide p{max-width:340px;font-size:12px}.stat-progress{bottom:34px}.stat-progress span{width:28px}.stat-scroll-note{display:none}}
@media(prefers-reduced-motion:reduce){.stat-scroll{height:auto;padding:80px 18px;background:#061528}.stat-sticky{position:relative;top:auto;height:auto;min-height:0;display:grid;gap:12px;overflow:visible;background:transparent}.stat-sticky:after,.stat-scroll-note,.stat-progress{display:none}.stat-eyebrow{position:relative;inset:auto;margin-bottom:24px}.stat-slide{position:relative;inset:auto;min-height:360px;padding:46px 20px;border:1px solid rgba(255,255,255,.12);border-radius:24px;opacity:1;filter:none;transform:none}.stat-slide:before{opacity:.75;transform:translate(-50%,-50%) scale(1)}}

/* Association network follows the statistics in the normal page flow. */
.gateway-stats-ribbon + .association-ticker{position:relative;inset:auto;width:100%;max-width:100%;margin:0;left:auto;right:auto;transform:none;padding:10px 0;background:linear-gradient(180deg,#f8fbfe 0%,#edf5fb 100%);border-color:rgba(103,145,181,.25);mask-image:none;-webkit-mask-image:none}
@media(max-width:760px){.gateway-stats-ribbon + .association-ticker{width:100%;max-width:100%;margin:0;padding:8px 0;mask-image:none;-webkit-mask-image:none}}

/* Render the first screen once, without delayed text or search reveals. */
.tpl-landing .motion-copy h1>span,.tpl-landing .motion-copy h1>em,.tpl-landing .motion-copy>p,.tpl-landing .motion-copy .hero-search{animation:none}
.tpl-landing .motion-copy{min-height:260px}
.tpl-landing .reveal{opacity:1;transform:none}
.tpl-landing .map-intro-copy,.tpl-landing .map-intro .motion-map-panel{opacity:1;transform:none;transition:none}
.tpl-landing .map-intro:after{display:none}
.tpl-landing .map-intro #hero-map-canvas{clip-path:none;transition:none}
/* Autocomplete lives at body level so hero sections cannot cover or clip it. */
#hero-search-results{position:fixed;z-index:calc(var(--z-nav,1500) + 1);right:auto;bottom:auto;min-height:0;margin:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;box-sizing:border-box}
#hero-search-results .hero-search-result{box-sizing:border-box;min-height:54px;padding:11px 16px;text-decoration:none}
#hero-search-results .hero-search-result b{font-size:13px;line-height:1.6}
#hero-search-results .hero-search-result small{font-size:11px;line-height:1.5}
#hero-search-results .hero-search-empty{display:flex;align-items:center;gap:8px;font-size:13px;line-height:1.6;text-decoration:none}

/* v2/nation-map-light.css */
/* Nation map — mockup-style SVG layout */
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.nation{position:relative;z-index:2;padding:24px 0 56px!important;background:#fff!important;color:var(--gateway-text)!important;border:0!important;border-top:0!important;box-shadow:none!important;overflow:visible!important;margin-top:0}
.nation > .journey-connector,
#green-heart-events + .journey-connector{
  display:block!important;
  visibility:visible;
  pointer-events:none;
}
.nation-shell{position:relative;max-width:1548px;margin:0 auto;padding:0 6vw}
#nation > .nation-shell:first-of-type{z-index:2;overflow:visible}
#nation > .nation-shell:last-of-type{z-index:2;padding-top:36px;overflow:visible}
.nation-intro{position:relative;z-index:3;grid-column:1;grid-row:1;justify-self:end;text-align:right;max-width:min(760px,100%);margin:0 0 clamp(8px,1.5vw,14px)}
.map-body.is-province .nation-intro{grid-column:1/-1}
.nation-intro h2{margin:0 0 24px}
.nation-intro>p{max-width:520px;margin:0 0 0 auto;color:var(--gateway-muted);font-size:var(--type-body-sm,14px);line-height:1.75}
.nation-toolbar-inline{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.nation-toolbar-inline .map-search{width:auto;flex:1 1 180px;max-width:280px;height:38px}
.nation-toolbar-inline select{height:38px;padding:0 14px;border:0;border-radius:999px;background:#eef2f6;color:var(--gateway-navy);font-size:var(--type-ui,13px);font-weight:600;cursor:pointer;max-width:180px}
.nation-toolbar-inline select:disabled{opacity:.55;cursor:not-allowed}
.nation-toolbar-inline .map-reset-btn{border:0;background:transparent;color:var(--gateway-blue);font-size:var(--type-ui,13px);font-weight:700;cursor:pointer;padding:6px 0;white-space:nowrap}
.nation-head:before{display:none!important}
.map-app{
  max-width:none!important;margin:0!important;display:flex!important;flex-direction:column!important;gap:28px!important;
  background:transparent!important;border:0!important;border-radius:0!important;overflow:visible!important;
  box-shadow:none!important;grid-template-columns:none!important;grid-template-rows:none!important
}
.map-body{display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;align-items:start;gap:clamp(16px,2vw,24px);transition:grid-template-columns .55s cubic-bezier(.16,1,.3,1),gap .55s cubic-bezier(.16,1,.3,1)}
.map-body.is-province{grid-template-columns:min(340px,34%) 1fr;gap:clamp(20px,3vw,28px)}
.map-panel{grid-column:1;grid-row:2;z-index:3;display:none;opacity:0;transform:translateX(-16px);padding:0;border:0;background:transparent;flex-direction:column;gap:16px;overflow:visible;pointer-events:none;transition:opacity 1.15s ease,transform 1.15s cubic-bezier(.16,1,.3,1)}
.map-body.is-province .map-panel{display:flex;opacity:1;transform:none;pointer-events:auto}
.map-body.is-collapsing .map-panel{opacity:0;transform:translateX(-18px);pointer-events:none}
.map-panel .map-toolbar{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:0;border:0;background:transparent}
.map-search{display:flex;width:100%;height:42px;border:0;border-radius:999px;background:#eef2f6;overflow:hidden}
.map-search input{flex:1;min-width:0;border:0;background:transparent;color:var(--gateway-navy);padding:0 16px;font-size:var(--type-ui,13px);font-weight:600;outline:0}
.map-search input::placeholder{color:var(--gateway-muted);font-weight:500}
.map-search button{width:42px;border:0;background:transparent;color:var(--gateway-muted);font-size:15px;cursor:pointer}
.map-toolbar select{width:100%;height:42px;padding:0 16px;border:0;border-radius:999px;background:#eef2f6;color:var(--gateway-navy);font-size:var(--type-ui,13px);font-weight:600;cursor:pointer;max-width:none}
.map-toolbar select:disabled{opacity:.55;cursor:not-allowed}
.map-reset-btn{align-self:flex-start;border:0;background:transparent;color:var(--gateway-blue);font-size:var(--type-ui,13px);font-weight:700;cursor:pointer;padding:6px 0;white-space:nowrap}
.map-reset-btn:hover{text-decoration:underline}
.map-stage{
  grid-column:1;grid-row:2;z-index:1;
  position:relative;width:min(100%,616px);height:auto;aspect-ratio:600/900;max-height:min(68vh,704px);margin-inline:auto;
  background:radial-gradient(circle at 50% 42%,#f4f8fc 0%,#eef3f8 58%,#e8eef5 100%);
  border-radius:20px;overflow:hidden;
  box-shadow:0 18px 48px -28px rgba(14,47,82,.18);
  display:flex;align-items:center;justify-content:center;
  transition:grid-column .55s cubic-bezier(.16,1,.3,1),width .55s cubic-bezier(.16,1,.3,1),max-width .55s cubic-bezier(.16,1,.3,1),aspect-ratio .55s ease,height .55s ease,transform .55s cubic-bezier(.16,1,.3,1)
}
.map-body.is-province .map-stage{
  grid-column:2;width:100%;max-width:none;height:clamp(462px,52.8vw,638px);aspect-ratio:unset;max-height:none;margin-inline:0
}
#map-svg{width:100%;height:100%;display:block;touch-action:manipulation;overflow:hidden}
#map-group{transform-box:view-box;transform-origin:0 0}
.map-hint{
  position:absolute;top:16px;left:16px;z-index:5;display:flex;align-items:center;gap:8px;
  padding:7px 12px;border-radius:999px;background:rgba(255,255,255,.88);color:var(--gateway-muted);font-size:var(--type-caption,12px);
  backdrop-filter:blur(6px);pointer-events:none
}
.map-hint .dot{width:6px;height:6px;border-radius:50%;background:var(--gateway-blue)}
.map-stage.is-province .map-hint{opacity:0;visibility:hidden}
.province-path{fill:#122a52;stroke:rgba(255,255,255,.12);stroke-width:.6;cursor:pointer;transition:fill .28s ease,stroke .28s ease,opacity .28s ease,filter .28s ease}
.province-path:hover{fill:#1a3d73;stroke:rgba(255,255,255,.28)}
.province-path.active{fill:#1b4f98!important;stroke:rgba(125,211,255,.35)!important;stroke-width:.8!important;filter:drop-shadow(0 8px 18px rgba(22,119,255,.18))}
.province-path.hidden{display:none}
.district-path{fill:none;stroke:rgba(255,255,255,.32);stroke-width:.55;vector-effect:non-scaling-stroke;cursor:pointer;transition:stroke .2s ease,opacity .35s ease}
.district-path:hover{fill:none;stroke:rgba(125,211,255,.75);stroke-width:.85}
.district-path.active{fill:none;stroke:#baff19;stroke-width:1}
.district-path.hovered{fill:none;stroke:rgba(125,211,255,.75);stroke-width:.85}
.venue-dot{pointer-events:none;stroke:none;stroke-width:0;filter:none}
.venue-hit{cursor:pointer;pointer-events:all}
.venue-marker:hover .venue-dot{opacity:1!important;transform:scale(1.15)}
.venue-dot--stadium{fill:#00F0FF}
.venue-dot--multipurpose{fill:#FF007F}
.venue-dot--public{fill:#39FF14}
.venue-dot--fitness{fill:#FF5722}
.venue-dot--training{fill:#CCFF00}
.venue-dot--science{fill:#BF00FF}
.map-key{display:flex;flex-wrap:wrap;gap:6px 10px;max-width:calc(100% - 36px)}
.map-key.is-types{padding:8px 10px;border-radius:10px;background:rgba(255,255,255,.9);backdrop-filter:blur(4px);font-size:var(--type-caption,12px);line-height:1.5}
.map-key.is-types span{white-space:nowrap}
.map-facility-breakdown{margin:0;padding:0;border:0;width:100%}
.map-facility-breakdown[hidden]{display:none!important}
.map-facility-breakdown>small{display:block;color:var(--gateway-blue);font:650 13px/1.4 'Noto Sans Thai',sans-serif;letter-spacing:0;text-transform:none;margin-bottom:14px}
.map-facility-grid{display:grid;grid-template-columns:1fr;gap:10px;width:100%}
.map-facility-chip{display:flex;align-items:center;gap:10px;width:100%;padding:13px 16px;border:1px solid rgba(14,47,82,.08);border-radius:14px;background:#f7f9fc;cursor:pointer;text-align:left;transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}
.map-facility-chip:hover{border-color:rgba(18,108,243,.28);background:#eef5ff}
.map-facility-chip.active{border-color:var(--gateway-blue);background:#e8f2ff;box-shadow:inset 0 0 0 1px rgba(18,108,243,.12)}
.map-facility-chip i{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.map-facility-chip span{flex:1;min-width:0;color:var(--gateway-navy);font-size:14px;font-weight:600;line-height:1.35}
.map-facility-chip strong{color:var(--gateway-navy);font:750 18px/1 'Noto Sans Thai',sans-serif;letter-spacing:-.02em}
.selected-place[hidden]{display:none!important}
.selected-place:not([hidden]){display:block!important}
.selected-place{margin:0!important;padding:0!important;border:0!important}
.selected-place small{display:block;color:var(--gateway-blue);font:650 12px/1.4 'Noto Sans Thai',sans-serif;letter-spacing:0;text-transform:none}
.selected-place h3{margin:8px 0 8px;color:var(--gateway-navy);font-size:24px;font-weight:600;line-height:1.25}
.selected-place p{margin:0;color:var(--gateway-muted);font-size:13px;line-height:1.7}
.selected-place div{display:none}
.nearby-venues-list[hidden],.nearby-events-list[hidden]{display:none!important}
.nearby-venues-list,.nearby-events-list{margin:0;padding:0;border:0}
.nearby-venues-list>div,.nearby-events-list>div{margin-bottom:14px}
.nearby-venues-list>div small,.nearby-events-list>div small{display:block;color:var(--gateway-blue);font:650 12px/1.4 'Noto Sans Thai',sans-serif;letter-spacing:0;text-transform:none}
.nearby-venues-list>div strong,.nearby-events-list>div strong{display:block;margin-top:6px;color:var(--gateway-navy);font-size:var(--type-ui,13px);font-weight:600;line-height:1.4}
.nearby-venues-list button,.nearby-events-list button{width:100%;padding:12px 0;border:0;border-top:1px solid rgba(14,47,82,.08);display:grid;grid-template-columns:52px 1fr;gap:0 10px;text-align:left;background:transparent;color:var(--gateway-text);cursor:pointer;transition:color .2s ease}
.nearby-venues-list button:first-of-type,.nearby-events-list button:first-of-type{border-top:0;padding-top:0}
.nearby-venues-list button:hover,.nearby-venues-list button:focus-visible,.nearby-events-list button:hover,.nearby-events-list button:focus-visible{color:var(--gateway-blue);outline:none}
.nearby-venues-list button span,.nearby-events-list button span{grid-row:1/3;color:var(--gateway-muted);font:700 var(--type-label,11px) 'Noto Sans Thai',sans-serif}
.nearby-venues-list button b,.nearby-events-list button b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--type-caption,12px);font-weight:600}
.nearby-venues-list button small,.nearby-events-list button small{color:var(--gateway-muted);font-size:var(--type-caption,12px)}
.map-loading{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:var(--gateway-sky)!important;transition:opacity .35s ease,visibility .35s ease}
.map-loading.done{opacity:0;visibility:hidden;pointer-events:none}
.map-loading i{width:28px;height:28px;border:2px solid rgba(18,108,243,.12);border-top-color:var(--gateway-blue);border-radius:50%;animation:mapSpin .8s linear infinite}
.map-loading span{color:var(--gateway-muted)!important;font-size:var(--type-ui,13px)}
@keyframes mapSpin{to{transform:rotate(360deg)}}
.map-tooltip{position:absolute;z-index:6;pointer-events:none;padding:8px 10px;border-radius:10px;background:rgba(14,47,82,.92);color:#fff;font-size:var(--type-caption,12px);line-height:1.4;opacity:0;transform:translate(-50%,-120%);transition:opacity .15s ease}
.map-tooltip.visible{opacity:1}
.map-tooltip strong{display:block;font-size:var(--type-ui,13px);font-weight:700}
.map-tooltip span{display:block;margin-top:2px;color:rgba(255,255,255,.72);font-size:var(--type-caption,12px)}
.map-key{position:absolute;left:18px;bottom:16px;z-index:5;color:var(--gateway-muted);font-size:var(--type-caption,12px)}
.map-key i{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:4px;background:var(--gateway-blue);vertical-align:middle}
.map-key span+span i{background:var(--gateway-green)}
.map-province-cta-link{display:inline-flex!important;align-items:center;gap:10px;border-radius:999px;padding:12px 20px;background:var(--gateway-navy)!important;color:#fff!important;text-decoration:none;font:700 13px 'Noto Sans Thai',sans-serif!important;white-space:nowrap;margin-top:4px;width:100%;justify-content:center}
.map-province-cta-link[hidden]{display:none!important}
.map-province-cta-link:hover{background:#1677ff!important}
.map-body.is-province .map-province-cta-link:not([hidden]){display:inline-flex!important}
.map-controls{display:none!important}
@media(max-width:960px){
  .map-body,.map-body.is-province{grid-template-columns:1fr;grid-template-rows:auto auto auto;gap:20px}
  .nation-intro{grid-column:1;grid-row:1;justify-self:stretch;text-align:left;margin-bottom:0}
  .nation-intro>p{margin-left:0}
  .nation-toolbar-inline{justify-content:flex-start}
  .map-stage,.map-body.is-province .map-stage{grid-column:1;grid-row:2;width:min(100%,462px);height:auto;aspect-ratio:600/900;max-height:min(62vh,572px);margin-inline:auto}
  .map-panel{grid-column:1;grid-row:3;display:none;opacity:0;transform:none;z-index:3}
  .map-body.is-province .map-panel{display:flex;opacity:1;pointer-events:auto}
}
@media(max-width:760px){
  .nation{padding:36px 0 48px!important}
  .nation-shell{padding:0 22px}
  .nation-intro{margin-bottom:18px}
  .nation-intro h2{margin-bottom:18px}
  .map-app{gap:22px!important}
}

/* v2/visitor-gateway.css */
:root{--gateway-blue:#126cf3;--gateway-navy:#071b34;--gateway-sky:#eaf4ff;--gateway-paper:#f4f7fa;--gateway-line:#d7e0e9;--gateway-text:#122b45;--gateway-muted:#64788d;--gateway-green:#20a779;--gateway-orange:#ff704d;--premium-ease:cubic-bezier(.2,.75,.2,1);--type-label:11px;--type-caption:12px;--type-ui:13px;--type-body-sm:14px}
html{scroll-behavior:smooth;scroll-padding-top:92px}body{background:var(--gateway-paper);font-size:var(--type-body-sm);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}body.menu-open{overflow:hidden}::selection{background:#baff19;color:var(--gateway-navy)}a,button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #baff19;outline-offset:4px}*{scrollbar-width:thin;scrollbar-color:#83a4c7 transparent}main{position:relative;overflow-x:clip;overflow-y:visible}
.cinema-hero,.manifesto,.stat-scroll,.sports-network,.data-story,.finale,.map-intro{display:none!important}

.gateway-services,.public-insights{position:relative;background:#fff;color:var(--gateway-text)}
.gateway-services{padding:72px 6vw 110px}
.public-insights{position:relative;z-index:10;padding:0 6vw 52px;overflow:visible}
.sport-ribbon{position:relative;z-index:var(--z-ribbon,1200);height:72px;overflow:visible;width:100%;max-width:none;margin:28px 0 -28px;left:auto;color:var(--gateway-navy);pointer-events:none}
.sport-ribbon-band{pointer-events:auto;position:absolute;z-index:var(--z-ribbon,1200);left:-5%;top:50%;width:110%;padding:18px 0;background:#baff19;white-space:nowrap;transform:translateY(-50%) rotate(-4deg);transform-origin:center center;box-shadow:0 8px 28px rgba(7,27,52,.08)}
.sport-ribbon-track{display:inline-flex;align-items:center;gap:28px;padding-left:40px;animation:sportRibbonMarquee 28s linear infinite;font:650 15px/1 'Noto Sans Thai',sans-serif;letter-spacing:.04em}
.sport-ribbon-track span{display:inline-flex;align-items:center;gap:.45em;flex-shrink:0}
.sport-ribbon-track span:after{content:none}
.sport-ribbon-icon{width:1.15em;height:1.15em;flex:0 0 auto;display:block;color:var(--gateway-navy);opacity:.92}
.sport-ribbon:hover .sport-ribbon-track{animation-play-state:paused}
@keyframes sportRibbonMarquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(min-width:761px){.motion-hero{height:min(68svh,620px);min-height:540px}}
.gateway-section-intro{position:relative;z-index:1;max-width:1320px;margin:0 auto 54px;display:flex;align-items:flex-end;justify-content:space-between;gap:40px}
.gateway-section-intro small{display:block;margin-bottom:13px;color:var(--gateway-blue);font:700 var(--type-label) 'Noto Sans Thai',sans-serif;letter-spacing:.16em;text-transform:uppercase}
.gateway-section-intro h2,.activity-editorial-lead h2,.nation-intro h2,.green-heart-intro h2{color:var(--gateway-navy);font-size:clamp(48px,4.7vw,72px);font-weight:500;line-height:1.02;letter-spacing:-.06em}
.gateway-section-intro h2 em,.activity-editorial-lead h2 em,.nation-intro h2 em,.green-heart-intro h2 em{color:var(--gateway-blue);font-style:normal;font-weight:inherit}
.gateway-section-intro h2{margin:0}
.gateway-section-intro>p{max-width:350px;margin:0 0 8px;color:var(--gateway-muted);font-size:var(--type-body-sm);line-height:1.75}

.service-launcher{max-width:1320px;margin:auto;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--gateway-line);border-left:1px solid var(--gateway-line)}
.service-launcher>a{position:relative;min-height:164px;padding:28px 27px;border-right:1px solid var(--gateway-line);border-bottom:1px solid var(--gateway-line);display:grid;grid-template-columns:48px 1fr auto;align-items:start;gap:18px;background:#fff;transition:background .3s ease,color .3s ease,transform .35s var(--ease)}
.service-launcher>a:hover{z-index:2;background:var(--gateway-blue);color:#fff;transform:translateY(-5px);box-shadow:0 20px 50px rgba(18,108,243,.2)}
.service-icon{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--gateway-sky);color:var(--gateway-blue);transition:.3s}.service-icon svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.service-launcher>a:hover .service-icon{background:#fff;color:var(--gateway-blue)}
.service-launcher b{display:block;margin-top:3px;font-size:17px;font-weight:650;line-height:1.35}.service-launcher small{display:block;margin-top:7px;color:var(--gateway-muted);font-size:var(--type-caption)}.service-launcher>a:hover small{color:rgba(255,255,255,.75)}.service-launcher>a>i{font-style:normal;font-size:17px}

/* Editorial activity calendar adapted from the supplied reference. */
.activity-editorial{max-width:1548px;margin:auto;display:grid;grid-template-columns:minmax(330px,.72fr) minmax(720px,1.28fr);gap:5vw}.activity-editorial-lead{align-self:stretch;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding-bottom:2%}.activity-editorial-lead>small{display:block;color:var(--gateway-blue);font:700 9px 'Noto Sans Thai',sans-serif;letter-spacing:.2em}.activity-editorial-lead h2{margin:26px 0 42px}.activity-editorial-lead>a{display:inline-flex;gap:7px;padding-bottom:7px;border-bottom:1px solid var(--gateway-navy);color:var(--gateway-navy);font-size:12px;font-weight:700}.activity-editorial-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--gateway-navy)}.activity-editorial-list article{min-height:118px;padding:17px 12px 17px 0;display:grid;grid-template-columns:76px minmax(0,1fr);align-items:center;gap:16px;border-bottom:1px solid #c9d4df;color:var(--gateway-navy);cursor:pointer;transition:background .28s ease,transform .28s ease}.activity-editorial-list article:nth-child(even){padding-left:18px;border-left:1px solid #c9d4df}.activity-editorial-list article:hover{z-index:1;background:#f5f9ff;transform:translateY(-2px)}.activity-editorial-list time{align-self:center}.activity-editorial-list time strong{display:block;font:750 48px/.86 'Noto Sans Thai',sans-serif;letter-spacing:-.06em}.activity-editorial-list time small{display:block;margin-top:8px;color:var(--gateway-navy);font:750 17px/1.2 'Noto Sans Thai',sans-serif;letter-spacing:.01em}.activity-editorial-list h3{margin:0 0 8px;font-size:14px;font-weight:550;line-height:1.35;font-family:'Noto Sans Thai',sans-serif}.activity-editorial-list p{margin:0;color:#718399;font-size:11px;font-family:'Noto Sans Thai',sans-serif}.activity-editorial-list article>span{color:var(--gateway-blue);font-size:13px}.activity-editorial-list article{position:relative}.activity-editorial-list article>a.activity-editorial-link{position:absolute;inset:0;z-index:2;color:inherit;text-decoration:none}.activity-editorial-list article:focus-within{outline:2px solid var(--gateway-blue);outline-offset:3px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Green Heart — light editorial rail aligned with gateway sections. */
.green-heart{position:relative;padding:88px 0 92px;background:#fff;color:var(--gateway-text);border-top:0}.green-heart-shell{max-width:1548px;margin:0 auto;padding:0 6vw}.green-heart-intro{max-width:760px;margin-bottom:34px}.green-heart-intro>small{display:block;color:var(--gateway-blue);font:700 var(--type-label) 'Noto Sans Thai',sans-serif;letter-spacing:.18em;text-transform:uppercase}.green-heart-intro h2{margin:0 0 24px;text-wrap:balance}.green-heart-intro>p{max-width:520px;margin:0;color:var(--gateway-muted);font-size:var(--type-body-sm);line-height:1.75}.green-heart-meta{margin-top:26px;display:flex;align-items:center;gap:22px;flex-wrap:wrap}.green-heart-count{color:var(--gateway-muted);font-size:var(--type-caption)}.green-heart-count strong{color:var(--gateway-navy);font:750 24px/1 'Noto Sans Thai',sans-serif;letter-spacing:-.04em;margin-right:4px}.green-heart-filters{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:0 0 10px}.green-heart-level-tabs{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.green-heart-tab{border:0;background:#eef2f6;padding:11px 18px;border-radius:999px;color:var(--gateway-muted);font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer;transition:background .28s ease,color .28s ease,box-shadow .28s ease,transform .28s var(--premium-ease)}.green-heart-tab:hover{color:var(--gateway-navy);background:#e6edf5;transform:translateY(-1px)}.green-heart-tab.active,.green-heart-tab[aria-selected=true]{background:#fff;color:var(--gateway-navy);box-shadow:0 8px 28px rgba(14,47,82,.08)}.green-heart-province-picker{position:relative;display:block;z-index:12}.green-heart-province-trigger{display:inline-flex;align-items:center;gap:10px;min-width:min(220px,70vw);padding:11px 16px;border:0;border-radius:999px;background:#eef2f6;color:var(--gateway-navy);font-size:12px;font-weight:600;cursor:pointer;transition:background .28s ease,box-shadow .28s ease,transform .28s var(--premium-ease)}.green-heart-province-trigger i{font-size:10px;color:var(--gateway-muted);transition:transform .28s ease}.green-heart-province-trigger:hover{background:#e6edf5;transform:translateY(-1px)}.green-heart-province-trigger.is-open,.green-heart-province-trigger[aria-expanded=true]{background:#fff;box-shadow:0 8px 28px rgba(14,47,82,.08)}.green-heart-province-trigger.is-open i,.green-heart-province-trigger[aria-expanded=true] i{transform:rotate(180deg)}.green-heart-province-menu{position:absolute;z-index:20;top:calc(100% + 10px);left:0;min-width:min(280px,calc(100vw - 44px));max-height:min(320px,50vh);overflow:auto;padding:8px;border:1px solid var(--gateway-line);border-radius:18px;background:#fff;box-shadow:0 24px 60px rgba(14,47,82,.12);scrollbar-width:thin;scrollbar-color:rgba(14,47,82,.18) transparent}.green-heart-province-menu::-webkit-scrollbar{width:6px}.green-heart-province-menu::-webkit-scrollbar-track{background:transparent;margin:6px 0}.green-heart-province-menu::-webkit-scrollbar-thumb{background:rgba(14,47,82,.16);border-radius:999px}.green-heart-province-menu[hidden]{display:none}.green-heart-province-option{width:100%;padding:11px 14px;border:0;border-radius:12px;background:transparent;color:var(--gateway-navy);font-size:12px;font-weight:600;text-align:left;cursor:pointer;transition:background .2s ease,color .2s ease}.green-heart-province-option:hover{background:#f5f9ff}.green-heart-province-option.is-selected{background:rgba(32,167,121,.1);color:var(--gateway-green)}.green-heart-province-option:focus-visible{outline:2px solid rgba(32,167,121,.35);outline-offset:1px}.green-heart-rail-wrap{position:relative;margin:0 -6vw;padding:0 6vw 0}.green-heart-controls{position:absolute;z-index:4;top:10px;right:6vw;display:flex;gap:8px}.green-heart-controls button{width:42px;height:42px;border-radius:999px;border:0;background:rgba(255,255,255,.94);color:var(--gateway-navy);font-size:15px;cursor:pointer;box-shadow:0 10px 30px rgba(14,47,82,.1);backdrop-filter:blur(8px);transition:background .25s ease,color .25s ease,transform .25s var(--premium-ease),box-shadow .25s ease}.green-heart-controls button:hover{background:var(--gateway-navy);color:#fff;transform:translateY(-2px);box-shadow:0 14px 34px rgba(14,47,82,.16)}.green-heart-rail-wrap:before,.green-heart-rail-wrap:after{content:"";position:absolute;z-index:2;top:0;bottom:12px;width:min(7vw,96px);pointer-events:none}.green-heart-rail-wrap:before{left:0;background:linear-gradient(90deg,#fff,rgba(255,255,255,0))}.green-heart-rail-wrap:after{right:0;background:linear-gradient(270deg,#fff,rgba(255,255,255,0))}.green-heart-empty{margin:0;padding:28px 0;color:var(--gateway-muted);font-size:12px}.green-heart-rail{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:0 0 10px;-webkit-overflow-scrolling:touch}.green-heart-rail::-webkit-scrollbar{display:none}.green-heart-card{flex:0 0 clamp(260px,30vw,340px);scroll-snap-align:start;color:var(--gateway-navy);text-decoration:none;transition:transform .45s var(--premium-ease),opacity .45s ease}.green-heart-card.is-visible{animation:greenHeartCardIn .68s var(--premium-ease) both}.green-heart-card-media{position:relative;aspect-ratio:4/3;height:auto;margin:0;border-radius:16px;overflow:hidden;background:#e8eef4;border:1px solid var(--gateway-line);transition:transform .4s var(--premium-ease),box-shadow .4s ease,border-color .4s ease}.green-heart-card-media img{width:100%;height:100%;object-fit:cover;transition:transform .75s var(--premium-ease)}.green-heart-card-overlay{position:absolute;inset:auto 0 0 0;z-index:2;padding:18px 18px 20px;background:linear-gradient(0deg,rgba(7,27,52,.92) 0%,rgba(7,27,52,.58) 58%,transparent 100%);transform:translateY(calc(100% - 78px));transition:transform .5s var(--premium-ease)}.green-heart-card-overlay time{display:block;margin-bottom:8px;color:#b7ead3;font:700 8px 'Noto Sans Thai',sans-serif;letter-spacing:.12em}.green-heart-card-overlay h3{margin:0 0 8px;color:#fff;font-size:15px;font-weight:600;line-height:1.38;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.green-heart-card-overlay p{margin:0 0 10px;color:#c7d4e0;font-size:10px}.green-heart-level{display:inline-block;padding:4px 9px;border-radius:999px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);color:#dff5ea;font:700 7px 'Noto Sans Thai',sans-serif;letter-spacing:.1em}.green-heart-card:hover,.green-heart-card:focus-visible{z-index:3;outline:none}.green-heart-card:hover .green-heart-card-media,.green-heart-card:focus-visible .green-heart-card-media{transform:translateY(-6px);border-color:rgba(18,108,243,.22);box-shadow:0 22px 50px rgba(14,47,82,.12)}.green-heart-card:hover .green-heart-card-media img,.green-heart-card:focus-visible .green-heart-card-media img{transform:scale(1.06)}.green-heart-card:hover .green-heart-card-overlay,.green-heart-card:focus-visible .green-heart-card-overlay{transform:translateY(0)}.green-heart-rail.is-auto-scroll{scroll-snap-type:none;scroll-behavior:auto}.green-heart-rail.is-paused .green-heart-card-media{transition-duration:.35s}@keyframes greenHeartCardIn{from{opacity:.25;transform:translateY(16px)}to{opacity:1;transform:none}}
.training-courses{position:relative;z-index:2;border-top:0;padding:56px 0 36px;margin-top:0;overflow:visible;background:#fff}#green-heart-events{position:relative;z-index:1;padding-bottom:40px;margin-bottom:0;border:0;border-bottom:0;box-shadow:none}#green-heart-events + #nation{margin-top:0;border-top:0!important;box-shadow:none}#nation > .nation-shell:first-child{position:relative;z-index:2;isolation:auto;background:#fff;overflow:visible}#green-heart-events + .journey-connector,.nation > .journey-connector{display:block!important;visibility:visible}.nation .training-courses .green-heart-shell{max-width:none;margin:0;padding:0}.training-courses .green-heart-intro{margin-bottom:40px}.ribbon-lead{position:relative;z-index:11;display:flex;align-items:center;gap:14px;max-width:1548px;margin:-22px auto 0;padding:0 6vw;color:var(--gateway-blue);font:700 10px/1 'Noto Sans Thai',sans-serif;letter-spacing:.18em;text-transform:uppercase}.ribbon-lead:before{content:"";width:48px;height:1px;background:currentColor;flex:0 0 auto}.ribbon-lead:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(18,108,243,.35),transparent)}.journey-connector-ribbon{position:relative;z-index:1200;height:48px;margin:-12px 0 8px;overflow:visible}.training-course-grid-wrap{position:relative;margin:0;padding:0}.training-course-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(16px,2vw,22px);overflow:visible}.training-course-card{display:flex;flex-direction:column;color:var(--gateway-navy);background:#fff;border:1px solid var(--gateway-line);border-radius:16px;overflow:hidden;transition:transform .35s var(--premium-ease),box-shadow .35s ease,border-color .35s ease}.training-course-card.is-visible{animation:greenHeartCardIn .68s var(--premium-ease) both}.training-course-card:hover{transform:translateY(-4px);border-color:rgba(18,108,243,.22);box-shadow:0 18px 44px rgba(14,47,82,.1)}.training-course-card-media{position:relative;aspect-ratio:4/3;margin:0;overflow:hidden;background:#e8eef4}.training-course-card-media img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--premium-ease)}.training-course-card:hover .training-course-card-media img{transform:scale(1.04)}.training-course-card-body{display:flex;flex-direction:column;flex:1;gap:8px;padding:16px 16px 18px;font-family:'Noto Sans Thai',sans-serif}.training-course-card-body time{color:var(--gateway-blue);font:700 11px/1.45 'Noto Sans Thai',sans-serif;letter-spacing:.01em}.training-course-card-body h3{margin:0;color:var(--gateway-navy);font-size:14px;font-weight:600;line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.training-course-card-body p{margin:0;color:var(--gateway-muted);font-size:11px;line-height:1.55}.training-course-tag{display:inline-flex;align-self:flex-start;padding:5px 10px;border-radius:999px;background:#eef5ff;color:var(--gateway-blue);font:650 11px/1.35 'Noto Sans Thai',sans-serif;letter-spacing:.01em}.training-course-detail-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;margin-top:auto;padding:11px 14px;border-radius:999px;background:var(--gateway-navy);color:#fff;text-decoration:none;font-size:12px;font-weight:700;transition:background .25s ease,transform .25s var(--premium-ease)}.training-course-detail-btn:hover{background:var(--gateway-blue);transform:translateY(-1px)}.training-courses+.journey-connector{margin-top:0}.journey-connector-ribbon{position:absolute;left:0;right:0;bottom:-8px;height:56px;margin:0;z-index:13;transform:rotate(-6deg);transform-origin:center top;opacity:.92}.journey-connector-ribbon .swoosh-main{stroke:var(--gateway-navy);stroke-width:1.75}.journey-connector-ribbon .swoosh-accent{stroke:var(--gateway-blue);stroke-width:1.5}#green-heart-events{padding-top:0;padding-bottom:56px;position:relative;z-index:2;overflow:visible}#green-heart-events.green-heart{padding-top:8px;padding-bottom:72px}#gateway-services + .journey-connector{margin-bottom:-72px}#green-heart-events .green-heart-intro{position:relative;z-index:3;margin-top:-78px}#green-heart-events .green-heart-intro h2{position:relative;z-index:3}

/* Swoosh connectors turn separate sections into one continuous journey. */
.journey-connector{position:relative;z-index:var(--z-connector,200);height:72px;margin:-36px 0;pointer-events:none;overflow:visible;background:transparent}.journey-connector svg{position:relative;z-index:1;width:100%;height:100%;overflow:visible;display:block}.journey-connector path{fill:none;stroke-linecap:round;vector-effect:non-scaling-stroke}.journey-connector .swoosh-main{stroke:var(--gateway-blue);stroke-width:2.5;stroke-dasharray:14 8;opacity:.95;animation:swooshFlow 11s linear infinite}.journey-connector .swoosh-accent{stroke:#baff19;stroke-width:1.75;stroke-dasharray:3 12;opacity:.9;animation:swooshFlow 14s linear infinite reverse}.journey-connector-1 .swoosh-main{stroke:#fff}.journey-connector-2 .swoosh-main,.journey-connector-3 .swoosh-main,.journey-connector-4 .swoosh-main{stroke:#58c9fb}.journey-connector-5 .swoosh-main,.journey-connector-6 .swoosh-main{stroke:#78d5fb}@keyframes swooshFlow{to{stroke-dashoffset:-220}}

/* Kinetic type and layered data reveal only when content enters the viewport. */
.kinetic-title{opacity:1;text-wrap:balance;word-break:keep-all}.kinetic-title.is-visible{animation:kineticTitleIn .9s var(--premium-ease) both}.kinetic-title em,.kinetic-title strong{display:inline-block;transition:transform .7s var(--premium-ease)}.kinetic-title:hover em,.kinetic-title:hover strong{transform:translateX(8px)}.activity-editorial-list article,.insight-layout article{opacity:1;transition:transform .65s var(--premium-ease),box-shadow .35s ease,border-color .35s ease}.activity-editorial-list article.is-visible,.insight-layout article.is-visible{animation:layerReveal .68s var(--premium-ease) both}.insight-layout article{position:relative;box-shadow:0 18px 55px rgba(14,47,82,.055)}.insight-layout article:hover{z-index:2;transform:translateY(-7px);border-color:rgba(18,108,243,.36);box-shadow:0 30px 80px rgba(14,47,82,.13)}.insight-layout article:before{content:"";position:absolute;inset:12px -7px -7px 12px;z-index:-1;border:1px solid rgba(18,108,243,.08);border-radius:inherit}@keyframes kineticTitleIn{from{opacity:.2;transform:translate3d(0,30px,0) skewY(1.2deg);clip-path:inset(0 0 92% 0)}to{opacity:1;transform:none;clip-path:inset(0)}}@keyframes layerReveal{from{opacity:.25;transform:translateY(18px)}to{opacity:1;transform:none}}

/* Premium micro-interactions and loading treatment. */
.nav-shell{transition:box-shadow .35s ease,background .35s ease,transform .35s var(--premium-ease)}.nav-primary-link,.login{transition:color .25s ease,background .25s ease,transform .25s var(--premium-ease)}.nav-primary-link:hover{transform:translateY(-1px)}.gateway-stat i,.activity-editorial-list article>span,.activity-editorial-lead>a span,.places-head>a{transition:transform .3s var(--premium-ease)}.gateway-stat:hover i,.activity-editorial-list article:hover>span,.activity-editorial-lead>a:hover span{transform:translate(4px,-4px)}.map-loading{background:linear-gradient(105deg,#091c38 28%,#102e55 42%,#091c38 58%);background-size:220% 100%;animation:loadingSheen 1.8s ease-in-out infinite}.map-loading.done{animation:none}@keyframes loadingSheen{to{background-position:-220% 0}}

/* Angled editorial data field — intentionally not another card grid. */
.gateway-stats-ribbon{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  padding:40px 5vw 18px;
  background:#fff;
  color:#fff;
  font-family:"Noto Sans Thai",sans-serif;
}
.gateway-stats-ribbon:before{
  content:"";
  position:absolute;
  z-index:-1;
  inset:0;
  background:linear-gradient(135deg,#0d4fd6 0%,#1761f6 48%,#1a73ff 100%);
  clip-path:polygon(0 22%,66% 22%,100% 0,100% 100%,0 100%);
}
.gateway-stats-ribbon:after{
  content:"";
  position:absolute;
  z-index:-1;
  inset:22% 0 auto;
  height:1px;
  background:linear-gradient(90deg,rgba(255,255,255,.08),rgba(255,255,255,.42),rgba(255,255,255,.08));
  pointer-events:none;
}
.gateway-stats-inner{
  max-width:1480px;
  min-height:108px;
  margin:auto;
  display:grid;
  grid-template-columns:112px repeat(3,minmax(0,1fr)) 120px;
  align-items:stretch;
  gap:0;
}
.gateway-stats-rail{
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-start;
  gap:4px;
  padding:12px 18px 12px 4px;
  border-right:1px solid rgba(255,255,255,.28);
}
.gateway-stats-rail-mark{
  width:28px;
  height:3px;
  border-radius:999px;
  background:#baff19;
  margin-bottom:6px;
}
.gateway-stats-rail b{
  font:800 1.05rem/1.15 "Noto Sans Thai",sans-serif;
  letter-spacing:-.02em;
  color:#fff;
}
.gateway-stats-rail small{
  font:600 .78rem/1.35 "Noto Sans Thai",sans-serif;
  color:rgba(255,255,255,.78);
}
.gateway-stat{
  position:relative;
  min-height:96px;
  padding:14px 28px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  color:#fff;
  text-decoration:none;
  border-right:1px solid rgba(255,255,255,.28);
  transition:transform .35s cubic-bezier(.22,1,.36,1),background .35s ease;
}
.gateway-stat:last-of-type{border-right:1px solid rgba(255,255,255,.28)}
.gateway-stat:hover,
.gateway-stat:focus-visible{
  transform:translateY(-3px);
  background:rgba(255,255,255,.08);
  outline:none;
}
.gateway-stat>span{display:flex;flex-direction:column;gap:6px;min-width:0}
.gateway-stat strong{
  font:800 clamp(2rem,3.4vw,3.15rem)/.95 "Noto Sans Thai",sans-serif;
  font-variant-numeric:tabular-nums;
  letter-spacing:-.04em;
  color:#fff;
}
.gateway-stat small{
  color:rgba(255,255,255,.9);
  font:600 .88rem/1.45 "Noto Sans Thai",sans-serif;
  letter-spacing:0;
}
.gateway-stat i{
  flex:none;
  font-style:normal;
  color:#baff19;
  font-size:1.15rem;
  font-weight:700;
  line-height:1;
  transition:transform .35s cubic-bezier(.22,1,.36,1);
}
.gateway-stat:hover i{transform:translate(3px,-3px)}
.gateway-stats-signoff{
  display:grid;
  align-content:center;
  justify-items:end;
  gap:2px;
  padding:12px 4px 12px 16px;
  text-align:right;
  color:rgb(186, 255, 25);
  font:800 1rem/1.1 "Noto Sans Thai",sans-serif;
  letter-spacing:.02em;
}
.gateway-stats-signoff strong,
.gateway-stats-signoff span{display:block;color:rgb(186, 255, 25)}

/* Upcoming events become a light, scannable calendar rail. */
.events{display:none!important;padding:96px 0 58px;background:var(--gateway-paper);color:var(--gateway-text)}
.events-title{width:calc(100% - 12vw);max-width:1320px;margin:auto;padding:0;position:relative}.events-title:before{content:"กิจกรรมที่กำลังจะเกิดขึ้น";display:block;margin-bottom:12px;color:var(--gateway-orange);font:700 9px 'Noto Sans Thai',sans-serif;letter-spacing:.15em}.events-title h2{margin:0;font-size:clamp(48px,5.6vw,82px);font-weight:650;line-height:.96;letter-spacing:-.06em}.events-title h2 em{color:var(--gateway-blue)}
.event-arrows{right:0;bottom:5px}.event-arrows button{border-color:#b8c6d4;color:var(--gateway-text)}.event-arrows button:hover{background:var(--gateway-blue);border-color:var(--gateway-blue);color:#fff}
.events-track{max-width:1440px;margin:0 auto;padding:52px 60px 12px;gap:0}.event-card{position:relative;flex-basis:340px;min-height:330px;padding:28px;border:0;border-top:1px solid #b9c7d5;border-right:1px solid var(--gateway-line);border-radius:0;background:#fff;color:var(--gateway-text)}.event-card:first-child{border-left:1px solid var(--gateway-line)}.event-card:before{content:"";position:absolute;left:27px;top:-5px;width:9px;height:9px;border-radius:50%;background:var(--gateway-orange)}.event-card:hover{z-index:2;background:var(--gateway-navy);color:#fff;transform:translateY(-7px)}.event-date{color:var(--gateway-blue);font-size:34px}.event-card h3{font-size:19px}.event-card p{color:var(--gateway-muted)}.event-card footer{background:transparent!important}.event-card:hover footer{color:#b9c9d8}

/* Nation map panel lives beside the canvas in the gateway layout. */

/* Public data visualizations */
.public-insights{background:#fff}
.public-kpis{max-width:1320px;margin:0 auto 40px;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--gateway-line);border-bottom:1px solid var(--gateway-line)}.public-kpis>div{padding:28px 24px;border-right:1px solid var(--gateway-line)}.public-kpis>div:last-child{border:0}.public-kpis strong{display:block;color:var(--gateway-blue);font:750 clamp(34px,4vw,62px)/1 'Noto Sans Thai',sans-serif;letter-spacing:-.06em}.public-kpis span{display:block;margin-top:8px;color:var(--gateway-muted);font-size:var(--type-caption)}
.insight-layout{max-width:1320px;margin:auto;display:grid;grid-template-columns:1.15fr .85fr;gap:22px}
#nation + .journey-connector{height:48px;margin:-28px 0 -36px}
.public-insights{margin-top:-12px}.insight-layout article{padding:34px;border:1px solid var(--gateway-line);border-radius:16px;background:#fff}.insight-layout article>header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:32px}.insight-layout header small{color:var(--gateway-blue);font:700 var(--type-label) 'Noto Sans Thai',sans-serif;letter-spacing:.14em}.insight-layout h3{margin:7px 0 0;font-size:23px;line-height:1.3}.insight-layout header>span,.insight-layout header>a{color:var(--gateway-muted);font-size:var(--type-caption)}
.sport-bars{grid-row:span 2}.sport-bars ol,.province-ranking ol{list-style:none;margin:0;padding:0}.sport-bars li{display:grid;grid-template-columns:145px 1fr 58px;align-items:center;gap:13px;margin:19px 0}.sport-bars li b{font-size:var(--type-caption);font-weight:550}.sport-bars li i{height:10px;background:#e8eef4}.sport-bars li i:after{content:"";display:block;width:var(--value);height:100%;background:linear-gradient(90deg,var(--gateway-blue),#54c7f5);transform-origin:left;animation:barGrow .9s var(--ease) both}.sport-bars li strong{text-align:right;font:650 var(--type-ui) 'Noto Sans Thai',sans-serif}@keyframes barGrow{from{transform:scaleX(0)}}
.activity-trend svg{width:100%;height:auto;overflow:visible}.trend-grid path{fill:none;stroke:#dfe7ee;stroke-width:1}.trend-area{fill:rgba(18,108,243,.09)}.trend-line{fill:none;stroke:var(--gateway-blue);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.trend-points circle{fill:#fff;stroke:var(--gateway-blue);stroke-width:4}.trend-labels text{fill:#718398;font:var(--type-caption) "Noto Sans Thai",sans-serif;text-anchor:middle}.activity-trend>p{margin:4px 0 0;color:var(--gateway-muted);font-size:var(--type-caption)}
.province-ranking{grid-column:2}.province-ranking li{display:grid;grid-template-columns:38px 1fr auto;align-items:center;padding:12px 0;border-top:1px solid var(--gateway-line)}.province-ranking li span{color:#9aa9b8;font:600 var(--type-label) 'Noto Sans Thai',sans-serif}.province-ranking li b{font-size:var(--type-ui)}.province-ranking li strong{font:650 var(--type-ui) 'Noto Sans Thai',sans-serif}

/* Featured content uses real venue imagery already in the project. */
.places{padding:118px 6vw 135px;background:var(--gateway-paper)}.places-head{max-width:1320px;margin:0 auto 55px}.places-head h2{font-size:clamp(48px,5.6vw,82px);font-weight:650}.places-head h2 em{color:var(--gateway-blue)}.place-gallery{max-width:1320px;margin:auto;grid-template-rows:500px 340px;gap:18px}.place-card{border-radius:16px}.place-card h3{font-size:clamp(24px,2.5vw,40px)}

@media(max-width:900px){
  .gateway-services{padding:90px 22px}.public-insights{padding:0 22px 44px;margin-top:-8px}.sport-ribbon{height:64px;margin:0 0 -32px}.sport-ribbon-band{transform:translateY(-50%) rotate(-4deg)}.sport-ribbon-track{gap:20px;padding-left:28px;font-size:13px}.sport-ribbon-track span{gap:.4em}#nation + .journey-connector{height:40px;margin:-22px 0 -28px}.gateway-section-intro{display:block}.gateway-section-intro>p{margin-top:24px}.service-launcher{grid-template-columns:1fr 1fr}.service-launcher>a{min-height:155px;padding:23px 20px;grid-template-columns:42px 1fr auto}.service-icon{width:42px;height:42px}
  .gateway-services{padding-bottom:102px}.activity-editorial{grid-template-columns:1fr;gap:40px}.activity-editorial-lead{display:block;padding-bottom:0}.activity-editorial-lead h2{margin:24px 0 30px}.activity-editorial-list article{grid-template-columns:72px minmax(0,1fr)}
  .green-heart{padding:72px 0 78px}.green-heart-shell{padding:0 22px}.green-heart-filters{gap:8px;margin-bottom:10px}.green-heart-province-trigger{width:100%;min-width:0;justify-content:space-between}.green-heart-province-menu{left:0;right:0;min-width:0}.green-heart-rail-wrap{margin:0 -22px;padding:0 22px 0}.green-heart-controls{right:22px;top:10px}.journey-connector{height:58px;margin:-29px 0}#green-heart-events{padding-top:0;padding-bottom:64px}#green-heart-events.green-heart{padding-top:4px;padding-bottom:64px}#gateway-services + .journey-connector{margin-bottom:-56px}#green-heart-events .green-heart-intro{margin-top:-58px}.training-courses{padding-top:64px}.training-course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gateway-stats-ribbon{padding:34px 22px 14px}.gateway-stats-inner{grid-template-columns:88px repeat(3,minmax(0,1fr)) 88px;min-height:96px}.gateway-stat{min-height:84px;padding:12px 16px}.gateway-stat strong{font-size:clamp(1.7rem,3vw,2.4rem)}.gateway-stat small{font-size:.8rem}.gateway-stats-signoff{font-size:.85rem}.gateway-stats-rail b{font-size:.95rem}
  .events-title{width:auto;margin:0;padding:0 22px}.event-arrows{right:22px}.events-track{padding:48px 22px 10px}.event-card{flex-basis:300px}
  .nation{padding:95px 18px}.map-app{grid-template-columns:250px 1fr}.insight-layout{grid-template-columns:1fr}.sport-bars{grid-row:auto}.province-ranking{grid-column:auto}.places{padding:95px 22px}
}

@media(max-width:760px){
  .gateway-services{padding:82px 18px}.public-insights{padding:0 18px 36px;margin-top:-6px}.sport-ribbon{height:56px;margin:0 0 -28px}.sport-ribbon-band{padding:14px 0;left:-8%;width:116%;transform:translateY(-50%) rotate(-4deg)}.ribbon-lead{margin:-18px auto 0;padding:0 18px}.journey-connector-ribbon{height:34px;margin:-14px 0 2px}#nation + .journey-connector{height:36px;margin:-18px 0 -24px}.gateway-section-intro{margin-bottom:38px}.gateway-section-intro h2,.activity-editorial-lead h2,.nation-intro h2,.green-heart-intro h2{font-size:44px}.gateway-section-intro>p br{display:none}.service-launcher{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;border-left:0;padding-bottom:8px}.service-launcher>a{flex:0 0 82vw;scroll-snap-align:start;border-left:1px solid var(--gateway-line)}
  .gateway-services{padding-top:62px;padding-bottom:94px}.activity-editorial{gap:34px}.activity-editorial-lead h2{font-size:44px;line-height:1.03;margin:20px 0 24px}.activity-editorial-lead>a{font-size:11px}.activity-editorial-list{grid-template-columns:1fr}.activity-editorial-list article{min-height:104px;padding:14px 3px 14px 0;grid-template-columns:68px minmax(0,1fr);gap:12px}.activity-editorial-list article:nth-child(even){padding-left:0;border-left:0}.activity-editorial-list time strong{font-size:44px}.activity-editorial-list time small{margin-top:6px;font-size:15px}.activity-editorial-list h3{margin:0 0 7px;font-size:14px}.activity-editorial-list p{font-size:10px}
  .green-heart{padding:64px 0 68px}.green-heart-shell{padding:0 18px}.green-heart-intro{margin-bottom:26px}.green-heart-intro h2{margin:16px 0 18px}.green-heart-intro>p{font-size:11px;line-height:1.8}.green-heart-count strong{font-size:22px}.green-heart-filters{margin-bottom:8px}.green-heart-tab{padding:10px 15px;font-size:11px}.green-heart-rail-wrap{margin:0 -18px;padding:0 18px 0}.green-heart-controls{right:18px;top:10px}.green-heart-card{flex-basis:82vw}.journey-connector{height:44px;margin:-22px 0}.journey-connector path{stroke-width:1.25}#green-heart-events{padding-top:0;padding-bottom:48px}#green-heart-events.green-heart{padding-top:0;padding-bottom:52px}#gateway-services + .journey-connector{margin-bottom:-44px}#green-heart-events .green-heart-intro{margin-top:-44px}.training-courses{padding-top:48px}.training-course-grid{grid-template-columns:1fr}.mobile-menu{max-height:calc(100dvh - 74px);overflow-y:auto;padding-bottom:calc(30px + env(safe-area-inset-bottom));overscroll-behavior:contain}.mobile-menu a,.mobile-accordion-trigger{min-height:44px;display:flex;align-items:center}.menu-button{touch-action:manipulation}
  .gateway-stats-ribbon{padding:22px 0 10px}.gateway-stats-ribbon:before{clip-path:polygon(0 10%,72% 10%,100% 0,100% 100%,0 100%)}.gateway-stats-ribbon:after{top:10%}.gateway-stats-inner{min-height:auto;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 14px;gap:0}.gateway-stats-rail,.gateway-stats-signoff{display:none}.gateway-stat{flex:0 0 78vw;min-height:88px;padding:16px 20px;scroll-snap-align:start;border-right:1px solid rgba(255,255,255,.28);border-left:0}.gateway-stat strong{font-size:2.2rem}.gateway-stat small{font-size:.85rem}
  .events{padding:72px 0 52px}.events-title h2{font-size:50px}.event-arrows{position:static;margin-top:25px}.events-track{padding-top:38px}.event-card{flex-basis:82vw;min-height:310px}
  .nation{padding:72px 0 78px}.nearby-events-list{margin-top:0}
  .public-kpis{grid-template-columns:1fr 1fr}.public-kpis>div:nth-child(2){border-right:0}.public-kpis>div:nth-child(-n+2){border-bottom:1px solid var(--gateway-line)}.insight-layout article{padding:24px 18px}.sport-bars li{grid-template-columns:105px 1fr 46px;gap:8px}.sport-bars li b{font-size:9.5px}
  .places-head h2{font-size:50px}.place-gallery{max-width:none}.place-card{border-radius:14px}
}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.sport-bars li i:after,.journey-connector path,.map-loading,.kinetic-title,.green-heart-card,.training-course-card,.activity-editorial-list article,.insight-layout article,.sport-ribbon-track{animation:none}.service-launcher>a,.gateway-stat,.event-card,.kinetic-title,.green-heart-card,.training-course-card,.green-heart-card-media,.activity-editorial-list article,.insight-layout article{transition:none;transform:none;opacity:1;clip-path:none}}
a.green-heart-card{display:block;color:inherit;text-decoration:none}
.training-course-status{display:inline-flex;align-items:center;min-height:24px;margin:8px 0 0;padding:2px 10px;border-radius:999px;font:600 12px/1.4 'Noto Sans Thai',sans-serif}
.training-course-status.is-open{background:#dcfce7;color:#166534}
.training-course-status.is-full{background:#fef3c7;color:#92400e}
.training-course-status.is-closed{background:#e8eef5;color:#475569}
.training-course-status.is-upcoming{background:#dbeafe;color:#1e3a8a}

/* v2/activity-modal.css */
/* Shared activity detail popup (index + activities calendar) */
.activity-modal{
  border:0;
  border-radius:22px;
  padding:0;
  width:min(720px,calc(100% - 28px));
  max-height:min(90dvh,880px);
  overflow:hidden;
  background:#fff;
  color:var(--gateway-navy,#071b34);
  box-shadow:0 40px 100px rgba(0,0,0,.38);
}
.activity-modal::backdrop{
  background:rgba(3,15,36,.76);
  backdrop-filter:blur(5px);
}
.activity-modal-media{
  position:relative;
  height:220px;
  overflow:hidden;
  background:linear-gradient(135deg,#0c2141,#126cf3);
}
.activity-modal-media img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.activity-modal-media:after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(0deg,rgba(4,18,38,.55),transparent 48%);
  pointer-events:none;
}
.activity-modal-close{
  position:absolute;
  right:14px;
  top:14px;
  z-index:3;
  border:0;
  width:40px;
  height:40px;
  border-radius:50%;
  background:rgba(7,26,61,.88);
  color:#fff;
  font-size:24px;
  line-height:1;
  cursor:pointer;
}
.activity-modal-body{
  padding:22px 24px 26px;
  overflow:auto;
  max-height:calc(90dvh - 220px);
}
.activity-modal-body > small{
  display:block;
  margin:0 0 8px;
  color:#64788d;
  font:700 12px/1.3 "Noto Sans Thai",sans-serif;
}
.activity-modal-body h2{
  margin:0 0 10px;
  font:750 24px/1.25 "Noto Sans Thai",sans-serif;
  color:var(--gateway-navy,#071b34);
  letter-spacing:-.02em;
}
.activity-modal-body > p{
  margin:0 0 18px;
  color:#617089;
  font:500 14px/1.65 "Noto Sans Thai",sans-serif;
}
.activity-modal-meta{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin:0 0 18px;
}
.activity-modal-meta div{
  background:#f7faf9;
  border:1px solid rgba(10,18,41,.06);
  border-radius:12px;
  padding:12px 14px;
}
.activity-modal-meta dt{
  margin:0 0 4px;
  color:#7d8ea6;
  font:600 12px/1.3 "Noto Sans Thai",sans-serif;
}
.activity-modal-meta dd{
  margin:0;
  color:var(--gateway-navy,#071b34);
  font:650 14px/1.4 "Noto Sans Thai",sans-serif;
}
.activity-modal-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}
.activity-modal-actions a{
  display:inline-flex;
  align-items:center;
  gap:6px;
  border-radius:999px;
  padding:11px 16px;
  font:700 13px/1 "Noto Sans Thai",sans-serif;
  text-decoration:none;
}
.activity-modal-actions a.primary{
  background:#071b34;
  color:#fff;
}
.activity-modal-actions a.ghost{
  border:1px solid rgba(10,18,41,.12);
  color:#071b34;
  background:#fff;
}

@media (max-width:560px){
  .activity-modal-media{height:180px}
  .activity-modal-body{padding:18px 16px 22px;max-height:calc(90dvh - 180px)}
  .activity-modal-body h2{font-size:20px}
  .activity-modal-meta{grid-template-columns:1fr}
}

/* v2/design-language.css */
/* Premium sports design language — Version2 foundation */
:root {
  --dl-ink: #071b34;
  --dl-muted: #5d7188;
  --dl-blue: #126cf3;
  --dl-lime: #baff19;
  --dl-paper: #f3f6f9;
  --dl-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --dl-ease-soft: cubic-bezier(0.4, 0, 0.2, 1);
  --dl-space-1: 8px;
  --dl-space-2: 16px;
  --dl-space-3: 24px;
  --dl-space-4: 32px;
  --dl-space-5: 48px;
  --dl-space-6: 64px;
  --dl-shadow-soft: 0 8px 28px rgba(7, 27, 52, 0.08);
  --dl-shadow-lift: 0 14px 36px rgba(7, 27, 52, 0.12);
}

.venue-detail-page,
.venue-detail-page button,
.venue-detail-page input,
.venue-detail-page select,
.venue-detail-page a,
.venues-page,
.venues-page button,
.venues-page input,
.venues-page select,
.venues-page a,
.dashboard-page,
.dashboard-page button,
.dashboard-page a,
.abouts-page,
.abouts-page button,
.abouts-page a,
.province-page,
.province-page button,
.province-page input,
.province-page select,
.province-page a,
body.province-shell,
body.province-shell button,
body.province-shell input,
body.province-shell select,
body.province-shell a {
  font-family: "Noto Sans Thai", sans-serif;
}

.venue-detail-page,
.venues-page,
.dashboard-page,
.abouts-page,
.province-page {
  font-variant-numeric: tabular-nums;
}

.venue-detail-page .venue-prose,
.venue-detail-page .venue-lead,
.venue-detail-page .venue-meta-grid dd,
.venue-detail-page .venue-contacts,
.venue-detail-page .venue-hours,
.venues-page .venue-card-body p,
.venues-page .venues-lead,
.venues-page .venues-human-copy p {
  line-height: 1.7;
  word-break: normal;
  overflow-wrap: anywhere;
  line-break: strict;
}

/* Swoosh divider */
.venue-swoosh,
.venues-swoosh,
.dl-swoosh {
  display: block;
  position: relative;
  z-index: 1200;
  width: 100%;
  height: 48px;
  margin-top: -1px;
  color: var(--dl-paper, #eef3f8);
  pointer-events: none;
}

.venue-swoosh svg,
.venues-swoosh svg,
.dl-swoosh svg {
  display: block;
  width: 100%;
  height: 100%;
}

/* Kinetic / reveal */
.venue-reveal,
.venues-reveal,
.dl-reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.7s var(--dl-ease), transform 0.7s var(--dl-ease);
}

.venue-reveal.is-in,
.venues-reveal.is-in,
.dl-reveal.is-in {
  opacity: 1;
  transform: translateY(0);
}

.venue-hero-copy h1 {
  transition: letter-spacing 0.8s var(--dl-ease);
}

/* Organic gallery crossfade */
.venue-gallery-hero img {
  transition: opacity 0.55s var(--dl-ease-soft), transform 0.7s var(--dl-ease);
}

.venue-gallery-hero.is-switching img {
  opacity: 0.72;
  transform: scale(1.02);
}

/* Premium micro-interactions */
.venue-quick-actions a,
.venue-actions a,
.venue-links a,
.venue-sticky-btn,
.venue-card,
.venues-type-chip,
.venues-pagination button {
  transition:
    transform 0.35s var(--dl-ease),
    box-shadow 0.35s var(--dl-ease),
    background-color 0.35s var(--dl-ease-soft),
    border-color 0.35s var(--dl-ease-soft),
    color 0.35s var(--dl-ease-soft),
    filter 0.35s var(--dl-ease-soft);
}

.venue-quick-actions a:hover,
.venue-actions a:hover,
.venue-links a:hover,
.venue-sticky-btn:hover,
.venues-type-chip:hover,
.venues-pagination button:hover:not(:disabled) {
  transform: translateY(-2px);
  box-shadow: var(--dl-shadow-soft);
}

.venue-card:hover,
.venue-card:focus-visible {
  transform: translateY(-4px);
  box-shadow: var(--dl-shadow-lift);
}

.venue-gallery-thumbs button,
.venue-sub,
.venue-meta-grid > div,
.venue-facilities li {
  transition:
    transform 0.35s var(--dl-ease),
    box-shadow 0.35s var(--dl-ease),
    outline-color 0.35s var(--dl-ease-soft),
    opacity 0.35s var(--dl-ease-soft),
    background-color 0.35s var(--dl-ease-soft);
}

.venue-block {
  transition: box-shadow 0.45s var(--dl-ease), transform 0.45s var(--dl-ease);
}

.venue-detail-side .venue-block:hover {
  box-shadow: var(--dl-shadow-soft);
}

/* Skeleton */
.venue-skeleton,
.venues-skel {
  background: linear-gradient(90deg, #e4ebf3 0%, #f4f7fb 45%, #e4ebf3 90%);
  background-size: 200% 100%;
  animation: venue-shimmer 1.35s var(--dl-ease-soft) infinite;
  border-radius: 10px;
  color: transparent !important;
}

@keyframes venue-shimmer {
  0% { background-position: 100% 0; }
  100% { background-position: -100% 0; }
}

.venue-hero-copy.is-loading #venue-title,
.venue-hero-copy.is-loading #venue-summary {
  min-height: 1.2em;
}

@media (prefers-reduced-motion: reduce) {
  .venue-reveal,
  .venues-reveal,
  .dl-reveal,
  .venue-gallery-hero img,
  .venue-quick-actions a,
  .venue-actions a,
  .venue-links a,
  .venue-sticky-btn,
  .venue-gallery-thumbs button,
  .venue-sub,
  .venue-block,
  .venue-card,
  .venues-type-chip {
    transition: none !important;
    animation: none !important;
  }

  .venue-reveal,
  .venues-reveal,
  .dl-reveal {
    opacity: 1;
    transform: none;
  }
}

/* Shared human band */
.dl-human-band {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  overflow: hidden;
  border-radius: 20px;
  min-height: 200px;
  background: #071b34;
  color: #fff;
  box-shadow: 0 18px 48px rgba(7, 27, 52, 0.16);
}

.dl-human-band img {
  width: 100%;
  height: 100%;
  min-height: 200px;
  object-fit: cover;
  display: block;
}

.dl-human-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 10px;
  padding: 28px 32px;
  background:
    radial-gradient(circle at 90% 10%, rgba(18, 108, 243, 0.35), transparent 45%),
    linear-gradient(135deg, #0a2344 0%, #071b34 60%);
}

.dl-human-copy .dl-kicker {
  margin: 0;
  color: var(--dl-lime);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
}

.dl-human-copy p:last-child {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
  line-height: 1.6;
  max-width: 28rem;
}

.dl-stat-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}

.dl-stat-card {
  padding: 20px 18px;
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.96);
  border: 1px solid rgba(7, 27, 52, 0.06);
  box-shadow: 0 8px 24px rgba(7, 27, 52, 0.05);
  transition: transform 0.35s var(--dl-ease), box-shadow 0.35s var(--dl-ease);
}

.dl-stat-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--dl-shadow-lift);
}

.dl-stat-card strong {
  display: block;
  font-size: clamp(1.4rem, 2.2vw, 1.85rem);
  font-weight: 800;
  color: var(--dl-blue);
  letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
}

.dl-stat-card span {
  display: block;
  margin-top: 6px;
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--dl-muted);
  line-height: 1.45;
}

@media (max-width: 900px) {
  .dl-human-band {
    grid-template-columns: 1fr;
  }

  .dl-stat-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  .dl-stat-grid {
    grid-template-columns: 1fr;
  }

  .dl-human-copy {
    padding: 22px 20px;
  }
}

/* v2/login-modal.css */
/* Login — compact split panel, fits one viewport */

.login-modal {
  border: 0;
  border-radius: 20px;
  padding: 0;
  width: min(760px, calc(100% - 24px));
  max-height: min(92dvh, 640px);
  height: auto;
  overflow: hidden;
  background: #fff;
  color: #071b34;
  box-shadow: 0 28px 80px rgba(0, 0, 0, 0.32);
  font-family: "Noto Sans Thai", sans-serif;
}

/* Native <dialog> must stay hidden when closed — never force display:block always */
.login-modal:not([open]) {
  display: none;
}

.login-modal[open] {
  display: block;
}

.login-modal::backdrop {
  background: rgba(3, 15, 36, 0.72);
  backdrop-filter: blur(5px);
}

/* Dialog top-layer + nav backdrop-filter hides the header logo in Chromium */
body:has(#login-modal[open]) .nav-shell,
body:has(#login-modal[open]) .nav-shell.is-scrolled {
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  background: rgba(255, 255, 255, 0.96);
}

body:has(#login-modal[open]) .nav-shell .brand img {
  mix-blend-mode: normal;
}

.login-modal-shell {
  display: grid;
  grid-template-columns: minmax(200px, 0.78fr) minmax(280px, 1.22fr);
  max-height: inherit;
  height: min(620px, 90dvh);
}

.login-modal-brand {
  position: relative;
  display: grid;
  place-items: center;
  place-content: center;
  padding: 28px 22px;
  overflow: hidden;
  background: #fff;
  border-right: 1px solid #e6edf4;
}

.login-modal-brand-inner {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 100%;
  margin: 0 auto;
}

.login-modal-brand a {
  display: grid;
  place-items: center;
  width: 100%;
  text-decoration: none;
  pointer-events: auto;
}

.login-modal-brand img {
  display: block;
  width: min(220px, 78%);
  height: auto;
  margin: 0 auto;
  object-fit: contain;
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  box-shadow: none;
}

.login-modal-brand-eng,
.login-modal-brand-th,
.login-modal-brand-copy {
  display: none;
}

.login-modal-panel {
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 0;
  background: #fff;
  overflow: hidden;
}

.login-modal-close {
  position: absolute;
  right: 12px;
  top: 12px;
  z-index: 40;
  border: 0;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #eef3f8;
  color: #071b34;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  display: grid;
  place-items: center;
  pointer-events: auto;
}

.login-modal-close:hover {
  background: #e2ebf4;
  color: #126cf3;
}

.login-modal-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  overscroll-behavior: contain;
  padding: 28px 28px 22px;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}

.login-modal-kicker {
  display: none;
}

.login-modal-body h2 {
  margin: 0 40px 14px 0;
  font: 750 24px/1.2 "Noto Sans Thai", sans-serif;
  letter-spacing: -0.03em;
  color: #071b34;
}

.login-modal-status {
  display: none;
  margin: 0 0 10px;
  padding: 8px 10px;
  border-radius: 10px;
  background: #eef7ff;
  color: #0b4ea2;
  font: 650 12px/1.4 "Noto Sans Thai", sans-serif;
}

.login-modal-status.is-visible { display: block; }
.login-modal-status.is-error { background: #fff1f0; color: #a12828; }

.login-modal-form {
  display: grid;
  gap: 10px;
}

.login-modal-form label {
  display: grid;
  gap: 5px;
  font: 650 12px/1.3 "Noto Sans Thai", sans-serif;
  color: #3a516a;
}

.login-modal-form input[type="email"],
.login-modal-form input[type="password"],
.login-modal-form input[type="text"] {
  width: 100%;
  min-height: 42px;
  border: 1px solid rgba(10, 18, 41, 0.12);
  border-radius: 11px;
  padding: 0 12px;
  background: #f7fafc;
  color: #071b34;
  font: 600 13px/1.3 "Noto Sans Thai", sans-serif;
  outline: 0;
  box-sizing: border-box;
}

.login-modal-form input:focus {
  border-color: #126cf3;
  box-shadow: 0 0 0 3px rgba(18, 108, 243, 0.14);
  background: #fff;
}

.login-modal-password {
  position: relative;
}

.login-modal-password input {
  padding-right: 42px;
}

.login-modal-toggle {
  position: absolute;
  right: 6px;
  bottom: 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: #64788d;
  cursor: pointer;
  font-size: 15px;
  line-height: 1;
}

.login-modal-toggle:hover {
  color: #126cf3;
  background: rgba(18, 108, 243, 0.08);
}

.login-modal-toggle:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(18, 108, 243, 0.22);
}

.login-modal-toggle[aria-pressed="true"] {
  color: #126cf3;
}

.login-modal-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}

.login-modal-check {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font: 600 12px/1.3 "Noto Sans Thai", sans-serif;
  color: #5a6f86;
  cursor: pointer;
}

.login-modal-check input {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: #0264e5;
  flex: 0 0 auto;
}

.login-modal-check input:focus-visible {
  outline: 2px solid #0264e5;
  outline-offset: 2px;
}

.login-modal-check-note {
  font-weight: 500;
  color: #6d8298;
}

.login-modal-link {
  color: #126cf3;
  font: 700 12px/1.3 "Noto Sans Thai", sans-serif;
  text-decoration: none;
}

.login-modal-link:hover { text-decoration: underline; }

.login-modal-submit {
  width: 100%;
  min-height: 44px;
  margin-top: 2px;
  border: 0;
  border-radius: 999px;
  background: #0023b4;
  color: #fff;
  font: 750 14px/1 "Noto Sans Thai", sans-serif;
  cursor: pointer;
  transition: background 0.25s ease, transform 0.25s ease;
}

.login-modal-submit:hover {
  background: #126cf3;
  transform: translateY(-1px);
}

.login-modal-submit:disabled {
  opacity: 0.7;
  cursor: wait;
  transform: none;
}

.login-modal-register {
  margin: 2px 0 0;
  text-align: center;
  color: #5a6f86;
  font: 500 12px/1.4 "Noto Sans Thai", sans-serif;
}

.login-modal-register a {
  color: #0023b4;
  font-weight: 700;
  text-decoration: none;
}

.login-modal-register a:hover { text-decoration: underline; }

.login-modal-divider {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 10px;
  margin: 14px 0 12px;
  color: #8a9bb0;
  font: 600 11px/1 "Noto Sans Thai", sans-serif;
}

.login-modal-divider::before,
.login-modal-divider::after {
  content: "";
  height: 1px;
  background: rgba(10, 18, 41, 0.1);
}

.login-modal-lede {
  margin: 0 0 12px;
  color: #64788d;
  font: 500 12.5px/1.45 "Noto Sans Thai", sans-serif;
}

.login-modal-primary {
  margin: 0;
}

.login-modal-thaid {
  width: 100%;
  min-height: 48px;
  padding: 0 16px;
  border: 1px solid #d5dde7;
  border-radius: 999px;
  background: #fff;
  color: #122b45;
  font: 750 13.5px/1.2 "Noto Sans Thai", sans-serif;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  box-sizing: border-box;
  text-decoration: none !important;
  box-shadow: 0 1px 2px rgba(18, 43, 69, 0.06);
}

.login-modal-thaid:hover {
  border-color: #1b6bff;
  background: #f5f9ff;
  color: #0a3db5;
}

.login-modal-thaid-icon {
  width: 28px;
  height: 28px;
  flex: none;
  display: block;
  border-radius: 6px;
  object-fit: cover;
}

.login-modal-note {
  display: none;
}

@media (max-width: 700px) {
  .login-modal {
    width: min(400px, calc(100% - 18px));
    max-height: min(90dvh, 560px);
  }

  .login-modal-shell {
    grid-template-columns: 1fr;
    height: auto;
    max-height: min(90dvh, 560px);
  }

  .login-modal-brand {
    min-height: 110px;
    padding: 18px 16px;
    border-right: 0;
    border-bottom: 1px solid #e6edf4;
  }

  .login-modal-brand img {
    width: min(168px, 56%);
  }

  .login-modal-body {
    padding: 20px 18px 18px;
    justify-content: flex-start;
  }

  .login-modal-body h2 {
    font-size: 22px;
    margin-bottom: 12px;
  }
}

/* v2/site-foundation.css */
/* =========================================================
   Almanac Design System v3
   Source of truth = Homepage gateway + Field Poster patterns
   Load LAST on every page.
   Templates:
     body.tpl-landing     — index journey
     body.tpl-list        — list + filter (activities, athletes…)
     body.tpl-detail-map  — detail / map exploration
   ========================================================= */

:root {
  --gateway-blue: #126cf3;
  --gateway-navy: #071b34;
  --gateway-sky: #eaf4ff;
  --gateway-paper: #f4f7fa;
  --gateway-line: #d7e0e9;
  --gateway-text: #122b45;
  --gateway-muted: #64788d;
  --gateway-green: #20a779;
  --gateway-orange: #ff704d;
  --gateway-lime: #baff19;
  /* Accessible lime usage: never as small text on white */
  --gateway-lime-ink: #3d5c00;
  --gateway-lime-soft: #e8f7b8;
  --premium-ease: cubic-bezier(0.2, 0.75, 0.2, 1);
  --focus-ring: #126cf3;
  --focus-ring-offset: #baff19;

  --ink: var(--gateway-navy);
  --blue: var(--gateway-blue);
  --lime: var(--gateway-lime);
  --paper: var(--gateway-paper);
  --muted: var(--gateway-muted);
  --line: var(--gateway-line);
  --white: #fff;
  --field: var(--gateway-navy);
  --ink-soft: #1a334d;
  --mist: var(--gateway-sky);
  --ease: var(--premium-ease);

  --dl-ink: var(--gateway-navy);
  --dl-muted: var(--gateway-muted);
  --dl-blue: var(--gateway-blue);
  --dl-lime: var(--gateway-lime);
  --dl-paper: var(--gateway-paper);
  --dl-ease: var(--premium-ease);

  --z-base: 1;
  --z-section: 10;
  --z-ribbon: 1200;
  --z-connector: 1100;
  --z-nav: 1500;
  --z-modal: 2000;

  --page-gutter: var(--site-gutter);
  --shell-max: var(--site-wrap);
  --shell: min(var(--shell-max), calc(100% - var(--page-gutter) - var(--page-gutter)));
}

/* ——— Typography ——— */
html { font-family: "Noto Sans Thai", sans-serif; }

body,
body button,
body input,
body select,
body textarea,
body a,
.portal-page,
.portal-page button,
.portal-page input,
.portal-page select,
.portal-page a,
.venue-detail-page,
.venues-page,
.dashboard-page,
.abouts-page,
.province-page,
.province-shell {
  font-family: "Noto Sans Thai", sans-serif !important;
}

body {
  background: var(--gateway-paper);
  color: var(--gateway-text);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

::selection {
  background: var(--gateway-lime);
  color: var(--gateway-navy);
}

/* ——— Accessibility: focus ——— */
:focus { outline: none; }
:focus-visible:not(#hero-venue-search) {
  outline: 2px solid var(--focus-ring) !important;
  outline-offset: 3px !important;
  box-shadow: 0 0 0 4px rgba(186, 255, 25, 0.55) !important;
}

.skip:focus,
.skip:focus-visible {
  top: 12px !important;
  z-index: calc(var(--z-modal) + 1);
}

/* Lime never as tiny text on white */
.fp-poster-body small,
.fp-eyebrow,
.ab-kicker-on-dark {
  /* poster/dark contexts stay bright */
}
body:not(.tpl-landing) .fp-mast .fp-eyebrow,
.fp-mast .fp-chip,
.tpl-list .fp-eyebrow {
  color: var(--gateway-blue) !important;
}
.fp-mast .fp-eyebrow::before { background: var(--gateway-blue) !important; }

/* Soft lime surfaces instead of lime-on-white text */
.sport-ribbon-band {
  color: var(--gateway-navy);
}
.activity-editorial-list time strong {
  color: var(--gateway-navy);
}
.gateway-stats-ribbon,
.gateway-stats-ribbon .gateway-stat,
.gateway-stats-ribbon .gateway-stat strong,
.gateway-stats-ribbon .gateway-stats-rail b {
  color: #fff !important;
}
.gateway-stats-ribbon .gateway-stat small,
.gateway-stats-ribbon .gateway-stats-rail small {
  color: rgba(255, 255, 255, 0.9) !important;
}
.gateway-stats-ribbon .gateway-stat i,
.gateway-stats-ribbon .gateway-stats-signoff,
.gateway-stats-ribbon .gateway-stats-signoff strong,
.gateway-stats-ribbon .gateway-stats-signoff span {
  color: rgb(186, 255, 25) !important;
}

/* ——— Stacking contract ——— */
.nav-shell { z-index: var(--z-nav) !important; }
.journey-connector,
.nation > .journey-connector,
.journey-connector-ribbon,
.fp-swoosh,
.dl-swoosh,
.venue-swoosh,
.venues-swoosh,
.dash-swoosh {
  position: relative;
  z-index: var(--z-connector) !important;
  overflow: visible !important;
  pointer-events: none;
}
.sport-ribbon,
.sport-ribbon-band {
  position: relative;
  z-index: var(--z-ribbon) !important;
  overflow: visible !important;
}
.sport-ribbon-band {
  position: absolute !important;
}
.login-modal,
.activity-modal,
.venue-modal,
dialog.login-modal,
dialog.activity-modal {
  z-index: var(--z-modal);
}
.login-modal,
.activity-modal {
  max-height: min(92dvh, 640px);
  overflow: hidden;
}
.login-modal:not([open]),
.activity-modal:not([open]) {
  display: none !important;
}
.login-modal[open],
.activity-modal[open] {
  display: block;
}
.login-modal-body,
.activity-modal-body {
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}
.login-modal .login-modal-close {
  z-index: 30 !important;
  pointer-events: auto !important;
}

/* ——— Reduce motion ——— */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  .sport-ribbon-track,
  .journey-connector path,
  .fp-rail.is-auto-scroll,
  .green-heart-rail.is-auto-scroll,
  .kinetic-title,
  .fp-poster,
  .green-heart-card,
  .training-course-card {
    animation: none !important;
  }
  .fp-rail.is-auto-scroll,
  .green-heart-rail.is-auto-scroll {
    scroll-behavior: auto;
  }
  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}

/* ——— Template shells ——— */
.tpl-shell {
  width: var(--shell);
  margin-inline: auto;
}

/* Full-bleed pages — no side gutters on main */
body.tpl-list main#main,
body.tpl-detail-map main#main {
  padding-inline: 0 !important;
  width: 100%;
  max-width: none;
  box-sizing: border-box;
}

.tpl-list .fp-stage,
.tpl-detail-map .fp-stage {
  background: #fff;
  width: 100%;
  max-width: none;
  margin-inline: 0;
  padding-inline: var(--page-gutter);
  box-sizing: border-box;
}

.tpl-list .fp-block,
.tpl-detail-map .fp-block {
  max-width: var(--shell-max);
  margin-inline: auto;
  padding-inline: 0;
}

.tpl-list .fp-mast-inner,
.tpl-detail-map .fp-mast-inner {
  width: var(--shell) !important;
  max-width: var(--shell-max);
  margin-inline: auto;
}

.tpl-detail-map .province-page-hero,
.tpl-detail-map .province-page-layout,
.tpl-detail-map .venue-archive,
.tpl-detail-map .province-report,
.tpl-detail-map .map-province-cta,
.tpl-list .venues-hero-inner,
.tpl-list .venues-toolbar,
.tpl-list .venues-type-row,
.tpl-list .venues-toolbar-inner,
.tpl-list .dash-hero-inner,
.tpl-list .dash-panel-inner,
.tpl-list .dash-band-wrap {
  width: 100%;
  max-width: var(--shell-max);
  margin-inline: auto;
  padding-inline: var(--page-gutter);
  box-sizing: border-box;
}

.tpl-detail-map .province-page-sidebar,
.tpl-detail-map .province-report-block,
.tpl-detail-map .province-panel {
  padding: clamp(20px, 2vw, 28px) !important;
}

.tpl-detail-map .province-map-head {
  padding: clamp(20px, 2vw, 28px) clamp(20px, 2vw, 28px) 0 !important;
}

.tpl-detail-map .province-map-key {
  padding-inline: clamp(20px, 2vw, 28px) !important;
}

.tpl-list .venues-hero,
.tpl-list .dash-hero,
.tpl-list .fp-mast,
.tpl-detail-map .venue-hero {
  padding-inline: 0 !important;
  width: 100%;
}

.tpl-list .venues-toolbar,
.tpl-list .dash-panel {
  padding-inline: 0 !important;
  width: 100%;
}

.noise {
  z-index: 2 !important;
  pointer-events: none !important;
}

.loader {
  z-index: 2500 !important;
}

.nav-shell,
.nav-shell .menu-button,
.nav-shell .mobile-menu {
  pointer-events: auto;
}

/* Shared mast (List + Detail) — homepage editorial light */
.portal-page {
  --ink: var(--gateway-navy);
  --blue: var(--gateway-blue);
  --lime: var(--gateway-lime);
  --mist: var(--gateway-sky);
  --paper: #fff;
  --line: rgba(7, 27, 52, 0.1);
  --muted: var(--gateway-muted);
  background: var(--gateway-paper);
  color: var(--gateway-text);
}

.fp-mast {
  min-height: clamp(260px, 38vh, 420px);
  background: #fff !important;
  color: var(--gateway-navy) !important;
  border-bottom: 1px solid var(--gateway-line);
}

.fp-mast::before {
  background:
    radial-gradient(ellipse 70% 60% at 88% 18%, rgba(18, 108, 243, 0.14), transparent 55%),
    radial-gradient(ellipse 45% 40% at 8% 90%, rgba(186, 255, 25, 0.16), transparent 50%),
    linear-gradient(180deg, #fff 0%, #f7fafc 100%) !important;
}

.fp-mast-media { opacity: 0.16; mix-blend-mode: luminosity; }
.fp-mast-watermark { color: rgba(7, 27, 52, 0.05) !important; }
.fp-mast h1 {
  color: var(--gateway-navy) !important;
  font-weight: 500 !important;
  letter-spacing: -0.06em;
}
.fp-mast h1 em { color: var(--gateway-blue) !important; }
.fp-mast-lead {
  color: var(--gateway-muted) !important;
  font-size: 14px;
  line-height: 1.75;
  max-width: 52ch;
}
.fp-chip {
  background: var(--gateway-sky) !important;
  color: var(--gateway-navy) !important;
  border: 1px solid rgba(18, 108, 243, 0.12) !important;
  backdrop-filter: none !important;
}
.fp-swoosh { color: #fff; }
.fp-stage { background: #fff; }
.fp-block-head h2,
.fp-cal-nav h2 {
  color: var(--gateway-navy);
  font-weight: 500;
  letter-spacing: -0.04em;
}
.fp-block-head p,
.fp-count { color: var(--gateway-muted); }

.fp-btn {
  background: var(--gateway-navy);
  color: #fff;
  border-radius: 999px;
  font-family: "Noto Sans Thai", sans-serif;
}
.fp-btn:hover { background: var(--gateway-blue); }
.fp-btn-ghost {
  background: transparent;
  color: var(--gateway-navy);
  border: 1px solid var(--gateway-line);
}
.fp-btn-ghost:hover {
  border-color: var(--gateway-blue);
  color: var(--gateway-blue);
  background: var(--gateway-sky);
}

.fp-filters input,
.fp-filters select {
  border: 1px solid var(--gateway-line);
  border-radius: 12px;
  background: #f7fafc;
  font-family: "Noto Sans Thai", sans-serif;
}
.fp-filters input:focus,
.fp-filters select:focus {
  border-color: var(--gateway-blue);
  box-shadow: 0 0 0 3px rgba(18, 108, 243, 0.14);
}

/* ——— Detail+Map template helpers ——— */
.tpl-detail-map .fp-detail-sheet,
.tpl-detail-map .province-page-main,
.tpl-detail-map .venue-detail-layout {
  background: #fff;
}
.fp-detail-sheet h1 {
  color: var(--gateway-navy);
  font-weight: 500;
}
.fp-detail-sheet .fp-eyebrow { color: var(--gateway-blue) !important; }
.fp-facts dt { color: var(--gateway-muted); }
.fp-facts dd { color: var(--gateway-navy); }

/* ——— Province / venues → same paper system ——— */
.province-page,
.venues-page,
.venue-detail-page {
  background: var(--gateway-paper) !important;
  color: var(--gateway-text) !important;
}
.province-page-hero,
.venues-hero,
.venue-hero {
  background: #fff;
  border-bottom: 1px solid var(--gateway-line);
}
.province-page-hero h1,
.venues-hero h1,
.abouts-page .ab-hero h1,
.dashboard-page .dash-hero h1 {
  color: var(--gateway-navy) !important;
  font-family: "Noto Sans Thai", sans-serif !important;
  font-weight: 500 !important;
  letter-spacing: -0.05em;
}
.province-page-hero h1 em,
.venues-hero h1 em,
.abouts-page .ab-hero h1 em {
  color: var(--gateway-blue) !important;
  font-style: normal;
}

.province-page-tools input,
.province-page-tools select,
.venue-archive-controls input,
.venue-archive-controls select {
  border-radius: 12px !important;
  border: 1px solid var(--gateway-line) !important;
  font-family: "Noto Sans Thai", sans-serif !important;
  background: #f7fafc !important;
}
.province-report-block,
.province-panel,
.venue-archive-card {
  border-radius: 18px;
  border: 1px solid var(--gateway-line);
  box-shadow: 0 14px 40px rgba(14, 47, 82, 0.05);
}

/* ——— Abouts / dashboard → gateway language ——— */
.abouts-page {
  background: var(--gateway-paper) !important;
  --navy: var(--gateway-navy);
  --blue: var(--gateway-blue);
  --lime: var(--gateway-lime);
  --paper: var(--gateway-paper);
  --line: var(--gateway-line);
  --muted: var(--gateway-muted);
}
.abouts-page .ab-hero {
  background: #fff !important;
  border-bottom: 1px solid var(--gateway-line);
}
.abouts-page .ab-kicker-on-dark {
  color: var(--gateway-lime);
}
.abouts-page .ab-story,
.abouts-page .ab-goals,
.abouts-page .ab-data,
.abouts-page .ab-people {
  background: #fff;
}
.dashboard-page {
  background: var(--gateway-paper) !important;
  --ink: var(--gateway-navy);
  --blue: var(--gateway-blue);
  --lime: var(--gateway-lime);
  --paper: var(--gateway-paper);
  --muted: var(--gateway-muted);
}
.dashboard-page .dash-hero {
  background: #fff;
  border-bottom: 1px solid var(--gateway-line);
  margin-bottom: 0;
}
.dashboard-page .dash-tabs a {
  border-radius: 999px;
  font-family: "Noto Sans Thai", sans-serif;
}
.dashboard-page .dash-panel {
  background: #fff;
  border: 1px solid var(--gateway-line);
  border-radius: 20px;
}

/* ——— Mobile login entry ——— */
.mobile-menu .mobile-login {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin-top: 8px;
  min-height: 48px;
  padding: 0 18px;
  border-radius: 999px;
  background: var(--gateway-navy);
  color: #fff !important;
  font-weight: 700;
  text-decoration: none;
}
.mobile-menu .mobile-login span { color: inherit; }

@media (max-width: 760px) {
  /* Keep desktop login hidden; use mobile-menu entry instead */
  .nav-actions .login { display: none !important; }
}

/* ——— Shared list interaction hover ——— */
.fp-time-item:hover,
.fp-course:hover,
.activity-editorial-list article:hover {
  background: #f5f9ff;
}

.gateway-section-intro small,
.activity-editorial-lead > small,
.green-heart-intro > small,
.ribbon-lead,
.fp-time-day strong,
.activity-editorial-list time strong {
  font-family: "Noto Sans Thai", sans-serif !important;
}

/* Keep public navigation independent of page typography and legacy chrome. */
header.nav-shell {
  font: 400 14px/normal "Noto Sans Thai", sans-serif;
  color: #122b45;
  --ease: cubic-bezier(0.16, 1, 0.3, 1);
}

header.nav-shell a {
  text-decoration: none;
}

header.nav-shell .menu-button {
  padding: 1px 6px;
}

html {
  scroll-padding-top: calc(var(--nav-top) + var(--nav-h) + 16px);
}

.nav-shell,
.nav-shell.is-scrolled {
  position: fixed;
  top: var(--nav-top);
  left: 50%;
  right: auto;
  width: min(var(--site-wrap), calc(100% - var(--site-gutter) - var(--site-gutter)));
  height: var(--nav-h);
  padding-inline: 12px;
  transform: translateX(-50%);
}

.nav-shell.is-scrolled {
  background: rgba(255, 255, 255, 0.96);
  border-color: rgba(7, 27, 52, 0.08);
  box-shadow: 0 8px 24px rgba(7, 27, 52, 0.08);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

body:not(.tpl-landing) main > :first-child,
body:not(.tpl-landing) main > section:first-of-type {
  padding-block-start: calc(var(--nav-offset) + 8px);
}

.fp-mast,
.venues-hero,
.dash-hero,
.venue-hero {
  padding-block-start: calc(var(--nav-offset) + 8px);
}

.province-shell main > .province-page {
  padding-block-start: calc(var(--nav-offset) + 8px);
}

.tpl-landing .motion-hero .motion-copy {
  top: max(20%, calc(var(--nav-offset) + 46px));
}

/* The content box matches the capsule; gutters stay outside that width.
   content-box keeps max-width at --site-wrap while retaining shared padding. */
body.abouts-page main .tsa-about-wrap,
body main .hero > .hero-inner,
body main > .pub-list-shell,
body.tpl-list main > section.mx-auto,
body.tpl-detail-map main :is(.province-page-hero, .province-page-layout, .venue-archive, .province-report, .map-province-cta),
body.tpl-list main :is(.venues-hero-inner, .venues-toolbar-inner, .dash-hero-inner, .dash-panel-inner, .dash-band-wrap) {
  box-sizing: content-box;
  width: calc(100% - var(--site-gutter) - var(--site-gutter));
  max-width: var(--site-wrap);
  margin-inline: auto;
  padding-inline: var(--site-gutter);
}

/* Legacy heroes carried a second top inset inside the section. */
body:not(.tpl-landing) main > .hero {
  padding-inline: 0;
}
body:not(.tpl-landing) main > .hero > .hero-inner {
  padding-block-start: 0;
}

body.province-shell main .province-page-hero {
  margin-block-start: 0;
  padding-block-start: 0;
}

/* Keep navigation usable on first paint, without a delayed entrance. */
header.nav-shell,
header.nav-shell .desktop-nav a {
  animation: none;
}

/* v2/qa-responsive-fixes.css */
/**
 * QA responsive fixes (2026-09-11)
 * Round 4: mobile hero whitespace, swoosh under titles, hide footer on mobile
 */

:root {
  --qa-nav-clearance: calc(var(--nav-top) + var(--nav-h) + 16px + env(safe-area-inset-top, 0px));
  --qa-touch: 44px;
}

html {
  scroll-padding-top: var(--qa-nav-clearance);
}

#gateway-services,
#green-heart-events,
#nation,
#story,
#data-stats,
#sports-network,
#events,
#footer,
.gateway-services,
.green-heart,
.training-courses {
  scroll-margin-top: var(--qa-nav-clearance);
}

/* Decorative search glyph — not a separate control */
.hero-search-box > span {
  pointer-events: none;
  user-select: none;
}

/* Whole activity row is the hit target */
.activity-editorial-list article {
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

.activity-editorial-list article > span {
  pointer-events: none;
}

/* ---------- ≤1100: tablet + mobile ---------- */
@media (max-width: 1100px) {
  :root {
    --qa-nav-clearance: calc(var(--nav-top) + var(--nav-h) + 16px + env(safe-area-inset-top, 0px));
  }

  .nav-shell,
  .nav-shell.is-scrolled {
    top: max(var(--nav-top), env(safe-area-inset-top, 0px));
  }

  .menu-button {
    width: var(--qa-touch);
    height: var(--qa-touch);
    min-width: var(--qa-touch);
    min-height: var(--qa-touch);
    touch-action: manipulation;
  }

  /* Logo home link — cinematic/site-nav shrinks img below 44px on narrow viewports */
  .nav-shell .brand,
  .brand {
    min-height: var(--qa-touch);
    display: inline-flex;
    align-items: center;
    box-sizing: border-box;
  }

  .nav-shell .brand img,
  .nav-shell.is-scrolled .brand img,
  .brand img {
    height: 44px !important;
    max-height: 44px;
    width: auto;
    max-width: 100%;
  }

  .mobile-menu {
    left: 0;
    right: 0;
    width: auto;
    max-height: min(78dvh, calc(100dvh - var(--qa-nav-clearance)));
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 12px 12px calc(16px + env(safe-area-inset-bottom, 0px));
    border-radius: 20px;
    pointer-events: none;
  }

  .mobile-menu.open {
    pointer-events: auto;
  }

  .mobile-menu .mobile-direct,
  .mobile-accordion-trigger {
    min-height: 48px !important;
    padding: 14px 16px !important;
    box-sizing: border-box;
  }

  .mobile-submenu a,
  .mobile-submenu b {
    min-height: var(--qa-touch);
    display: flex;
    align-items: center;
    padding-top: 12px;
    padding-bottom: 12px;
    box-sizing: border-box;
  }

  .mobile-menu .mobile-login,
  .mobile-menu .mobile-login.login {
    min-height: var(--qa-touch) !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    width: 100%;
    margin-top: 12px;
  }

  .activity-editorial-lead > a {
    min-height: var(--qa-touch);
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 4px;
    box-sizing: border-box;
  }

  .activity-editorial-list article {
    min-height: 116px;
    padding-top: 16px;
    padding-bottom: 16px;
    align-items: center;
  }

  .green-heart-tab,
  .green-heart-province-trigger {
    min-height: var(--qa-touch);
    padding: 12px 18px;
    box-sizing: border-box;
  }

  .green-heart-controls button {
    width: var(--qa-touch);
    height: var(--qa-touch);
    min-width: var(--qa-touch);
    min-height: var(--qa-touch);
  }

  .training-course-detail-btn,
  .training-courses .green-heart-intro > a {
    min-height: var(--qa-touch);
    display: inline-flex;
    align-items: center;
    padding: 12px 16px;
    box-sizing: border-box;
  }

  .hero-search-box {
    min-height: 56px;
  }

  .hero-search-box input,
  .hero-search-box input[type="search"] {
    min-height: var(--qa-touch) !important;
    height: auto;
    align-self: stretch;
    box-sizing: border-box;
  }

  .hero-search-box button {
    height: var(--qa-touch) !important;
    min-height: var(--qa-touch) !important;
    min-width: 76px;
    padding: 0 18px !important;
  }

  .login,
  .circle-cta {
    min-height: var(--qa-touch);
  }

  /* Map + nation toolbar */
  .map-reset-btn,
  #map-reset,
  .nation-toolbar-inline button,
  .map-search button,
  .map-zoom button {
    min-height: var(--qa-touch) !important;
    min-width: var(--qa-touch);
    padding: 10px 14px !important;
    box-sizing: border-box;
  }

  .nation-toolbar-inline select,
  .nation-toolbar-inline input,
  .map-search input,
  #map-search,
  #province-select,
  #district-select {
    min-height: var(--qa-touch);
    box-sizing: border-box;
  }

  /* Footer links — real tap rows */
  body > footer a,
  #footer a {
    min-height: 0;
    display: flex !important;
    align-items: center;
    padding: 2px 0 !important;
    margin: 0 !important;
    box-sizing: border-box;
  }

  body > footer .footer-bottom a,
  #footer .footer-bottom a {
    min-height: auto;
    display: inline-flex !important;
    padding: 8px 0 !important;
  }
}

/* Tablet band: full-viewport hero + denser stats */
@media (min-width: 761px) and (max-width: 1100px) {
  .motion-hero {
    height: 100svh !important;
    min-height: 100svh !important;
    max-height: 100svh;
  }

  .motion-stage {
    height: 100% !important;
    min-height: 100% !important;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    padding: calc(96px + env(safe-area-inset-top, 0px)) 0 48px;
    overflow: hidden;
    box-sizing: border-box;
  }

  .motion-copy {
    position: relative !important;
    top: auto !important;
    left: auto !important;
    transform: none !important;
    width: min(640px, 86%);
    margin: 0 auto;
    z-index: 4;
  }

  .motion-copy h1 {
    font-size: clamp(42px, 6.2vw, 56px) !important;
    line-height: 1.08 !important;
  }

  .motion-sports {
    top: 46%;
    font-size: clamp(120px, 18vw, 200px);
    opacity: 0.38;
  }

  .motion-copy .hero-search {
    margin-top: clamp(28px, 4.5vh, 48px);
    width: min(520px, 100%);
    margin-inline: auto;
  }

  .gateway-stats-ribbon {
    padding: 22px 28px 14px;
  }

  .gateway-stats-ribbon:before {
    clip-path: polygon(0 14%, 100% 0, 100% 100%, 0 100%);
  }

  /* Don't stretch 3 stats across full iPad width — keep a compact cluster */
  .gateway-stats-inner {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    width: min(780px, 100%);
    max-width: 780px;
    margin: 0 auto;
    min-height: auto;
    gap: 0;
  }

  .gateway-stats-rail,
  .gateway-stats-signoff {
    display: none !important;
  }

  .gateway-stat {
    min-height: 88px;
    padding: 16px 14px;
    border-right: 1px solid rgba(255, 255, 255, 0.28);
  }

  .gateway-stat:last-of-type {
    border-right: 0;
  }

  .gateway-stat strong {
    font-size: clamp(1.7rem, 3.2vw, 2.15rem);
  }

  .gateway-stat small {
    font-size: 0.8rem;
    line-height: 1.35;
  }

  .activity-editorial {
    grid-template-columns: 1fr;
    gap: 36px;
  }

  .activity-editorial-list {
    grid-template-columns: 1fr 1fr;
  }

  .activity-editorial-list article:nth-child(even) {
    padding-left: 14px;
  }

  .mobile-menu {
    max-height: min(70dvh, calc(100dvh - 100px));
  }
}

/* Mobile extras */
@media (max-width: 760px) {
  :root {
    --qa-nav-clearance: calc(84px + env(safe-area-inset-top, 0px));
  }

  .activity-editorial-list {
    grid-template-columns: 1fr;
    padding-top: 4px;
  }

  .activity-editorial-list article:nth-child(even) {
    padding-left: 0;
    border-left: 0;
  }

  .hero-search-box input::placeholder {
    font-size: 11px;
  }

  .hero-search-box {
    min-height: 54px;
  }

  .green-heart-level-tabs {
    width: 100%;
    gap: 8px;
  }

  .green-heart-tab {
    flex: 1 1 auto;
    justify-content: center;
    text-align: center;
  }

  .event-arrows button {
    width: var(--qa-touch);
    height: var(--qa-touch);
  }
}

@media (min-width: 1101px) {
  .motion-hero {
    height: min(78svh, 720px);
    min-height: 600px;
  }
}

/* ---------- Layering: swoosh leads the eye; titles stay readable ----------
   Original CSS pulled intros up with negative margin so the dashed stroke cut
   through headings. Keep the curve between blocks (visible), keep copy clear. */
.journey-connector,
.nation > .journey-connector,
#green-heart-events + .journey-connector,
#gateway-services + .journey-connector,
.gateway-stats-ribbon + .journey-connector {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: none;
  overflow: visible !important;
}

/* Titles / stats labels above any residual curve overlap */
#gateway-services,
#green-heart-events,
#green-heart-events.green-heart,
.green-heart,
.gateway-services,
.training-courses,
.public-insights {
  z-index: auto !important;
  isolation: auto !important;
  overflow: visible !important;
}

.gateway-stats-ribbon {
  /* Keep isolation so :before clip fill stays inside the ribbon */
  isolation: isolate;
  overflow: hidden;
}

.gateway-stats-inner,
.gateway-stat {
  position: relative;
  z-index: 2;
}

/* Following swoosh must still read above the ribbon's bottom edge */
.gateway-stats-ribbon + .journey-connector {
  z-index: calc(var(--z-connector, 1100) + 1) !important;
}

/* Titles stay above residual curve overlap */
.gateway-section-intro,
.activity-editorial-lead,
.green-heart-intro,
#green-heart-events .green-heart-intro,
.nation-intro,
.training-courses .green-heart-intro,
.places-head,
.ribbon-lead {
  position: relative;
  z-index: calc(var(--z-connector, 1100) + 2) !important;
}
#green-heart-events .green-heart-intro,
#green-heart-events.green-heart .green-heart-intro {
  margin-top: 0 !important;
}

/* Connector rhythm handled by --connector-band in section rhythm block */
#gateway-services + .journey-connector,
.gateway-stats-ribbon + .journey-connector,
#green-heart-events + .journey-connector,
.nation > .journey-connector {
  /* keep visible; size set in rhythm tokens */
}

@media (max-width: 1100px) {
  #gateway-services + .journey-connector {
    margin-bottom: 0 !important;
  }
}

/* ---------- Mobile / tablet-shared: full-viewport hero ---------- */
@media (max-width: 760px) {
  .motion-hero {
    height: 100svh !important;
    min-height: 100svh !important;
    max-height: 100svh;
  }

  .motion-stage {
    height: 100% !important;
    min-height: 100% !important;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    padding: calc(88px + env(safe-area-inset-top, 0px)) 0 calc(28px + env(safe-area-inset-bottom, 0px));
    overflow: hidden;
    box-sizing: border-box;
  }

  .motion-sports {
    top: 44%;
    font-size: clamp(88px, 26vw, 130px);
    opacity: 0.35;
    color: #fafbfc;
  }

  .motion-copy {
    position: relative !important;
    top: auto !important;
    left: auto !important;
    transform: none !important;
    width: calc(100% - 40px);
    margin: 0 auto;
    z-index: 4;
  }

  /* Ticker stays out of hero (moved to footer by JS) */
  .association-ticker {
    position: relative !important;
    left: auto;
    right: auto;
    bottom: auto !important;
    margin-top: 0;
    z-index: 8;
  }

  body > footer,
  #footer {
    display: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .mobile-menu {
    transition: none;
  }
}

/* ---------- White canvas + section rhythm ---------- */
:root {
  --paper: #ffffff;
  --gateway-paper: #ffffff;
  /* Shared vertical rhythm — not pixel-identical gaps, one beat */
  --section-pad-y: 88px;
  --section-pad-x: 6vw;
  --section-pad-y-hero-next: 64px;
  --connector-band: 48px;
}

html,
body,
body.tpl-landing {
  background: #fff !important;
}

.motion-hero,
.motion-stage,
.gateway-services,
.gateway-stats-ribbon,
#gateway-services,
#green-heart-events,
.green-heart,
.public-insights,
.training-courses,
#nation,
.nation,
.places {
  background-color: #fff;
}

.motion-stage {
  background: #fff !important;
}

.gateway-services,
.public-insights,
#nation,
.nation,
.nation-shell,
.training-courses {
  background: #fff !important;
}

/* Search sits on top; soft shadow so hero doesn't look tinted vs section 2 */
.motion-copy .hero-search,
.hero-search {
  position: relative;
  z-index: 30;
  isolation: isolate;
}

.motion-copy .hero-search:before,
.hero-search:before {
  display: none !important;
  content: none !important;
  opacity: 0 !important;
}

.hero-search-box {
  position: relative;
  z-index: 31;
  background: #fff !important;
  box-shadow: 0 4px 14px rgba(7, 24, 49, 0.06) !important;
}

.hero-search-box:hover,
.hero-search-box:focus-within {
  box-shadow: 0 6px 18px rgba(7, 24, 49, 0.09) !important;
}

.hero-search-results {
  z-index: 40;
}

.motion-stage:before {
  opacity: 0.22;
}

.training-course-grid {
  gap: 12px !important;
}

.training-course-card {
  box-shadow: 0 4px 14px rgba(14, 47, 82, 0.06);
}

/* Content sections share one vertical beat */
#gateway-services.gateway-services,
.gateway-services {
  padding: var(--section-pad-y) var(--section-pad-x) !important;
}

#green-heart-events .green-heart-shell,
.green-heart-shell {
  padding-left: var(--section-pad-x);
  padding-right: var(--section-pad-x);
}

/* Courses live inside #nation which already has section-pad-x — avoid double inset */
#nation .training-courses .green-heart-shell,
.nation .training-courses .green-heart-shell {
  padding-left: 0 !important;
  padding-right: 0 !important;
  max-width: none;
}

/* Keep intentional <br> line breaks (2 lines) — balance was rewriting wraps */
#green-heart-title,
#training-courses-title,
.green-heart-intro h2.kinetic-title,
.training-courses .green-heart-intro h2 {
  text-wrap: unset !important;
  word-break: keep-all;
  overflow-wrap: normal;
  max-width: min(760px, 100%);
}

#green-heart-events .green-heart-intro,
.training-courses .green-heart-intro {
  max-width: min(760px, 100%);
  width: 100%;
}

/* Courses sit inside #nation — trim stacked top air before หลักสูตร */
.training-courses {
  padding-top: 28px !important;
  padding-bottom: calc(var(--section-pad-y) * 0.5) !important;
}

#nation.nation,
.nation {
  padding-top: calc(var(--section-pad-y) * 0.4) !important;
  padding-bottom: var(--section-pad-y) !important;
  /* horizontal inset lives on .nation-shell only (same as green-heart-shell) */
  padding-left: 0 !important;
  padding-right: 0 !important;
}

.nation-shell {
  padding-left: var(--site-gutter) !important;
  padding-right: var(--site-gutter) !important;
}

#green-heart-events.green-heart,
#green-heart-events,
.green-heart {
  padding-top: var(--section-pad-y) !important;
  padding-bottom: calc(var(--section-pad-y) * 0.55) !important;
}

.training-courses .green-heart-intro {
  margin-bottom: 20px !important;
}

.public-insights {
  padding-left: var(--section-pad-x) !important;
  padding-right: var(--section-pad-x) !important;
  padding-bottom: calc(var(--section-pad-y) * 0.65) !important;
}

/* Connectors live inside the beat — don't invent a second gap */
#gateway-services + .journey-connector,
#green-heart-events + .journey-connector,
.nation > .journey-connector {
  height: var(--connector-band) !important;
  margin: calc(var(--connector-band) / -2) 0 !important;
}

#green-heart-events .green-heart-intro,
#green-heart-events.green-heart .green-heart-intro {
  margin-top: 0 !important;
}

@media (min-width: 761px) and (max-width: 1100px) {
  :root {
    --section-pad-y: 72px;
    --section-pad-x: 22px;
    --section-pad-y-hero-next: 40px;
    --connector-band: 40px;
  }

  .gateway-stats-ribbon {
    padding-top: 18px;
    padding-bottom: 14px;
  }

  #gateway-services.gateway-services,
  .gateway-services {
    padding-top: var(--section-pad-y-hero-next) !important;
  }

  #nation.nation,
  .nation {
    padding-top: 4px !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  .training-courses {
    padding-top: 4px !important;
    padding-bottom: 40px !important;
  }

  #green-heart-events.green-heart,
  #green-heart-events,
  .green-heart {
    padding-bottom: 8px !important;
  }

  #green-heart-events + .journey-connector {
    height: 32px !important;
    margin: -6px 0 0 !important;
  }

  .training-courses .green-heart-intro {
    margin-bottom: 16px !important;
  }

  .green-heart-rail {
    padding-bottom: 0 !important;
  }

  .hero-search-box {
    border-radius: 999px !important;
  }

  .hero-search-box button {
    border-radius: 999px !important;
    height: 44px !important;
  }
}

@media (min-width: 1101px) {
  #nation.nation,
  .nation {
    padding-top: 6px !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  .training-courses {
    padding-top: 6px !important;
    padding-bottom: 48px !important;
  }

  #green-heart-events.green-heart,
  #green-heart-events,
  .green-heart {
    padding-bottom: 10px !important;
  }

  #green-heart-events + .journey-connector {
    height: 36px !important;
    margin: -8px 0 0 !important;
  }

  .training-courses .green-heart-intro {
    margin-bottom: 18px !important;
  }

  .green-heart-rail {
    padding-bottom: 0 !important;
  }

  .hero-search-box {
    border-radius: 999px !important;
  }

  .hero-search-box button {
    border-radius: 999px !important;
  }
}

@media (max-width: 760px) {
  :root {
    --section-pad-y: 52px;
    --section-pad-x: 18px;
    --section-pad-y-hero-next: 44px;
    --connector-band: 36px;
  }

  /* Hero: full viewport — center block, balanced gaps */
  .motion-stage {
    padding: calc(88px + env(safe-area-inset-top, 0px)) 0 calc(28px + env(safe-area-inset-bottom, 0px));
  }

  .motion-copy {
    width: calc(100% - 40px);
    margin: 0 auto;
  }

  .motion-copy h1 {
    font-size: clamp(34px, 9.2vw, 44px) !important;
    line-height: 1.12 !important;
    letter-spacing: -0.045em;
    margin-bottom: 0;
  }

  .motion-copy h1 em {
    font-size: 0.92em !important;
  }

  .motion-sports {
    top: 44%;
    font-size: clamp(72px, 22vw, 110px);
    opacity: 0.35;
    color: #fafbfc;
  }

  .motion-copy .hero-search {
    margin-top: clamp(24px, 5vh, 40px);
    width: 100%;
    margin-bottom: 0;
    z-index: 30;
  }

  .hero-search > label {
    margin-bottom: 10px;
  }

  /* Match pill search box + pill button (was 14px box vs 999px button) */
  .hero-search-box {
    min-height: 52px;
    height: 52px;
    padding: 0 5px 0 16px !important;
    border-radius: 999px !important;
    box-shadow: 0 2px 10px rgba(7, 24, 49, 0.05) !important;
    border-color: #d7e0e9;
  }

  .hero-search-box button {
    height: 42px !important;
    min-height: 42px !important;
    min-width: 78px;
    padding: 0 18px !important;
    font-size: 12px;
    border-radius: 999px !important;
  }

  .motion-stage:before {
    display: none !important;
  }

  .gateway-stats-ribbon,
  .gateway-stats-ribbon + .journey-connector {
    display: none !important;
  }

  #gateway-services.gateway-services,
  .gateway-services {
    padding: var(--section-pad-y-hero-next) var(--section-pad-x) var(--section-pad-y) !important;
    background: #fff !important;
  }

  #green-heart-events.green-heart,
  #green-heart-events,
  .green-heart {
    padding: var(--section-pad-y) 0 calc(var(--section-pad-y) * 0.5) !important;
  }

  #nation.nation,
  .nation {
    padding: 16px 0 var(--section-pad-y) !important;
  }

  .training-courses {
    padding-top: 16px !important;
    padding-bottom: 32px !important;
  }

  .training-courses .green-heart-intro {
    margin-bottom: 14px !important;
  }

  .training-course-grid {
    gap: 8px !important;
  }

  .training-course-card {
    box-shadow: 0 2px 8px rgba(14, 47, 82, 0.05);
  }

  .training-course-card-body {
    padding: 12px 12px 14px !important;
    gap: 6px !important;
  }

  .training-course-detail-btn {
    margin-top: 8px;
    padding: 10px 12px;
  }

  #gateway-services + .journey-connector,
  #green-heart-events + .journey-connector {
    height: var(--connector-band) !important;
    margin: calc(var(--connector-band) / -2) 0 !important;
  }

  .activity-editorial-lead > small {
    font-size: 10px;
    letter-spacing: 0.16em;
  }

  .activity-editorial-lead h2 {
    margin: 14px 0 18px !important;
    font-size: clamp(32px, 8.5vw, 40px) !important;
    line-height: 1.12 !important;
  }

  .activity-editorial-lead > a {
    font-size: 12px;
    margin-bottom: 8px;
  }

  .activity-editorial {
    gap: 22px !important;
  }

  .activity-editorial-list article {
    min-height: 88px !important;
    padding: 12px 0 !important;
    gap: 12px !important;
    grid-template-columns: 64px 1fr 18px !important;
  }

  .activity-editorial-list time strong {
    font-size: 36px !important;
  }

  .activity-editorial-list time small {
    font-size: 13px !important;
  }

  .activity-editorial-list h3 {
    font-size: 13px !important;
    line-height: 1.4 !important;
  }
}

/* css/home-showcase.css */
.tsa-home-showcase{--showcase-accent:#0f5fd6;--showcase-soft:#eaf4ff;--showcase-ink:#071b34;padding:72px 0 36px;background:#f6f9fc;color:#122b45;scroll-margin-top:var(--nav-offset);min-width:0;overflow:hidden}.tsa-home-showcase--training{--showcase-accent:#a12a60;--showcase-soft:#fce8f0;background:#fff}.tsa-home-showcase--science{--showcase-accent:#5b3fd1;--showcase-soft:#efeaff;background:#f8faff}.tsa-home-showcase--courses{--showcase-accent:#0f5fd6;--showcase-soft:#eaf4ff;background:#fff}.tsa-home-showcase *{box-sizing:border-box}.tsa-home-showcase-shell{width:calc(100% - var(--site-gutter) - var(--site-gutter));max-width:var(--site-wrap);margin:auto}.tsa-home-showcase-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px 36px;margin-bottom:28px}.tsa-home-showcase-eyebrow{font:500 11px/1.4 "Noto Sans Thai",sans-serif;letter-spacing:.15em;color:var(--showcase-accent);margin:0 0 12px}.tsa-home-showcase-head h2{font:600 clamp(28px,3.4vw,44px)/1.3 "Noto Sans Thai",sans-serif;letter-spacing:-.035em;margin:0;color:var(--showcase-ink)}.tsa-home-showcase-head h2 em{font:inherit;color:var(--showcase-accent)}.tsa-home-showcase-description{max-width:650px;font:400 14px/1.8 "Noto Sans Thai",sans-serif;color:#4f6378;margin:12px 0 0}.tsa-home-showcase-actions{display:flex;flex-shrink:0;flex-direction:column;align-items:flex-end;gap:16px}.tsa-home-showcase-actions>a{display:inline-flex;align-items:center;gap:9px;min-height:44px;font:500 14px/1.5 "Noto Sans Thai",sans-serif;color:var(--showcase-accent);text-decoration:none}.tsa-home-showcase-actions>a:hover{text-decoration:underline}.tsa-home-showcase-controls{display:flex;gap:8px}.tsa-home-showcase-controls button{display:grid;place-items:center;width:44px;height:44px;background:#fff;border:1px solid #d7e0e9;border-radius:50%;color:var(--showcase-ink);font-size:15px;cursor:pointer}.tsa-home-showcase-controls button:hover{background:var(--showcase-soft);border-color:var(--showcase-accent)}.tsa-home-showcase-controls button:disabled{opacity:.35;cursor:default}.tsa-home-showcase-rail{display:flex;align-items:stretch;gap:20px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding-inline:2px;overscroll-behavior-inline:contain;scrollbar-width:thin;scrollbar-color:#b3c7df transparent;padding:3px 2px 18px;min-width:0;-webkit-overflow-scrolling:touch}.tsa-home-showcase-card{display:flex;flex-direction:column;flex:0 0 calc((100% - 60px)/3.35);min-width:265px;max-width:340px;scroll-snap-align:start;border:1px solid #e3eaf1;border-radius:20px;overflow:hidden;background:#fff;color:var(--showcase-ink);text-decoration:none;box-shadow:0 6px 20px #071b3405;transition:transform .2s,box-shadow .2s}.tsa-home-showcase-card:hover{transform:translateY(-2px);box-shadow:0 10px 26px #071b3412}.tsa-home-showcase-media{height:180px;position:relative;overflow:hidden;background:var(--showcase-soft)}.tsa-home-showcase-media img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .3s}.tsa-home-showcase-card:hover img{transform:scale(1.035)}.tsa-home-showcase-media:after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(transparent,#071b3466);pointer-events:none}.tsa-home-showcase-media>span{position:absolute;left:14px;bottom:12px;z-index:1;max-width:calc(100% - 28px);font:500 11px/1.5 "Noto Sans Thai",sans-serif;color:#122b45;background:#fffffff2;padding:5px 9px;border-radius:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tsa-home-showcase-media--empty{display:grid;place-items:center;background:linear-gradient(135deg,var(--showcase-soft),#f8fbff)}.tsa-home-showcase-media--empty>i{font-size:58px;color:var(--showcase-accent);opacity:.55}.tsa-home-showcase-media--empty:after{display:none}.tsa-home-showcase-body{display:flex;flex-direction:column;flex:1;padding:18px;min-height:192px;gap:12px}.tsa-home-showcase-body h3{font:600 16px/1.65 "Noto Sans Thai",sans-serif;margin:0;color:var(--showcase-ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:53px}.tsa-home-showcase-date,.tsa-home-showcase-location{display:flex;align-items:flex-start;gap:7px;font:400 12px/1.65 "Noto Sans Thai",sans-serif;color:#4f6378;margin:0}.tsa-home-showcase-location{margin-top:auto;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tsa-home-showcase-location i{margin-right:7px;color:var(--showcase-accent)}.tsa-home-showcase-detail{display:flex;align-items:center;justify-content:space-between;padding-top:12px;border-top:1px solid #edf1f5;color:var(--showcase-accent);font:500 12px/1.5 "Noto Sans Thai",sans-serif}.tsa-home-showcase-detail>i{font-size:11px}.tsa-home-showcase-status{align-self:flex-start;font:500 11px/1.5 "Noto Sans Thai",sans-serif;color:#4f6378;background:#f0f4f8;padding:4px 8px;border-radius:999px;margin:0}.tsa-home-showcase-status--open{background:#e2f5ec;color:#146045}.tsa-home-showcase-status--upcoming{background:#fff2d9;color:#765015}.tsa-home-showcase--courses .tsa-home-showcase-body{min-height:250px}.tsa-home-showcase-hint{font:400 12px/1.5 "Noto Sans Thai",sans-serif;color:#64788d;text-align:right;margin:10px 0 0}.tsa-home-showcase-empty{font:400 15px/1.8 "Noto Sans Thai",sans-serif;color:#4f6378;padding:24px;background:#fff;border:1px solid #e3eaf1;border-radius:16px;min-width:100%}.tsa-home-showcase :is(a,button,[tabindex]):focus-visible{outline:3px solid #0f5fd6;outline-offset:3px}.activity-editorial-empty[data-featured-empty]{font:400 16px/1.9 "Noto Sans Thai",sans-serif;color:#4f6378;padding:28px;border:1px solid #d7e0e9;border-radius:18px;background:#f6f9fc;align-self:center}.activity-editorial-empty[data-featured-empty] a{display:block;min-height:44px;align-content:center;margin-top:10px;color:#0f5fd6;text-decoration:none;font-weight:500}#home-courses{padding-top:32px;padding-bottom:48px}#nation .nation-shell>#home-courses>.tsa-home-showcase-shell{width:100%}
.tsa-home-showcase-media img[hidden]{display:none}
.tsa-home-showcase-controls :is([data-home-prev],[data-home-next]){width:auto;min-width:74px;padding-inline:12px;font:500 12px/1.4 "Noto Sans Thai",sans-serif}
/* A single place rail shared by the three venue categories. */
.tsa-home-showcase--places{--place-card-width:224px;background:#f6f9fc;padding:36px 0 24px}
.tsa-home-showcase--places .tsa-home-showcase-head{align-items:center;gap:14px 20px;margin-bottom:18px}
.tsa-home-showcase--places .tsa-home-showcase-head h2{font-size:clamp(24px,2.5vw,30px)}
.tsa-home-showcase--places .tsa-home-places-actions{flex-direction:row;align-items:center;gap:0;width:auto}
.tsa-home-showcase--places .tsa-home-showcase-rail{gap:16px;padding:2px 1px 10px}
.tsa-home-showcase--places .tsa-home-showcase-card{flex:0 0 var(--place-card-width);min-width:0;max-width:none;border-radius:14px;box-shadow:none}
.tsa-home-showcase--places .tsa-home-showcase-media{height:calc(var(--place-card-width) * .5625)}
.tsa-home-showcase--places .tsa-home-showcase-media>span{left:8px;bottom:8px;max-width:calc(100% - 16px);padding:3px 7px;font-size:10px;border-radius:6px}
.tsa-home-showcase--places .tsa-home-showcase-body{min-height:0;padding:10px 12px 12px;gap:6px}
.tsa-home-showcase--places .tsa-home-showcase-body h3{font-size:13px;font-weight:500;line-height:1.5;min-height:39px}
.tsa-home-showcase--places .tsa-home-showcase-location{margin:0;font-size:12px;line-height:1.5;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tsa-home-places-foot{display:flex;justify-content:flex-end;margin-top:4px}
.tsa-home-places-foot a{display:inline-flex;align-items:center;min-height:36px;color:#0f5fd6;font-size:12px;font-weight:500}
.tsa-home-places-foot a:hover{text-decoration:underline;text-underline-offset:3px}
.tsa-home-place-tabs{--place-tab-index:0;position:relative;display:grid;grid-template-columns:repeat(3,87px);padding:3px;background:#eaf0f6;border:1px solid #dce5ef;border-radius:999px;isolation:isolate}
.tsa-home-place-pill{position:absolute;top:3px;bottom:3px;left:3px;width:calc((100% - 6px)/3);border-radius:999px;background:#fff;box-shadow:0 1px 5px rgb(7 27 52 / .1);transform:translateX(calc(var(--place-tab-index)*100%));transition:transform .22s ease;z-index:-1}
.tsa-home-place-tabs button{position:relative;min-height:32px;min-width:0;padding:6px 10px;border:0;border-radius:999px;background:transparent;color:#64748b;font:500 12px/1.5 "Noto Sans Thai",sans-serif;white-space:nowrap;cursor:pointer;transition:color .18s ease}
.tsa-home-place-tabs button[aria-selected=true]{color:#071b34;font-weight:600}
.tsa-home-place-tabs button:hover{color:#071b34}
.tsa-home-place-tabs button[aria-selected=true]:hover{color:#071b34}
.tsa-home-places-noscript{font-size:14px;color:#4f6378}.tsa-home-places-noscript a{color:#0f5fd6;text-decoration:underline;margin-inline:8px}
@media(max-width:620px){.tsa-home-showcase--places{--place-card-width:208px;padding:28px 0 18px}.tsa-home-showcase--places .tsa-home-showcase-head{margin-bottom:14px;align-items:flex-start}.tsa-home-showcase--places .tsa-home-places-actions{width:auto}.tsa-home-showcase--places .tsa-home-showcase-head h2{font-size:25px}.tsa-home-showcase--places .tsa-home-showcase-rail{gap:12px}}
@media(prefers-reduced-motion:reduce){.tsa-home-place-pill,.tsa-home-place-tabs button{transition:none}}
.tsa-home-showcase-controls button[hidden]{display:none}.tsa-home-showcase-controls button[aria-pressed=true]{background:var(--showcase-soft);border-color:var(--showcase-accent)}.tsa-home-showcase--announcements{--showcase-accent:#0f5fd6;background:#fff;padding-top:48px}.tsa-home-showcase--announcements .tsa-home-showcase-card{flex-basis:calc((100% - 20px)/2);max-width:none;min-width:0}.tsa-home-showcase--announcements .tsa-home-showcase-media{height:200px}.tsa-home-showcase--announcements .tsa-home-showcase-body{min-height:224px}.tsa-home-showcase-excerpt{font:400 13px/1.8 "Noto Sans Thai",sans-serif;color:#4f6378;margin:0 0 8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tsa-home-showcase--announcements .tsa-home-showcase-detail{margin-top:auto}
@media(max-width:620px){.tsa-home-showcase--announcements .tsa-home-showcase-card{flex:0 0 88%;min-width:0}.tsa-home-showcase--announcements .tsa-home-showcase-media{height:175px}}
@media(max-width:1000px){.tsa-home-showcase-head{flex-wrap:wrap}.tsa-home-showcase-actions{flex-direction:row;align-items:center;justify-content:space-between;width:100%}.tsa-home-showcase-card{flex-basis:calc((100% - 40px)/2.4)}.tsa-home-showcase{padding-top:54px}.tsa-home-showcase-head h2{font-size:34px}}
@media(max-width:620px){.tsa-home-showcase{padding:42px 0 24px}.tsa-home-showcase-head{gap:12px;margin-bottom:18px}.tsa-home-showcase-head h2{font-size:28px}.tsa-home-showcase-description{font-size:13px;line-height:1.8}.tsa-home-showcase-eyebrow{font-size:10px;margin-bottom:9px}.tsa-home-showcase-actions{gap:8px}.tsa-home-showcase-actions>a{font-size:13px}.tsa-home-showcase-card{flex:0 0 84%;min-width:0;max-width:320px}.tsa-home-showcase-rail{gap:14px}.tsa-home-showcase-media{height:170px}.tsa-home-showcase-body{padding:16px}.tsa-home-showcase-controls button{width:42px;height:42px}.tsa-home-showcase-hint{text-align:left}.activity-editorial-empty[data-featured-empty]{font-size:14px;padding:20px}#home-courses{padding:36px 0}.tsa-home-showcase--courses .tsa-home-showcase-body{min-height:260px}}
@media(prefers-reduced-motion:reduce){.tsa-home-showcase-card,.tsa-home-showcase-media img{transition:none}.tsa-home-showcase-card:hover,.tsa-home-showcase-card:hover img{transform:none}}
.tsa-home-news{padding:24px 0 8px;background:transparent;color:#071b34;scroll-margin-top:var(--nav-offset);font-family:"Noto Sans Thai",sans-serif}
.tsa-home-news *{box-sizing:border-box}
.tsa-home-news-shell{width:calc(100% - var(--site-gutter) - var(--site-gutter));max-width:var(--site-wrap);margin:auto}
#nation .nation-shell>.tsa-home-news>.tsa-home-news-shell{width:100%}
.tsa-home-news-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px}
.tsa-home-news-eyebrow{margin:0 0 6px;color:#0f5fd6;font-size:10px;font-weight:600;line-height:1.4;letter-spacing:.14em}
.tsa-home-news-head h2{margin:0;color:#071b34;font-size:30px;font-weight:600;line-height:1.3;letter-spacing:-.025em}
.tsa-home-news-all{display:inline-flex;align-items:center;min-height:36px;color:#0f5fd6;font-size:13px;font-weight:500;text-decoration:none;white-space:nowrap}
.tsa-home-news-all:hover{text-decoration:underline;text-underline-offset:3px}
.tsa-home-news-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:stretch}
.tsa-home-news-featured{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:14px;min-height:242px;overflow:hidden;padding:24px;border:1px solid #123e72;border-radius:18px;background:linear-gradient(125deg,#071b34,#123e72);color:#fff}
.tsa-home-news-featured::after{content:"";position:absolute;right:-86px;bottom:-128px;width:280px;height:280px;border:1px solid rgb(255 255 255 / .12);border-radius:50%;box-shadow:0 0 0 28px rgb(255 255 255 / .025);pointer-events:none}
.tsa-home-news-badge{align-self:flex-start;display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border:1px solid #dce7f4;border-radius:6px;background:#f0f5fc;color:#31557c;font-size:10px;font-weight:500;line-height:1.5}
.tsa-home-news-featured>.tsa-home-news-badge{border-color:rgb(255 255 255 / .22);background:rgb(255 255 255 / .1);color:#e7f0fb}
.tsa-home-news-featured h3{position:relative;z-index:1;margin:0;font-size:clamp(21px,2.1vw,27px);font-weight:600;line-height:1.45;overflow-wrap:anywhere}
.tsa-home-news-featured h3 a{color:inherit;text-decoration:none}
.tsa-home-news-featured h3 a:hover{text-decoration:underline;text-underline-offset:4px}
.tsa-home-news-featured-summary,.tsa-home-news-featured-date{position:relative;z-index:1;margin:0;color:#ccdaea;font-size:12px;line-height:1.7;overflow-wrap:anywhere}
.tsa-home-news-featured-summary{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tsa-home-news-featured-link{position:relative;z-index:1;margin-top:auto;min-height:32px;display:inline-flex;align-items:center;color:#fff;font-size:12px;font-weight:500;text-decoration:underline;text-underline-offset:4px}
.tsa-home-news-list{display:flex;flex-direction:column;gap:12px;min-width:0}
.tsa-home-news-viewport{height:284px;min-width:0;overflow:auto;overscroll-behavior-y:contain;scrollbar-width:thin;overflow-anchor:none;scroll-behavior:auto}
.tsa-home-news-viewport .tsa-home-news-list{padding-bottom:12px}
.tsa-home-news-viewport .tsa-home-news-item{flex:0 0 136px;min-height:136px;padding:14px 18px}
.tsa-home-news-viewport .tsa-home-news-item h3{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tsa-home-news-viewport:focus-visible{outline:3px solid #0f5fd6;outline-offset:3px;border-radius:14px}
.tsa-home-news-viewport[data-auto-scroll=playing]{scrollbar-width:none}
.tsa-home-news-item{display:flex;flex:1;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px;min-width:0;padding:18px 20px;border:1px solid #e0e7ef;border-radius:14px;background:#fff}
.tsa-home-news-date{margin:0;color:#718096;font-size:11px;line-height:1.5}
.tsa-home-news-item h3{margin:0;color:#122b45;font-size:15px;font-weight:500;line-height:1.6;overflow-wrap:anywhere}
.tsa-home-news-item h3 a{color:inherit;text-decoration:none;transition:color .16s ease}
.tsa-home-news-item h3 a:hover{color:#0f5fd6}
.tsa-home-news a:focus-visible{outline:3px solid #0f5fd6;outline-offset:4px;border-radius:4px}.tsa-home-news-featured a:focus-visible{outline-color:#b9daff}
.tsa-home-news-empty{display:flex;align-items:center;justify-content:center;margin:0;padding:24px;border:1px solid #e0e7ef;border-radius:14px;background:#fff;color:#718096;font-size:14px;line-height:1.7}
@media(max-width:760px){.tsa-home-news-head h2{font-size:26px}.tsa-home-news-grid{grid-template-columns:minmax(0,1fr);gap:12px}.tsa-home-news-featured{min-height:220px;padding:22px}.tsa-home-news-item{min-height:116px;padding:16px 18px}.tsa-home-news-all{font-size:12px}}
@media(max-width:400px){.tsa-home-news-head{gap:8px}.tsa-home-news-eyebrow{font-size:9px}.tsa-home-news-featured h3{font-size:22px}}
@media(prefers-reduced-motion:reduce){.tsa-home-news-item h3 a{transition:none}}
/* Compact course summaries follow the news cards' typography and proportions. */
#home-courses .tsa-home-showcase-head{align-items:center;margin-bottom:18px}
#home-courses .tsa-home-showcase-head h2{font-size:clamp(24px,2.5vw,30px);line-height:1.4}
#home-courses .tsa-home-showcase-head h2 em{display:inline;font-size:.7em;white-space:normal}
#home-courses .tsa-home-showcase-eyebrow{font-size:10px;margin-bottom:6px}
#home-courses .tsa-home-showcase-rail{gap:18px;padding:2px 1px 10px}
.tsa-home-course-item{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px;flex:0 0 calc((100% - 18px)/2);min-width:0;height:148px;padding:16px 20px;border:1px solid #e0e7ef;border-radius:14px;background:#fff;color:#122b45;text-decoration:none;scroll-snap-align:start}
.tsa-home-course-item h3{margin:0;font:500 15px/1.6 "Noto Sans Thai",sans-serif;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tsa-home-course-item:hover h3{color:#0f5fd6}
.tsa-home-course-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:#718096;font:400 11px/1.5 "Noto Sans Thai",sans-serif}
.tsa-home-course-meta .tsa-home-showcase-status{font-size:10px;padding:2px 7px}
@media(max-width:760px){.tsa-home-course-item{flex-basis:100%;padding:16px 18px}#home-courses .tsa-home-showcase-head{align-items:flex-start;gap:8px}#home-courses .tsa-home-showcase-head h2 em{display:block;font-size:17px}.tsa-home-news-viewport{height:284px}}
.tsa-home-showcase--ticker .tsa-home-showcase-rail{scroll-snap-type:none;scroll-behavior:auto;overflow-anchor:none;scrollbar-width:none}
.tsa-home-showcase--ticker .tsa-home-showcase-rail::-webkit-scrollbar{display:none}
.tsa-home-showcase--ticker [data-ticker-copy]{scroll-snap-align:none}
@media(prefers-reduced-motion:reduce){.tsa-home-showcase--ticker .tsa-home-showcase-rail{scrollbar-width:thin;scroll-snap-type:x proximity}.tsa-home-showcase--ticker .tsa-home-showcase-rail::-webkit-scrollbar{display:initial}}

/* css/smart-search.css */
.tsa-search-feedback{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:16px 0;font-size:13px;color:#29435e}.tsa-search-feedback:empty{display:none}.tsa-search-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;background:#eaf4ff;color:#29435e}.tsa-search-chip a{display:inline-flex;align-items:center;justify-content:center;min-width:36px;min-height:38px;color:#0f5fd6;font-size:20px}.tsa-search-filter-link,.tsa-search-suggestion{display:inline-flex;align-items:center;gap:4px;min-height:44px;color:#0f5fd6}.tsa-search-suggestion{flex-basis:100%}
.tsa-search-page{max-width:1200px;width:calc(100% - var(--site-gutter) - var(--site-gutter));margin:auto;padding-bottom:60px}.tsa-search-page h1{font-size:clamp(28px,4vw,40px);font-weight:700;color:#071b34}.tsa-search-page>p{margin:10px 0;color:#64788d}.tsa-search-page>form{display:flex;gap:8px;margin:24px 0}.tsa-search-page>form input{flex:1;min-width:0;min-height:46px;border:1px solid #d7e0e9;border-radius:14px;padding:10px 16px;font-size:16px}.tsa-search-page>form button{min-height:46px;border:0;border-radius:14px;padding:10px 24px;color:#fff;background:#0f5fd6}.tsa-search-group{margin-top:30px;border-top:1px solid #e3eaf1;padding-top:24px}.tsa-search-group>div{display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap}.tsa-search-group h2{font-size:20px;font-weight:600}.tsa-search-group>div>a{display:flex;align-items:center;min-height:44px;color:#0f5fd6;font-size:13px}.tsa-search-group ul{list-style:none;padding:0}.tsa-search-group li{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #e3eaf1}.tsa-search-group li a{display:flex;align-items:center;min-height:48px;padding:10px 0;color:#29435e}.tsa-search-group li span{color:#64788d;font-size:12px;align-self:center}.tsa-search-empty{padding:40px 24px;margin-top:24px;background:#f6f9fc;border-radius:18px}
