/* flypeak.com hand-written overrides.
   theme.css is generated (purged Salient/WPBakery CSS) - never edit it directly.
   Put every site-specific tweak here so it survives a re-extract. */

/* ---- runtime states driven by main.js (replaces jQuery-set inline styles) ---- */
#slide-out-widget-area.slide-out-from-right { transition: transform .5s cubic-bezier(.2, .9, .2, 1); }
#slide-out-widget-area.slide-out-from-right.open { transform: translate3d(0, 0, 0); overflow-y: auto; }
#slide-out-widget-area-bg { position: fixed; top: 0; left: 0; width: 1px; height: 1px; z-index: 9996; display: block; opacity: 0; pointer-events: none; transition: opacity .45s ease; background: rgba(0, 0, 0, .6); }
#slide-out-widget-area-bg.open { pointer-events: auto; width: 100%; height: 100%; opacity: 1; }
#header-outer { transition: transform .5s cubic-bezier(.2, .9, .2, 1), background-color .3s ease, padding .3s ease; }
body.ocm-open { overflow: hidden; }
#slide-out-widget-area .off-canvas-menu-container li.menu-item-has-children { position: relative; }
#slide-out-widget-area .off-canvas-menu-container li.menu-item-has-children > ul.sub-menu { display: block; max-height: 0; overflow: hidden; transition: max-height .4s ease; }
#slide-out-widget-area .ocm-dropdown-arrow { color: inherit; text-align: center; }
#slide-out-widget-area .ocm-dropdown-arrow:focus-visible { outline: 2px solid #f9c36b; outline-offset: 2px; }

.toggle[data-inner-wrap="true"] > div { max-height: 0; overflow: hidden; transition: max-height .45s cubic-bezier(.2, .8, .2, 1); }
.toggle[data-inner-wrap="true"].open > div { max-height: none; }

.testimonial_slider .slides { position: relative; overflow: hidden; }
.testimonial_slider .slides blockquote { position: absolute; top: 0; left: 0; width: 100%; }
.testimonial_slider .slides blockquote.no-trans { transition: none !important; }

.wpb_row .nectar-video-wrap { transition: opacity .6s ease; }
.wpb_row .nectar-video-wrap video.loaded { opacity: 1; }

#to-top { display: block; }
#to-top.mobile-enabled { display: block; }

.nectar-split-heading.animated-in, .nectar-split-heading.animated-in span, .nectar-split-heading.animated-in span .inner { opacity: 1 !important; transform: none !important; }
.nectar-animated-title.completed .nectar-animated-title-inner .wrap { opacity: 1; transform: none; }
.nectar_cascading_images .cascading-image .inner-wrap { opacity: 0; transform: scale(.85); }
body.using-mobile-browser .nectar_cascading_images .cascading-image .inner-wrap { opacity: 1; transform: none; }

/* ---- insights carousel (replaces Flickity; item styling stays with the theme CSS) ---- */
.nectar-post-grid.nectar-flickity { position: relative; }
.nectar-post-grid.nectar-flickity .flickity-viewport { overflow: visible; height: auto !important; }
.nectar-post-grid.nectar-flickity .flickity-slider { position: static; display: flex; gap: 0; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; -webkit-overflow-scrolling: touch; scrollbar-width: none; cursor: grab; }
.nectar-post-grid.nectar-flickity .flickity-slider::-webkit-scrollbar { display: none; }
.nectar-post-grid.nectar-flickity .flickity-slider.is-dragging { cursor: grabbing; scroll-behavior: auto; scroll-snap-type: none; }
.nectar-post-grid.nectar-flickity .nectar-post-grid-item { position: relative !important; left: auto !important; flex: 0 0 calc(100% / 3 - 20px); width: calc(100% / 3 - 20px) !important; margin: 15px !important; scroll-snap-align: start; }
.nectar-post-grid.nectar-flickity .nectar-post-grid-item:first-child { margin-left: 0 !important; }
.nectar-post-grid.nectar-flickity[data-grid-spacing="0px"] .nectar-post-grid-item { margin: 0 !important; }
.nectar-post-grid.nectar-flickity .nectar-post-grid-item[hidden] { display: none; }
@media (max-width: 999px) { .nectar-post-grid.nectar-flickity .nectar-post-grid-item { flex-basis: calc(100% / 2 - 15px); width: calc(100% / 2 - 15px) !important; } }
@media (max-width: 690px) { .nectar-post-grid.nectar-flickity .nectar-post-grid-item { flex-basis: calc(100% - 30px); width: calc(100% - 30px) !important; } } /* Salient phone-cols-1: the next card peeks in */
.nectar-post-grid.nectar-flickity .flickity-page-dots { position: absolute; left: 0; bottom: 0; width: 100%; margin: 0; padding: 0; list-style: none; text-align: center; line-height: 1; }
.nectar-post-grid.nectar-flickity .flickity-page-dots .dot { cursor: pointer; }

