:root{--navy:#102a3d;--navy-deep:#092133;--gold:#bb9254;--gold-light:#dbc495;--cream:#faf7f0;--paper:#fffdf9;--ink:#23313a;--muted:#66737a}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:'Noto Sans Thai',sans-serif;line-height:1.7}a{color:inherit}img{max-width:100%;display:block}.container{width:min(1180px,calc(100% - 48px));margin-inline:auto}.skip-link{position:absolute;left:-9999px;top:10px;background:white;color:var(--navy);padding:10px;z-index:100}.skip-link:focus{left:10px}.site-header{position:relative;z-index:5;background:var(--navy-deep);color:#fff;border-bottom:1px solid rgba(255,255,255,.12)}.header-inner{min-height:78px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:14px;white-space:nowrap}.brand strong{font-weight:700}.brand-mark{color:var(--gold-light);font-size:30px;line-height:1}.site-header nav{display:flex;align-items:center;gap:29px}.site-header nav a{font-size:13px;text-decoration:none;color:#e7e9e7;transition:color .2s}.site-header nav a:hover,.site-header nav a:focus-visible{color:var(--gold-light)}.site-header nav .nav-card{border:1px solid rgba(219,196,149,.5);padding:9px 15px;color:var(--gold-light)}.nav-card span{margin-left:9px}.hero{position:relative;overflow:hidden;background:radial-gradient(circle at 78% 44%,#31536a 0,#17374c 34%,#102c40 61%,#0c2538 100%);color:#fff}.hero:before,.hero:after{content:"";position:absolute;pointer-events:none;border:1px solid rgba(219,196,149,.13);border-radius:50%;width:670px;height:670px;right:-70px;top:30px}.hero:after{width:820px;height:820px;right:-145px;top:-45px}.hero-glow{position:absolute;width:500px;height:500px;border-radius:50%;background:#c7ab73;filter:blur(150px);opacity:.08;right:8%;top:5%}.hero-grid{min-height:650px;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:25px;position:relative;z-index:1}.hero-copy{padding:90px 0 105px}.eyebrow,.section-kicker{font-size:11px;letter-spacing:.19em;font-weight:700;text-transform:uppercase}.eyebrow{display:flex;align-items:center;gap:12px;color:var(--gold-light);white-space:nowrap}.small-line{width:34px;height:1px;background:var(--gold-light);opacity:.7}.hero h1{font-family:'Noto Serif Thai',serif;font-size:clamp(64px,7.4vw,112px);line-height:1.17;font-weight:500;letter-spacing:-.04em;margin:26px 0 0}.hero h1 span{display:block;color:var(--gold-light)}.hero-name{font-family:'Noto Serif Thai',serif;font-size:clamp(28px,3vw,42px);line-height:1.4;margin:4px 0 26px}.hero-intro{max-width:540px;color:#d6dee0;font-size:15px;margin:0 0 30px}.hero-details{border-top:1px solid rgba(219,196,149,.34);display:flex;gap:35px;padding-top:23px;margin-bottom:33px}.hero-details>div{min-width:0}.detail-label{display:block;color:var(--gold-light);font-size:12px;margin-bottom:5px}.hero-details strong{font-size:15px;line-height:1.55;font-weight:500}.hero-actions{display:flex;align-items:center;gap:28px}.button{display:inline-flex;align-items:center;justify-content:center;gap:35px;padding:12px 22px;text-decoration:none;font-weight:700;font-size:13px;transition:transform .2s,background .2s;min-height:50px}.button:hover{transform:translateY(-2px)}.button-gold{background:var(--gold-light);color:var(--navy-deep)}.button-gold:hover{background:#eed8ab}.text-link{font-size:13px;text-decoration:none;border-bottom:1px solid var(--gold-light);padding-bottom:4px;font-weight:700}.text-link span{margin-left:10px;color:var(--gold-light)}.hero-visual{height:570px;display:grid;place-items:center;position:relative}.hero-circle{width:min(420px,95%);aspect-ratio:1;border-radius:50%;border:1px solid rgba(219,196,149,.8);box-shadow:0 0 0 10px rgba(219,196,149,.045),0 0 0 15px rgba(219,196,149,.2),0 0 0 35px rgba(219,196,149,.045),inset 0 0 0 16px rgba(219,196,149,.04);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--gold-light);font-family:'Noto Serif Thai',serif;background:radial-gradient(circle,#194057 0,#16354b 65%,#102b40 100%)}.circle-top{font-size:15px;letter-spacing:.04em}.circle-ornament{font-size:27px;margin:0}.circle-date{font-size:clamp(56px,6vw,82px);line-height:1.2;font-weight:500}.circle-month{font-size:23px}.circle-bottom{font-size:14px}.mandala{position:absolute;color:rgba(219,196,149,.45);font-size:48px}.mandala-one{top:25px;right:30px}.mandala-two{bottom:20px;left:30px}.hero-foot{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:18px;color:#c0b18e;font-size:11px;letter-spacing:.12em;white-space:nowrap}.hero-foot span{width:80px;height:1px;background:rgba(219,196,149,.4)}.section{scroll-margin-top:20px}.intro-band{background:#efe8d9;padding:40px 0}.intro-inner{display:flex;align-items:center;justify-content:center;gap:55px;text-align:center}.intro-inner p{font-family:'Noto Serif Thai',serif;font-size:19px;line-height:1.7;margin:0;color:var(--navy)}.intro-inner strong{font-size:24px;font-weight:600}.lotus{color:var(--gold);font-size:26px}.schedule-section{padding:105px 0 90px;background:var(--cream)}.section-heading{text-align:center;margin-bottom:48px}.section-kicker{color:var(--gold);margin:0 0 10px}.section-heading h2,.travel-copy h2,.merit-inner h2,.invitation-grid h2{font-family:'Noto Serif Thai',serif;color:var(--navy);font-size:clamp(36px,4vw,54px);font-weight:600;line-height:1.35;margin:0}.section-heading>p:last-child{font-size:14px;color:var(--muted);margin:10px 0 0}.schedule-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px}.day-card{background:var(--paper);border:1px solid #e9e1d4;box-shadow:0 12px 40px rgba(23,43,55,.045)}.day-heading{background:var(--navy);color:#fff;padding:26px 32px;display:flex;align-items:center;gap:19px}.day-number{font-family:'Noto Serif Thai',serif;font-size:58px;line-height:1;color:var(--gold-light)}.day-heading span{font-size:13px;color:var(--gold-light)}.day-heading h3{font-size:17px;font-weight:500;margin:0}.timeline{list-style:none;margin:0;padding:13px 31px 23px}.timeline li{display:grid;grid-template-columns:86px 1fr;gap:18px;padding:20px 0;border-bottom:1px solid #e8e2d7}.timeline li:last-child{border:0}.timeline time{font-weight:700;color:#a7783c;font-size:16px;white-space:nowrap}.timeline h4{font-size:16px;color:var(--navy);margin:0 0 3px;line-height:1.5}.timeline p{font-size:13px;color:var(--muted);margin:0}.schedule-footer{display:flex;align-items:center;justify-content:center;gap:13px;margin-top:28px;font-size:13px;color:var(--muted)}.schedule-footer>span{color:var(--gold)}.schedule-footer p{margin:0}.schedule-footer a{font-weight:700;color:var(--navy);text-decoration:none;border-bottom:1px solid var(--gold)}.travel-section{padding:105px 0;background:#eee8dc}.travel-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}.travel-copy h2{margin-bottom:20px}.travel-copy h2 em{font-style:normal;color:#a67a43}.travel-description{font-size:15px;color:#52616a;max-width:460px;margin:0 0 26px}.address-box{display:flex;gap:16px;border-top:1px solid #d9cdb8;border-bottom:1px solid #d9cdb8;padding:19px 0;margin-bottom:26px}.pin{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--gold);color:var(--gold);border-radius:50%;font-size:27px;line-height:1}.address-box strong,.address-box span{display:block}.address-box strong{font-size:16px;color:var(--navy)}.address-box div span{font-size:13px;color:var(--muted)}.button-navy{background:var(--navy);color:#fff}.button-navy:hover{background:#23475e}.map-note{font-size:11px;color:#7b807e;margin:12px 0 0}.map-panel{height:440px;background:#dce5d5;position:relative;overflow:hidden;border:9px solid #faf8f3;box-shadow:0 18px 50px rgba(13,34,48,.13)}.map-grid{position:absolute;inset:0;background:linear-gradient(30deg,transparent 42%,rgba(183,203,173,.65) 43%,rgba(183,203,173,.65) 48%,transparent 49%),linear-gradient(-25deg,transparent 53%,rgba(188,207,180,.6) 54%,rgba(188,207,180,.6) 59%,transparent 60%),repeating-linear-gradient(0deg,transparent 0 90px,rgba(255,255,255,.18) 91px 93px),repeating-linear-gradient(90deg,transparent 0 90px,rgba(255,255,255,.18) 91px 93px)}.map-road{position:absolute;background:#f8f4e9;box-shadow:0 0 0 2px #c6cdbb}.road-a{width:150%;height:16px;left:-20%;top:58%;transform:rotate(-25deg)}.road-b{width:130%;height:13px;left:-10%;top:23%;transform:rotate(42deg)}.road-c{width:15px;height:130%;left:61%;top:-15%;transform:rotate(14deg)}.map-river{position:absolute;width:95px;height:130%;left:5%;top:-15%;border:22px solid #a3c7c6;border-inline-color:transparent;border-radius:45%;transform:rotate(25deg);opacity:.6}.map-location{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);background:var(--navy);color:#fff;min-width:245px;text-align:center;padding:28px 22px 19px;box-shadow:0 12px 30px #31463b55}.map-icon{position:absolute;left:50%;top:-28px;transform:translateX(-50%);width:51px;height:51px;border-radius:50%;background:var(--gold);display:grid;place-items:center;font-size:31px;line-height:1}.map-location strong,.map-location small{display:block}.map-location strong{font-family:'Noto Serif Thai',serif;font-size:20px}.map-location small{color:#d8ddd8;margin-top:2px}.map-caption{position:absolute;bottom:14px;left:18px;right:18px;display:flex;justify-content:space-between;color:#496465;font-size:10px;letter-spacing:.13em}.merit-section{background:var(--navy);color:#fff;padding:100px 0;position:relative;overflow:hidden}.merit-section:before,.merit-section:after{content:"";position:absolute;width:450px;height:450px;border:1px solid rgba(219,196,149,.14);border-radius:50%;top:-200px;left:-140px}.merit-section:after{left:auto;right:-150px;top:auto;bottom:-230px}.merit-inner{position:relative;z-index:1;text-align:center;max-width:680px}.merit-icon{color:var(--gold-light);font-size:42px;line-height:1;margin-bottom:18px}.merit-inner h2{color:#fff}.merit-inner>p:not(.section-kicker){font-size:15px;color:#d3dce0;max-width:580px;margin:17px auto 24px}.merit-pending{display:inline-block;border:1px solid rgba(219,196,149,.65);color:var(--gold-light);padding:11px 27px;font-weight:600;font-size:14px}.merit-inner small{display:block;color:#9eafb7;font-size:11px;margin-top:16px}.invitation-section{background:var(--cream);padding:100px 0}.invitation-grid{display:grid;grid-template-columns:1fr 380px;gap:90px;align-items:center;max-width:930px}.invitation-grid p:not(.section-kicker){font-size:15px;color:var(--muted);margin:16px 0 26px}.invitation-link{color:var(--navy)}.invitation-card{display:block;padding:12px;background:#fff;box-shadow:0 18px 50px rgba(15,39,53,.17);transform:rotate(2deg);transition:transform .2s}.invitation-card:hover{transform:rotate(0)}.invitation-card img{width:100%;aspect-ratio:2/3;object-fit:cover}.site-footer{background:var(--navy-deep);color:#fff;padding:35px 0}.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:20px}.footer-mark{color:var(--gold-light);font-size:28px;vertical-align:middle;margin-right:10px}.footer-inner strong{font-size:14px}.footer-inner p{color:#aebbc2;margin:3px 0 0 39px;font-size:12px}.footer-inner>a{font-size:12px;color:var(--gold-light);text-decoration:none;white-space:nowrap}a:focus-visible{outline:3px solid #e6b965;outline-offset:3px}@media(max-width:900px){.site-header nav{gap:16px}.site-header nav a{font-size:12px}.hero-grid{min-height:0}.hero-visual{height:450px}.hero-circle{width:min(350px,100%)}.hero-copy{padding:80px 0 95px}.hero-details{gap:18px}.travel-grid{gap:35px}}@media(max-width:700px){.container{width:min(100% - 34px,520px)}.header-inner{min-height:70px;align-items:flex-start;flex-direction:column;padding:13px 0 15px;gap:13px}.brand{font-size:12px}.brand-mark{font-size:25px}.site-header nav{width:100%;justify-content:space-between;gap:7px;overflow-x:auto;white-space:nowrap}.site-header nav a{font-size:11px}.site-header nav .nav-card{padding:4px 6px}.nav-card span{display:none}.hero-grid{display:block}.hero-copy{padding:65px 0 25px}.hero h1{font-size:clamp(62px,15vw,86px)}.hero-name{font-size:26px}.hero-intro{font-size:14px}.hero-details{flex-direction:column;gap:12px}.hero-visual{height:350px;margin:0 0 65px}.hero-circle{width:300px}.circle-date{font-size:60px}.circle-month{font-size:20px}.hero-foot{bottom:17px}.hero-foot span{width:25px}.intro-band{padding:28px 0}.intro-inner{gap:16px}.intro-inner p{font-size:14px}.intro-inner strong{font-size:17px}.lotus{font-size:16px}.schedule-section,.travel-section,.invitation-section{padding:70px 0}.section-heading{margin-bottom:30px}.schedule-layout,.travel-grid,.invitation-grid{grid-template-columns:1fr;gap:22px}.day-heading{padding:20px 24px}.day-number{font-size:49px}.timeline{padding:8px 22px 16px}.timeline li{grid-template-columns:77px 1fr;gap:12px;padding:17px 0}.timeline time{font-size:14px}.timeline h4{font-size:14px}.schedule-footer{flex-wrap:wrap;text-align:center;gap:6px}.travel-grid{gap:35px}.map-panel{height:330px}.map-location{min-width:220px}.merit-section{padding:70px 0}.invitation-grid{gap:35px}.invitation-card{width:min(310px,90%);margin:auto}.footer-inner{align-items:flex-start}.footer-inner strong{font-size:12px}.footer-inner p{font-size:10px}.footer-inner>a{font-size:11px}}@media(max-width:390px){.site-header nav a{font-size:10px}.hero-actions{gap:16px}.button{gap:13px;padding:10px 14px}.eyebrow{font-size:9px}.small-line{width:20px}.hero-details strong{font-size:14px}}


/* Mobile layout refinements */
@media (max-width: 700px) {
  .site-header nav {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 6px;
    overflow: visible;
    white-space: normal;
  }
  .site-header nav a,
  .site-header nav .nav-card {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 5px 4px;
    text-align: center;
    line-height: 1.3;
    font-size: 12px;
  }
  .hero-copy { padding: 58px 0 18px; }
  .hero-visual { height: min(88vw, 350px); }
  .hero-circle { width: min(300px, calc(100% - 32px)); }
  .hero-actions { flex-wrap: wrap; }
  .schedule-layout,
  .travel-grid,
  .invitation-grid { min-width: 0; }
  .day-card,
  .travel-copy,
  .map-panel { min-width: 0; }
  .merit-pending { max-width: 100%; overflow-wrap: anywhere; }
  .footer-inner { align-items: flex-start; }
}
@media (max-width: 420px) {
  .site-header nav { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .site-header nav a,
  .site-header nav .nav-card { font-size: 11px; }
  .hero h1 { font-size: clamp(46px, 13vw, 60px); }
  .hero-name { font-size: clamp(22px, 6vw, 26px); }
  .hero-visual { height: min(88vw, 320px); margin-bottom: 56px; }
  .hero-circle { width: min(290px, calc(100% - 44px)); }
  .circle-date { font-size: clamp(44px, 13vw, 58px); }
  .circle-month { font-size: clamp(16px, 5vw, 20px); }
  .circle-top,
  .circle-bottom { font-size: 12px; }
  .mandala { font-size: 32px; }
  .timeline { padding-inline: 16px; }
  .timeline li { grid-template-columns: 70px minmax(0, 1fr); gap: 10px; }
  .timeline time { font-size: 13px; }
  .timeline h4 { overflow-wrap: anywhere; }
  .map-location { min-width: 0; width: min(220px, calc(100% - 36px)); }
  .footer-inner { flex-direction: column; gap: 14px; }
}
@media (max-width: 350px) {
  .hero-actions { gap: 14px; }
  .hero-actions .button { width: 100%; }
  .hero-foot { font-size: 9px; }
  .hero-foot span { width: 16px; }
  .intro-inner { gap: 8px; }
  .intro-inner strong { font-size: 15px; }
  .intro-inner .lotus { display: none; }
  .map-panel { height: 290px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .button,
  .invitation-card { transition: none; }
}

/* Keep section navigation available while scrolling. */
.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  box-shadow: 0 4px 18px rgba(9, 33, 51, .16);
}
#schedule,
#travel,
#merit,
#invitation { scroll-margin-top: 90px; }
@media (max-width: 700px) {
  #schedule,
  #travel,
  #merit,
  #invitation { scroll-margin-top: 122px; }
}

/* Interaction and entrance motion */
.site-header { transition: box-shadow .35s ease, background-color .35s ease; }
.site-header.is-scrolled {
  background-color: rgba(9, 33, 51, .97);
  box-shadow: 0 8px 28px rgba(9, 33, 51, .3);
}
.site-header nav a { position: relative; transition: color .25s ease, background-color .25s ease; }
.site-header nav a:not(.nav-card)::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: -8px;
  height: 2px;
  background: var(--gold-light);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform .3s ease;
}
.site-header nav a:not(.nav-card):hover::after,
.site-header nav a:not(.nav-card):focus-visible::after,
.site-header nav a:not(.nav-card).is-active::after { transform: scaleX(1); }
.site-header nav a.is-active { color: var(--gold-light); }
.site-header nav .nav-card:hover,
.site-header nav .nav-card.is-active { background: rgba(219, 196, 149, .12); }

.hero-copy .eyebrow { animation: rise-in .75s .05s both; }
.hero-copy h1 { animation: rise-in .85s .16s both; }
.hero-name { animation: rise-in .85s .28s both; }
.hero-intro { animation: rise-in .85s .4s both; }
.hero-details { animation: rise-in .85s .52s both; }
.hero-actions { animation: rise-in .85s .64s both; }
.hero-visual { animation: rise-in 1.1s .32s both; }
.hero-circle { animation: gentle-float 6s ease-in-out 1.4s infinite; }
.hero-glow { animation: glow-drift 10s ease-in-out infinite alternate; }
.mandala-one { animation: ornament-turn 24s linear infinite; }
.mandala-two { animation: ornament-turn 30s linear infinite reverse; }
.circle-ornament { animation: ornament-glint 3.5s ease-in-out infinite; }

.button { position: relative; overflow: hidden; transition: transform .28s ease, box-shadow .28s ease, background .28s ease; }
.button::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(110deg, transparent 30%, rgba(255,255,255,.34) 50%, transparent 70%);
  transform: translateX(-150%);
  transition: transform .7s ease;
  pointer-events: none;
}
.button:hover::before { transform: translateX(150%); }
.button:hover { box-shadow: 0 10px 24px rgba(0,0,0,.16); }
.text-link { transition: color .25s ease, border-color .25s ease; }
.text-link:hover { color: var(--gold); border-color: var(--gold); }
.day-card { transition: transform .35s ease, box-shadow .35s ease; }
.day-card:hover { transform: translateY(-6px); box-shadow: 0 20px 42px rgba(23,43,55,.13); }
.timeline li { transition: transform .3s ease, background-color .3s ease; }
.timeline li:hover { transform: translateX(6px); background-color: rgba(219,196,149,.09); }
.map-panel { transition: box-shadow .4s ease; }
.map-panel:hover { box-shadow: 0 24px 58px rgba(13,34,48,.2); }
.map-icon { animation: marker-bob 3s ease-in-out infinite; }
.map-icon::after {
  content: '';
  position: absolute;
  inset: -6px;
  border: 1px solid var(--gold);
  border-radius: 50%;
  animation: marker-ping 3s ease-out infinite;
}
.merit-icon { animation: ornament-glint 4s ease-in-out infinite; }
.invitation-card { transition: transform .35s ease, box-shadow .35s ease; }
.invitation-card:hover { transform: rotate(0deg) translateY(-6px); box-shadow: 0 26px 58px rgba(15,39,53,.22); }
.footer-inner > a { transition: color .25s ease, transform .25s ease; }
.footer-inner > a:hover { color: #fff; transform: translateY(-3px); }

.js-motion .reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .7s ease var(--reveal-delay, 0ms), transform .7s cubic-bezier(.2,.8,.2,1) var(--reveal-delay, 0ms), box-shadow .35s ease;
}
.js-motion .reveal.is-visible { opacity: 1; transform: none; }
.js-motion .day-card.reveal.is-visible:hover { transform: translateY(-6px); }
.js-motion .timeline li.reveal.is-visible:hover { transform: translateX(6px); }
.js-motion .invitation-card.reveal.is-visible { transform: rotate(2deg); }
.js-motion .invitation-card.reveal.is-visible:hover { transform: rotate(0deg) translateY(-6px); }

