/* ===== Cabin mood lighting (ambient on dark sections) ===== */
.mood{position:relative;overflow:hidden;isolation:isolate}
.mood::before{content:"";position:absolute;inset:-30%;z-index:-1;background:radial-gradient(40% 50% at 20% 30%,var(--mood1),transparent 70%),radial-gradient(35% 45% at 80% 70%,var(--mood2),transparent 70%);animation:mood 18s ease-in-out infinite alternate}
@keyframes mood{to{transform:translate(6%,-4%) rotate(8deg)}}
.grain::after{content:"";position:absolute;inset:0;z-index:-1;opacity:.07;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ===== Hero shared ===== */
.hero{position:relative}
.hero-v{display:none}
[data-hero="pass"] .hero-v.v-pass,[data-hero="window"] .hero-v.v-window,[data-hero="board"] .hero-v.v-board{display:grid}
.hero-v{grid-template-columns:1.08fr .92fr;gap:56px;align-items:center;padding:56px var(--gut) 120px}
.hero-copy{display:flex;flex-direction:column;gap:28px;align-items:flex-start}
.ctas{display:flex;gap:16px;flex-wrap:wrap;align-items:center}
.route{position:absolute;left:0;bottom:0;width:100%;height:120px;pointer-events:none}
.route path{fill:none;stroke:var(--signal-l);stroke-width:1.5;opacity:.55;stroke-dasharray:6 9}

/* V1 boarding pass */
.pass{background:linear-gradient(var(--accent) 0 40px,var(--surface) 40px);color:var(--ink);border-radius:var(--r-l);overflow:hidden;box-shadow:var(--e3);will-change:transform;position:relative}
.pass .ph{height:330px;border-radius:0}
.pass-hd{display:flex;justify-content:space-between;align-items:center;padding:14px 22px;background:var(--accent);color:var(--accent-ink)}
.pass-hd .mono{color:var(--accent-ink)!important;font-weight:600}
.pass-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:20px 24px;border-top:2px dashed var(--line);position:relative}
.pass-row::before,.pass-row::after{content:"";position:absolute;top:-11px;width:20px;height:20px;border-radius:50%;background:var(--dark)}
.pass-row::before{left:-10px}.pass-row::after{right:-10px}
.pass-row div{display:flex;flex-direction:column;gap:2px}
.pass-row .mono{color:var(--mute);font-size:9.5px}
.pass-row .v{font-family:var(--display);font-weight:var(--d-wt);text-transform:var(--d-case);font-size:26px;line-height:1.1}
[data-type="livery"] .pass-row .v{font-size:18px}
.pass-ft{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:0 24px 18px}
.barcode{height:28px;width:150px;background:repeating-linear-gradient(90deg,var(--ink) 0 2px,transparent 2px 4px,var(--ink) 4px 5px,transparent 5px 8px,var(--ink) 8px 11px,transparent 11px 13px)}
.stamp{position:absolute;right:22px;top:64px;border:2px solid var(--accent-txt);color:var(--accent-txt);font-family:var(--mono);font-size:11px;letter-spacing:.14em;padding:6px 10px;border-radius:6px;transform:rotate(-12deg);background:rgba(255,255,255,.75)}

