@font-face { font-family: NanumSquare; src: url('../fonts/NanumSquareR.woff') format('woff'); font-weight: 400; font-display: swap; }
@font-face { font-family: NanumSquare; src: url('../fonts/NanumSquareB.woff') format('woff'); font-weight: 700; font-display: swap; }
@font-face { font-family: NanumSquare; src: url('../fonts/NanumSquareEB.woff') format('woff'); font-weight: 800; font-display: swap; }

:root {
  --orange: #f36b21; --orange-dark: #d94f0b; --navy: #071b2c; --ink: #0b1726; --white: #f8f8f8; --muted: #7e8791;
  --r-site-header-x: 0%; --r-site-header-y: 0%; --r-site-header-w: 100%; --r-site-header-h: 7.03%;
  --r-hero-airport-photo-x: 0%; --r-hero-airport-photo-y: 7.03%; --r-hero-airport-photo-w: 60.09%; --r-hero-airport-photo-h: 54.49%;
  --r-hero-heading-x: 4.56%; --r-hero-heading-y: 15.82%; --r-hero-heading-w: 35.16%; --r-hero-heading-h: 12.30%;
  --r-hero-kicker-x: 4.56%; --r-hero-kicker-y: 12.30%; --r-hero-kicker-w: 22.14%; --r-hero-kicker-h: 2.34%;
  --r-hero-subcopy-x: 4.56%; --r-hero-subcopy-y: 29.49%; --r-hero-subcopy-w: 32.55%; --r-hero-subcopy-h: 2.93%;
  --r-route-search-x: 4.56%; --r-route-search-y: 34.28%; --r-route-search-w: 48.96%; --r-route-search-h: 7.32%;
  --r-popular-destinations-x: 4.56%; --r-popular-destinations-y: 43.07%; --r-popular-destinations-w: 45.57%; --r-popular-destinations-h: 3.32%;
  --r-departure-board-x: 60.03%; --r-departure-board-y: 10.16%; --r-departure-board-w: 38.02%; --r-departure-board-h: 35.64%;
  --r-departure-board-title-x: 62.57%; --r-departure-board-title-y: 15.82%; --r-departure-board-title-w: 26.69%; --r-departure-board-title-h: 4.49%;
  --r-departure-board-rows-x: 60.61%; --r-departure-board-rows-y: 22.95%; --r-departure-board-rows-w: 35.81%; --r-departure-board-rows-h: 21.19%;
  --r-hero-trust-strip-x: 60.03%; --r-hero-trust-strip-y: 46.88%; --r-hero-trust-strip-w: 38.02%; --r-hero-trust-strip-h: 11.91%;
  --r-recommendation-heading-x: 4.56%; --r-recommendation-heading-y: 63.77%; --r-recommendation-heading-w: 36.46%; --r-recommendation-heading-h: 6.84%;
  --r-osaka-photo-x: 4.69%; --r-osaka-photo-y: 72.46%; --r-osaka-photo-w: 29.17%; --r-osaka-photo-h: 20.02%;
  --r-danang-photo-x: 35.55%; --r-danang-photo-y: 72.46%; --r-danang-photo-w: 28.97%; --r-danang-photo-h: 20.02%;
  --r-zhangjiajie-photo-x: 66.21%; --r-zhangjiajie-photo-y: 72.46%; --r-zhangjiajie-photo-w: 29.17%; --r-zhangjiajie-photo-h: 20.02%;
  --r-osaka-card-copy-x: 5.66%; --r-osaka-card-copy-y: 92.48%; --r-osaka-card-copy-w: 26.56%; --r-osaka-card-copy-h: 5.2%;
  --r-danang-card-copy-x: 36.59%; --r-danang-card-copy-y: 92.48%; --r-danang-card-copy-w: 26.30%; --r-danang-card-copy-h: 5.2%;
  --r-zhangjiajie-card-copy-x: 67.19%; --r-zhangjiajie-card-copy-y: 92.48%; --r-zhangjiajie-card-copy-w: 26.63%; --r-zhangjiajie-card-copy-h: 5.2%;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--white); font-family: NanumSquare, sans-serif; }