@keyframes rise-in {
  from { opacity: 0; transform: translateY(30px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes gentle-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-12px); }
}
@keyframes glow-drift {
  from { transform: translate(-20px, 10px) scale(.9); opacity: .06; }
  to { transform: translate(30px, -15px) scale(1.12); opacity: .14; }
}
@keyframes ornament-turn { to { transform: rotate(360deg); } }
@keyframes ornament-glint {
  0%, 100% { opacity: .55; transform: scale(.92); }
  50% { opacity: 1; transform: scale(1.1); }
}
@keyframes marker-bob {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-6px); }
}
@keyframes marker-ping {
  0% { opacity: .7; transform: scale(.7); }
  70%, 100% { opacity: 0; transform: scale(1.5); }
}
@media (max-width: 700px) {
  .site-header nav a:not(.nav-card)::after { bottom: 2px; left: 18%; right: 18%; }
  .day-card:hover,
  .timeline li:hover { transform: none; }
  .js-motion .day-card.reveal.is-visible:hover,
  .js-motion .timeline li.reveal.is-visible:hover { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

/* Full-section 3D backdrop and real temple photo. */
.travel-section { position: relative; overflow: hidden; isolation: isolate; background: #eee8dc; }
.travel-3d-backdrop { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; }
.travel-3d-scene {
  position: absolute;
  inset: -18%;
  transform-origin: center;
  transform: scale(var(--location-zoom, 1));
  transition: transform .12s linear;
  will-change: transform;
}
.travel-3d-scene picture { display: block; width: 100%; height: 100%; }
.travel-3d-scene img { width: 100%; height: 100%; object-fit: cover; object-position: 48% center; }
.travel-3d-wash {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(238,232,220,.78), rgba(238,232,220,.55) 44%, rgba(238,232,220,.3) 100%),
              linear-gradient(0deg, rgba(238,232,220,.45), transparent 55%);
}
.travel-grid { position: relative; z-index: 1; }
.travel-copy h2,
.travel-copy .travel-description,
.travel-copy .address-box { text-shadow: 0 1px 12px rgba(250,247,240,.7); }
.temple-photo-panel { height: auto; min-height: 350px; aspect-ratio: 1.5; background: var(--navy-deep); isolation: isolate; }
.temple-real-photo { width: 100%; height: 100%; object-fit: cover; object-position: 53% center; }
.temple-photo-panel::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(8,31,43,.55), transparent 45%);
  pointer-events: none;
}
.temple-caption {
  position: absolute;
  z-index: 2;
  left: 25px;
  bottom: 21px;
  max-width: calc(100% - 50px);
  padding: 10px 16px 12px;
  background: rgba(9,33,51,.84);
  border-left: 3px solid var(--gold-light);
  color: #fff;
  box-shadow: 0 10px 28px rgba(0,0,0,.24);
  backdrop-filter: blur(8px);
}
.temple-caption strong,
.temple-caption small { display: block; }
.temple-caption strong { font-family: 'Noto Serif Thai', serif; font-size: 17px; line-height: 1.45; }
.temple-caption small { color: #d7e0e1; font-size: 11px; }
@media (max-width: 700px) {
  .travel-3d-scene { inset: -8%; }
  .travel-3d-scene img { object-position: center; }
  .travel-3d-wash { background: linear-gradient(0deg, rgba(238,232,220,.8), rgba(238,232,220,.45) 55%, rgba(238,232,220,.32)); }
  .travel-copy { padding: 22px 18px; background: rgba(250,247,240,.58); border: 1px solid rgba(255,255,255,.5); backdrop-filter: blur(3px); }
  .temple-photo-panel { min-height: 0; aspect-ratio: 1.55; }
  .temple-caption { left: 14px; bottom: 12px; max-width: calc(100% - 28px); padding: 7px 10px 9px; }
  .temple-caption strong { font-size: 14px; }
}
@media (max-width: 350px) {
  .temple-photo-panel { aspect-ratio: 1.4; }
  .temple-caption strong { font-size: 12px; }
  .temple-caption small { font-size: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .travel-3d-scene { transform: none !important; transition: none !important; }
}

/* Mobile hero fits one screen below the sticky header. */
@media (max-width: 700px) {
  .hero {
    display: flex;
    flex-direction: column;
    min-height: calc(100vh - var(--header-h, 130px));
    min-height: calc(100svh - var(--header-h, 130px));
  }
  .hero-grid { flex: 1; display: flex; align-items: center; }
  .hero-copy { width: 100%; padding: clamp(16px, 3svh, 36px) 0 clamp(52px, 8svh, 68px); }
  .hero-visual { display: none; }
  .hero h1 { font-size: clamp(42px, min(13vw, 7.2svh), 62px); margin-top: clamp(8px, 1.8svh, 22px); }
  .hero-name { font-size: clamp(20px, min(6vw, 3.4svh), 26px); margin: 2px 0 clamp(10px, 2.2svh, 24px); }
  .hero-intro { font-size: clamp(13px, 1.9svh, 14px); line-height: 1.65; margin-bottom: clamp(12px, 2.6svh, 28px); }
  .hero-details { gap: clamp(6px, 1.4svh, 12px); padding-top: clamp(12px, 2.2svh, 22px); margin-bottom: clamp(16px, 3svh, 32px); }
  .detail-label { margin-bottom: 2px; }
  .hero-foot { bottom: clamp(12px, 2.2svh, 20px); }
}

/* Keep the personal portrait as a quiet right-side layer. */
.hero::before, .hero::after { display: none; }
.hero-grid { display: block; min-height: 650px; }
.hero-copy { position: relative; z-index: 2; max-width: min(630px, 62%); }
.hero-visual {
  position: absolute;
  z-index: 0;
  top: 0;
  right: -18px;
  bottom: 0;
  width: 58%;
  height: auto;
  margin: 0;
  display: block;
  pointer-events: none;
  animation: none;
}
.hero-visual::before {
  content: '';
  position: absolute;
  z-index: 0;
  inset: 0;
  background: linear-gradient(rgba(9,33,51,.32), rgba(9,33,51,.55)), url('assets/temple-photo.jpg') center / cover no-repeat;
  filter: blur(9px) saturate(.6);
  opacity: .38;
  -webkit-mask-image: radial-gradient(ellipse 78% 82% at 72% 44%, #000 20%, rgba(0,0,0,.78) 58%, transparent 100%);
  mask-image: radial-gradient(ellipse 78% 82% at 72% 44%, #000 20%, rgba(0,0,0,.78) 58%, transparent 100%);
}
.hero-visual::after {
  content: '';
  position: absolute;
  z-index: 2;
  inset: 0;
  background: linear-gradient(90deg, #102c40 0%, rgba(16,44,64,.75) 15%, transparent 62%);
}
.hero-portrait {
  position: absolute;
  z-index: 1;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: right bottom;
  opacity: .46;
  filter: grayscale(.15) saturate(.9) brightness(.95);
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 68%, rgba(0,0,0,.8) 78%, transparent 100%);
  mask-image: linear-gradient(180deg, #000 0%, #000 68%, rgba(0,0,0,.8) 78%, transparent 100%);
}

@media (max-width: 700px) {
  .hero-grid { display: block; min-height: 0; }
  .hero-copy { width: 100%; max-width: none; padding: clamp(16px, 3svh, 36px) 0 clamp(52px, 8svh, 68px); }
  .hero-visual {
    display: block;
    top: 12%;
    right: -17px;
    bottom: 0;
    width: min(84vw, 460px);
    height: auto;
    margin: 0;
  }
  .hero-portrait {
    object-position: right bottom;
    opacity: .34;
  }
  .hero-visual::before { opacity: .3; }
  .hero-visual::after { background: linear-gradient(90deg, #102c40 0%, rgba(16,44,64,.85) 23%, transparent 78%); }
}

/* Text-only layout after removing decorative symbols. */
.footer-inner p { margin-left: 0; }
.travel-copy h2 em { white-space: nowrap; }
.address-box { margin-top: 6px; }
.schedule-footer a { font-size: 14px; padding-bottom: 3px; }