/* V2 aircraft window */
.porthole-wrap{display:flex;justify-content:center;position:relative}
.porthole{width:min(440px,80vw);aspect-ratio:.72;border-radius:46% / 34%;background:linear-gradient(145deg,#E9EBF2,#B9BED0);padding:22px;box-shadow:var(--e3),inset 0 2px 6px rgba(255,255,255,.8);position:relative}
.porthole-in{width:100%;height:100%;border-radius:44% / 32%;overflow:hidden;position:relative;background:linear-gradient(#7FB8E6,#DCEBF7);box-shadow:inset 0 10px 30px rgba(0,0,0,.35)}
.porthole-in img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.shade{position:absolute;left:0;right:0;top:0;height:100%;background:linear-gradient(#EEF0F5,#D3D7E3);border-bottom:6px solid #C3C8D6;transform:translateY(-100%);z-index:2}
.shade::after{content:"";position:absolute;left:50%;bottom:10px;width:40px;height:6px;border-radius:3px;background:#A9AFC2;transform:translateX(-50%)}
.cloud{position:absolute;border-radius:50%;background:#fff;filter:blur(14px);opacity:.8;z-index:1}
.window-tag{position:absolute;left:-10px;bottom:40px;background:var(--surface);color:var(--ink);border-radius:14px;padding:14px 16px;box-shadow:var(--e2);display:flex;flex-direction:column;gap:2px;z-index:3}

/* V3 departure board hero */
.v-board{grid-template-columns:1fr!important}
.bigboard{background:#070B1E;border-radius:var(--r-l);padding:28px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--e3);border:1px solid #1B2250}
.bigboard .row{display:flex;gap:6px;flex-wrap:wrap}
.flapc{display:inline-flex;align-items:center;justify-content:center;width:clamp(26px,3.3vw,52px);height:clamp(38px,4.6vw,72px);background:linear-gradient(#1A2045 50%,#141A3C 50%);border-radius:5px;font-family:var(--mono);font-size:clamp(20px,2.8vw,44px);color:#F3E6C8;position:relative;box-shadow:inset 0 -1px 0 rgba(255,255,255,.04)}
.flapc::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:#05081a}
.flapc.sp{background:transparent;box-shadow:none}
.flapc.sp::after{display:none}
.bigboard .meta{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;color:#7F88B4;margin-top:8px}

/* ===== Section heads ===== */
.shead{display:flex;justify-content:space-between;align-items:end;gap:32px;flex-wrap:wrap;margin-bottom:clamp(40px,5vw,64px)}
.shead .l{display:flex;flex-direction:column;gap:14px;max-width:760px}
.sect-no{display:flex;align-items:center;gap:12px}
.sect-no::after{content:"";width:48px;height:1px;background:currentColor;opacity:.4}

/* photos */
.ph{overflow:hidden;border-radius:var(--r-m);position:relative;background:var(--line)}
.ph img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.ph:hover img{transform:scale(1.06)}
.ph .cap{position:absolute;left:12px;bottom:12px;z-index:2;background:rgba(10,15,40,.72);backdrop-filter:blur(6px);color:#fff;border-radius:8px;padding:6px 10px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;transform:translateY(8px);opacity:0;transition:.5s var(--ease)}
.ph:hover .cap{transform:none;opacity:1}
.ph.win{border-radius:120px 120px var(--r-m) var(--r-m)}

/* pillars */
.pillars{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:24px}
.pillar{display:flex;flex-direction:column;gap:14px}
.pillar:nth-child(2){padding-top:96px}.pillar:nth-child(3){padding-top:40px}
.pillar .k{display:flex;justify-content:space-between;align-items:center}

/* departures board list */
.board{display:flex;flex-direction:column}
.brow{display:grid;grid-template-columns:120px 1fr 170px 150px 40px;gap:22px;align-items:center;padding:26px 0;border-bottom:1px solid var(--dark-line);position:relative;transition:padding .5s var(--ease)}
.brow.hd{padding:12px 0;color:var(--on-dark3)}
.brow:not(.hd)::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.06),transparent 70%);opacity:0;transition:opacity .4s}
.brow:not(.hd):hover{padding-left:18px}
.brow:not(.hd):hover::before{opacity:1}
.brow .code{font-family:var(--mono);font-size:15px;color:var(--accent);letter-spacing:.08em}
.brow .name{font-family:var(--display);font-weight:var(--d-wt);text-transform:var(--d-case);letter-spacing:var(--d-ls);font-size:clamp(24px,2.6vw,36px);line-height:1.1}
[data-type="livery"] .brow .name{font-size:clamp(18px,1.8vw,26px)}
.brow .st{font-family:var(--mono);font-size:11px;color:var(--signal-l);letter-spacing:.1em;text-transform:uppercase;display:flex;gap:8px;align-items:center}
.brow .st i{width:8px;height:8px;border-radius:50%;background:currentColor}
.brow:hover .st i{animation:blink 1.6s infinite}
.brow .go{width:40px;height:40px;border-radius:50%;border:1px solid var(--dark-line);display:flex;align-items:center;justify-content:center;transition:.5s var(--ease)}
.brow:hover .go{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);transform:rotate(-45deg)}

/* luggage tag course cards */
.tags{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:22px}
.tag{background:var(--surface);border:1px solid var(--line);border-radius:18px 18px 18px 18px;padding:26px 24px 22px;display:flex;flex-direction:column;gap:12px;position:relative;transform-origin:50% -14px;transition:transform .6s var(--ease),box-shadow .5s}
.tag::before{content:"";position:absolute;top:14px;left:50%;width:16px;height:16px;margin-left:-8px;border-radius:50%;background:var(--bg);box-shadow:inset 0 0 0 1px var(--line)}
.tag .strap{position:absolute;top:-26px;left:50%;width:2px;height:40px;background:var(--accent);margin-left:-1px;border-radius:2px}
.tag:hover{transform:rotate(-2.5deg);box-shadow:var(--e2)}
.tag .code{font-family:var(--mono);font-size:26px;letter-spacing:.06em;color:var(--accent-txt);margin-top:14px}

/* bleed */
.bleed{position:relative;height:clamp(420px,52vw,760px);overflow:hidden}
.bleed img{position:absolute;left:0;top:-12%;width:100%;height:124%;object-fit:cover;object-position:center 35%}
.bleed::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,15,40,0) 40%,rgba(10,15,40,.88))}
.bleed-cap{position:absolute;z-index:1;left:var(--gut);right:var(--gut);bottom:52px;display:flex;justify-content:space-between;align-items:end;gap:24px;flex-wrap:wrap;color:#F5F3EE}

/* safety-card steps */
.safety{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:2px solid var(--ink);border-radius:var(--r-l);overflow:hidden;background:var(--surface)}
.safety>div{padding:26px;display:flex;flex-direction:column;gap:14px;border-right:2px solid var(--ink);position:relative}
.safety>div:last-child{border-right:0}
.safety .pict{height:120px;border-radius:12px;background:var(--bg);display:flex;align-items:center;justify-content:center;color:var(--ink)}
.safety .pict svg{width:64px;height:64px;stroke-width:1.4}
.safety .n{position:absolute;top:18px;right:18px;width:30px;height:30px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px}

/* list rows */
.qa{display:grid;grid-template-columns:64px 1fr;gap:24px;padding:28px 0;border-top:1px solid var(--line)}
.qa:last-child{border-bottom:1px solid var(--line)}
.qa .n{font-family:var(--display);font-weight:var(--d-wt);font-size:40px;color:var(--accent-txt);line-height:1}
.qa h3{font-size:20px;font-weight:700;margin-bottom:6px}

/* gates */
.gates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.gate{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:30px;display:flex;flex-direction:column;gap:12px;transition:transform .6s var(--ease),box-shadow .6s var(--ease),border-color .4s}
.gate:hover{transform:translateY(-6px);box-shadow:var(--e2);border-color:var(--accent)}
.gate .code{font-family:var(--mono);font-size:56px;line-height:1;color:var(--mute);opacity:.45;transition:color .5s;letter-spacing:.02em}
.gate:hover .code{color:var(--accent-txt)}
.gate .sign{display:flex;align-items:center;justify-content:space-between;background:#F2C230;color:#111;border-radius:6px;padding:6px 10px;font-weight:800;font-size:13px;letter-spacing:.04em}
.map{height:240px;border-radius:var(--r-m);background:linear-gradient(var(--line) 1px,transparent 1px) 0 0/36px 36px,linear-gradient(90deg,var(--line) 1px,transparent 1px) 0 0/36px 36px,var(--surface);display:flex;align-items:center;justify-content:center;color:var(--mute);position:relative}
.map .pin{position:absolute;left:44%;top:38%;color:var(--accent-txt);animation:bob 2.2s var(--ease) infinite}
@keyframes bob{50%{transform:translateY(-8px)}}
