/* airline.css  ·  GENERATED by build-airline.js from HUSTLER's page + airline-overlay/. Do not edit by hand. */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url(/assets/fonts/fraunces-v38-6NUV8FyLNQOQZAnv9ZwHlOk8yA.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url(/assets/fonts/fraunces-v38-6NUV8FyLNQOQZAnv9ZwGlOk8yA.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url(/assets/fonts/fraunces-v38-6NUV8FyLNQOQZAnv9ZwIlOk.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Newsreader';
  font-style: italic;
  font-weight: 200 600;
  font-display: swap;
  src: url(/assets/fonts/newsreader-v26-cY9CfjOCX1hbuyalUrK439vCgYhCFpY.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Newsreader';
  font-style: italic;
  font-weight: 200 600;
  font-display: swap;
  src: url(/assets/fonts/newsreader-v26-cY9CfjOCX1hbuyalUrK439vCgIhCFpY.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Newsreader';
  font-style: italic;
  font-weight: 200 600;
  font-display: swap;
  src: url(/assets/fonts/newsreader-v26-cY9CfjOCX1hbuyalUrK439vCjohC.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 200 700;
  font-display: swap;
  src: url(/assets/fonts/newsreader-v26-cY9AfjOCX1hbuyalUrK439HyjJBG.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 200 700;
  font-display: swap;
  src: url(/assets/fonts/newsreader-v26-cY9AfjOCX1hbuyalUrK439DyjJBG.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 200 700;
  font-display: swap;
  src: url(/assets/fonts/newsreader-v26-cY9AfjOCX1hbuyalUrK4397yjA.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/assets/fonts/spacegrotesk-v22-V8mDoQDjQSkFtoMM3T6r8E7mPb54C-s0.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/assets/fonts/spacegrotesk-v22-V8mDoQDjQSkFtoMM3T6r8E7mPb94C-s0.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/assets/fonts/spacegrotesk-v22-V8mDoQDjQSkFtoMM3T6r8E7mPbF4Cw.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Space Mono';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/spacemono-v17-i7dNIFZifjKcF5UAWdDRYERMSHK_IwU.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Space Mono';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/spacemono-v17-i7dNIFZifjKcF5UAWdDRYERMSXK_IwU.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Space Mono';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/spacemono-v17-i7dNIFZifjKcF5UAWdDRYERMR3K_.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/spacemono-v17-i7dPIFZifjKcF5UAWdDRYE58RWq7.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/spacemono-v17-i7dPIFZifjKcF5UAWdDRYE98RWq7.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/spacemono-v17-i7dPIFZifjKcF5UAWdDRYEF8RQ.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/fonts/spacemono-v17-i7dMIFZifjKcF5UAWdDRaPpZUFqaHjyV.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/fonts/spacemono-v17-i7dMIFZifjKcF5UAWdDRaPpZUFuaHjyV.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/fonts/spacemono-v17-i7dMIFZifjKcF5UAWdDRaPpZUFWaHg.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


:root{--paper:#f8f4ea;--ink:#12162f;--green:#2e42c0;--lime:#f2ce7e;--line:#d8d2bf}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Space Grotesk',sans-serif}button,a,select{touch-action:manipulation}button,select,input{font:inherit}a{color:inherit}header{max-width:1440px;margin:auto;padding:25px 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font:700 20px 'Space Grotesk',sans-serif;letter-spacing:-1px}.mark{background:var(--green);color:var(--lime);font-size:25px;width:42px;height:42px;display:grid;place-items:center;border-radius:50%}nav{display:flex;gap:30px;font-size:13px}nav a{text-decoration:none}.navtag{font-size:11px;letter-spacing:1px;border:1px solid var(--line);padding:10px 13px;border-radius:25px}.wrap{max-width:1440px;margin:auto;padding:0 5%}.hero{display:grid;grid-template-columns:1.4fr 1fr;gap:70px;padding:64px 0 45px;align-items:center}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:700;text-transform:uppercase;display:flex;align-items:center;gap:9px}.dot{width:7px;height:7px;background:#535d86;border-radius:50%;display:inline-block}h1{font:500 clamp(45px,5.8vw,82px)/1.02 'Space Grotesk',sans-serif;letter-spacing:-5px;margin:21px 0}h1 em{font-style:normal;color:#606680}.intro{max-width:510px;font-size:15px;line-height:1.7;color:#646670}.hero-links{display:flex;gap:24px;align-items:center;margin-top:27px;font-size:13px}.primary{background:var(--green);color:white;border:0;padding:14px 21px;text-decoration:none;border-radius:4px;cursor:pointer}.ticket{background:#dcdfec;border:1px solid #bcc1d3;border-radius:10px;transform:rotate(2deg);box-shadow:0 14px 26px #2b30460b}.ticket-top{padding:22px 25px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px dashed #9ca1b7}.ticket-top b{font-size:12px;letter-spacing:1px}.ticket-body{padding:23px 25px}.ticket-route{display:flex;align-items:center;justify-content:space-between;margin:12px 0 24px}.airport{font:500 43px 'Space Grotesk',sans-serif;letter-spacing:-2px}.airport small{display:block;font:11px 'Space Grotesk',sans-serif;letter-spacing:0;color:#5c6174}.plane{font-size:26px;color:var(--green)}.ticket-bottom{border-top:1px dashed #9ca1b7;display:flex;justify-content:space-between;padding:18px 25px;font-size:12px}.barcode{height:28px;width:90px;background:repeating-linear-gradient(90deg,#303443 0 2px,transparent 2px 4px,#303443 4px 5px,transparent 5px 8px)}.stats{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:36px}.stat{padding:23px 25px;border-right:1px solid var(--line)}.stat:first-child{padding-left:0}.stat:last-child{border:0}.stat strong{font:500 33px 'Space Grotesk',sans-serif}.stat span{display:block;font-size:11px;color:#686a74;margin-top:5px}.sectiontop{display:flex;align-items:center;justify-content:space-between;margin:32px 0 18px}h2{font:500 25px 'Space Grotesk',sans-serif;letter-spacing:-1px;margin:0}.sectiontop p{font-size:12px;color:#6d707b}.tabs{display:flex;background:#dddfe7;border-radius:5px;padding:4px;gap:4px}.tabs button{border:0;background:none;padding:8px 15px;font-size:12px;border-radius:3px;cursor:pointer}.tabs button.active{background:var(--green);color:white}.map{position:relative;background:#e8edfb;border:1px solid #c5c8d5;border-radius:7px;overflow:hidden}.map svg{display:block;width:100%;height:auto;min-height:260px}.maptag{position:absolute;top:20px;left:22px;font:11px monospace;letter-spacing:1px}.maplegend{position:absolute;bottom:18px;left:22px;display:flex;gap:20px;font-size:10px}.mapnote{position:absolute;bottom:18px;right:20px;font:10px monospace;color:#757a8e}.land{fill:#bbc0d2;stroke:#acb1c6;stroke-width:1}.route{fill:none;stroke:var(--green);stroke-width:1.6;opacity:.55}.upcoming-route{stroke-dasharray:5 5}.pin{cursor:pointer;outline:none}.pin circle{fill:var(--green);stroke:#f8f4ea;stroke-width:3}.pin:hover circle,.pin:focus circle{fill:#6071b4;stroke-width:5}.pin text{font:600 12px 'Space Grotesk',sans-serif;fill:#313546;paint-order:stroke;stroke:#e8edfb;stroke-width:4px;stroke-linejoin:round}.mapdetail{padding:16px 22px;display:flex;justify-content:space-between;border-top:1px solid #c5c8d5;font-size:12px;background:#e7e9f0;min-height:50px}.toolbar{display:flex;gap:10px}select,input{border:1px solid var(--line);background:transparent;padding:10px 12px;border-radius:4px;font-size:12px;color:var(--ink)}input{width:210px}.events{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.event{border:1px solid var(--line);background:#fcfaf4;border-radius:6px;padding:23px;display:flex;flex-direction:column;min-height:246px;transition:transform .18s,border-color .18s}.event:hover{transform:translateY(-3px);border-color:#8188a3}.event-head{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1px;color:#6f7381}.flag{font-size:25px;letter-spacing:0}.event h3{font:500 20px 'Space Grotesk',sans-serif;margin:18px 0 5px;letter-spacing:-.6px}.location{font-size:12px;color:#636776}.event ul{padding-left:16px;font-size:12px;line-height:1.8;color:#585c6a;margin-bottom:18px}.status{font-size:9px;letter-spacing:1.2px;border-top:1px dashed var(--line);padding-top:13px;margin-top:auto;color:var(--green);font-weight:700}.upcoming{background:#dadeef;border-color:#a7afce}.callout{background:var(--green);color:var(--paper);padding:35px 40px;border-radius:6px;margin:38px 0;display:flex;align-items:center;justify-content:space-between;gap:25px}.callout h2{font-size:30px;margin:10px 0}.callout p{font-size:13px;color:#bbbfd0;max-width:590px;line-height:1.7}.stamp{border:2px solid #919cc8;border-radius:50%;width:120px;height:120px;flex-shrink:0;display:grid;place-content:center;text-align:center;color:var(--lime);transform:rotate(-14deg);font:11px 'Space Grotesk',sans-serif;letter-spacing:2px}.stamp strong{font-size:29px;letter-spacing:0}footer{padding:24px 0 30px;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-size:11px;color:#6f7280}.empty{padding:40px;text-align:center;grid-column:1/-1}.hidden{display:none!important}:focus-visible{outline:3px solid #475799;outline-offset:4px}@media(max-width:800px){.hero{gap:30px;grid-template-columns:1fr;padding-top:35px}h1{letter-spacing:-3px}.ticket{max-width:440px;transform:none}.events{grid-template-columns:repeat(2,1fr)}.navtag{display:none}.sectiontop{align-items:flex-start;gap:15px;flex-wrap:wrap}.mapnote{display:none}.stat{padding:20px 15px}.callout{padding:26px}.map svg{min-height:210px}}@media(max-width:520px){nav{gap:15px}.brand{font-size:16px}.mark{width:34px;height:34px}.events{grid-template-columns:1fr}.stat strong{font-size:25px}.stat span{font-size:10px}.stat{padding:18px 10px}.toolbar{width:100%}input{flex:1;min-width:0}.stamp{display:none}.maptag{top:10px;left:12px;font-size:9px}.maplegend{left:12px;bottom:10px}.mapdetail{font-size:11px;gap:12px}footer{gap:20px;line-height:1.6}.callout h2{font-size:25px}}

.flight-controls{display:flex;flex-wrap:wrap;gap:12px;align-items:center;background:#2e42c0;color:#f8f4ea;padding:20px;border-radius:0 0 7px 7px}.flight-controls label{font-size:11px;display:grid;gap:6px}.flight-controls select{background:#f8f4ea;max-width:260px}.flight-controls button{cursor:pointer;border:1px solid #7c85ab;border-radius:4px;background:#f2ce7e;color:#2e42c0;padding:11px 17px;font-weight:700}.flight-controls input{width:100%;padding:0;accent-color:#f2ce7e}.flight-progress{flex:1;min-width:160px}.flight-caption{font-size:11px;color:#5d6275;line-height:1.6;margin:12px 0 0}.flight-readout{font:12px 'Space Grotesk',sans-serif;min-width:180px}.flight-readout small{display:block;color:#f2ce7e;margin-top:6px}.home-label{font:10px 'Space Grotesk',sans-serif;fill:#2e42c0;paint-order:stroke;stroke:#e8edfb;stroke-width:3px}.plane-icon{fill:#f8f4ea;stroke:#2e42c0;stroke-width:1.3;filter:drop-shadow(0 3px 3px #2e42c033)}@media(max-width:520px){.flight-controls{padding:15px}.flight-controls label{width:100%}.flight-controls select{max-width:none}.flight-readout{width:100%}}
#routes{padding-top:20px}#routes .map svg{height:clamp(350px,48vw,630px);min-height:350px}#routes .sectiontop h2{font-size:clamp(26px,3.3vw,43px)}.airline-label{font:700 13px 'Space Grotesk',sans-serif;fill:#2e42c0;paint-order:stroke;stroke:#f8f4ea;stroke-width:5px;stroke-linejoin:round}.plane-icon{fill:#f2ce7e;stroke-width:1.8;filter:drop-shadow(0 4px 4px #2e42c055)}.hero{padding-top:48px}.flight-readout{font-size:14px}@media(max-width:520px){#routes .map svg{height:360px}.airline-label{font-size:16px}}
.flight-cinema{position:fixed;inset:0;z-index:1000;background:#e8edfb;overflow:auto;display:flex;flex-direction:column;padding:18px 28px}.flight-cinema[hidden]{display:none}.cinema-header{display:flex;justify-content:space-between;align-items:center;gap:20px;padding-bottom:14px}.cinema-header strong{font:700 23px 'Space Grotesk',sans-serif;letter-spacing:-1px}.cinema-header small{display:block;font-size:11px;color:#5a6077;margin-top:4px}.cinema-header button{padding:11px 18px;background:#2e42c0;color:white;border:0;border-radius:5px;cursor:pointer}.flight-cinema .map{flex:1;min-height:360px;display:flex;flex-direction:column}.flight-cinema .map svg{width:100%;height:calc(100dvh - 255px)!important;min-height:320px!important;flex:1}.flight-cinema .flight-controls{flex-shrink:0}.flight-cinema .flight-caption{margin:7px 0;font-size:10px}.aircraft-body{fill:#fffdf4;stroke:#2e42c0;stroke-width:1.1}.aircraft-wing{fill:#7b87b7;stroke:#2e42c0;stroke-width:1}.aircraft-tail{fill:#2e42c0;stroke:#2e42c0}.aircraft-window{fill:#4e5675}.aircraft-lettering{fill:#2e42c0;font:700 7.3px 'Space Grotesk',sans-serif;letter-spacing:-.15px;stroke:none}.aircraft-stripe{fill:none;stroke:#7887c5;stroke-width:2}.aircraft-engine{fill:#f2ce7e;stroke:#2e42c0;stroke-width:1}.plane-icon{filter:drop-shadow(0 5px 6px #2e42c044)}@media(max-width:600px){.flight-cinema{padding:12px}.cinema-header strong{font-size:19px}.flight-cinema .map svg{height:45dvh!important;min-height:280px!important}.flight-cinema .map{min-height:320px}.flight-cinema .flight-controls{gap:8px}.flight-cinema .flight-controls label{width:auto;flex:1;min-width:130px}.flight-cinema .flight-controls select{width:100%}}
.flight-cinema{padding:0;background:#121027;color:#f7e7be;overflow:hidden}.cinema-header{padding:16px 24px;margin:0;background:#17142d;z-index:2;border-bottom:1px solid #6c523d}.cinema-header strong{color:#f1c773;font-size:26px}.cinema-header small{color:#aaaecb}.cinema-header button{background:#f1c773;color:#181b2d;font-weight:700}.flight-cinema .map{border:0;border-radius:0;background:#171a34;min-height:0;overflow:hidden}.flight-cinema .map svg{background:radial-gradient(ellipse at center,#30304b,#14182e);min-height:0!important;height:100%!important;cursor:grab;touch-action:none}.flight-cinema .map svg:active{cursor:grabbing}.flight-cinema .map svg>rect{opacity:.12}.flight-cinema .land{fill:#41455c;stroke:#70738a;stroke-width:.8}.flight-cinema .route{stroke:#9ba0bd;opacity:.4}.flight-cinema #flightLayer path{stroke:#edbc6a;stroke-width:2.2;opacity:.85}.flight-cinema .pin circle{fill:#edbc6a;stroke:#202339}.flight-cinema .pin text,.flight-cinema .home-label{fill:#f5deb0;stroke:#202339}.flight-cinema .maptag{color:#b3b8dc;top:15px;left:20px}.flight-cinema .maplegend{color:#b8bcd7;bottom:15px}.flight-cinema .mapnote{color:#8e92ae}.flight-cinema .mapdetail{background:#19162c;color:#eed4a5;border-top:1px solid #3c4059;min-height:40px;flex-shrink:0}.flight-cinema .flight-controls{background:#17142d;border-radius:0;padding:13px 22px;gap:12px}.flight-cinema .flight-controls button{background:#edbc6a;border-color:#edbc6a;color:#181b2d}.flight-cinema .flight-controls label{color:#adb1cd}.flight-cinema .flight-readout small{color:#f1c773}.flight-cinema .flight-controls select{background:#212439;color:#f7e7be;border-color:#474c69}.flight-cinema .flight-caption{display:none}.flight-cinema .flight-controls input{accent-color:#edbc6a}.map-zoom{position:absolute;right:18px;top:18px;display:flex;gap:5px;z-index:4}.map-zoom button{background:#1c1f36;color:#f1c773;border:1px solid #8b6a55;border-radius:5px;font-size:18px;padding:8px 13px;cursor:pointer}.aircraft-sprite{filter:drop-shadow(0 12px 9px #0009);pointer-events:none}.flight-cinema>div:last-child{flex-shrink:0}@media(max-width:600px){.cinema-header{padding:12px}.cinema-header strong{font-size:20px}.flight-cinema .flight-controls{padding:10px}.flight-cinema .flight-controls label{font-size:10px}.maptag{display:none}.flight-cinema .flight-readout{width:auto;min-width:120px;font-size:11px}.flight-cinema .flight-controls select{padding:7px}.flight-cinema .maplegend{display:none}}
.brand .mark{padding:0;overflow:hidden}.brand .mark img{width:100%;height:100%;object-fit:cover}.boo-gallery{margin:42px 0}.boo-banner{background:linear-gradient(90deg,#14152dec,#14152d55),url('https://i2c.seadn.io/ethereum/34529f0e57084e76808a81ba4b4534d9/a50f5d4f11ab12ed5d805ff82000ca/40a50f5d4f11ab12ed5d805ff82000ca.png?w=2000') center 38%/cover;color:#f5e4be;padding:42px 35px;min-height:230px;border-radius:8px;display:flex;align-items:center;justify-content:space-between;gap:25px}.boo-banner h2{font-size:36px;margin:12px 0;color:#f1c773}.boo-banner p{max-width:470px;line-height:1.7;font-size:14px;color:#d3d5e4}.boo-banner a{background:#f1c773;color:#1c1f34;white-space:nowrap;text-decoration:none;padding:13px 18px;border-radius:4px;font-size:12px}.boo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:20px}.boo-card{background:#fffdf5;border:1px solid #d8d2bf;border-radius:7px;overflow:hidden}.boo-card img{display:block;width:100%;aspect-ratio:1;object-fit:cover;background:#e6e1d4}.boo-card-body{padding:16px}.boo-card h3{font:600 17px 'Space Grotesk',sans-serif;margin:0 0 12px}.boo-card-links{display:flex;justify-content:space-between;align-items:center;gap:10px}.boo-card a{font-size:11px;color:#555a7c}.boo-card button{font-size:11px;border:1px solid #80849e;padding:8px 10px;border-radius:4px;background:transparent;cursor:pointer;color:#383c53}.boo-card button[aria-pressed=true]{background:#2e42c0;color:#fff}.art-credit{color:#787268;font-size:11px;line-height:1.6;margin-top:13px}.passenger-art{display:flex;align-items:center;gap:12px;margin:15px 0 5px}.passenger-art img{width:59px;height:59px;border-radius:7px;object-fit:cover}.passenger-art small{display:block;font-size:10px;letter-spacing:1px;color:#5c6174;margin-bottom:5px}.passenger-art strong{font-size:13px}.flight-cinema .cinema-header{background:linear-gradient(90deg,#17142df5,#17142dbb),url('https://i2c.seadn.io/ethereum/34529f0e57084e76808a81ba4b4534d9/a50f5d4f11ab12ed5d805ff82000ca/40a50f5d4f11ab12ed5d805ff82000ca.png?w=2000') center 38%/cover}.flight-cinema .cinema-header strong{display:flex;align-items:center;gap:10px}.cinema-logo{width:36px;height:36px;border-radius:50%;object-fit:cover}.boo-links{display:flex;gap:18px;margin:15px 0;font-size:12px}@media(max-width:700px){.boo-grid{grid-template-columns:repeat(2,1fr)}.boo-banner{padding:26px;display:block}.boo-banner a{display:inline-block;margin-top:10px}.boo-banner h2{font-size:29px}}@media(max-width:400px){.boo-card-body{padding:11px}.boo-card-links{align-items:flex-start;flex-direction:column}}
.nft-picker{border:1px solid #b3b6c7;background:#e6e7f0;border-radius:7px;padding:26px;margin-top:20px}.nft-picker h3{font:500 25px 'Space Grotesk',sans-serif;margin:10px 0}.nft-picker p{font-size:13px;color:#63667b}.nft-picker form{margin-top:20px}.nft-picker label{display:block;font-size:12px;margin-bottom:8px}.nft-input-row{display:flex;align-items:center;gap:10px;max-width:590px}.nft-input-row>span{font-size:23px;color:#63688c}.nft-input-row input{background:#fffdf7;width:150px;font-size:18px}.nft-input-row button,#useCustomNft{border:0;background:#2e42c0;color:white;padding:13px 17px;border-radius:4px;cursor:pointer}.nft-input-row button:disabled{opacity:.55;cursor:wait}#nftLookupStatus{font-size:12px;margin-top:14px;line-height:1.6;color:#55586e}#customNftPreview{margin-top:20px;display:flex;align-items:center;gap:22px}#customNftPreview[hidden]{display:none}#customNftPreview img{width:145px;height:145px;object-fit:cover;border-radius:8px}#customNftPreview h4{font:600 20px 'Space Grotesk',sans-serif;margin:0 0 10px}#customNftPreview a{display:block;margin-top:12px;font-size:12px}@media(max-width:520px){.nft-picker{padding:18px}.nft-input-row{flex-wrap:wrap}.nft-input-row input{flex:1;min-width:80px}.nft-input-row button{width:100%}#customNftPreview img{width:100px;height:100px}}
/* style="" attributes, converted */
[data-s="1"]{font-size:12px !important;color:#5d6275 !important}
[data-s="2"]{margin-bottom:8px !important}
[data-s="3"]{color:#74798b !important;font-size:15px !important}
[data-s="4"]{color:#f2ce7e !important}
[data-s="5"]{width:32px !important;height:22px !important;object-fit:cover !important;border-radius:2px !important;box-shadow:0 0 0 1px #8884 !important;vertical-align:middle !important}
[data-s="6"]{fill:#f2ce7e !important;stroke:#2e42c0 !important;stroke-dasharray:3 2 !important}
[data-s="7"]{font-size:11px !important;color:#787268 !important;margin:-6px 0 14px !important}
/* the broadsheet's look: paper grain and glow from apex.css, then theme.css */
body::before{content:"";
  position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(90% 62% at 6% -8%, rgba(190,205,244,.62), transparent 62%),
    radial-gradient(62% 48% at 96% -4%, rgba(242,206,126,.30), transparent 64%);
}
body::after{content:"";
  position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.30;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='150' height='150' filter='url(%23n)' opacity='.42'/%3E%3C/svg%3E");
}
/* theme.css  ·  make /airline/ read as the same site as the broadsheet.
   Tokens, type and rules are the broadsheet's (assets/apex.css); nothing here is new design.
   Loaded after HUSTLER's CSS, so it wins at equal specificity. HIS LAYOUT IS UNTOUCHED: this
   layer sets colour, type, rules, corners and spacing rhythm, not where things sit.
   The dark full-screen map keeps its own night look, recoloured to the broadsheet's navy and gold. */

:root{
  --paper:#F8F4EA;--paper-2:#FCFAF4;--sunk:#EFE8D8;--peri-wash:#E8EDFB;
  --ink:#12162F;--ink-2:#3B4168;--ink-3:#6E7391;
  --blue:#2E42C0;--blue-lt:#6379E8;--peri:#BECDF4;
  --gold:#B8821B;--gold-lt:#F2CE7E;--violet:#6E4CC8;--red:#B93A24;
  --display:'Fraunces',Georgia,'Times New Roman',serif;
  --body:'Newsreader',Georgia,serif;
  --ui:'Space Grotesk',ui-sans-serif,system-ui,sans-serif;
  --mono:'Space Mono',ui-monospace,'Courier New',monospace;
  --hair:rgba(18,22,47,.22);
  --shadow-amb:0 32px 70px -28px rgba(30,38,90,.42);
  --gutter:clamp(20px,3vw,44px);
  /* his variable names, pointed at the broadsheet's colours */
  --green:var(--blue);--lime:var(--gold-lt);--line:var(--hair);
}
body{font-family:var(--body);font-size:17px;line-height:1.58;-webkit-font-smoothing:antialiased;overflow-x:hidden;background:var(--paper);color:var(--ink)}
header,main,footer,.indep{position:relative;z-index:1}
::selection{background:var(--peri);color:var(--ink)}

/* ── the masthead: this page's own, set in the broadsheet's type (Chris, 19 Oct: "the main
      masthead should be the Booelievers Airline"). Replaces his header; his script still finds
      .brand, .mark and nav inside it. ── */
header.masthead{display:block;max-width:none;margin:0;padding:26px 0 0;border-bottom:0;position:relative}
.masthead .wrap{max-width:1440px;margin:0 auto;padding:0 var(--gutter);position:relative}
.masthead .reg{position:absolute;width:16px;height:16px;opacity:.4;top:-10px;right:var(--gutter)}
.masthead .reg::before,.masthead .reg::after{content:'';position:absolute;background:var(--ink)}
.masthead .reg::before{left:50%;top:0;width:1px;height:100%}
.masthead .reg::after{top:50%;left:0;height:1px;width:100%}
.mast-grid{display:flex;align-items:flex-end;justify-content:space-between;gap:16px 28px;flex-wrap:wrap}
.brand{display:flex;align-items:flex-end;gap:clamp(10px,2vw,26px);text-decoration:none;color:var(--ink);font:inherit;letter-spacing:0}
.masthead .mark{width:clamp(44px,7vw,92px);height:clamp(44px,7vw,92px);flex:none;margin-bottom:4px;border-radius:50%;background:var(--blue);color:var(--gold-lt)}
.mast-word{display:block;line-height:.82}
.mast-title{display:block;font-family:var(--display);font-weight:700;font-variation-settings:'opsz' 144,'SOFT' 24,'WONK' 1;font-size:clamp(34px,9.4vw,150px);letter-spacing:-.028em;color:var(--ink);white-space:nowrap}
.mast-title .booe{color:var(--blue)}
.mast-air{display:block;font-family:var(--display);font-size:clamp(13px,2.3vw,32px);font-weight:400;font-variation-settings:'SOFT' 60,'WONK' 1;color:var(--gold);letter-spacing:.5em;text-transform:uppercase;margin:10px 0 0 .3em}
.masthead nav{display:flex;gap:clamp(14px,2.4vw,30px);flex-wrap:wrap;padding-bottom:4px;font-family:var(--ui);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:500}
.masthead nav a{color:var(--ink-2);text-decoration:none}
.masthead nav a:hover{color:var(--blue)}
.mast-strap{font-family:var(--ui);font-size:clamp(10.5px,1.05vw,13.5px);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);margin:16px 0 14px}
.mast-strap em{color:var(--blue);font-style:normal;font-weight:600}
.rule-dbl{border:0;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);height:4px;margin:0}
.mark{background:var(--blue);color:var(--gold-lt)}

/* ── type: Fraunces for display, Newsreader for reading, Space Grotesk for UI, Space Mono for data ── */
h1,h2,h3,.event h3,.airport,.stat strong,.callout h2,.boo-banner h2,.nft-picker h3,.boo-card h3,.cinema-header strong,#customNftPreview h4,.stamp strong{
  font-family:var(--display);font-variation-settings:'opsz' 90,'SOFT' 20,'WONK' 1;font-weight:700;letter-spacing:-.022em}
h1{font-size:clamp(46px,6.4vw,96px);line-height:.96;letter-spacing:-.028em;color:var(--ink)}
h1 em{color:var(--blue)}
h2,#routes .sectiontop h2{font-size:clamp(28px,4.2vw,54px);line-height:1.04}
.event h3{font-size:22px;letter-spacing:-.015em}
.airport{font-size:40px}.stat strong{font-size:34px}
.intro,.callout p,.event ul,.location,.boo-banner p,.nft-picker p,.art-credit,.indep{font-family:var(--body);font-size:16px;line-height:1.6;color:var(--ink-2)}
.event ul{font-size:15px;line-height:1.55}
.intro{max-width:520px;font-size:17px}
.eyebrow{font-family:var(--ui);font-size:11px;font-weight:600;letter-spacing:.19em;text-transform:uppercase;color:var(--blue)}
.eyebrow .dot{background:var(--gold)}
.maptag,.mapnote,.maplegend,.mapdetail,.event-head,.status,.flight-readout,.flight-readout small,.stat span,.sectiontop p,.passenger-art small,.home-label,#nftLookupStatus,.flight-caption,footer{font-family:var(--mono)}
.stat span,.event-head,.status,.maptag{letter-spacing:.06em;text-transform:uppercase}
.flight-controls label,.nft-picker label,.tabs button,.toolbar select,input,select,.boo-card-links a,.boo-card button,.boo-links a{font-family:var(--ui)}

/* ── buttons: the broadsheet's pill, blue, mono, uppercase ── */
.primary,.nft-input-row button,#useCustomNft{background:var(--blue);color:#fff;border:0;border-radius:999px;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:13px 20px;box-shadow:0 0 0 3px rgba(46,66,192,.16);text-decoration:none}
.primary:hover,.nft-input-row button:hover,#useCustomNft:hover{box-shadow:0 0 0 4px rgba(46,66,192,.32)}
.flight-controls button{border-radius:999px;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.tabs{border-radius:999px;background:var(--sunk)}
.tabs button{border-radius:999px;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase}
.tabs button.active{background:var(--blue);color:#fff}
.hero-links a:not(.primary){font-family:var(--ui);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
.boo-banner a{border-radius:999px;font-family:var(--mono);font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:11px}
a{color:inherit}

/* ── surfaces and rules ── */
.stats{border-top:3px solid var(--ink);border-bottom:1px solid var(--ink)}
.stat{border-right:1px solid var(--hair)}
.map{border:1px solid var(--hair);border-radius:8px;box-shadow:var(--shadow-amb);background:var(--peri-wash)}
.mapdetail{background:var(--paper-2);border-top:1px solid var(--hair);color:var(--ink-2)}
.ticket{background:var(--peri-wash);border:1px solid var(--peri);box-shadow:var(--shadow-amb)}
.ticket-top,.ticket-bottom{border-color:#A9B6E6}
.event{background:var(--paper-2);border:1px solid var(--hair);border-radius:8px;box-shadow:0 2px 6px rgba(30,38,90,.10)}
.event:hover{border-color:var(--blue);box-shadow:var(--shadow-amb)}
.event.upcoming{background:#F7EDD0;border-color:var(--gold-lt)}
.status{border-top:1px dotted var(--hair);color:var(--blue)}
.event-link{font-family:var(--ui);font-weight:500;color:var(--blue)}
.callout{background:var(--ink);color:var(--paper);border-radius:8px}
.callout p{color:var(--peri)}
.callout .eyebrow{color:var(--gold-lt)!important}
.stamp{border-color:var(--gold-lt);color:var(--gold-lt)}
.flight-controls{background:var(--ink);border-radius:0 0 8px 8px}
.boo-card{background:var(--paper-2);border:1px solid var(--hair);border-radius:8px}
.nft-picker{background:var(--peri-wash);border:1px solid var(--peri);border-radius:8px}
.nft-input-row>span{color:var(--blue)}
footer{border-top:3px solid var(--ink);color:var(--ink-3);font-size:11px;padding-top:26px}
.indep{border-top:1px solid var(--hair)}
:focus-visible{outline:3px solid var(--blue-lt)}

/* ── the full-screen map: the night look, navy and gold ── */
.flight-cinema{background:var(--ink)}
.cinema-header strong{color:var(--gold-lt)}
.flight-cinema .flight-controls{background:#0C0F24}
@media(max-width:520px){
  .mast-air{letter-spacing:.38em}
  h1{letter-spacing:-.024em}
  .stat strong{font-size:26px}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
button,select,input{font-family:var(--ui)}
.map-zoom button{font-family:var(--mono);font-size:15px}
.land{fill:#D5DDF4;stroke:#BECDF4}
/* his footer and our note set a padding shorthand that threw away .wrap's side gutter (the broadsheet had the same bug, 7 Sep) */
footer.wrap,.indep.wrap{padding-left:5%;padding-right:5%}
.stamp strong{font-size:21px;letter-spacing:-.01em}

/* overlay.css  ·  OUR additions, appended after theme.css by build-airline.js. See overlay.js. */
.event-link{display:inline-block;align-self:flex-start;font-size:12.5px;margin:0 0 16px;text-underline-offset:3px}
.event-link:hover{color:var(--ink)}
.indep{border-top:1px solid var(--hair);padding-top:22px;padding-bottom:34px;font-size:15px}
.indep p{margin:0 0 6px;max-width:760px}
.indep strong{color:var(--ink);font-weight:600}
.indep a{color:var(--blue);text-underline-offset:3px}

/* ── the map: real geography, and sizes that do not grow with the zoom ──
   overlay.js sets --k on the svg: map units per screen pixel. Everything a reader has to read or
   tap is sized in pixels times --k, so a pin is the same size at world view and zoomed on Prague. */
.map svg{--k:1;user-select:none;-webkit-user-select:none}
.land path{vector-effect:non-scaling-stroke;stroke-width:.7px;stroke-linejoin:round}
.route,#flightLayer path{vector-effect:non-scaling-stroke}
.route{stroke-width:1.6px}
#flightLayer path{stroke-width:2.2px}
.pin circle{r:calc(5px*var(--k));stroke-width:calc(2.5px*var(--k))}
.pin:hover circle,.pin:focus circle{r:calc(6.5px*var(--k));stroke-width:calc(3px*var(--k))}
.pin.up circle{r:calc(7px*var(--k));fill:var(--gold-lt);stroke:var(--blue);stroke-dasharray:calc(3px*var(--k)) calc(2px*var(--k))}
.pin text{font-size:calc(12.5px*var(--k));stroke-width:calc(4px*var(--k));transform:translate(calc(var(--lx,0)*var(--k)*1px),calc(var(--ly,-13)*var(--k)*1px))}
svg[data-zoom="far"] .pin.eu text{display:none}
svg[data-zoom="near"] .eu-cluster{display:none}
.eu-cluster{font-family:var(--ui);font-weight:600;font-size:calc(12.5px*var(--k));letter-spacing:.08em;text-transform:uppercase;fill:var(--ink-2);paint-order:stroke;stroke:var(--peri-wash);stroke-width:calc(4px*var(--k));pointer-events:none}
.flight-cinema .eu-cluster{fill:var(--gold-lt);stroke:#12162F}
#homeLayer circle{r:calc(7px*var(--k));stroke-width:calc(2px*var(--k))}
.home-label{font-size:calc(11px*var(--k));stroke-width:calc(3px*var(--k));transform:translate(calc((12 - 12*var(--k))*1px),calc((18 - 18*var(--k))*1px))}
.map-zoom button[aria-pressed="false"]{opacity:.6}
.mapdetail{padding-bottom:46px}
.flight-cinema .mapdetail{padding-bottom:12px}

/* ── phones first (Chris, 19 Oct: "most will be on phones") ──
   The full-screen map is the product. Below 700px it is a map with a thin header, a small status
   line and a compact control panel under it, so the map keeps most of the screen. */
@media(max-width:700px){
  .flight-cinema .cinema-header{padding:10px 14px}
  .flight-cinema .cinema-header small{display:none}
  .flight-cinema .cinema-header strong{font-size:18px}
  .flight-cinema .cinema-header button{padding:9px 13px;font-size:11px;letter-spacing:.06em}
  .flight-cinema .map{min-height:0}
  .flight-cinema .map svg{height:100%!important;min-height:0!important}
  .flight-cinema .mapdetail{padding:8px 14px;min-height:0;font-size:11px}
  .flight-cinema .mapnote,.flight-cinema .maplegend,.flight-cinema .maptag{display:none}
  .flight-cinema .flight-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px;padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px))}
  .flight-cinema .flight-controls label{width:auto;min-width:0;flex:none;font-size:10px}
  .flight-cinema .flight-controls label>span{display:none}
  .flight-cinema .flight-controls select{width:100%;min-width:0;max-width:none;padding:9px 8px;font-size:12px}
  .flight-cinema .flight-controls button{width:100%;padding:12px 8px;font-size:11px}
  .flight-cinema .flight-readout{grid-column:1/-1;min-width:0;width:auto;font-size:12.5px}
  .flight-cinema .flight-progress{grid-column:1/-1;min-width:0}
  .map-zoom{top:8px;right:8px;flex-direction:column;align-items:flex-end;gap:4px}
  .map-zoom button{font-size:11px;padding:7px 9px;min-width:40px;min-height:36px;letter-spacing:.04em}
}
@media(max-width:700px){
  /* the in-page map is a preview; the controls belong to the full-screen map */
  #routes .map .map-zoom{display:none}
}
@media(max-width:520px){
  #routes .map svg{height:230px;min-height:0}
  .flight-controls label{min-width:0}
  .flight-controls label select{min-width:0;width:100%;max-width:100%}
}
/* the small ring his page draws on the route point: same on-screen size at every zoom */
#planeLayer circle{r:calc(5px*var(--k));stroke-width:calc(2px*var(--k))}

/* ── the full-screen map's bottom bar, tidied (Chris, 19 Oct: "these buttons and text still pretty bad") ──
   His legend sat on top of the status line, the flag floated above the select, and the buttons, selects
   and readout were all different heights. One bar: status line, then one row of equal-height controls. */
.flight-cinema .maplegend{bottom:auto;top:44px;left:20px;gap:14px;font-size:10px}
.flight-cinema .mapnote{display:none}
.flight-cinema .mapdetail{padding:9px 20px;min-height:0;font-size:12px}
.flight-cinema .flight-controls{align-items:flex-end;gap:12px 14px;padding:12px 20px calc(12px + env(safe-area-inset-bottom,0px))}
.flight-cinema .flight-controls label>span[aria-live]{display:none}
.flight-cinema .flight-controls label{gap:5px;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase}
.flight-cinema .flight-controls select{height:42px;padding:0 10px;font-size:13px;letter-spacing:0;text-transform:none}
.flight-cinema .flight-controls button{height:42px;padding:0 20px;display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap}
.flight-cinema .flight-readout{align-self:center;min-width:150px;font-size:13px;line-height:1.35}
.flight-cinema .flight-readout small{margin-top:3px;font-size:11px}
.flight-cinema .flight-progress{align-self:center;flex:1 1 200px}
@media(max-width:700px){
  .flight-cinema .maplegend{display:none}
  .flight-cinema .mapdetail{padding:8px 14px;font-size:11px}
  .flight-cinema .flight-controls{padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px))}
  .flight-cinema .flight-controls label{font-size:10px}
  .flight-cinema .flight-controls select{height:44px}
  .flight-cinema .flight-controls button{height:46px;width:100%;padding:0 8px}
  .flight-cinema .flight-readout{align-self:stretch;min-width:0}
}

/* ── the boarding pass: event artwork and a share link ── */
.ticket{overflow:hidden}
.ticket-art{border-bottom:1px dashed #A9B6E6;background:var(--ink)}
.ticket-art img{display:block;width:100%;height:auto}
.share-pass{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:16px 0 4px}
.share-pass-btn{background:transparent;color:var(--blue);border:1.5px solid var(--blue);border-radius:999px;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:11px 16px;min-height:44px;cursor:pointer}
.share-pass-btn:hover,.share-pass-btn:focus-visible{background:var(--blue);color:#fff}
.share-pass-status{font-family:var(--mono);font-size:11px;color:var(--ink-2);word-break:break-all}
.ticket-link{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-radius:999px;background:var(--blue);color:#fff;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;box-shadow:0 0 0 3px rgba(46,66,192,.16)}
.ticket-link:hover,.ticket-link:focus-visible{box-shadow:0 0 0 4px rgba(46,66,192,.32)}
.event-link+.event-link{margin-top:-8px}

/* ── the boarding pass, redone (Chris, 19 Oct) ──
   The "YOUR BOOELIEVER PORTRAIT" caption is gone: the pass shows the picture, the base name and the
   number. The BOOE and STRATO marks sit under the event name. A pale Ethereum mark, twice, sits behind it all. */
.ticket{background-color:var(--peri-wash);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 417'%3E%3Cg fill='%232E42C0'%3E%3Cpolygon points='128,0 256,212 128,288 0,212' fill-opacity='.17'/%3E%3Cpolygon points='128,0 0,212 128,288' fill-opacity='.1'/%3E%3Cpolygon points='128,312 256,236 128,417 0,236' fill-opacity='.17'/%3E%3Cpolygon points='128,312 0,236 128,417' fill-opacity='.1'/%3E%3C/g%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 417'%3E%3Cg fill='%232E42C0'%3E%3Cpolygon points='128,0 256,212 128,288 0,212' fill-opacity='.14'/%3E%3Cpolygon points='128,0 0,212 128,288' fill-opacity='.08'/%3E%3Cpolygon points='128,312 256,236 128,417 0,236' fill-opacity='.14'/%3E%3Cpolygon points='128,312 0,236 128,417' fill-opacity='.08'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat,no-repeat;background-position:right -56px bottom 70px,left -34px top 330px;background-size:300px auto,150px auto}
.passenger-art small{display:none}
.passenger-art{gap:14px;margin:18px 0 4px}
.passenger-art img{width:76px;height:76px;border-radius:10px;box-shadow:0 0 0 3px #FCFAF4,0 6px 16px -6px rgba(30,38,90,.4)}
.passenger-art strong{font-family:var(--display);font-variation-settings:'opsz' 60,'WONK' 1;font-weight:700;font-size:26px;letter-spacing:-.015em;color:var(--ink)}
.pass-logos{display:flex;align-items:center;gap:12px;margin:12px 0 2px}
.pass-logos img{display:block;width:auto}
.pass-logos .logo-booe{height:46px;width:46px}
.pass-logos .logo-strato{height:25px}
.pass-logos span{font-family:var(--body);color:var(--ink-3);font-size:20px;line-height:1}

/* ── share preview ── */
.pass-dialog{position:fixed;inset:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(18,22,47,.78);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.pass-dialog[hidden]{display:none}
.pass-dialog-card{width:min(680px,100%);max-height:100%;overflow:auto;background:var(--paper);border-radius:12px;padding:14px 14px 16px;box-shadow:var(--shadow-amb)}
.pass-dialog-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.pass-dialog-head strong{font-family:var(--display);font-size:20px;font-weight:700;letter-spacing:-.01em}
.pd-close{background:none;border:0;font-size:18px;color:var(--ink-2);cursor:pointer;min-width:44px;min-height:44px}
.pass-canvas{display:block;width:100%;height:auto;aspect-ratio:1200/630;border-radius:8px;background:var(--ink);box-shadow:0 0 0 1px var(--hair)}
.pass-dialog-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.pass-dialog-actions button,.pass-dialog-actions .pd-x{flex:1 1 130px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;box-sizing:border-box;min-height:46px;border-radius:999px;border:1.5px solid var(--blue);background:transparent;color:var(--blue);font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;cursor:pointer}
.pass-dialog-actions .pd-x{background:var(--blue);color:#fff}
.pass-dialog-actions button:hover,.pass-dialog-actions button:focus-visible,.pass-dialog-actions .pd-x:hover,.pass-dialog-actions .pd-x:focus-visible{box-shadow:0 0 0 4px rgba(46,66,192,.25)}
.pass-dialog-status{margin:10px 0 0;min-height:1.2em;font-family:var(--mono);font-size:11px;color:var(--ink-2);word-break:break-all}

/* ── the home base and destination row, aligned (Chris, 19 Oct: "fix this box of home base and destination") ──
   The flag sat above the home-base select and pushed its label lower than the destination's. The flag is
   dropped (the select already names the country), both fields are the same width and height, and
   everything in the row lines up on its bottom edge. */
.flight-controls label>span[aria-live]{display:none}
.flight-controls{align-items:flex-end;gap:12px 16px}
.flight-controls label:not(.flight-progress){flex:0 1 280px;min-width:0}
.flight-controls label select{width:100%;max-width:none;height:42px;padding:0 10px}
.flight-controls button{height:42px;padding:0 20px;display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap}
.flight-controls .flight-readout{align-self:center}
.flight-controls .flight-progress{align-self:center;flex:1 1 220px}

/* ── the BOOE logo at the top, bigger (Chris, 19 Oct) ── sized to stand level with the wordmark beside it */
.masthead .mark{width:clamp(64px,11.5vw,170px);height:clamp(64px,11.5vw,170px);margin-bottom:6px}
.brand{gap:clamp(10px,2vw,28px)}
.cinema-logo{width:58px;height:58px}
.flight-cinema .cinema-header strong{gap:14px;font-size:26px}
@media(max-width:700px){
  .cinema-logo{width:46px;height:46px}
  .flight-cinema .cinema-header strong{gap:10px;font-size:19px}
}

/* ── the boarding pass on the page, heavier type (Chris, 20 Oct: "FONT on the boarding pass needs to be
   more bold I think, small font is not great") ── every small line one weight up and a size up; the
   Ethereum marks behind it are twice as strong (the .ticket rule above). */
.ticket-top b{font-size:13.5px;font-weight:800;letter-spacing:.09em}
.ticket .eyebrow{font-size:12px;font-weight:700;letter-spacing:.14em}
.ticket .airport{font-weight:800}
.ticket .airport small{font-size:13px;font-weight:700;color:var(--ink-2);margin-top:2px}
.ticket .plane{font-weight:700;color:var(--blue)}
.ticket-body>strong{font-family:var(--display);font-weight:800;font-size:22px;letter-spacing:-.01em;color:var(--ink)}
.ticket-body p[data-s="1"]{font-size:15px!important;font-weight:600;color:var(--ink-2)!important;margin-top:4px}
.ticket-bottom{font-size:13px;font-weight:700;letter-spacing:.06em;color:var(--ink-2)}
.ticket-bottom b{font-size:15px;font-weight:800;letter-spacing:0;color:var(--ink)}
.passenger-art strong{font-weight:800}
.share-pass-btn,.ticket-link{font-size:12px}

/* ── each event's own artwork, faint behind its card (Chris, 20 Oct) ── overlay.js puts the picture in
   as the card's first child; isolation keeps it above the card's paper and under its words. Strongest
   in the lower right, fading out behind the title and the notes so they read as before. */
.event.has-art{position:relative;isolation:isolate;overflow:hidden}
.event-art{position:absolute;inset:0;z-index:-1;width:100%;height:100%;object-fit:cover;opacity:.26;pointer-events:none;
  filter:blur(1.4px) saturate(1.1);transform:scale(1.04);
  -webkit-mask-image:linear-gradient(160deg,rgba(0,0,0,.3) 0%,rgba(0,0,0,.5) 45%,#000 100%);mask-image:linear-gradient(160deg,rgba(0,0,0,.3) 0%,rgba(0,0,0,.5) 45%,#000 100%);
  transition:opacity .25s ease,filter .25s ease}
/* a dark picture (ETHDenver, ETHConf...) darkens the paper, so it is shown fainter */
.event-art[data-tone="dark"]{opacity:.15}
/* a pale pastel picture (the EF ten-years NFT) all but vanishes at the usual strength */
.event-art[data-tone="light"]{opacity:.5}
.event.has-art:hover .event-art[data-tone="light"]{opacity:.7}
/* softened so the lettering in a share picture never reads as a second headline; sharp on hover */
.event.has-art:hover .event-art{opacity:.42;filter:none}
.event.has-art:hover .event-art[data-tone="dark"]{opacity:.26}
.event.upcoming .event-art{opacity:.34;mix-blend-mode:multiply}
@media(prefers-reduced-motion:reduce){.event-art{transition:none}}

/* ── Take off on the page offers the big map instead of opening it (Chris, 20 Oct) ── */
.bigmap-suggest{position:absolute;left:50%;top:auto;bottom:16px;transform:translateX(-50%);z-index:3;display:inline-flex;align-items:center;gap:8px;
  min-height:44px;padding:0 18px;border:0;border-radius:999px;background:var(--ink);color:#fff;font-family:var(--mono);font-size:12px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;cursor:pointer;box-shadow:0 6px 18px -6px rgba(18,22,47,.55),0 0 0 3px rgba(242,206,126,.55);
  animation:bigmap-in .35s ease-out both}
.bigmap-suggest[hidden]{display:none}
.bigmap-suggest span{font-size:16px;line-height:1;color:var(--gold-lt)}
.bigmap-suggest:hover,.bigmap-suggest:focus-visible{background:var(--blue);box-shadow:0 6px 18px -6px rgba(18,22,47,.55),0 0 0 4px rgba(242,206,126,.85)}
.flight-cinema .bigmap-suggest{display:none}
@keyframes bigmap-in{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.bigmap-suggest{animation:none}}
@media(max-width:520px){.bigmap-suggest{font-size:11px;padding:0 14px;min-height:40px}}