/* ---- search page ---- */
.peak-search-form { display: flex; gap: 8px; justify-content: center; margin-top: 20px; }
.peak-search-form input[type="search"] { flex: 1 1 320px; max-width: 420px; padding: 10px 14px; border: 1px solid #ccc; border-radius: 6px; font-size: 16px; }
#search-results { display: grid; grid-template-columns: repeat(4, 1fr); gap: 25px; padding: 40px 0; align-items: start; }
@media (max-width: 999px) { #search-results { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 690px) { #search-results { grid-template-columns: 1fr; } }
#search-results article.result { position: static; width: auto !important; margin: 0 !important; }
#search-results article.result img { width: 100%; height: auto; display: block; margin-bottom: 15px; }
#search-results article.result h2.title { font-size: 16px; line-height: 1.4; margin-bottom: 8px; }
#search-results article.result h2.title span { display: block; font-size: 12px; text-transform: uppercase; letter-spacing: 1px; opacity: .6; margin-top: 4px; }
#search-results .no-results { padding: 40px 0; }

/* ---- video lightbox + team bio overlay ---- */
.peak-lightbox { position: fixed; inset: 0; z-index: 100000; opacity: 0; transition: opacity .3s ease; }
.peak-lightbox.open { opacity: 1; }
.peak-lightbox-bg { position: absolute; inset: 0; background: rgba(0, 0, 0, .85); }
.peak-lightbox-content { position: absolute; top: 50%; left: 50%; width: min(92vw, 1100px); aspect-ratio: 16 / 9; transform: translate(-50%, -50%); background: #000; }
.peak-lightbox-content video, .peak-lightbox-content iframe { width: 100%; height: 100%; display: block; border: 0; }
.peak-lightbox-close, .peak-bio-close { position: absolute; top: -44px; right: 0; width: 40px; height: 40px; border: 0; background: transparent; color: #fff; font-size: 22px; cursor: pointer; }
body.nectar-video-lightbox-open, body.nectar-team-bio-open { overflow: hidden; }
.peak-bio-overlay { position: fixed; inset: 0; z-index: 100000; background: rgba(0, 0, 0, .92); color: #fff; opacity: 0; transition: opacity .4s ease; overflow-y: auto; }
.peak-bio-overlay.open { opacity: 1; }
.peak-bio-inner { position: relative; max-width: 1100px; margin: 8vh auto; padding: 60px 40px; display: grid; grid-template-columns: minmax(200px, 340px) 1fr; gap: 50px; align-items: start; }
.peak-bio-inner .peak-bio-close { top: 10px; right: 10px; }
.peak-bio-img img { width: 100%; height: auto; display: block; border-radius: 6px; }
.peak-bio-overlay h3, .peak-bio-overlay h5 { color: #fff; }
.peak-bio-overlay .team-bio-content p { color: rgba(255, 255, 255, .9); }
@media (max-width: 800px) { .peak-bio-inner { grid-template-columns: 1fr; padding: 60px 20px; } }

/* ---- accessibility & polish ---- */
.nectar-skip-to-content { position: absolute; left: -9999px; top: 0; z-index: 100001; background: #000; color: #fff; padding: 12px 18px; }
.nectar-skip-to-content:focus { left: 10px; top: 10px; }
.screen-reader-text { position: absolute !important; clip: rect(1px, 1px, 1px, 1px); width: 1px; height: 1px; overflow: hidden; }

/* search page title: inherit the black h1 colour (base theme sets #page-header-bg to white text) */
body.search #page-header-bg h1 span { color: inherit; }

/* header: 17px between the phone number and the Request a Quote button (the whitespace text node collapses in flex) (Campbell, 1 Oct 2026) */
.nectar-header-text-content > div { display: inline-flex; align-items: center; gap: 17px; }
/* header: keep at least 20px between the last menu item (Peak App) and the phone number (Campbell, 1 Oct 2026).
   The menu is centred and the phone/quote block is pinned right, so the gap shrinks as the window narrows
   (~14px at 1508px wide). Below a 1238.5px-wide nav the menu list is nudged left by half the shortfall, so the gap
   never drops under 20px. Uses transform (not padding: % padding feeds back into the nav's flex width and breaks it;
   not left: the theme forces position:static). Re-measure the 1238.5px if menu items or the phone block change. */
/* 8 Oct 2026: the desktop menu now shows from 1366px (see the breakpoint in bundles/dynamic-css-css.css). The %-of-nav nudge above
   bottomed out at a 14px gap below 1507px, so the shift is now taken from the viewport: the gap grows by half of every extra pixel
   of width and is 69px at 1600px, so a shift of (100vw - 1520px) / 2 holds it at 20px or more down to 1366px, scrollbar included. */
@media only screen and (min-width: 1000px) and (max-width: 1540px) { #header-outer #top nav > ul.sf-menu:not(.buttons) { transform: translateX(min(0px, calc((100vw - 1520px) / 2))); } }

/* mobile floating tabs: WordPress pads them "0 7%" (a percentage of each tab's own width), so the two labels
   start at different x positions; use the same fixed padding on both so their left edges line up (Campbell) */
.peak-float .pf-btn { padding: 0 10px !important; }
/* off-canvas menu: stack the phone number above the quote button (Campbell, 30 Sep 2026) */
#slide-out-widget-area .nectar-header-text-content > div { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; }
#slide-out-widget-area .nectar-header-text-content > div > a { white-space: nowrap; }
/* hide the floating tabs while the off-canvas menu is open (Campbell, 30 Sep 2026) */
body.ocm-open .peak-float { opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .25s ease, visibility 0s linear .25s; }
.peak-float { transition: opacity .25s ease; }
/* off-canvas menu: the grey contact box only as wide as its content, clear of the close button (Campbell) */
#slide-out-widget-area .nectar-header-text-content { width: fit-content; max-width: calc(100% - 45px); }

/* Hero standard: every page hero is 800px tall on desktop and 350px on phone, no extra top/bottom padding.
   Exceptions: the homepage hero always stays full screen (never give it these classes); Contact Us and FAQ may be shorter (Campbell, 1 Oct 2026). Defined here so pages don't depend on their own head_css. */
#ajax-content-wrap .height_desktop_800px.vc_row,.height_desktop_800px.vc_row{height:800px;}
@media only screen and (max-width:690px){html body #ajax-content-wrap .height_phone_350px.vc_row,html body .height_phone_350px.vc_row{height:350px;}}
/* Shorter hero for Contact Us and FAQ only: 700px on desktop, 350px on phone like every other hero (Campbell, 1 Oct 2026) */
#ajax-content-wrap .height_desktop_700px.vc_row,.height_desktop_700px.vc_row{height:700px;}
/* Heroes that carry more than a title on phone (podcast intro, partnerships button, Peak App screenshots) grow to fit instead of spilling into the next section */
@media only screen and (max-width:690px){html body #ajax-content-wrap .hero-phone-auto.vc_row,html body .hero-phone-auto.vc_row{height:auto;min-height:350px;}}

/* Footer nav (general + aircraft columns): 1pt smaller than the 18px theme size -> 12.5pt / 16.67px; row spacing unchanged (Campbell, 1 Oct 2026) */
#footer-outer #menu-footer-general a, #footer-outer #menu-footer-aircraft a { font-size: calc(18px - 1pt); }
/* Footer contact block (phone, email, address): no underline (Campbell, 1 Oct 2026) */
#footer-outer #block-39 a, #footer-outer #block-36 a { text-decoration: none; }

/* Desktop menu: 5px less horizontal space between items, 40px -> 35px (theme gives each link 20px left/right margin; now 17.5px).
   Menu is 30px narrower, so the phone-buffer constant above moved 1268.5px -> 1238.5px (Campbell, 1 Oct 2026) */
#header-outer[data-lhe="animated_underline"] #top nav > ul.sf-menu:not(.buttons) > li:not([class*="menu-item-btn"]) > a { margin-left: 17.5px; margin-right: 17.5px; }
/* Split panels (a text column beside an image or video column, e.g. the grey "Comfort for Every Passenger" panel):
   the section header is always centred and the body copy always left-justified, on every page and screen size.
   Step/feature labels (h5/h6) follow the body copy; headings typed inside a text block (e.g. restaurant names) keep their own alignment.
   Padded intro rows (data-top-percent, e.g. About's black collage) are not panels and keep their own layout (Campbell, 1 Oct 2026) */
.wpb_row.full-width-content.vc_row-o-equal-height:not([data-top-percent]):has(> .row_col_wrap_12 > .wpb_column > .vc_column-inner > :is(.column-image-bg-wrap, .nectar-video-wrap)) > .row_col_wrap_12 > .wpb_column:not(:has(> .vc_column-inner > :is(.column-image-bg-wrap, .nectar-video-wrap))) :is(h1, h2, h3, h4):not(.wpb_text_column *) { text-align: center !important; }
.wpb_row.full-width-content.vc_row-o-equal-height:not([data-top-percent]):has(> .row_col_wrap_12 > .wpb_column > .vc_column-inner > :is(.column-image-bg-wrap, .nectar-video-wrap)) > .row_col_wrap_12 > .wpb_column:not(:has(> .vc_column-inner > :is(.column-image-bg-wrap, .nectar-video-wrap))) :is(p, ul, ol, li, blockquote, h5, h6) { text-align: left !important; }

/* Insights page: "View all" category links in upper case, semi-bold, and 5px smaller than the theme size (23px -> 18px) (Campbell, 1 Oct 2026) */
body.page-id-5040 .nectar-cta .link_text .text { text-transform: uppercase; font-size: calc(1em - 5px); font-weight: 600; }

/* Wide data tables: build.py wraps every content table in .peak-table-scroll, so a table wider than the screen scrolls
   sideways inside its own box instead of pushing the whole page wider than the viewport (14 guides scrolled sideways on
   phones; worst was /private-jet-membership/ at +356px). Tables that fit look exactly as before (Campbell, 2 Oct 2026) */
.peak-table-scroll { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* Mobile floating tabs vs page headings: below 770px the "Request a quote" / "Call us" tabs sit at the left edge from
   83px to 158px down. On pages whose H1 starts at the top with no hero it sat underneath them, so those headings now
   start at 170px. Covers the plain article pages (H1 is the first thing in the content), Pat's page, Insights and the
   category archive headers, where the small "Category" label above the H1 clears the tabs too (Campbell, 2 Oct 2026).
   The search page header (same #page-header-bg layout) is covered by the archive rules too, since 8 Oct 2026. */
@media only screen and (max-width: 769px) {
  .container-wrap > .container.main-content > .row > h1:first-child { margin-top: 56px; }
  body.page-id-4808 .wpb_row.top-level h1.wp-block-heading { margin-top: 56px; }
  body.page-id-5040 .wpb_row.top-level h1.vc_custom_heading { margin-top: 61px; }
}
@media only screen and (max-width: 690px) { :is(.blog-archive-header, body.search) #page-header-bg[data-alignment-v]:not(.fullscreen-header) .span_6 .inner-wrap { padding-top: calc(130px + var(--nectar_hook_before_nav_content_height, 0px)); } }
@media only screen and (min-width: 691px) and (max-width: 769px) { :is(.blog-archive-header, body.search) #page-header-bg[data-alignment-v]:not(.fullscreen-header) .span_6 .inner-wrap { padding-top: calc(110px + var(--nectar_hook_before_nav_content_height, 0px)); } }

/* 2026-10-05 Toronto "When Toronto Fills Up" row: Salient flip boxes, stylised. Scoped to #events, and since 8 Oct 2026 to every event-card row (.pk-events: Aspen, Boulder, Jackson Hole, Montreal, Canadian GP, Sundance, SXSW) so all of them share one look. */
:is(#events, .pk-events) .nectar-flip-box .flip-box-front, :is(#events, .pk-events) .nectar-flip-box .flip-box-back { border: 1px solid #262626; }
:is(#events, .pk-events) .nectar-flip-box .flip-box-front[data-bg-overlay="true"]:after { background: linear-gradient(180deg, rgba(0,0,0,0.35) 0%, rgba(0,0,0,0.62) 50%, rgba(0,0,0,0.88) 100%); opacity: 1; }
:is(#events, .pk-events) .nectar-flip-box .flip-box-front .inner, :is(#events, .pk-events) .nectar-flip-box .flip-box-back .inner { padding: 34px 30px; }
:is(#events, .pk-events) .nectar-flip-box .flip-box-front .inner h3 { font-size: 27px; line-height: 1.22; font-weight: 600; letter-spacing: 0.2px; margin: 0; text-shadow: 0 2px 12px rgba(0,0,0,0.75); }
:is(#events, .pk-events) .nectar-flip-box .flip-box-front .inner h3 i { display: block; margin-top: 16px; font-style: normal; font-size: 11px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; color: #f9c36b; text-shadow: 0 1px 8px rgba(0,0,0,0.85); }
:is(#events, .pk-events) .nectar-flip-box .flip-box-front .inner p { margin: 0; }
:is(#events, .pk-events) .nectar-flip-box .flip-box-front .inner h3 a { color: inherit; text-decoration: none; }
:is(#events, .pk-events) .nectar-flip-box .flip-box-back .inner { font-size: 15px; line-height: 1.7; }
:is(#events, .pk-events) .nectar-flip-box .flip-box-back .inner p { margin: 20px 0 0; }
:is(#events, .pk-events) .nectar-flip-box .flip-box-back .inner a { display: inline-block; color: #ffffff; font-size: 12px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; text-decoration: none; padding-bottom: 4px; border-bottom: 1px solid rgba(255,255,255,0.55); }
:is(#events, .pk-events) .nectar-flip-box .flip-box-back .inner a:hover { color: #000000; border-bottom-color: #000000; }
@media only screen and (max-width: 690px) { :is(#events, .pk-events) .nectar-flip-box .flip-box-front .inner, :is(#events, .pk-events) .nectar-flip-box .flip-box-back .inner { padding: 26px 22px; } :is(#events, .pk-events) .nectar-flip-box .flip-box-front .inner h3 { font-size: 24px; } }

/* Footer Trustindex badge: left-align the white card with the phone/email/address text above it; the widget container centred it 26px in at 1440 and 52px at 390 (Campbell, 5 Oct 2026) */
#footer-outer #block-42 .ti-widget-container { text-align: left; }

/* Footer nav (general + aircraft columns): line height 2pt tighter, 30px -> calc(30px - 2pt) ~27.33px; row pitch 38px -> ~35.33px (Campbell, 5 Oct 2026) */
#footer-outer #menu-footer-general a, #footer-outer #menu-footer-aircraft a { line-height: calc(30px - 2pt); }

/* Footer legal copy (copyright / air charter broker disclaimer): line spacing tightened 22px -> 18px, then text and line spacing each 1pt smaller: font 12px -> calc(12px - 1pt) ~10.67px, line height 18px -> calc(18px - 1pt), then a further 1pt off the line height -> calc(18px - 2pt) ~15.33px (Campbell, 8 Oct 2026) */
#footer-outer #copyright p { font-size: calc(12px - 1pt); line-height: calc(18px - 2pt); }
/* Footer legal copy runs wider on desktop: its column goes from 40.5% to 51% of the footer row, so the text reaches the left edge of the third footer column (aircraft menu), 504px -> 634px at 1440. The empty social column beside it gives up the space (57.5% -> 47%). Below 1000px the footer is 2 columns or stacked and is unchanged (Campbell, 8 Oct 2026) */
@media only screen and (min-width: 1000px) {
  #footer-outer #copyright .col.span_5 { width: 51%; }
  #footer-outer #copyright .col.span_7 { width: 47%; }
}

/* 2026-10-05 Destination route-map block (#maplocations .pk-routemap): map + legend only, cropped to the lines Campbell marked, the same block at the bottom of every destination page. On phones the map keeps a readable 760px width and scrolls sideways; main.js initRouteMaps() starts it centred on the destination. */
#maplocations .wpb_text_column { margin-bottom: 0; }
.pk-routemap-scroll { display: block; }
@media only screen and (max-width: 690px) {
  .pk-routemap-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .pk-routemap-scroll::-webkit-scrollbar { display: none; }
  .pk-routemap-scroll svg { width: 760px; max-width: none !important; margin-bottom: 18px !important; }
  .pk-routemap-legend { gap: 6px 18px; margin-bottom: 20px; }
}

/* 2026-10-05 Moove widget gap: the empty <script data-removed="inline"> placeholders left by the WordPress migration were removed from the widget blocks. They kept .iframe-container from being its wrapper's last child, so Salient's ".wpb_wrapper>div{margin-bottom:24px}" applied instead of ":last-child{margin-bottom:0}". This keeps that 24px gap under the widget; flex-layout columns keep 0 (their rule is more specific). */
.wpb_wrapper > .iframe-container:last-child { margin-bottom: 24px; }