body, button, input, select { font: inherit; }
a { color: inherit; text-decoration: none; }
button, select, input { cursor: pointer; }
::selection { color: #fff; background: var(--orange); }
:focus-visible { outline: 3px solid #ff9d63; outline-offset: 3px; }
.skip-link { position: fixed; z-index: 100; top: 10px; left: 10px; padding: 12px 16px; color: #fff; background: var(--navy); transform: translateY(-150%); }
.skip-link:focus { transform: translateY(0); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.comp-frame { position: relative; width: 100%; min-width: 1180px; aspect-ratio: 1536 / 1024; overflow: hidden; background: var(--white); }
.plate { position: absolute; display: block; width: 100%; height: 100%; object-fit: cover; }

.r-site-header { position: absolute; left: var(--r-site-header-x); top: var(--r-site-header-y); width: var(--r-site-header-w); height: var(--r-site-header-h); }
.r-hero-airport-photo { left: var(--r-hero-airport-photo-x); top: var(--r-hero-airport-photo-y); width: var(--r-hero-airport-photo-w); height: var(--r-hero-airport-photo-h); }
.r-hero-heading { position: absolute; left: var(--r-hero-heading-x); top: var(--r-hero-heading-y); width: var(--r-hero-heading-w); height: var(--r-hero-heading-h); }
.r-hero-kicker { position: absolute; left: var(--r-hero-kicker-x); top: var(--r-hero-kicker-y); width: var(--r-hero-kicker-w); height: var(--r-hero-kicker-h); }
.r-hero-subcopy { position: absolute; left: var(--r-hero-subcopy-x); top: var(--r-hero-subcopy-y); width: var(--r-hero-subcopy-w); height: var(--r-hero-subcopy-h); }
.r-route-search { position: absolute; left: var(--r-route-search-x); top: var(--r-route-search-y); width: var(--r-route-search-w); height: var(--r-route-search-h); }
.r-popular-destinations { position: absolute; left: var(--r-popular-destinations-x); top: var(--r-popular-destinations-y); width: var(--r-popular-destinations-w); height: var(--r-popular-destinations-h); }
.r-departure-board { position: absolute; left: var(--r-departure-board-x); top: var(--r-departure-board-y); width: var(--r-departure-board-w); height: var(--r-departure-board-h); }
.r-hero-trust-strip { position: absolute; left: var(--r-hero-trust-strip-x); top: var(--r-hero-trust-strip-y); width: var(--r-hero-trust-strip-w); height: var(--r-hero-trust-strip-h); }
.r-recommendation-heading { position: absolute; left: var(--r-recommendation-heading-x); top: var(--r-recommendation-heading-y); width: var(--r-recommendation-heading-w); height: var(--r-recommendation-heading-h); }
.r-osaka-photo { left: var(--r-osaka-photo-x); top: var(--r-osaka-photo-y); width: var(--r-osaka-photo-w); height: var(--r-osaka-photo-h); }
.r-danang-photo { left: var(--r-danang-photo-x); top: var(--r-danang-photo-y); width: var(--r-danang-photo-w); height: var(--r-danang-photo-h); }
.r-zhangjiajie-photo { left: var(--r-zhangjiajie-photo-x); top: var(--r-zhangjiajie-photo-y); width: var(--r-zhangjiajie-photo-w); height: var(--r-zhangjiajie-photo-h); }
.r-osaka-card-copy { position: absolute; left: var(--r-osaka-card-copy-x); top: var(--r-osaka-card-copy-y); width: var(--r-osaka-card-copy-w); height: var(--r-osaka-card-copy-h); }
.r-danang-card-copy { position: absolute; left: var(--r-danang-card-copy-x); top: var(--r-danang-card-copy-y); width: var(--r-danang-card-copy-w); height: var(--r-danang-card-copy-h); }
.r-zhangjiajie-card-copy { position: absolute; left: var(--r-zhangjiajie-card-copy-x); top: var(--r-zhangjiajie-card-copy-y); width: var(--r-zhangjiajie-card-copy-w); height: var(--r-zhangjiajie-card-copy-h); }

.site-header { z-index: 20; display: flex; align-items: center; padding: 0 4.56%; background: #fff; }
.brand { display: flex; align-items: center; gap: 16px; min-width: 360px; }
.brand img { width: clamp(120px, 8.55vw, 131px); height: auto; }
.brand span { display: grid; gap: 4px; }
.brand strong { font-size: clamp(12px, 1vw, 15px); white-space: nowrap; }
.brand small { color: #59616a; font-size: clamp(9px, .72vw, 11px); }
.site-header nav { display: flex; align-items: center; justify-content: center; gap: clamp(14px, 1.5vw, 24px); flex: 1; font-weight: 700; font-size: clamp(15px, 1.05vw, 17px); }
.site-header nav a { position: relative; padding: 24px 0; white-space: nowrap; }
.site-header nav a::after { position: absolute; right: 0; bottom: 17px; left: 0; height: 2px; background: var(--orange); content: ''; transform: scaleX(0); transform-origin: left; transition: transform .2s ease-out; }
.site-header nav a:hover::after, .site-header nav a:focus-visible::after { transform: scaleX(1); }
.header-tools { display: flex; align-items: center; gap: 17px; margin-left: 36px; }
.phone { display: flex; align-items: center; gap: 9px; color: var(--orange); }
.phone svg { width: 24px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.phone span { display: grid; gap: 2px; }
.phone strong { font-size: clamp(12px, 1vw, 16px); }
.phone small { color: #4e555c; font-size: 9px; }
.icon-button { display: grid; width: 38px; height: 44px; padding: 10px; border: 0; color: var(--ink); background: transparent; place-items: center; }
.icon-button svg { width: 21px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-width: 1.8; }
.menu-button { display: none; }

.hero { position: absolute; inset: 0; color: #fff; }
.hero::before { position: absolute; z-index: 0; left: 0; top: 7.03%; width: 100%; height: 54.49%; background: var(--navy); content: ''; }
.hero-shade { position: absolute; z-index: 1; left: 0; top: 7.03%; width: 60.09%; height: 54.49%; background: rgba(2, 14, 24, .54); }
.hero .r-hero-airport-photo { z-index: 1; }
.hero-kicker { z-index: 2; margin: 0; color: #fff; font-size: clamp(10px, .91vw, 14px); font-weight: 400; letter-spacing: .01em; line-height: 1.35; }
.hero-heading { z-index: 2; margin: 0; color: #fff; font-family: NanumSquare, sans-serif; font-size: clamp(40px, 3.6vw, 55px); font-weight: 800; letter-spacing: -.035em; line-height: 1.12; }
.hero-heading strong { color: var(--orange); font-weight: inherit; }
.hero-second-line { white-space: nowrap; }
.hero-subcopy { z-index: 2; margin: 0; color: #edf1f5; font-size: clamp(13px, 1.14vw, 18px); line-height: 1.55; white-space: nowrap; }

.route-search { z-index: 3; display: grid; grid-template-columns: 1.35fr 1.15fr 1fr; overflow: hidden; border-radius: 5px; background: #fff; box-shadow: 0 14px 30px rgba(0, 0, 0, .22); }
.route-search label { display: grid; align-content: center; gap: 6px; min-width: 0; padding: 0 20px; border-right: 1px solid #e2e5e8; color: var(--ink); }
.route-search label span { font-size: clamp(9px, .76vw, 12px); font-weight: 800; }
.route-search select, .route-search input { width: 100%; min-width: 0; height: 27px; padding: 0 22px 0 0; border: 0; color: #68717c; background: transparent; font-size: clamp(10px, .88vw, 14px); outline: 0; }
.route-search input::-webkit-calendar-picker-indicator { filter: invert(43%) sepia(97%) saturate(2100%) hue-rotate(350deg); }
.route-search button { display: flex; align-items: center; justify-content: center; gap: 10px; margin: 8px; border: 0; border-radius: 3px; color: #fff; background: var(--orange); font-size: clamp(10px, .8vw, 13px); font-weight: 800; white-space: nowrap; transition: background .2s ease-out, transform .2s ease-out; }
.route-search button:hover { background: var(--orange-dark); transform: translateY(-1px); }
.route-search button svg { width: 22px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-width: 2; }
.popular { z-index: 3; display: flex; align-items: center; gap: 4px; color: #fff; background: rgba(126,73,42,.28); font-size: 10px; white-space: nowrap; }
.popular > span { margin-right: 12px; font-size: 11px; font-weight: 700; }
.popular a { padding: 5px 13px; border: 1px solid rgba(255,255,255,.52); border-radius: 999px; background: rgba(7, 27, 44, .4); transition: background .2s ease-out, border-color .2s ease-out; }
.popular a:hover { border-color: var(--orange); background: rgba(243,107,33,.86); }

.departure-board { z-index: 4; overflow: hidden; border: 1px solid #22364b; color: #f4f7fa; background: rgba(4, 17, 29, .94); box-shadow: 0 14px 32px rgba(0, 0, 0, .34); }
.js .departure-board { transition: clip-path .72s cubic-bezier(.16,1,.3,1), box-shadow .25s ease-out; }
.js:not(.is-ready) .departure-board { clip-path: inset(0 100% 0 0); }
.js.is-ready .departure-board { clip-path: inset(0); }
.board-title { display: flex; align-items: center; gap: 13px; height: 31%; padding: 10% 5% 3%; border-bottom: 1px solid #2d4052; }
.board-title svg { width: 30px; fill: var(--orange); }
.board-title strong { font-size: clamp(24px, 2.02vw, 31px); letter-spacing: -.03em; }
.board-title span { margin-left: 10px; font-size: clamp(13px, 1.14vw, 17.5px); font-weight: 700; letter-spacing: .03em; white-space: nowrap; }
.board-columns, .flight-row { display: grid; grid-template-columns: .75fr 1fr .95fr .86fr 1.55fr; align-items: center; }
.board-columns { height: 11%; padding: 0 4%; border-bottom: 1px solid #293b4c; color: #b6c0c9; font-size: clamp(8px, .72vw, 11px); }
.board-rows { position: static; height: 58%; }
.flight-row { height: 25%; padding: 0 4%; border-bottom: 1px solid #293b4c; color: #d8dee5; font-size: clamp(9px, .82vw, 13px); transition: background .18s ease-out; }
.departure-board.has-active .flight-row:not(.is-active) { opacity: .58; }
.flight-row.is-active { background: #152a3d; box-shadow: inset 3px 0 var(--orange); }
.flight-row:last-child { border-bottom: 0; }
.flight-row:hover, .flight-row:focus-visible { background: #152a3d; }
.flight-row strong { color: #fff; font-size: clamp(12px, 1.05vw, 16px); }
.flight-row b { justify-self: start; padding: 7px 9px; border-radius: 3px; color: #fff; background: var(--orange); font-size: clamp(8px, .7vw, 11px); white-space: nowrap; }
.flight-row em { overflow: hidden; color: #d0d6dc; font-size: clamp(8px, .72vw, 11px); font-style: normal; text-overflow: ellipsis; white-space: nowrap; }
.trust-strip { z-index: 4; display: grid; grid-template-columns: repeat(4, 1fr); background-color: rgba(5,18,29,.6); background-image: url('../plates/trust-strip-photo.png'); background-position: center; background-size: cover; background-blend-mode: multiply; }
.trust-strip > div { display: flex; align-items: center; justify-content: center; gap: 10px; border-right: 1px solid rgba(255,255,255,.13); color: #fff; font-size: clamp(9px, .76vw, 12px); line-height: 1.55; }
.trust-strip > div:last-child { border-right: 0; }
.trust-strip svg { width: 26px; fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; }

.recommendations { position: absolute; inset: 0; color: var(--ink); }
.recommendation-heading { z-index: 2; }
.recommendation-heading h2 { margin: 0 0 6px; font-size: clamp(20px, 1.8vw, 28px); letter-spacing: -.035em; line-height: 1.15; }
.recommendation-heading p { margin: 0; color: #7a838c; font-size: clamp(9px, .76vw, 12px); }
.view-all { position: absolute; z-index: 2; right: 4.7%; top: 68.8%; color: var(--orange); font-size: clamp(9px, .78vw, 12px); font-weight: 700; }
.trip-card > a { position: absolute; inset: 0; }
.trip-card .plate { filter: saturate(.92); transition: filter .25s ease-out, transform .35s cubic-bezier(.2,.8,.2,1); }
.trip-card > a:hover .plate { filter: saturate(1.07); transform: scale(1.018); }
.osaka-card > a { left: var(--r-osaka-photo-x); top: var(--r-osaka-photo-y); width: var(--r-osaka-photo-w); height: var(--r-osaka-photo-h); overflow: hidden; }
.danang-card > a { left: var(--r-danang-photo-x); top: var(--r-danang-photo-y); width: var(--r-danang-photo-w); height: var(--r-danang-photo-h); overflow: hidden; }
.zhangjiajie-card > a { left: var(--r-zhangjiajie-photo-x); top: var(--r-zhangjiajie-photo-y); width: var(--r-zhangjiajie-photo-w); height: var(--r-zhangjiajie-photo-h); overflow: hidden; }
.trip-card > a .plate { inset: 0; width: 100%; height: 100%; }
.trip-card > a::after { position: absolute; inset: 42% 0 0; background: rgba(5, 15, 24, .48); content: ''; }
.status, .country { position: absolute; z-index: 2; top: 12px; padding: 7px 10px; color: #fff; font-size: clamp(8px, .72vw, 11px); font-weight: 800; }
.status { left: 14px; background: var(--orange); }
.status.available { background: #ef741f; }
.country { right: 14px; background: rgba(7,27,44,.62); }
.photo-copy { position: absolute; z-index: 2; right: 18px; bottom: 17px; left: 18px; color: #fff; }
.photo-copy h3 { margin: 0 0 6px; font-size: clamp(19px, 1.75vw, 27px); letter-spacing: -.03em; }
.photo-copy p { overflow: hidden; margin: 0; font-size: clamp(9px, .76vw, 12px); text-overflow: ellipsis; white-space: nowrap; }
.card-meta { z-index: 3; display: grid; grid-template-columns: 1.5fr 1fr auto; align-items: center; color: #253241; background: #fff; font-size: clamp(8px, .72vw, 11px); }
.card-meta span:nth-child(2) { text-align: center; }
.card-meta strong { color: var(--orange); font-size: clamp(14px, 1.35vw, 21px); text-align: right; }
.data-note { position: absolute; right: 4.7%; bottom: 1.2%; margin: 0; color: #6c7680; font-size: 10px; }

.below-fold { background: #fff; }
.schedule-section, .airport-guide { padding: 110px max(5vw, calc((100vw - 1392px) / 2)); }
.section-intro, .guide-heading { display: grid; grid-template-columns: 1.1fr 1fr; align-items: end; gap: 12px 60px; margin-bottom: 44px; }
.section-intro h2, .guide-heading h2 { margin: 0; font-size: clamp(32px, 3vw, 48px); letter-spacing: -.04em; line-height: 1.18; }
.section-intro > span, .guide-heading > span { max-width: 55ch; color: #63707d; font-size: 15px; line-height: 1.8; }
.schedule-list { border-top: 2px solid var(--ink); }
.schedule-list > a { display: grid; grid-template-columns: 150px 1.35fr .65fr .65fr .7fr; align-items: center; min-height: 126px; border-bottom: 1px solid #ccd3d9; transition: color .2s ease-out, background .2s ease-out; }
.schedule-list > a:hover { color: var(--orange); background: #fff7f1; }
.schedule-list time { display: flex; align-items: center; gap: 16px; font-variant-numeric: tabular-nums; }
.schedule-list time b { font-size: 48px; letter-spacing: -.06em; }
.schedule-list time span { color: #697580; font-size: 12px; }
.schedule-list div { display: grid; gap: 7px; }
.schedule-list div span { color: #697580; font-size: 12px; letter-spacing: .12em; }
.schedule-list div strong { font-size: 25px; }
.schedule-destination { display: flex; align-items: center; gap: 10px; margin: 0; }
.schedule-country { flex: 0 0 auto; padding: 5px 8px; border-radius: 2px; color: #fff; background: #a24f20; font-size: 10px; font-weight: 800; letter-spacing: .08em; line-height: 1; white-space: nowrap; }
.schedule-country[data-country="중국"] { background: #b83a32; }
.schedule-country[data-country="일본"] { background: #315c9c; }
.schedule-country[data-country="베트남"] { background: #16705b; }
.schedule-country[data-country="대만"] { background: #70488c; }
.schedule-country[data-country="태국"] { background: #604b92; }
.schedule-country[data-country="몽골"] { background: #7a5a1f; }
.schedule-country[data-country="필리핀"] { background: #1c6280; }
.schedule-country[data-country="싱가포르"] { background: #98364a; }
.schedule-list > a > p { margin: 0; color: #51606d; }
.schedule-list em { justify-self: start; padding: 8px 11px; color: #fff; background: var(--orange); font-size: 12px; font-style: normal; font-weight: 700; }
.schedule-list > a > strong { justify-self: end; color: var(--orange); font-size: 21px; font-variant-numeric: tabular-nums; }
.sample-note { margin: 14px 0 0; color: #7b858e; font-size: 11px; text-align: right; }

.airport-guide { color: #fff; background: var(--navy); }
.guide-heading > span { color: #b3bec8; }
.guide-grid { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid #34485b; border-bottom: 1px solid #34485b; }
.guide-grid a { position: relative; display: flex; align-items: center; min-height: 190px; padding: 34px; border-right: 1px solid #34485b; transition: background .2s ease-out; }
.guide-grid a:last-child { border-right: 0; }
.guide-grid a:hover { background: #102a40; }
.guide-grid svg { width: 45px; margin-right: 24px; fill: none; stroke: var(--orange); stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5; }
.guide-grid span { display: grid; gap: 9px; }
.guide-grid b { font-size: 20px; }
.guide-grid small { color: #aeb9c3; font-size: 13px; }

.consultation { display: grid; grid-template-columns: 1.25fr 1fr auto; align-items: center; gap: 50px; padding: 82px max(5vw, calc((100vw - 1392px) / 2)); color: var(--ink); background: #f3eee8; }
.consultation h2 { margin: 0; font-size: clamp(27px, 2.45vw, 39px); letter-spacing: -.04em; line-height: 1.3; }
.consultation p { margin: 0; color: #5e6872; font-size: 15px; line-height: 1.8; }
.consultation-actions { display: grid; gap: 10px; min-width: 230px; }
.consultation-actions a { display: flex; min-height: 58px; align-items: center; justify-content: center; gap: 12px; padding: 14px 22px; color: #fff; font-size: 16px; font-weight: 800; white-space: nowrap; transition: background .2s ease-out, transform .2s ease-out; }
.consultation-actions a:hover { transform: translateY(-2px); }
.consultation-actions a:focus-visible { outline: 3px solid #fff; outline-offset: -6px; }
.consultation-actions a svg { width: 22px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; }
.consultation-phone { background: var(--orange); }
.consultation-phone:hover { background: var(--orange-dark); }
.consultation-chat { background: #087b49; }
.consultation-chat:hover { background: #06663d; }

.site-footer { display: grid; grid-template-columns: 1fr auto; gap: 20px 48px; padding: 36px max(5vw, calc((100vw - 1392px) / 2)); color: #9eabb6; background: #06131f; font-size: 12px; }
.site-footer > div { display: flex; align-items: center; gap: 22px; }
.footer-brand p { margin: 0; color: #d8dfe5; font-weight: 700; }
.site-footer nav { display: flex; align-items: center; gap: 24px; color: #d8dfe5; }
.footer-company { grid-column: 1 / -1; border-top: 1px solid #263746; border-bottom: 1px solid #263746; }
.footer-company summary { display: flex; width: fit-content; min-height: 58px; align-items: center; gap: 12px; color: #f2f5f7; cursor: pointer; list-style: none; font-size: 14px; font-weight: 800; }
.footer-company summary::-webkit-details-marker { display: none; }
.footer-company summary span { width: 8px; height: 8px; margin-top: -5px; border-right: 2px solid var(--orange); border-bottom: 2px solid var(--orange); transform: rotate(45deg); transition: transform .2s ease-out; }
.footer-company[open] summary span { margin-top: 5px; transform: rotate(225deg); }
.footer-company > div { padding: 0 0 24px; color: #aeb9c2; line-height: 1.8; }
.footer-company p { margin: 6px 0; }
.footer-company strong { color: #e7edf1; }
.footer-company i { display: inline-block; width: 1px; height: 10px; margin: 0 10px; background: #455563; vertical-align: -1px; }
.site-footer > .footer-copyright { grid-column: 1 / -1; margin: -4px 0 0; color: #7f8d98; }
.site-notice { position: fixed; z-index: 90; right: 24px; bottom: 24px; display: flex; align-items: flex-start; width: min(440px, calc(100vw - 32px)); padding: 20px 22px; color: #fff; background: var(--navy); box-shadow: 0 16px 38px rgba(7,27,44,.28); }
.site-notice strong { display: block; margin-bottom: 6px; font-size: 17px; }
.site-notice p { margin: 0; color: #c8d4dc; line-height: 1.55; }
.site-notice a { display: inline-block; margin-top: 10px; color: var(--orange); font-weight: 800; }
.site-notice button { width: 42px; height: 42px; margin: -10px -12px 0 10px; border: 0; color: #fff; background: transparent; font-size: 26px; cursor: pointer; }

@media (max-width: 1100px) {
  .comp-frame { min-width: 0; aspect-ratio: auto; overflow: visible; }
  .site-header { position: relative; left: auto; top: auto; width: 100%; height: 72px; padding: 0 24px; }
  .brand { min-width: 0; }
  .brand span { display: none; }
  .site-header nav { position: absolute; z-index: 50; top: 72px; right: 0; left: 0; display: none; padding: 20px 24px; color: #fff; background: var(--navy); }
  .site-header nav.is-open { display: grid; grid-template-columns: repeat(2, 1fr); }
  .site-header nav a { padding: 13px 0; }
  .header-tools { margin-left: auto; }
  .phone span { display: none; }
  .menu-button { display: grid; }

  .hero { position: relative; inset: auto; display: grid; gap: 22px; min-height: 0; padding: 78px 24px 30px; background: var(--navy); }
  .hero::before, .hero-shade { inset: 0; width: 100%; height: 100%; }
  .hero .r-hero-airport-photo { inset: 0; width: 100%; height: 100%; opacity: .82; }
  .hero-kicker, .hero-heading, .hero-subcopy, .route-search, .popular, .departure-board, .trust-strip { position: relative; inset: auto; width: 100%; height: auto; }
  .hero-kicker { font-size: 12px; }
  .hero-heading { max-width: 720px; font-size: clamp(44px, 7vw, 64px); }
  .hero-subcopy { font-size: 15px; white-space: normal; }
  .route-search { grid-template-columns: 1fr 1fr; min-height: 150px; margin-top: 10px; }
  .route-search label { min-height: 70px; }
  .route-search button { min-height: 54px; }
  .popular { flex-wrap: wrap; padding: 8px 0; background: transparent; }
  .popular > span { width: 100%; }
  .departure-board { min-height: 365px; margin-top: 20px; }
  .board-title { height: 105px; padding: 38px 5% 16px; }
  .board-columns { height: 40px; }
  .board-rows { height: 220px; }
  .trust-strip { min-height: 115px; }

  .recommendations { position: relative; inset: auto; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 22px; padding: 70px 24px; background: #fff; }
  .recommendation-heading { position: static; grid-column: 1 / -1; width: auto; height: auto; }
  .recommendation-heading h2 { font-size: 30px; }
  .view-all { position: static; grid-column: 1 / -1; grid-row: 2; justify-self: end; }
  .trip-card { position: relative; display: grid; min-width: 0; }
  .trip-card > a, .osaka-card > a, .danang-card > a, .zhangjiajie-card > a { position: relative; inset: auto; display: block; width: 100%; height: 230px; }
  .card-meta, .r-osaka-card-copy, .r-danang-card-copy, .r-zhangjiajie-card-copy { position: relative; inset: auto; width: 100%; height: 68px; padding: 0 14px; }
  .card-meta { grid-template-columns: 1.35fr 1fr auto; }
  .data-note { position: static; grid-column: 1 / -1; justify-self: end; }

  .schedule-section, .airport-guide { padding: 80px 24px; }
  .section-intro, .guide-heading { grid-template-columns: 1fr; }
  .schedule-list > a { grid-template-columns: 120px 1.2fr .7fr .7fr; padding: 14px 0; }
  .schedule-list > a > strong { display: none; }
  .guide-grid { grid-template-columns: 1fr; }
  .guide-grid a { min-height: 140px; border-right: 0; border-bottom: 1px solid #34485b; }
  .guide-grid a:last-child { border-bottom: 0; }
  .consultation { grid-template-columns: 1fr; padding: 70px 24px; }
  .consultation-actions { justify-self: start; width: min(100%, 320px); }
  .site-footer { grid-template-columns: 1fr; padding: 34px 24px; }
  .site-footer nav { flex-wrap: wrap; }
  .site-notice { right: 16px; bottom: 16px; }
}

@media (max-width: 640px) {
  .site-header { height: 64px; padding: 0 16px; }
  .brand img { width: 112px; }
  .header-tools { gap: 4px; }
  .icon-button { width: 40px; }
  .phone { min-height: 44px; padding: 0 10px; gap: 5px; border-radius: 8px; color: #fff; background: var(--orange); }
  .phone svg { width: 17px; }
  .phone span { display: block; }
  .phone strong { font-size: 13px; letter-spacing: -.02em; white-space: nowrap; }
  .phone small { display: none; }
  .site-header nav { top: 64px; }
  .hero { padding: 52px 16px 24px; }
  .hero-heading { font-size: 39px; line-height: 1.16; }
  .hero-second-line { display: inline-block; font-size: 33px; letter-spacing: -.05em; }
  .hero-subcopy { font-size: 14px; line-height: 1.7; }
  .route-search, .popular { display: none; }
  .route-search { grid-template-columns: 1fr; min-height: 0; }
  .route-search label { min-height: 68px; border-right: 0; border-bottom: 1px solid #e2e5e8; }
  .route-search button { min-height: 56px; }
  .popular a { padding: 6px 10px; }
  .departure-board { min-height: 398px; }
  .board-title { height: 95px; padding: 34px 16px 14px; }
  .board-title span { overflow: hidden; font-size: 13px; text-overflow: ellipsis; }
  .board-columns, .flight-row { grid-template-columns: .8fr 1fr 1fr .9fr; }
  .board-columns span:last-child, .flight-row em { display: none; }
  .board-columns { padding: 0 12px; }
  .flight-row { padding: 0 12px; }
  .flight-row b { padding: 6px; font-size: 9px; }
  .board-rows { height: 260px; }
  .trust-strip { grid-template-columns: repeat(2, 1fr); min-height: 210px; }
  .trust-strip > div { min-height: 105px; border-bottom: 1px solid rgba(255,255,255,.13); }

  .recommendations { grid-template-columns: 1fr; padding: 58px 16px; }
  .recommendation-heading h2 { font-size: 27px; }
  .trip-card > a, .osaka-card > a, .danang-card > a, .zhangjiajie-card > a { height: 220px; }
  .photo-copy h3 { font-size: 24px; }
  .card-meta { grid-template-columns: 1fr auto; gap: 8px; }
  .card-meta span:nth-child(2) { display: none; }
  .card-meta strong { font-size: 17px; }
  .data-note { justify-self: start; line-height: 1.5; }

  .schedule-section, .airport-guide { padding: 64px 16px; }
  .section-intro h2, .guide-heading h2 { font-size: 31px; }
  .schedule-list > a { grid-template-columns: 72px 1fr auto; min-height: 104px; gap: 10px; }
  .schedule-list time { display: grid; gap: 2px; }
  .schedule-list time b { font-size: 34px; }
  .schedule-list > a > p { display: none; }
  .schedule-list em { padding: 7px; font-size: 10px; }
  .sample-note { text-align: left; line-height: 1.5; }
  .guide-grid a { padding: 26px 20px; }
  .guide-grid small { line-height: 1.5; }
  .consultation { gap: 28px; padding: 58px 16px; }
  .consultation h2 { font-size: 29px; }
  .consultation-actions { width: 100%; }
  .consultation-actions a { width: 100%; }
  .site-footer { padding: 28px 16px; }
  .site-footer > div { display: grid; }
  .site-footer nav { gap: 14px 20px; }
}

@media (max-width: 360px) {
  .site-header { padding: 0 10px; }
  .brand img { width: 92px; }
  .header-tools { gap: 2px; }
  .icon-button { width: 36px; padding: 8px; }
  .phone { padding: 0 7px; }
  .phone strong { font-size: 12px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

/* Cheongju departure calendar */
.calendar-page { width: min(1320px, calc(100% - 48px)); margin: 0 auto; padding-bottom: 100px; }
.calendar-intro { display: flex; align-items: end; justify-content: space-between; gap: 40px; padding: 70px 0 34px; border-bottom: 2px solid var(--ink); }
.calendar-intro p, .calendar-results header p { margin: 0 0 9px; color: var(--orange-dark); font-size: 11px; font-weight: 800; letter-spacing: .12em; }
.calendar-intro h1 { margin: 0; font-size: clamp(36px, 4vw, 58px); letter-spacing: -.045em; line-height: 1.14; }
.calendar-intro div > span { display: block; margin-top: 15px; color: #5f6c77; line-height: 1.7; }
.calendar-intro > a { flex: 0 0 auto; padding: 13px 0; border-bottom: 2px solid var(--orange); font-weight: 800; }
.travel-calendar { margin-top: 30px; border-top: 6px solid var(--navy); background: #fff; box-shadow: 0 16px 38px rgba(7,27,44,.08); }
.calendar-toolbar { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; min-height: 90px; padding: 0 28px; border-bottom: 1px solid #d9e0e4; }
.calendar-toolbar h2 { margin: 0; font-size: 29px; letter-spacing: -.035em; }
.calendar-toolbar a { display: flex; align-items: center; gap: 10px; color: #53616d; font-size: 13px; font-weight: 800; }
.calendar-toolbar a:last-child { justify-self: end; }
.calendar-toolbar a span { color: var(--orange); font-size: 21px; }
.calendar-weekdays, .calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.calendar-weekdays { min-height: 44px; align-items: center; border-bottom: 1px solid #d9e0e4; color: #66737d; background: #f1f4f6; text-align: center; font-size: 12px; font-weight: 800; }
.calendar-weekdays span:first-child { color: #cc4d3e; }
.calendar-weekdays span:last-child { color: #3e6f9f; }
.calendar-day { min-width: 0; min-height: 138px; border-right: 1px solid #e0e5e8; border-bottom: 1px solid #e0e5e8; background: #fff; }
.calendar-day:nth-child(7n) { border-right: 0; }
.calendar-day.is-empty { background: #f8f9fa; }
.calendar-day-head { display: flex; min-height: 43px; align-items: center; justify-content: space-between; padding: 7px 9px; }
.calendar-day-head time { display: grid; width: 28px; height: 28px; color: #5d6973; place-items: center; font-size: 13px; font-weight: 800; }
.calendar-day-head a { padding: 6px 3px; color: var(--orange-dark); font-size: 10px; font-weight: 800; }
.calendar-day.is-today .calendar-day-head time { border-radius: 50%; color: #fff; background: var(--orange); }
.calendar-day.is-selected { box-shadow: inset 0 0 0 3px var(--orange); }
.calendar-preview { display: grid; gap: 5px; padding: 0 8px 10px; }
.calendar-region { display: grid; grid-template-columns: minmax(0, 1fr) auto; min-height: 29px; align-items: center; gap: 7px; padding: 5px 8px; color: var(--region-fg); background: var(--region-bg); transition: filter .18s ease-out, transform .18s ease-out; }
.calendar-region:hover { filter: brightness(.9); transform: translateY(-1px); }
.calendar-region:focus-visible { outline-color: #ff9d63; outline-offset: 2px; }
.calendar-region.is-active { box-shadow: inset 0 0 0 2px #fff, inset 0 0 0 4px var(--region-bg); filter: saturate(1.15); }
.calendar-region b { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.calendar-region small { min-width: 16px; font-size: 9px; font-weight: 800; text-align: right; }
.calendar-results { padding-top: 70px; }
.calendar-results > header { display: flex; align-items: end; justify-content: space-between; gap: 24px; padding-bottom: 20px; border-bottom: 2px solid var(--ink); }
.calendar-results h2 { margin: 0; font-size: 31px; letter-spacing: -.035em; }
.calendar-results > header > a { padding: 10px 12px; border: 1px solid #c8d0d6; background: #fff; font-size: 12px; font-weight: 800; }
.calendar-product-list > a { display: grid; grid-template-columns: 90px minmax(0, 1fr) 90px 150px; align-items: center; gap: 24px; min-height: 118px; padding: 18px 20px; border-bottom: 1px solid #d9e0e4; background: #fff; transition: background .18s ease-out; }
.calendar-product-list > a:hover { background: #fff7f1; }
.calendar-product-list time { display: flex; align-items: baseline; gap: 7px; font-variant-numeric: tabular-nums; }
.calendar-product-list time b { color: var(--orange-dark); font-size: 38px; }
.calendar-product-list time span { color: #65727d; font-size: 12px; }
.calendar-product-list > a > div { display: grid; gap: 7px; min-width: 0; }
.calendar-product-list small { color: var(--orange-dark); font-weight: 800; }
.calendar-product-list div strong { overflow: hidden; font-size: 18px; text-overflow: ellipsis; white-space: nowrap; }
.calendar-product-list div span { color: #65727d; font-size: 12px; }
.calendar-product-list em { justify-self: start; padding: 8px 9px; color: #fff; background: var(--orange); font-size: 11px; font-style: normal; font-weight: 800; }
.calendar-product-list em.closed { background: #687580; }
.calendar-price { justify-self: end; color: var(--orange-dark); font-size: 18px; text-align: right; font-variant-numeric: tabular-nums; }
.calendar-empty { display: grid; justify-items: center; gap: 10px; padding: 72px 20px; background: #fff; text-align: center; }
.calendar-empty strong { font-size: 21px; }
.calendar-empty p { margin: 0; color: #65727d; }
.calendar-empty a { margin-top: 12px; padding: 13px 18px; color: #fff; background: var(--orange); font-weight: 800; }

@media (max-width: 700px) {
  .calendar-page { width: min(100% - 28px, 1320px); padding-bottom: 65px; }
  .calendar-intro { display: block; padding: 46px 0 27px; }
  .calendar-intro h1 { font-size: 35px; }
  .calendar-intro > a { display: inline-block; margin-top: 18px; }
  .calendar-toolbar { min-height: 76px; padding: 0 13px; }
  .calendar-toolbar h2 { font-size: 22px; }
  .calendar-toolbar a { font-size: 11px; }
  .calendar-day { min-height: 74px; }
  .calendar-day-head { min-height: 35px; padding: 4px; }
  .calendar-day-head time { width: 24px; height: 24px; font-size: 10px; }
  .calendar-day-head a { padding: 5px 2px; font-size: 8px; }
  .calendar-preview { gap: 3px; padding: 0 3px 5px; }
  .calendar-region { grid-template-columns: minmax(0, 1fr); min-height: 25px; gap: 0; padding: 4px 3px; text-align: center; }
  .calendar-region b { font-size: 8px; }
  .calendar-region small { display: none; }
  .calendar-results { padding-top: 50px; }
  .calendar-results > header { align-items: start; }
  .calendar-results h2 { font-size: 24px; }
  .calendar-product-list > a { grid-template-columns: 56px minmax(0, 1fr) auto; gap: 11px; min-height: 104px; padding: 15px 10px; }
  .calendar-product-list time { display: grid; gap: 0; }
  .calendar-product-list time b { font-size: 30px; }
  .calendar-product-list div strong { font-size: 15px; white-space: normal; }
  .calendar-product-list em { padding: 6px; font-size: 9px; }
  .calendar-price { display: none; }
}

/* Shared inner-page system */
.inner-page { background: #f5f6f7; }
.inner-page, .inner-page button, .inner-page input, .inner-page select { font-family: NanumSquare, "Apple SD Gothic Neo", "Noto Sans KR", sans-serif; }
.inner-header { position: sticky; z-index: 60; top: 0; min-height: 74px; box-shadow: 0 8px 26px rgba(7, 27, 44, .08); }
.catalog-page, .product-page, .booking-page, .payment-page, .reservation-page { width: min(1320px, calc(100% - 48px)); margin: 0 auto; }
.catalog-intro { display: flex; align-items: end; justify-content: space-between; gap: 40px; padding: 78px 0 38px; border-bottom: 2px solid var(--ink); }
.catalog-intro h1, .product-summary h1, .booking-form h1, .payment-panel h1 { margin: 0; font-size: clamp(34px, 4vw, 58px); letter-spacing: -.04em; line-height: 1.14; }
.catalog-intro p { margin: 14px 0 0; color: #5b6874; font-size: 16px; }
.catalog-intro > strong { color: var(--orange); font-size: 52px; font-variant-numeric: tabular-nums; }
.catalog-intro > strong small { display: block; margin-top: 4px; color: #64717c; font-size: 11px; text-align: right; }
.catalog-filter { display: grid; grid-template-columns: 1.5fr 1fr auto auto; align-items: end; gap: 14px; padding: 26px; margin: 30px 0 20px; color: #fff; background: var(--navy); }
.catalog-filter label { display: grid; gap: 8px; }
.catalog-filter label > span { color: #c6d0d8; font-size: 11px; font-weight: 700; }
.catalog-filter input { width: 100%; min-height: 48px; padding: 0 14px; border: 1px solid #405264; border-radius: 4px; color: var(--ink); background: #fff; }
.catalog-filter .check-filter { display: flex; min-height: 48px; align-items: center; gap: 8px; padding: 0 8px; white-space: nowrap; }
.catalog-filter .check-filter input { width: 18px; min-height: auto; accent-color: var(--orange); }
.catalog-filter .check-filter span { color: #fff; font-size: 13px; }
.catalog-filter button { min-height: 48px; padding: 0 24px; border: 0; border-radius: 4px; color: #fff; background: var(--orange); font-weight: 800; }
.region-nav { display: flex; gap: 8px; overflow-x: auto; padding: 0 0 26px; scrollbar-width: thin; }
.region-nav a { display: flex; align-items: center; gap: 8px; min-height: 42px; padding: 0 15px; border: 1px solid #cbd2d8; border-radius: 999px; background: #fff; white-space: nowrap; }
.region-nav a.is-active { border-color: var(--navy); color: #fff; background: var(--navy); }
.region-nav small { color: var(--orange); font-size: 10px; }
.catalog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 34px 22px; padding: 18px 0 34px; }
.catalog-card { min-width: 0; scroll-margin-top: 94px; background: #fff; box-shadow: 0 16px 34px rgba(7, 27, 44, .09); }
.catalog-photo { position: relative; display: block; height: 250px; overflow: hidden; background: #dfe5e9; }
.catalog-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s cubic-bezier(.16,1,.3,1); }
.catalog-card:hover .catalog-photo img { transform: scale(1.035); }
.product-status { position: absolute; top: 14px; left: 14px; padding: 8px 10px; color: #fff; background: var(--orange); font-size: 11px; font-weight: 800; }
.product-status.closed { background: #5c6873; }
.catalog-copy { padding: 24px; }
.catalog-copy > p, .product-summary > p { margin: 0 0 10px; color: var(--orange); font-size: 12px; font-weight: 800; }
.catalog-copy h2 { min-height: 58px; margin: 0; font-size: 20px; letter-spacing: -.025em; line-height: 1.45; }
.catalog-copy dl, .product-summary dl, .booking-summary dl, .payment-panel dl { display: grid; gap: 9px; margin: 22px 0; }
.catalog-copy dl div, .product-summary dl div, .booking-summary dl div, .payment-panel dl div { display: flex; justify-content: space-between; gap: 18px; }
.catalog-copy dt, .product-summary dt, .booking-summary dt, .payment-panel dt { color: #75808b; font-size: 12px; }
.catalog-copy dd, .product-summary dd, .booking-summary dd, .payment-panel dd { margin: 0; font-size: 13px; font-weight: 700; text-align: right; }
.catalog-price { display: flex; align-items: end; justify-content: space-between; gap: 12px; padding-top: 18px; border-top: 1px solid #e0e4e7; }
.catalog-price span { color: #6b7782; font-size: 11px; }
.catalog-price strong { color: var(--orange); font-size: 21px; }
.catalog-more { display: flex; width: min(100%, 420px); min-height: 62px; align-items: center; justify-content: center; gap: 14px; padding: 10px 22px; margin: 8px auto 90px; border: 1px solid #b8c5ce; color: var(--navy); background: #fff; font-weight: 800; transition: border-color .18s ease-out, background .18s ease-out; }
.catalog-more:hover { border-color: var(--navy); background: #edf2f5; }
.catalog-more[aria-busy="true"] { pointer-events: none; opacity: .65; }
.catalog-more span { font-size: 15px; }
.catalog-more small { color: #65727d; font-size: 10px; font-weight: 700; }
.catalog-more i { width: 9px; height: 9px; margin-top: -5px; border-right: 2px solid var(--orange-dark); border-bottom: 2px solid var(--orange-dark); transform: rotate(45deg); }
.empty-state { display: grid; justify-items: center; gap: 15px; padding: 90px 24px; text-align: center; }
.empty-state h1, .empty-state h2 { margin: 0; font-size: 34px; }
.empty-state p { margin: 0; color: #65717c; line-height: 1.7; }
.empty-state a { padding: 14px 20px; color: #fff; background: var(--orange); font-weight: 700; }
.page-empty { min-height: 55vh; align-content: center; }

.breadcrumbs { display: flex; gap: 9px; padding: 28px 0 20px; color: #68747f; font-size: 12px; }
.breadcrumbs b { color: var(--ink); }
.product-hero { display: grid; grid-template-columns: minmax(0, 1.12fr) minmax(360px, .88fr); min-height: 600px; margin-bottom: 70px; background: #fff; box-shadow: 0 18px 45px rgba(7, 27, 44, .1); }
.product-visual { position: relative; min-height: 520px; overflow: hidden; background: var(--navy); }
.product-visual img { width: 100%; height: 100%; object-fit: cover; }
.product-gallery { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(145px, .72fr); grid-template-rows: repeat(3, 1fr); gap: 4px; }
.product-gallery-item { position: relative; min-width: 0; min-height: 0; padding: 0; overflow: hidden; border: 0; background: #d8e0e5; cursor: zoom-in; }
.product-gallery-item:first-child { grid-row: 1 / -1; }
.product-gallery-item img { display: block; transition: transform .35s ease-out, filter .35s ease-out; }
.product-gallery-item:hover img, .product-gallery-item:focus-visible img { transform: scale(1.035); filter: saturate(1.06) contrast(1.02); }
.product-gallery .product-status { position: absolute; z-index: 2; top: 20px; left: 20px; pointer-events: none; }
.product-gallery-count { position: absolute; z-index: 2; right: 16px; bottom: 16px; padding: 8px 11px; border: 1px solid rgba(255,255,255,.35); border-radius: 999px; color: #fff; background: rgba(7,27,44,.84); box-shadow: 0 6px 18px rgba(0,0,0,.2); font-size: 10px; font-weight: 800; letter-spacing: .12em; pointer-events: none; }
.product-gallery-dialog { width: min(94vw, 1240px); max-width: none; padding: 0; overflow: visible; border: 0; background: transparent; }
.product-gallery-dialog::backdrop { background: rgba(2,14,25,.9); }
.product-gallery-stage { position: relative; display: grid; place-items: center; min-height: 80vh; }
.product-gallery-stage figure { margin: 0; overflow: hidden; border-radius: 4px; background: #071b2d; box-shadow: 0 24px 70px rgba(0,0,0,.45); }
.product-gallery-stage figure img { display: block; width: auto; max-width: min(88vw, 1180px); height: auto; max-height: 78vh; object-fit: contain; }
.product-gallery-stage figcaption { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 12px 16px; color: #fff; background: #071b2d; font-size: 12px; }
.product-gallery-stage figcaption span { color: #aab8c4; font-weight: 700; }
.product-gallery-close, .product-gallery-nav { position: absolute; z-index: 2; display: grid; place-items: center; width: 48px; height: 48px; border: 1px solid rgba(255,255,255,.35); border-radius: 999px; color: #fff; background: rgba(7,27,44,.84); font-size: 30px; line-height: 1; cursor: pointer; }
.product-gallery-close { top: 4px; right: 4px; font-size: 28px; }
.product-gallery-nav { top: 50%; transform: translateY(-50%); }
.product-gallery-nav.is-prev { left: 4px; }
.product-gallery-nav.is-next { right: 4px; }
.product-gallery-close:hover, .product-gallery-nav:hover { background: var(--orange-dark); }
.product-summary { display: flex; flex-direction: column; justify-content: center; padding: 58px; border-top: 6px solid var(--navy); }
.product-summary h1 { font-size: clamp(26px, 2.3vw, 37px); line-height: 1.22; }
.product-summary dl { padding: 22px 0; border-top: 1px solid #dfe3e6; border-bottom: 1px solid #dfe3e6; }
.product-flight-info .trip-period { align-items: center; }
.product-summary .product-flight-info .flight-detail { align-items: flex-start; }
.product-flight-info .flight-detail dd { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; min-width: 0; text-align: left; }
.product-flight-info .flight-detail dd strong { font-size: 13px; font-variant-numeric: tabular-nums; }
.product-flight-info .flight-detail dd span { grid-column: 1 / -1; color: #4c5b67; font-size: 12px; font-weight: 700; }
.product-flight-info .flight-detail dd small { grid-column: 2; grid-row: 1; align-self: center; color: var(--orange-dark); font-size: 11px; font-weight: 800; }
.summary-price { display: flex; align-items: end; justify-content: space-between; gap: 18px; margin: 4px 0 28px; }
.summary-price span { color: #67747e; font-size: 12px; }
.summary-price strong { color: var(--orange); font-size: 27px; }
.summary-options { margin: 4px 0 28px; border-top: 2px solid var(--ink); border-bottom: 1px solid #dfe3e6; }
.summary-options > header { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 11px 0; }
.summary-options > header strong { font-size: 14px; }
.summary-options > header small { color: #67747e; font-size: 10px; }
.summary-options ul { padding: 0; margin: 0; list-style: none; }
.summary-options li { display: grid; grid-template-columns: minmax(74px, .8fr) repeat(3, minmax(82px, 1fr)); align-items: center; gap: 10px; padding: 10px 0; border-top: 1px solid #e1e5e8; }
.summary-options li > b { font-size: 13px; }
.summary-options li > span { display: grid; gap: 3px; text-align: right; }
.summary-options li small { color: #76828c; font-size: 9px; }
.summary-options li strong { color: var(--orange-dark); font-size: 12px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.primary-action, .secondary-action { display: flex; align-items: center; justify-content: center; min-height: 56px; padding: 0 24px; border: 0; color: #fff; background: var(--orange); font-weight: 800; }
.primary-action:hover { background: var(--orange-dark); }
.primary-action.is-disabled { background: #65717c; }
.secondary-action { color: var(--navy); background: #e7ecef; }
.live-chat-action { display: flex; min-height: 62px; align-items: center; justify-content: center; gap: 13px; padding: 10px 22px; margin-top: 10px; color: #fff; background: #0b8f4f; transition: background .18s ease-out, transform .18s ease-out; }
.live-chat-action:hover { background: #087441; transform: translateY(-1px); }
.live-chat-action svg { width: 25px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; }
.live-chat-action span { display: grid; gap: 2px; }
.live-chat-action strong { font-size: 15px; }
.live-chat-action small { color: #d9f5e6; font-size: 10px; font-weight: 700; }
.departure-selector { padding: 0 0 80px; }
.departure-selector > header, .detail-heading { margin-bottom: 26px; }
.departure-selector h2, .detail-heading h2 { margin: 0; font-size: 34px; letter-spacing: -.035em; }
.departure-selector header p { margin: 8px 0 0; color: #68747e; }
.departure-table { border-top: 2px solid var(--ink); background: #fff; }
.departure-line { display: grid; grid-template-columns: 1.05fr .7fr .65fr minmax(300px, 1.45fr); align-items: center; gap: 15px; min-height: 84px; padding: 12px 20px; border-bottom: 1px solid #dce2e6; }
.departure-line time { font-size: 17px; font-weight: 800; font-variant-numeric: tabular-nums; }
.departure-line b { justify-self: start; padding: 7px 9px; color: #fff; background: var(--orange); font-size: 11px; }
.departure-line.closed b { background: #67737d; }
.departure-line > strong { color: var(--orange); font-size: 18px; text-align: right; }
.departure-line > a, .closed-label { display: grid; min-height: 42px; align-items: center; justify-content: center; color: #fff; background: var(--navy); font-size: 12px; font-weight: 800; }
.departure-booking { display: grid; grid-template-columns: minmax(0, 1fr) 92px; gap: 8px; }
.departure-booking label { min-width: 0; }
.departure-booking select { width: 100%; min-height: 44px; padding: 0 34px 0 12px; border: 1px solid #aeb9c1; border-radius: 3px; color: var(--ink); background: #fff; font: inherit; font-size: 12px; font-weight: 700; }
.departure-booking button { min-height: 44px; border: 0; border-radius: 3px; color: #fff; background: var(--navy); font-size: 12px; font-weight: 800; cursor: pointer; }
.departure-booking button:hover { background: var(--orange-dark); }
.closed-label { color: #75808a; background: #edf0f2; }
.departure-line[hidden] { display: none; }
.departure-more { display: flex; width: 100%; min-height: 54px; align-items: center; justify-content: center; gap: 12px; border: 0; border-bottom: 1px solid #dce2e6; color: var(--navy); background: #eef2f4; font-weight: 800; }
.departure-more:hover { background: #e4eaee; }
.departure-more i { width: 9px; height: 9px; margin-top: -5px; border-right: 2px solid var(--orange-dark); border-bottom: 2px solid var(--orange-dark); transform: rotate(45deg); transition: transform .2s ease-out; }
.departure-more[aria-expanded="true"] i { margin-top: 5px; transform: rotate(225deg); }
.product-content { padding-bottom: 110px; }
.product-content > nav { position: sticky; z-index: 30; top: 74px; display: flex; gap: 0; border: 1px solid #d9dfe3; background: #fff; }
.product-content > nav a { flex: 1; padding: 18px; border-right: 1px solid #d9dfe3; font-weight: 700; text-align: center; }
.product-content > nav a:last-child { border-right: 0; }
.product-content article { padding: 72px max(24px, 6%); margin-top: 20px; background: #fff; scroll-margin-top: 150px; }
.legacy-content, .terms-content { max-width: 100%; overflow: hidden; color: #24313e; line-height: 1.8; }
.legacy-content img { max-width: 100% !important; height: auto !important; }
.legacy-content table { max-width: 100% !important; }
.terms-content { max-height: 520px; overflow-y: auto; padding: 24px; background: #f4f6f7; }
.detail-heading { display: flex; align-items: end; justify-content: space-between; gap: 28px; padding-bottom: 20px; border-bottom: 1px solid #aeb9c1; }
.detail-heading h2 { display: flex; align-items: center; gap: 14px; line-height: 1.2; text-wrap: balance; }
.detail-heading h2::before { flex: 0 0 auto; width: 10px; height: 10px; background: var(--orange); content: ''; transform: rotate(45deg); }
.detail-heading p { max-width: 42ch; margin: 0; color: #5f6d78; font-size: 14px; line-height: 1.65; text-align: right; }
.detail-item-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.detail-card { min-width: 0; overflow: hidden; border: 1px solid #d7dfe4; background: #fff; }
.detail-card h3 { display: flex; min-height: 62px; align-items: center; padding: 16px 22px; margin: 0; border-bottom: 1px solid #e0e5e8; font-size: 19px; letter-spacing: -.02em; }
.detail-card > div { max-width: 72ch; padding: 20px 22px 24px; color: #33414d; font-size: 15px; line-height: 1.85; }
.detail-card p { margin: 0 0 10px; }
.detail-card p:last-child { margin-bottom: 0; }
.detail-card--included { border-top: 4px solid var(--orange); }
.detail-card--included h3 { color: var(--orange-dark); background: #fff8f3; }
.detail-card--excluded { border-top: 4px solid var(--navy); }
.detail-card--excluded h3 { color: var(--navy); background: #f1f4f6; }
.detail-card--option h3, .detail-card--notice h3 { background: #f7f8f9; }
.detail-card--terms { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(220px, .72fr) minmax(0, 2fr); border-color: var(--navy); }
.detail-card--terms h3 { align-items: flex-start; min-height: 100%; padding: 27px 26px; border: 0; color: #fff; background: var(--navy); font-size: 20px; line-height: 1.5; }
.detail-card--terms > div { max-width: 78ch; padding: 25px 30px; }
.detail-item-grid h3, .hotel-grid h3 { margin-top: 0; }
.hotel-grid h3 { margin-bottom: 14px; font-size: 20px; }
.hotel-grid section > div > div { color: #33414d; font-size: 15px; line-height: 1.8; }
.itinerary-days { display: grid; gap: 32px; }
.itinerary-day { overflow: hidden; border: 1px solid #d7dfe4; background: #fff; }
.itinerary-day-head { display: flex; align-items: center; gap: 22px; min-height: 112px; padding: 24px 34px; color: #fff; background: var(--navy); }
.day-number { display: grid; flex: 0 0 62px; place-items: center; }
.day-number small { color: #bac8d3; font-size: 11px; font-weight: 800; letter-spacing: .12em; }
.day-number b { color: var(--orange); font-size: 38px; line-height: 1; font-variant-numeric: tabular-nums; }
.itinerary-day-head h3 { margin: 0; font-size: 24px; letter-spacing: -.025em; }
.itinerary-day-head p { margin: 7px 0 0; color: #cad4dc; font-size: 14px; line-height: 1.5; }
.itinerary-events { max-width: 920px; padding: 24px 42px 30px; }
.itinerary-event { position: relative; padding: 15px 0 27px 28px; border-left: 1px solid #c9d2d9; }
.itinerary-event:last-child { padding-bottom: 8px; }
.itinerary-event::before { position: absolute; top: 21px; left: -6px; width: 11px; height: 11px; border: 3px solid #fff; border-radius: 50%; background: var(--orange); box-shadow: 0 2px 5px rgba(7, 27, 44, .22); content: ''; }
.itinerary-event h4 { margin: 0 0 10px; font-size: 19px; line-height: 1.45; }
.itinerary-event > div { max-width: 72ch; color: #43515d; font-size: 15px; line-height: 1.8; }
.itinerary-photo { margin: 0; }
.itinerary-photo summary { display: flex; width: 100%; min-height: 62px; align-items: center; gap: 12px; padding: 15px 20px; border: 1px solid #cbd6dd; color: var(--navy); background: #edf2f5; cursor: pointer; list-style: none; font-size: 17px; font-weight: 800; transition: border-color .18s ease-out, background .18s ease-out; }
.itinerary-photo summary:hover { border-color: #9eadb8; background: #e4ebef; }
.itinerary-photo summary::-webkit-details-marker { display: none; }
.itinerary-photo summary::after { width: 10px; height: 10px; margin: -5px 2px 0 auto; border-right: 2px solid var(--orange-dark); border-bottom: 2px solid var(--orange-dark); transform: rotate(45deg); transition: transform .2s ease-out; content: ''; }
.itinerary-photo[open] summary::after { margin-top: 4px; transform: rotate(225deg); }
.itinerary-photo summary:focus-visible { outline: 3px solid #ff9d63; outline-offset: 3px; }
.itinerary-photo summary strong { min-width: 0; line-height: 1.45; }
.itinerary-photo summary small { flex: 0 0 auto; color: var(--orange-dark); font-size: 11px; font-weight: 800; }
.itinerary-photo-panel { padding: 22px; border: 1px solid #cbd6dd; border-top: 0; background: #fff; }
.itinerary-photo-copy { max-width: 72ch; margin-bottom: 18px; color: #43515d; font-size: 15px; line-height: 1.8; }
.itinerary-images { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; max-width: none !important; }
.itinerary-images img { display: block; width: 100%; height: 210px; object-fit: cover; background: #edf1f3; }
.day-notes { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 24px; padding: 21px 34px; margin: 0; border-top: 1px solid #d7dfe4; background: #f1f4f6; }
.day-notes div { display: grid; grid-template-columns: 56px 1fr; gap: 12px; }
.day-notes dt { color: var(--ink); font-weight: 800; }
.day-notes dd { margin: 0; color: #43515d; line-height: 1.7; }
.day-notes dd span { display: inline-block; margin: 0 6px 0 10px; color: var(--orange-dark); font-size: 12px; font-weight: 800; }
.day-notes dd span:first-child { margin-left: 0; }
.hotel-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.hotel-grid section { overflow: hidden; border: 1px solid #dde3e7; }
.hotel-grid img { width: 100%; height: 240px; object-fit: cover; }
.hotel-grid img.is-placeholder { padding: 38px; object-fit: contain; background: #fff; }
.hotel-grid section > div { padding: 24px; }
.hotel-grid p { margin: 0 0 7px; color: var(--orange); font-size: 12px; font-weight: 800; }
.hotel-grid address { margin: 0 0 14px; color: #75808a; font-size: 12px; font-style: normal; }

.booking-steps { display: grid; grid-template-columns: repeat(3, 1fr); max-width: 760px; padding: 58px 0 42px; margin: 0 auto; list-style: none; }
.booking-steps li { position: relative; display: grid; justify-items: center; gap: 8px; color: #8a949d; font-size: 12px; }
.booking-steps li::before { position: absolute; z-index: -1; top: 18px; right: 50%; width: 100%; height: 1px; background: #ccd3d8; content: ''; }
.booking-steps li:first-child::before { display: none; }
.booking-steps b { display: grid; width: 38px; height: 38px; border-radius: 50%; color: #697680; background: #e3e8eb; place-items: center; }
.booking-steps .is-current { color: var(--ink); font-weight: 800; }
.booking-steps .is-current b { color: #fff; background: var(--orange); }
.booking-layout { display: grid; grid-template-columns: minmax(0, 1fr) 390px; align-items: start; gap: 28px; padding-bottom: 100px; }
.booking-form, .booking-summary, .payment-panel { background: #fff; box-shadow: 0 16px 38px rgba(7, 27, 44, .08); }
.booking-form { display: grid; gap: 0; padding: 46px; border-top: 6px solid var(--navy); }
.booking-form section { padding: 36px 0; border-bottom: 1px solid #dde2e5; }
.booking-form section:first-child { padding-top: 0; }
.booking-form h1 { font-size: 37px; }
.booking-form h2 { margin: 0 0 22px; font-size: 25px; }
.booking-form section > h1, .booking-form section > h2 { display: flex; min-height: 58px; align-items: center; padding: 15px 20px; color: #fff; background: var(--navy); letter-spacing: -.025em; }
.booking-form section > h1 { margin: 0; font-size: 28px; }
.booking-form section > h2 { display: flex; align-items: center; margin-bottom: 24px; font-size: 21px; }
.booking-form section > h1::before, .booking-form section > h2::before { width: 8px; height: 8px; margin-right: 12px; background: var(--orange); content: ''; transform: rotate(45deg); }
.form-grid, .traveler-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; margin-top: 28px; }
.traveler-grid { grid-template-columns: repeat(3, 1fr); margin-top: 0; }
.booking-form label { display: grid; gap: 9px; }
.booking-form label > span { font-size: 12px; font-weight: 800; }
.booking-form label small { color: #76828c; font-weight: 400; }
.traveler-grid label small { display: block; margin-top: 7px; color: var(--orange-dark); font-size: 18px; font-weight: 800; font-variant-numeric: tabular-nums; }
.booking-form input { min-height: 52px; padding: 0 14px; border: 1px solid #cbd3d9; border-radius: 3px; background: #fff; }
.booking-options { display: grid; grid-template-columns: 1fr; gap: 12px; padding: 0; margin: 0; border: 0; }
.booking-option { display: flex !important; min-width: 0; min-height: 110px; grid-template-columns: none !important; align-items: flex-start; gap: 12px !important; padding: 16px; border: 1px solid #cbd3d9; background: #fff; cursor: pointer; }
.booking-option:has(input:checked) { border: 2px solid var(--orange); padding: 15px; background: #fff7f2; }
.booking-option input { flex: 0 0 20px; width: 20px; min-height: 20px; padding: 0; margin: 2px 0 0; accent-color: var(--orange); }
.booking-option > span { display: grid; min-width: 0; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px 12px; width: 100%; }
.booking-option b { grid-column: 1 / -1; font-size: 16px; }
.booking-form .booking-option small { display: grid; gap: 3px; color: var(--ink); font-size: 12px; font-weight: 800; font-variant-numeric: tabular-nums; }
.booking-form .booking-option small em { color: #75818b; font-size: 10px; font-style: normal; font-weight: 400; }
.agreement-all { display: flex !important; grid-template-columns: none !important; align-items: center; gap: 14px !important; min-height: 76px; padding: 16px 20px; border: 1px solid #9daab4; background: #f1f4f6; cursor: pointer; }
.agreement-all input { flex: 0 0 22px; width: 22px; min-height: 22px; margin: 0; accent-color: var(--orange); }
.booking-form .agreement-all > span { display: grid; gap: 5px; font-size: 15px; }
.agreement-all small { color: #65727c; font-size: 12px; font-weight: 400; line-height: 1.5; }
.agreement-list { display: grid; gap: 12px; margin-top: 16px; }
.agreement-item { border: 1px solid #d4dce1; background: #fff; }
.agreement-item details { margin: 0; }
.agreement-item summary { display: flex; min-height: 58px; align-items: center; justify-content: space-between; gap: 18px; padding: 14px 18px; cursor: pointer; list-style: none; }
.agreement-item summary::-webkit-details-marker { display: none; }
.agreement-item summary > span { font-size: 14px; font-weight: 800; line-height: 1.45; }
.agreement-item summary b { display: inline-block; padding: 4px 6px; margin-left: 7px; color: #fff; background: var(--orange-dark); font-size: 10px; vertical-align: 1px; }
.agreement-item summary em { color: #5f6c76; font-size: 11px; font-style: normal; font-weight: 700; white-space: nowrap; text-decoration: underline; text-underline-offset: 4px; }
.agreement-content { max-height: 270px; overflow-y: auto; padding: 18px; border-top: 1px solid #d8dee2; color: #43515d; background: #f7f8f9; font-size: 13px; line-height: 1.8; }
.agreement-content > :first-child { margin-top: 0; }
.agreement-content > :last-child { margin-bottom: 0; }
.agreement-choice { display: flex; justify-content: flex-end; gap: 10px; padding: 12px 18px; margin: 0; border: 0; border-top: 1px solid #e0e5e8; }
.booking-form .agreement-choice label { display: flex; min-height: 44px; align-items: center; gap: 8px; padding: 0 14px; border: 1px solid #c6cfd5; cursor: pointer; }
.booking-form .agreement-choice label:has(input:checked) { border-color: var(--orange); color: var(--orange-dark); background: #fff7f2; }
.booking-form .agreement-choice input { width: 18px; min-height: 18px; padding: 0; margin: 0; accent-color: var(--orange); }
.booking-form .agreement-choice label > span { font-size: 13px; }
.booking-form .primary-action:disabled { cursor: wait; background: #8a949c; }
.booking-summary { position: sticky; top: 98px; overflow: hidden; padding-bottom: 28px; }
.booking-summary img { width: 100%; height: 220px; object-fit: cover; }
.booking-summary > p, .booking-summary > h2, .booking-summary > dl, .booking-summary > strong { margin-right: 26px; margin-left: 26px; }
.booking-summary > p { margin-top: 24px; margin-bottom: 8px; color: var(--orange); font-size: 11px; font-weight: 800; }
.booking-summary > h2 { margin-top: 0; font-size: 19px; line-height: 1.45; }
.booking-summary > strong { display: block; padding-top: 18px; border-top: 1px solid #dfe4e7; color: var(--orange); font-size: 20px; text-align: right; }
.booking-total { padding: 18px 26px 0; border-top: 1px solid #dfe4e7; text-align: right; }
.booking-total span, .booking-total small { display: block; color: #67747e; font-size: 11px; }
.booking-total strong { display: block; margin: 5px 0; color: var(--orange); font-size: 24px; font-variant-numeric: tabular-nums; }
.payment-page { min-height: 72vh; }
.payment-panel { max-width: 850px; padding: 54px; margin: 0 auto 100px; }
.payment-panel > div:first-child { padding-bottom: 30px; border-bottom: 2px solid var(--ink); }
.payment-panel > div:first-child p { margin: 0 0 10px; color: var(--orange); font-size: 12px; font-weight: 800; }
.payment-panel > div:first-child span { display: block; margin-top: 14px; color: #63717c; line-height: 1.7; }
.payment-panel dl { padding: 24px 0; }
.payment-panel dl div { padding: 10px 0; }
.payment-summary .payment-total { align-items: center; padding-top: 22px; margin-top: 10px; border-top: 1px solid #ccd3d8; }
.payment-summary .payment-total dt { color: var(--ink); font-weight: 800; }
.payment-summary .payment-total dd { color: var(--orange-dark); font-size: 24px; font-variant-numeric: tabular-nums; }
.payment-form fieldset { padding: 0; margin: 0 0 18px; border: 0; }
.payment-form legend { margin-bottom: 12px; font-size: 16px; font-weight: 800; }
.payment-method { display: flex; align-items: center; min-height: 76px; padding: 16px 18px; border: 1px solid #cbd3d9; background: #fff; cursor: pointer; }
.payment-method:has(input:checked) { border-color: var(--orange); background: #fff8f3; }
.payment-method input { width: 20px; height: 20px; margin: 0 14px 0 0; accent-color: var(--orange); }
.payment-method span { display: grid; gap: 5px; }
.payment-method b { color: var(--ink); font-size: 15px; }
.payment-method small { color: #5f6c76; line-height: 1.5; }
.payment-bank { padding: 22px; margin-bottom: 20px; background: #f1f4f6; }
.payment-bank dl { padding: 0; margin: 0 0 18px; }
.payment-bank dd small { display: block; margin-top: 3px; color: #6d7881; font-weight: 400; }
.payment-bank dd strong { color: var(--orange-dark); font-size: 19px; font-variant-numeric: tabular-nums; }
.payment-bank label { display: grid; gap: 8px; color: var(--ink); font-size: 12px; font-weight: 800; }
.payment-bank input { min-height: 50px; padding: 0 14px; border: 1px solid #aeb8c0; border-radius: 4px; color: var(--ink); background: #fff; font: inherit; }
.payment-form > .primary-action { width: min(100%, 420px); margin-inline: auto; }
.payment-error { padding: 14px 16px; margin: 20px 0 0; border: 1px solid #bb2d1f; color: #8f1e14; background: #fff3f1; font-size: 13px; line-height: 1.6; }
.payment-note { margin: 13px 0 0; color: #707c86; font-size: 11px; text-align: center; }
.payment-panel .secondary-action { margin-top: 10px; }

.reservation-page { min-height: 72vh; padding-bottom: 100px; }
.reservation-intro { display: flex; align-items: end; justify-content: space-between; gap: 40px; padding: 78px 0 38px; border-bottom: 2px solid var(--ink); }
.reservation-intro h1 { margin: 0; font-size: clamp(34px, 4vw, 58px); letter-spacing: -.04em; line-height: 1.14; }
.reservation-intro p { margin: 14px 0 0; color: #5b6874; font-size: 16px; }
.reservation-intro > strong { color: var(--orange); font-size: 17px; line-height: 1.55; text-align: right; }
.lookup-panel { display: grid; grid-template-columns: minmax(260px, .8fr) minmax(0, 1.35fr); gap: 46px; padding: 42px; margin: 30px 0; border-top: 6px solid var(--navy); background: #fff; box-shadow: 0 16px 38px rgba(7, 27, 44, .08); }
.lookup-heading h2 { margin: 0; font-size: 27px; letter-spacing: -.035em; line-height: 1.35; }
.lookup-heading p { margin: 14px 0 0; color: #63717c; font-size: 14px; line-height: 1.7; }
.lookup-form { display: grid; grid-template-columns: 1fr 1.2fr; align-items: start; gap: 18px; }
.lookup-form label { display: grid; gap: 9px; }
.lookup-form label > span { font-size: 12px; font-weight: 800; }
.lookup-form input { width: 100%; min-height: 52px; padding: 0 14px; border: 1px solid #cbd3d9; border-radius: 3px; color: var(--ink); background: #fff; }
.lookup-form small { color: #76828c; font-size: 11px; }
.lookup-form .primary-action { grid-column: 1 / -1; width: min(100%, 360px); margin: 4px auto 0; }
.lookup-panel.is-cert { grid-template-columns: minmax(260px, .8fr) minmax(320px, 1fr); }
.cert-form { grid-template-columns: 1fr; }
.cert-form .primary-action { grid-column: auto; width: 100%; }
.cert-input { font-size: 24px; font-weight: 800; letter-spacing: .22em; text-align: center; font-variant-numeric: tabular-nums; }
.lookup-back { justify-self: center; color: #5f6c76; font-size: 12px; text-decoration: underline; text-underline-offset: 4px; }
.lookup-error { grid-column: 1 / -1; padding: 14px 16px; margin: -8px 0 0; border: 1px solid #bb2d1f; color: #8f1e14; background: #fff3f1; font-size: 13px; line-height: 1.6; }
.lookup-results { margin-top: 52px; }
.lookup-results > header { display: flex; align-items: end; justify-content: space-between; gap: 24px; padding-bottom: 20px; border-bottom: 2px solid var(--ink); }
.lookup-results > header h2 { margin: 0; font-size: 31px; letter-spacing: -.035em; }
.lookup-results > header p { margin: 0; color: #65717c; font-size: 13px; }
.lookup-results > header > div p { margin-top: 8px; }
.lookup-reset { padding: 11px 14px; border: 1px solid #b8c1c8; background: #fff; font-size: 12px; font-weight: 800; white-space: nowrap; }
.reservation-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; margin-top: 20px; }
.reservation-card { padding: 28px; border: 1px solid #dce2e6; background: #fff; }
.reservation-card-head { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-bottom: 20px; }
.reservation-card-head > span { color: var(--orange-dark); font-size: 12px; font-weight: 800; }
.reservation-card-head b { padding: 7px 9px; color: #fff; background: #65717c; font-size: 11px; }
.reservation-card-head b.is-complete { background: var(--navy); }
.reservation-card h3 { margin: 0; font-size: 20px; line-height: 1.5; }
.reservation-card dl { display: grid; gap: 10px; padding: 20px 0; margin: 18px 0 22px; border-top: 1px solid #e0e5e8; border-bottom: 1px solid #e0e5e8; }
.reservation-card dl div { display: flex; justify-content: space-between; gap: 20px; }
.reservation-card dt { color: #75808b; font-size: 12px; }
.reservation-card dd { margin: 0; font-size: 13px; font-weight: 700; text-align: right; }
.reservation-card .primary-action { width: 100%; }
.lookup-empty { padding: 72px 24px; margin-top: 20px; background: #fff; text-align: center; }
.lookup-empty h3 { margin: 0 0 10px; font-size: 24px; }
.lookup-empty p { margin: 0; color: #65717c; line-height: 1.7; }

.legal-page { width: min(100% - 48px, 1120px); margin: 0 auto; padding-bottom: 100px; }
.legal-page .breadcrumb { padding-top: 32px; }
.legal-intro { display: flex; align-items: end; justify-content: space-between; gap: 40px; padding: 70px 0 30px; border-bottom: 2px solid var(--ink); }
.legal-intro h1 { margin: 0; font-size: clamp(36px, 4vw, 56px); letter-spacing: -.04em; line-height: 1.15; }
.legal-intro p { max-width: 40ch; margin: 0; color: #5f6d78; font-size: 14px; line-height: 1.65; text-align: right; }
.legal-tabs { display: grid; grid-template-columns: 1fr 1fr; margin-top: 24px; border: 1px solid #d7dfe4; background: #fff; }
.legal-tabs a { display: grid; min-height: 56px; place-items: center; border-right: 1px solid #d7dfe4; color: #596874; font-size: 14px; font-weight: 800; }
.legal-tabs a:last-child { border-right: 0; }
.legal-tabs a[aria-current="page"] { color: #fff; background: var(--navy); }
.legal-document { padding: clamp(32px, 6vw, 72px); margin-top: 20px; color: #2f3e4a; background: #fff; font-size: 16px; line-height: 1.85; overflow-wrap: anywhere; }
.legal-document > :first-child { margin-top: 0 !important; }
.legal-document > :last-child { margin-bottom: 0 !important; }
.legal-document .article-title, .legal-document h2, .legal-document h3 { padding: 34px 0 12px !important; margin: 0 !important; color: var(--navy) !important; font-size: 21px; font-weight: 800; line-height: 1.45; }
.legal-document p { margin: 0 0 18px; }
.legal-document ul, .legal-document ol { padding-left: 24px; margin: 0 0 18px; }
.legal-document li { margin: 5px 0; }
.legal-document a { color: var(--orange-dark); text-decoration: underline; text-underline-offset: 3px; }
.legal-document img { max-width: 100% !important; height: auto !important; }
.legal-document table { width: 100% !important; max-width: 100%; border-collapse: collapse; }
.legal-document th, .legal-document td { padding: 10px; border: 1px solid #d9e0e4; }
.legal-unavailable, .legal-empty { padding: 72px 24px; text-align: center; }
.legal-empty { margin: 80px auto; background: #fff; }
.legal-empty h1 { margin: 0 0 20px; }
.legal-empty a { color: var(--orange-dark); font-weight: 800; text-decoration: underline; text-underline-offset: 4px; }

@media (max-width: 1100px) {
  .inner-header { position: sticky; height: 72px; }
  .catalog-grid { grid-template-columns: repeat(2, 1fr); }
  .product-hero { grid-template-columns: 1fr; }
  .product-gallery { height: 560px; }
  .product-summary { padding: 40px; }
  .booking-layout { grid-template-columns: 1fr; }
  .booking-summary { position: static; display: grid; grid-template-columns: 260px 1fr; align-items: center; }
  .booking-summary img { grid-row: 1 / 6; height: 100%; }
}

@media (max-width: 700px) {
  .catalog-page, .product-page, .booking-page, .payment-page, .reservation-page { width: min(100% - 28px, 1320px); }
  .catalog-intro { align-items: start; padding: 48px 0 28px; }
  .catalog-intro h1 { font-size: 36px; }
  .catalog-intro > strong { font-size: 38px; }
  .catalog-filter { grid-template-columns: 1fr; padding: 18px; }
  .catalog-grid { grid-template-columns: 1fr; }
  .catalog-more { margin-bottom: 60px; }
  .catalog-photo { height: 235px; }
  .product-hero { min-height: 0; margin-bottom: 52px; }
  .product-visual { min-height: 0; }
  .product-gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: minmax(230px, 58vw) 104px; height: auto; }
  .product-gallery-item:first-child { grid-column: 1 / -1; grid-row: 1; }
  .product-gallery .product-status { top: 14px; left: 14px; }
  .product-gallery-count { right: 12px; bottom: 116px; }
  .product-gallery-stage { min-height: 74vh; }
  .product-gallery-stage figure img { max-width: 94vw; max-height: 70vh; }
  .product-gallery-nav { top: auto; bottom: -58px; transform: none; }
  .product-gallery-nav.is-prev { left: calc(50% - 58px); }
  .product-gallery-nav.is-next { right: calc(50% - 58px); }
  .product-gallery-close { top: -58px; right: 0; }
  .product-summary { padding: 28px 22px; }
  .product-summary h1 { font-size: 27px; }
  .summary-options li { grid-template-columns: minmax(70px, 1fr) repeat(3, minmax(66px, 1fr)); gap: 7px; }
  .summary-options li strong { font-size: 11px; }
  .product-flight-info .trip-period { display: grid; gap: 5px; }
  .product-flight-info .trip-period dd { text-align: left; }
  .departure-line { grid-template-columns: 1fr auto; gap: 9px; padding: 16px; }
  .departure-line time { font-size: 16px; }
  .departure-line > b { justify-self: end; }
  .departure-line > span:not(.closed-label) { display: none; }
  .departure-booking { grid-column: 1 / -1; grid-template-columns: minmax(0, 1fr) 86px; }
  .closed-label { grid-column: 2; grid-row: 1; min-width: 76px; }
  .product-content > nav { top: 64px; overflow-x: auto; }
  .product-content > nav a { min-width: 110px; padding: 15px 10px; }
  .product-content article { padding: 44px 18px; }
  .detail-heading { display: block; }
  .detail-heading h2 { font-size: 28px; }
  .detail-heading h2::before { width: 8px; height: 8px; }
  .detail-heading p { margin: 10px 0 0 22px; font-size: 13px; text-align: left; }
  .detail-item-grid, .hotel-grid { grid-template-columns: 1fr; }
  .detail-card h3 { min-height: 56px; padding: 14px 17px; }
  .detail-card > div { padding: 17px 18px 20px; }
  .detail-card--terms { grid-column: auto; grid-template-columns: 1fr; }
  .detail-card--terms h3 { min-height: 0; padding: 18px; }
  .itinerary-day-head { align-items: flex-start; gap: 15px; min-height: 0; padding: 20px 18px; }
  .day-number { flex-basis: 48px; }
  .day-number b { font-size: 32px; }
  .itinerary-day-head h3 { font-size: 20px; }
  .itinerary-day-head p { font-size: 12px; }
  .itinerary-events { padding: 14px 16px 22px; }
  .itinerary-event { padding-left: 20px; }
  .itinerary-event h4 { font-size: 17px; }
  .itinerary-images { grid-template-columns: 1fr; }
  .itinerary-images img { height: min(56vw, 280px); }
  .day-notes { grid-template-columns: 1fr; gap: 12px; padding: 16px 18px; }
  .day-notes div { grid-template-columns: 46px 1fr; }
  .booking-steps { padding: 36px 0 30px; }
  .booking-layout { padding-bottom: 65px; }
  .booking-form { padding: 28px 20px; }
  .booking-form section > h1, .booking-form section > h2 { margin-right: -20px; margin-left: -20px; }
  .form-grid, .traveler-grid { grid-template-columns: 1fr; }
  .booking-options { grid-template-columns: 1fr; }
  .agreement-all { padding: 15px; }
  .agreement-item summary { padding: 14px; }
  .agreement-choice { display: grid; grid-template-columns: 1fr 1fr; padding: 10px 12px; }
  .booking-form .agreement-choice label { justify-content: center; padding: 0 8px; }
  .booking-summary { display: block; }
  .booking-summary img { height: 220px; }
  .payment-panel { padding: 32px 20px; margin-bottom: 65px; }
  .payment-panel h1 { font-size: 30px; }
  .payment-summary > div, .payment-bank dl div { display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: start; }
  .payment-summary dd, .payment-bank dd { overflow-wrap: anywhere; }
  .payment-summary .payment-total { align-items: center; }
  .reservation-page { padding-bottom: 65px; }
  .reservation-intro { align-items: start; padding: 48px 0 28px; }
  .reservation-intro h1 { font-size: 36px; }
  .reservation-intro > strong { display: none; }
  .lookup-panel { grid-template-columns: 1fr; gap: 28px; padding: 30px 20px; }
  .lookup-panel.is-cert { grid-template-columns: 1fr; }
  .lookup-form { grid-template-columns: 1fr; }
  .lookup-form .primary-action { grid-column: auto; width: 100%; }
  .lookup-results > header { display: block; }
  .lookup-results > header p { margin-top: 8px; }
  .reservation-list { grid-template-columns: 1fr; }
  .reservation-card { padding: 22px 18px; }
  .legal-page { width: min(100% - 28px, 1120px); padding-bottom: 65px; }
  .legal-page .breadcrumb { padding-top: 22px; }
  .legal-intro { display: block; padding: 44px 0 24px; }
  .legal-intro h1 { font-size: 34px; }
  .legal-intro p { margin-top: 12px; text-align: left; }
  .legal-tabs { margin-top: 16px; }
  .legal-tabs a { min-height: 52px; padding: 0 10px; font-size: 13px; text-align: center; }
  .legal-document { padding: 28px 20px; margin-top: 14px; font-size: 15px; line-height: 1.8; }
  .legal-document .article-title, .legal-document h2, .legal-document h3 { padding-top: 28px !important; font-size: 19px; }
}

/* Main-only campaign popup */
.home-popup-layer { position: fixed; z-index: 1200; inset: 0; display: grid; place-items: center; padding: 24px; background: rgba(3, 15, 25, .72); backdrop-filter: blur(5px); }
.home-popup { position: relative; overflow: hidden; width: min(100%, 520px); max-height: calc(100vh - 48px); overflow-y: auto; color: var(--ink); background: #fff; box-shadow: 0 28px 80px rgba(0, 0, 0, .38); }
.home-popup-x { position: absolute; z-index: 2; top: 14px; right: 14px; display: grid; width: 40px; height: 40px; place-items: center; padding: 0 0 3px; border: 0; border-radius: 50%; color: #fff; background: rgba(7, 27, 44, .78); font-size: 27px; line-height: 1; cursor: pointer; }
.home-popup-image { display: block; width: 100%; max-height: 380px; object-fit: cover; background: #eef1f3; }
.home-popup-copy { padding: 30px 32px 28px; }
.home-popup-copy > span { display: block; margin-bottom: 10px; color: var(--orange-dark); font-size: 11px; font-weight: 800; letter-spacing: .13em; }
.home-popup-copy h2 { margin: 0; font-size: clamp(25px, 4vw, 35px); letter-spacing: -.04em; line-height: 1.22; }
.home-popup-copy p { margin: 15px 0 0; color: #4f5d68; font-size: 15px; line-height: 1.75; }
.home-popup-copy a { display: inline-flex; min-height: 48px; align-items: center; gap: 16px; padding: 0 19px; margin-top: 22px; color: #fff; background: var(--orange); font-size: 14px; font-weight: 800; }
.home-popup-copy a:hover { background: var(--orange-dark); }
.home-popup-actions { display: flex; min-height: 54px; border-top: 1px solid #dde3e7; background: #f5f7f8; }
.home-popup-actions button { min-height: 54px; padding: 0 20px; border: 0; color: #52606b; background: transparent; font-size: 12px; font-weight: 700; cursor: pointer; }
.home-popup-actions button:first-child { margin-right: auto; }
.home-popup-actions button:hover { color: var(--orange-dark); }
@media(max-width:600px){.home-popup-layer{place-items:end center;padding:12px}.home-popup{max-height:calc(100dvh - 24px)}.home-popup-image{max-height:42dvh}.home-popup-copy{padding:24px 22px 22px}.home-popup-copy h2{font-size:27px}.home-popup-actions button{padding:0 14px}}
