:root {
  --font-base: "ZBF_bold", "ZBF Bold", "Noto Sans JP", sans-serif;
  --yellow: #f2f17e;
  --paper: #f8f7f2;
  --ink: #171717;
  --coral: #c96466;
  --blue: #226fb4;
  --orange: #ea6d2c;
  --green: #35a65e;
  --salmon: #f2857c;
  --lavender: #8789e7;
  --yelloworange: #efb837;
  --line: rgba(23,23,23,.25);
  --ease: cubic-bezier(.2,.8,.2,1);
}

@font-face {
  font-family:"ZBF_bold";
  src:local("ZBF_bold"), local("ZBF Bold");
  font-display:swap;
}

*,*::before,*::after { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--yellow); color:var(--ink); font-family:var(--font-base); font-size:15px; line-height:1.8; overflow-x:hidden; }
body::before { content:""; position:fixed; inset:0; pointer-events:none; background:rgba(230,220,155,.13); z-index:20; mix-blend-mode:multiply; }
a { color:inherit; text-decoration:none; }
button { border:0; font:inherit; cursor:pointer; }
img { display:block; max-width:100%; }

.desktop-rail { display:none; }
.rail-title-image { display:block; width:min(100%,285px); height:auto; margin:21px 0 13px; }
.desktop-rail--right a { position:relative; overflow:hidden; padding:7px 12px 8px 38px; border:1px solid #343434; border-radius:2px; background:linear-gradient(#252525 49%,#111 50%,#222 52%); box-shadow:0 2px 0 rgba(255,255,255,.28),inset 0 1px rgba(255,255,255,.12); color:#f3efcf; font:700 12px/1.35 "Noto Sans JP",sans-serif; letter-spacing:.04em; transform-origin:center; backface-visibility:hidden; animation:rail-board-flip 9s cubic-bezier(.45,.05,.55,.95) infinite; transition:transform .3s var(--ease),color .3s var(--ease); }
.desktop-rail--right a::before { content:"✈"; position:absolute; left:9px; top:50%; color:var(--yellow); font:20px/1 sans-serif; transform:translateY(-50%) rotate(-8deg); }
.desktop-rail--right a::after { content:""; position:absolute; left:0; right:0; top:50%; height:1px; background:rgba(0,0,0,.75); box-shadow:0 1px rgba(255,255,255,.08); pointer-events:none; }
.desktop-rail--right a:nth-child(2) { animation-delay:1.5s; }
.desktop-rail--right a:nth-child(3) { animation-delay:3s; }
.desktop-rail--right a:nth-child(4) { animation-delay:4.5s; }
.desktop-rail--right a:nth-child(5) { animation-delay:6s; }
.desktop-rail--right a:nth-child(6) { animation-delay:7.5s; }
.desktop-rail--right a:hover { color:#fff; animation-play-state:paused; transform:translateX(-6px) rotateX(0); }

.phone-column { position:relative; width:100%; max-width:480px; margin:0 auto; overflow:hidden; background:var(--paper); box-shadow:0 0 60px rgba(60,57,35,.16); }
.site-header { position:relative; z-index:6; display:flex; align-items:center; justify-content:space-between; min-height:68px; padding:18px 0px 6px 14px; background:#fff; color:var(--ink); }


.section-photo { position:relative; isolation:isolate; overflow:hidden; background:var(--section-color,var(--paper)); color:var(--section-ink,var(--ink)); }
.section-photo::before { content:""; position:absolute; z-index:-2; inset:24px 18px; border-radius:5px; background:var(--section-color,var(--paper)); }
.section-photo__bg { position:absolute; z-index:-1; inset:var(--photo-top,180px) 27px 24px; border-radius:28px; background-color:var(--section-color,var(--paper)); overflow:hidden; }
.section-photo__media { position:absolute; z-index:0; inset:-40px 0; background-image:var(--photo-image); background-position:center 50%; background-repeat:no-repeat; background-size:cover; will-change:transform; }
.section-photo__bg::after { content:""; position:absolute; z-index:1; inset:0; background:rgba(128,124,82,.6); pointer-events:none; }
.section-photo__bg--cover .section-photo__media { background-position:center 30%; }
.wash { display:none; }
.section-inner { position:relative; z-index:1; width:min(100%,480px); margin:0 auto; padding:0; }
.section-photo:not(.hero) .section-inner { text-align:center; }
.section-title { position:relative; z-index:2; margin:50px 18px 0; padding:12px 8px; background:var(--section-color,var(--paper)); color:var(--section-ink,var(--ink)); }
.section-body { position:relative; z-index:1; width:100%; padding:34px 26px 34px; }
.section-title .section-no { margin-bottom:8px; }
.section-title h2 { margin-bottom:0;color:#fff; }
.section-title .section-label { margin-bottom:0; }
h1,h2,h3,p { margin-top:0; }
h2 { margin-bottom:22px; font-family:"Oswald",var(--font-base); font-size:30px; font-weight:600; line-height:1.12; letter-spacing:-.025em; }
.body-copy { max-width:320px; margin-bottom:26px; font-size:13px; font-weight:700; line-height:2.25; }
.section-photo:not(.hero) .body-copy { margin-left:auto; margin-right:auto; }
.slick-caption { position:absolute; z-index:2; bottom:10%; left:0; right:auto; display:flex; flex-direction:column; align-items:flex-start; opacity:.8; font-family:var(--font-base); font-size:13px; font-weight:700; text-align:left; }
.slick-caption p { align-self:flex-start; margin:0; font-family:inherit; font-weight:inherit; text-align:left; }

.hero { --section-ink:var(--ink); min-height:640px; background:#ede9c1; }
.hero::before { display:none; }
.hero-main-image { position:absolute; z-index:-2; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; transform:translate3d(0,0,0) scale(1.15); transform-origin:center; will-change:transform; }
.hero .wash { display:block; position:absolute; inset:0; z-index:-1; background:rgba(128,124,82,.3); pointer-events:none; }
.hero-copy { position:relative; z-index:1; padding:100px 24px 0 12px; }
.hero-title-image { display:block; width:min(100%,330px); height:auto; }


.intro { --section-color:var(--coral); --section-ink:var(--paper); --photo-top:126px; background:var(--coral); }
.intro-inner { padding-top:0; }
.intro h2 { font-size:32px; }
.intro .body-copy { max-width:286px; }

.magazine { --section-color:var(--blue); --section-ink:var(--paper); --photo-top:126px; min-height:590px; background:var(--blue); }
.magazine-inner { padding-top:0; }
.magazine h2 { font-size:32px; }
.magazine-image { width:300px; max-width:100%; margin:0 auto; }


.flow { --section-color:var(--orange); --section-ink:var(--paper); --photo-top:126px; min-height:930px; background:var(--orange); }
.flow h2 { margin-bottom:0; }
.steps { display:grid; gap:8px; }


.venue { --section-color:var(--green); --section-ink:var(--paper); --photo-top:126px; min-height:620px; background:var(--green); }
.venue-inner { padding-top:0; }
.venue h2 { font-size:30px; }
.venue .body-copy { max-width:320px; }

.about { --section-color:var(--salmon); --section-ink:var(--ink); --photo-top:126px; min-height:630px; background:var(--salmon); }
.about-inner { padding-top:0; }
.about h2 { font-size:29px; }

.faq { --section-color:var(--lavender); --section-ink:var(--ink); --photo-top:146px; min-height:690px; background:var(--lavender); }
.faq-inner { padding-top:0; }
.faq h2 { font-size:32px; }
.faq .body-copy > span { display:inline-block; color:var(--yellow); line-height:1.4; }
details { border-bottom:1px solid rgba(23,23,23,.35); }
details:last-child { border-bottom:0; }
summary { position:relative; padding:17px 36px 17px 14px; list-style:none; font-size:12px; font-weight:900; line-height:1.75; cursor:pointer; text-align:center; }
summary::-webkit-details-marker { display:none; }
summary::after { content:"+"; position:absolute; right:15px; top:12px; font:21px/1 "Archivo Black",sans-serif; }
details[open] summary::after { content:"−"; }
details p { margin:0; padding:0 14px 19px; font-size:11px; line-height:2; text-align:center; }

.site-footer { padding:38px 26px 92px; background:var(--paper); text-align:center; }
.site-footer p:not(.brand) { margin-bottom:10px; font-size:11px; font-weight:700; }
.site-footer > small { font-size:8px; letter-spacing:.04em; }
.site-footer ul { display:flex; justify-content:center; gap:20px; margin-bottom:10px;list-style:none; padding:0;   }
.site-footer ul li a { font-size:12px; color:var(--ink); text-decoration:underline; }
.entry-button { position:fixed; z-index:30; left:50%; bottom:14px; width:min(440px,calc(100vw - 8px)); transform:translateX(-50%); display:flex; align-items:center; justify-content:center; gap:9px; padding:14px 18px 15px; border:1px solid rgba(23,23,23,.4); border-radius:8px; background:var(--yelloworange); box-shadow:0 5px 0 rgba(23,23,23,.9); font-size:18px; font-weight:900; letter-spacing:.04em; transition:transform .25s var(--ease), box-shadow .25s var(--ease); }
.entry-button span { font:12px "Archivo Black",sans-serif;background:var(--ink); color:var(--paper); padding:3px 12px; border-radius:20px;text-align: center; line-height:1.2; }
.entry-button b { margin-left:auto; font-size:18px; line-height:.5; }
.entry-button:hover { transform:translateX(-50%) translateY(-10px); box-shadow:0 8px 0 rgba(23,23,23,.9); }
.sp-only { display:none; }


@media (max-width: 760px) {
  .sp-only { display:initial; }
  .desktop-rail { display:none; }
  body { background:var(--paper); }
  .phone-column { max-width:none; box-shadow:none; }
  .site-header { position:relative; min-height:60px; padding:14px 16px; }
  .hero { min-height:620px; }
  .section-body { padding-left:22px; padding-right:22px; }
}

@media (min-width: 761px) {
  .hero { min-height:650px; }
}

@media (min-width: 1100px) {
  body { overflow-x:hidden; }
  .phone-column { position:relative; z-index:3; }
  .desktop-rail { display:block; position:fixed; top:50%; z-index:2; width:220px; translate:0 -50%; }
  .desktop-rail--left { right:calc(50% + 280px); pointer-events:none; }
  .desktop-rail--right { left:calc(50% + 280px); display:grid; gap:17px; }
}

/* Desktop travel atmosphere: animated flight paths stay behind the LP. */
.flight-atmosphere { display:none; }

@media (min-width:1100px) {
  .flight-atmosphere { display:block; position:fixed; z-index:0; inset:0; overflow:hidden; pointer-events:none; background:radial-gradient(circle at 18% 18%,rgba(255,255,255,.5),transparent 28%),radial-gradient(circle at 86% 70%,rgba(255,255,255,.42),transparent 25%); }
  .flight-route { position:absolute; inset:0; width:100%; height:100%; opacity:.28; }
  .flight-route path { fill:none; stroke:#171717; stroke-width:1.4; stroke-linecap:round; stroke-dasharray:3 11; vector-effect:non-scaling-stroke; animation:route-drift 18s linear infinite; }
  .flight-route--two { opacity:.14; transform:scaleY(-1); }
  .flight-route--two path { animation-duration:26s; animation-direction:reverse; }
  .plane { position:absolute; color:#171717; opacity:.58; font-size:34px; line-height:1; filter:drop-shadow(0 4px 0 rgba(255,255,255,.42)); }
  .plane span { display:block; transform:rotate(10deg); }
  .plane--one { left:-6vw; top:67vh; animation:plane-one 22s cubic-bezier(.45,.04,.55,.96) infinite; }
  .plane--two { right:-5vw; top:22vh; opacity:.28; font-size:24px; animation:plane-two 29s cubic-bezier(.45,.04,.55,.96) -9s infinite; }
  .plane--two span { transform:scaleX(-1) rotate(6deg); }
  .airport-code { position:absolute; color:#171717; opacity:.2; font:700 10px/1 "Archivo Black",sans-serif; letter-spacing:.28em; }
  .airport-code--one { left:4.5vw; bottom:8vh; writing-mode:vertical-rl; }
  .airport-code--two { right:3.5vw; top:8vh; }
}

@keyframes route-drift { to { stroke-dashoffset:-140; } }
@keyframes rail-board-flip {
  0%,12%,100% { transform:perspective(280px) rotateX(0); filter:brightness(1); }
  3% { transform:perspective(280px) rotateX(-72deg); filter:brightness(.55); }
  6% { transform:perspective(280px) rotateX(18deg); filter:brightness(1.25); }
  9% { transform:perspective(280px) rotateX(-5deg); filter:brightness(.92); }
}
@keyframes plane-one {
  0% { transform:translate(-4vw,4vh) rotate(-10deg); }
  38% { transform:translate(36vw,-36vh) rotate(-28deg); }
  68% { transform:translate(72vw,-48vh) rotate(3deg); }
  100% { transform:translate(112vw,-22vh) rotate(16deg); }
}
@keyframes plane-two {
  0% { transform:translate(4vw,-5vh) rotate(-8deg); }
  45% { transform:translate(-48vw,28vh) rotate(-16deg); }
  100% { transform:translate(-112vw,48vh) rotate(-3deg); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation-duration:.01ms!important; transition-duration:.01ms!important; }
  .section-photo__bg,.section-photo__media,.hero-main-image { transform:none!important; }
  .flight-route path,.plane,.desktop-rail--right a { animation:none!important; }
}
