
.ycs-calview-fleet{cursor:pointer;color:#ec5a30;font-weight:700;margin-left:6px;white-space:nowrap;}
.ycs-calview-fleet:hover{text-decoration:underline;}
#ycs-cal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:100000;display:none;align-items:flex-start;justify-content:center;padding:36px 12px;overflow:auto;}
#ycs-cal-overlay.ycs-open{display:flex;}
#ycs-cal-panel{background:#fff;border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.3);padding:16px;width:364px;max-width:100%;box-sizing:border-box;font-family:inherit;}
#ycs-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
#ycs-cal-title{font-size:0.95rem;font-weight:700;color:#2c2c2a;}
#ycs-cal-close{cursor:pointer;border:none;background:none;font-size:1.4rem;line-height:1;color:#575757;padding:0 2px;}
#ycs-cal-nav{display:flex;align-items:center;gap:6px;margin-bottom:8px;}
#ycs-cal-my{display:flex;gap:6px;flex:1;}
#ycs-cal-my select{padding:6px 4px;border:1px solid #c9d6d9;border-radius:6px;background:#fff;font-size:0.82rem;font-weight:600;color:#2c2c2a;}
#ycs-cal-month{flex:1;}
.ycs-cal-arrow{cursor:pointer;border:1px solid #c9d6d9;border-radius:6px;background:#fff;width:32px;height:32px;font-size:1.05rem;color:#2c2c2a;line-height:1;flex:0 0 auto;}
#ycs-cal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px;}
#ycs-cal-dow div{text-align:center;font-size:0.66rem;color:#8a8a8a;font-weight:600;}
#ycs-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
.ycs-cd{height:42px;border:1px solid #c9d6d9;border-radius:6px;background:#eef8f1;font-size:0.8rem;font-weight:600;color:#2c2c2a;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;font-family:inherit;}
.ycs-cd.ycs-empty{border:none;background:none;cursor:default;}
.ycs-cd.ycs-blocked{background:#ec5a30;color:#fff;border-color:#ec5a30;cursor:not-allowed;}
.ycs-cd.ycs-past{background:#f4f4f4;color:#c2c2c2;border-color:#eaeaea;cursor:not-allowed;}
.ycs-cd.ycs-conflict{background:#fdece6;color:#bd4622;}
#ycs-cal-hint{margin-top:9px;font-size:0.74rem;font-weight:600;color:#2c8a52;min-height:1.1em;}
#ycs-cal-legend{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:10px;font-size:0.64rem;color:#575757;}
#ycs-cal-legend span{display:inline-flex;align-items:center;gap:5px;}
.ycs-lg{width:12px;height:12px;border-radius:3px;display:inline-block;flex:0 0 auto;}

/*gc-pricetrip-fix 2026-09-08: label renamed Price my trip -> Price my BVI charter (+63px), which pushed Search availability onto a second row on desktop and left Guests beside the label on mobile. Mobile: label takes the full row. Desktop: label capped at 124px and allowed to wrap onto two lines - white-space must be forced on the DESCENDANT too, the inner div carries nowrap and the text just clips otherwise.*/
@media(max-width:600px){.ycs-fleet-filter > div > div:first-child{flex:0 0 100%!important;max-width:100%!important}}
@media(min-width:601px){.ycs-fleet-filter > div{gap:12px 12px!important}}
/*gc-quote-mobile 2026-09-09 v2: the "Quote my charter" bar (#home-price-bar /
#homeRow) laid Guests as 9 buttons on their own row, Nights as 6 buttons on a second
row and Start Date on a third, which on a phone is three tall rows of mostly empty
space. On mobile only, the two button rows are hidden and replaced with a dropdown
each, side by side on one line, with Start Date on the line below.

WHY THE BUTTONS ARE HIDDEN, NOT REPLACED. Two other scripts read the CURRENT selection
by walking the buttons and testing each one's inline background for a non-white value -
footer cscp-cardlink-js activeVal('#homeGbtns .home-gbtn'), and the page's own quote
logic. If the buttons were removed, both would silently read an empty selection. So the
dropdowns are an adapter: changing one .click()s the matching hidden button, which
leaves every existing handler and every read of the active button working untouched. A
MutationObserver on the buttons' style attribute syncs the dropdown back the other way,
so Reset and the calendar view keep it honest.

HEADINGS - v2 KEEPS A REAL, VISIBLE H2 ON MOBILE. v1 hid the h2 "BVI catamaran charter
prices" and rewrote the bar's own unclassed label div to carry the keywords. That left
the phone with a hidden heading and no visible one, which is exactly backwards under
mobile-first indexing: the mobile version is what gets indexed, and hidden text carries
less weight than visible text.

v2 inverts it. The h2 STAYS, is restyled to look like the coral bar label, and its text
is rewritten to "Quote my BVI Catamaran Charter". The duplicate unclassed label div
inside #homeRow is the thing hidden instead. Net result on a phone: one visible <h2>
carrying the target keywords, no duplication, nothing hidden that matters.

Desktop is untouched - it still shows "BVI catamaran charter prices" as the h2 with
"Quote my charter" as the bar label, and the dropdowns are only built when the media
query matches. Both rewrites are guarded on the exact old strings, so they are
idempotent and will no-op rather than clobber if that copy is edited in the page.*/
@media(max-width:600px){
.csc-price-h2{margin:0 0 10px!important;color:#ec5a30!important;font-size:1.2rem!important;font-weight:800!important;line-height:1.25!important}
#homeRow>div:first-child{display:none!important}
#home-price-bar{padding:14px 12px!important}
#homeRow{gap:10px 8px!important;align-items:flex-end!important}
#homeGbtns,#homeNbtns{display:none!important}
.gcq-sel{display:block;width:100%;height:40px;box-sizing:border-box;margin:0;padding:0 10px;border:1px solid #c9d6d9;border-radius:8px;background:#fff;color:#12303f;font-family:inherit;font-size:16px;font-weight:600;line-height:1.2}
#homeRow>div:nth-child(2),#homeRow>div:nth-child(3){flex:1 1 calc(50% - 4px)!important;min-width:0!important}
#homeRow>div:nth-child(4){flex:1 1 100%!important;min-width:0!important}
#homeRow>div:nth-child(4)>div:last-child{display:flex!important;gap:6px!important}
#homeYear,#homeMonth,#homeDay{flex:1 1 0!important;min-width:0!important;width:auto!important;height:40px!important;font-size:16px!important}
}
/*gc-quote-h2 2026-09-09: on phones the "Quote my BVI Catamaran
Charter" heading moves INSIDE the shaded filter card (#home-price-bar) and centers,
instead of sitting above it left-aligned.

It stays a real <h2> and its text is unchanged - only its DOM position moves - so the
page keeps exactly one h2 with the same wording and nothing about the heading outline
changes for search. Do not swap it for a styled div.

The move has to be JavaScript: the h2 is a SIBLING of #home-price-bar, not a child, so
no flex/order trick can nest one inside the other.

The centering rule is scoped '#home-price-bar .csc-price-h2' (id plus class) so it beats
the plain '.csc-price-h2' rule in gc-quote-mobile above without needing source order.*/
@media(max-width:600px){
#home-price-bar .csc-price-h2{text-align:center!important;margin:2px 0 12px!important;font-size:1.15rem!important}
}
/*gc-cal-inline 2026-09-09: PHONES ONLY. The Start Date field is replaced by the
real availability calendar, shown inline inside the quote card.

WHY NOT A HALF-WIDTH CALENDAR. The shaded card gives 312px of inner width. Split in half
that is about 151px, and a 7-column month grid would land on 21.5px day cells - under
half the 44px minimum tap target. Full width gives 41-42px cells (MEASURED), which is
the whole reason this REPLACES Start Date rather than sitting beside it.

THIS IS THE SAME CALENDAR AS THE MODAL, NOT A COPY. #ycs-cal-panel is physically moved
out of #ycs-cal-overlay into the card, so availability colouring, the month and year
selects, the prev/next arrows and the Saturday-snapping date logic are all the
originals. Nothing is duplicated, so nothing can drift apart.

THE START DATE SELECTS STAY IN THE DOM. #homeYear / #homeMonth / #homeDay are hidden,
never removed: picking a day writes into them and the Search availability flow reads
them back. Hiding the wrapper also hides the now-redundant "Calendar View" link, which
lives inside it.

THE GRID IS BUILT LAZILY - THIS IS THE TRAP. On a fresh load #ycs-cal-grid is EMPTY and
#ycs-cal-month defaults to 0 (January), which for most of the year is entirely in the
past. Dispatching a change event on that select therefore renders a DEAD month: 31 past
cells, zero selectable. The site's own open path is what picks a sensible booking month
- MEASURED 2026-09-09 it opens on November 2026 with 30 selectable days, so it applies
lead time rather than just using the current month. Init therefore CLICKS #ycs-calview
to let that path build the grid and choose the month, then immediately re-homes the
panel. Do not swap that click for a change dispatch.

No flash: the click handler runs synchronously and the panel is moved in the same task,
so the browser never paints the overlay. body.gc-cal-inline additionally pins the
overlay to display:none so a later stray ycs-open cannot flash an empty backdrop. That
class is added only after a successful move, so if this script fails the modal still
works exactly as it did before.*/
@media(max-width:600px){
#homeRow>div.gc-startdate-hidden{display:none!important}
body.gc-cal-inline #ycs-cal-overlay{display:none!important}
.gc-calslot{flex:1 1 100%!important;width:100%!important;margin:0!important}
#home-price-bar #ycs-cal-panel{position:static!important;display:block!important;width:100%!important;max-width:100%!important;margin:0!important;padding:0!important;background:transparent!important;box-shadow:none!important;border:0!important;border-radius:0!important;max-height:none!important;overflow:visible!important}
#home-price-bar #ycs-cal-close{display:none!important}
}
/*gc-cal-sync 2026-09-09: keeps the visible calendar showing whatever the Start Date
state actually says, and marks the chosen day.

WHY THIS EXISTS. Once the calendar replaced the Start Date field on phones, the
Christmas and New Year checkboxes LOOKED broken. They were not: they still set
#homeYear / #homeMonth / #homeDay correctly (VERIFIED: Christmas writes 2026-12-19, New
Year writes 2026-12-27). The problem was purely feedback - those selects are now hidden
behind the calendar, and the calendar stayed parked on November showing nothing, so
there was no sign anything had happened. On desktop the selects are still visible, which
is why the same click looked fine there. Always check which half of a control is broken
before rewriting the logic.

DO NOT STYLE .gc-cd-sel. An earlier version painted it solid coral, which was WRONG. The
calendar already draws the whole stay itself, using INLINE styles that a stylesheet
!important silently overrides:
  start day  linear-gradient(to right bottom,#fff 50%,#2c8a52 50%)  - the noon start half
  mid days   background #eef8f1 plus box-shadow #2c8a52 0 0 0 2px inset
  end day    the mirrored gradient, green on the top left
The coral fill replaced the start day's noon marker. VERIFIED that simply deleting the
rule restores all three. .gc-cd-sel is still applied as a hook, but it must stay visually
inert - never give it a background.*/

/*gc-fleet-funnel 2026-09-09: FLEET PAGES (886 / 3648 / 3649 / 3650), PHONES ONLY.
  Derived mechanically from gc-quote-funnel on page 1214, which is why the notes below still
  talk about the reel. The quote card markup on these pages is byte-identical to the home page
  for the first 6751 characters - it diverges exactly where the home page inserts its reel.
  These pages have no reel, so build() treats it as optional and every reel helper no-ops on
  its own guard. Only two things were actually removed: the nav/quick-link chip CSS and the
  hero promise panels, both of which target elements that exist only on the home page.
  This block REQUIRES the gc-quote-mobile / gc-cal-* stack to be present on the page ahead of
  it - that stack is what turns the guest and night buttons into selects and builds the inline
  calendar this block then folds away.
  ORIGINAL HEADER FOLLOWS.
  gc-quote-funnel 2026-09-09: HOME PAGE, PHONES ONLY. Turns the quote card into a funnel.

REPLACES gc-boats-first, which put the reel ABOVE the quote card. The reel now lives INSIDE
the card, below the date section, so every control that narrows the list sits above the list
it narrows. Order: Guests | Nights | Start Date -> calendar -> Christmas/New Year -> REEL ->
Search availability.

WHY. Picking a date does not merely badge boats, it FILTERS them - MEASURED 97 boats with no
date down to 18 for 16 Nov. That is the strongest interaction on the page and it used to
happen roughly 300px above the control that caused it, so nobody saw it. Inside the card the
cause and effect are adjacent.

THE COST, MEASURED. Reel top was 641. With the calendar OPEN it is 1213; once the calendar
collapses it is 892. Collapsing saves 321px, and the card itself goes 873 -> 552.

STARTS COLLAPSED (chosen 2026-09-09). Start Date shows as a "Choose" pill on the top row;
tapping it opens the calendar, and the first day pick folds it away again. This puts the reel
just under the three controls on arrival instead of below a 400px picker, which was the whole
point of moving it inside the card. START_COLLAPSED in the script flips this back to
open-on-arrival if the discovery tradeoff is ever revisited - one line, nothing else changes.

DO NOT SIZE THESE COLUMNS BY nth-child. gc-quote-mobile sizes the quote controls positionally
- nth-child(2) and (3) at 50 percent, (4) at 100 percent - and this block inserts a Start Date
field, which shifts every index and handed the new field a full-width row on the first
attempt. The rules below target content instead, via :has(#homeGbtns) and friends, so they
survive any future insertion. They also carry two IDs so they outrank the positional rules
rather than relying on source order.

TIGHTENING, all measured against the 399px calendar panel:
  - #ycs-cal-head, the "Choose your start date" title, is redundant once Start Date is a
    labeled field on the row. -35px.
  - the legend wrapped to two lines; one line at 9.2px. -25px.
  - the Christmas and Search rows each carry an empty label div holding a non-breaking space
    purely as a spacer. -40px for the pair.
The day grid is deliberately NOT shrunk. Cells are 41x42px and 44px is the tap-target
minimum, so trading usability for 20px is a bad deal.

COLLAPSED KEEPS THE STAY LINE. Only the nav, weekday row, grid and legend hide. #ycs-cal-hint
stays visible, so the reader always sees "2026 November 16th 12pm - 2026 November 23rd 12pm"
even with the picker folded away.*/
@media(max-width:600px){
#home-price-bar #homeRow > div:has(#homeGbtns),
#home-price-bar #homeRow > div:has(#homeNbtns),
#home-price-bar #homeRow > div.gc-sd-field{flex:1 1 calc(33.333% - 6px)!important;width:auto!important}
#home-price-bar #homeRow > div.gc-calslot,
#home-price-bar #homeRow > div.gc-reelslot{flex:1 1 100%!important;width:100%!important}
/* The reel's top wrapper is a WordPress .alignfull, which carries margin-left:-31.75px and
   spanned 0-375 while the card spans 19-356 - a full-bleed strip escaping a shaded card on
   both sides. Neutralise the alignment inside the slot only. The horizontal scroller is an
   INNER element, so clamping the wrapper does not disable swiping the reel. */
#home-price-bar #homeRow > div.gc-reelslot > *{margin-left:0!important;margin-right:0!important;width:100%!important;max-width:100%!important}
/* THE REEL'S OWN INSETS. #homeMiniWrap ships padding:10px 18.75px 34px. Outside the card that
   is fine; inside it, the 18.75px sides put the first card at left 51 while every control
   above it starts at 32, and the 34px bottom left a dead band above Search availability.
   Zeroing the sides lands the first card at exactly 32 - MEASURED flush with the Guests
   select - and 10px bottom removes 24px of nothing. Scoped under #home-price-bar so it can
   only ever apply while the reel is inside the card, i.e. on phones. */
#home-price-bar #homeMiniWrap{padding-left:0!important;padding-right:0!important;padding-bottom:10px!important}
#home-price-bar #homeMiniWrap .gc-hdr-hide{display:none!important}
/* The Christmas / New Year checkbox row. Hidden by a CLASS THE SCRIPT ADDS, never by a bare
   selector - the Reset button lives in this row and has to be carried out to the reel header
   first. Gating on the class means a script failure leaves the row (and Reset) visible instead
   of deleting the only way to clear a holiday lock. */
#home-price-bar #homeRow > div.gc-holrow-hidden{display:none!important}
/* FLEET-ONLY. On the home page moveReset() carries Reset out to the reel header and then hides
   this whole row. With no reel moveReset() bails on its first guard, so the row is never
   hidden and the checkboxes stay on screen. Hide the two LABELS instead and leave Reset
   exactly where it is - hiding the row here would delete the only way to clear a holiday
   lock. */
#home-price-bar #homeRow label:has(#homeXmas),
#home-price-bar #homeRow label:has(#homeNye){display:none!important}
/* Reset, relocated between the sort control and the boat count. !important throughout because
   the button carries the site's own inline pill styling, which is deliberately left on it so
   unbuild() restores the original look by removing this class alone. */
/* Adding Reset pushed the header onto a second line (44px). MEASURED at the site's own 11.2px:
   label 100 + sort 117 + reset 36 + two pipes + four 8px gaps = 293 against a 262px budget once
   the 40px count is subtracted. 10px type with 4px gaps brings it to 244, and to 260 in the
   worst case - the sort control relabels itself "SHOW: POPULAR PICKS", which is wider than
   "SORT: LOW TO HIGH", so that longer string is what the budget has to clear. Both verified on
   one 16px line. Check the LONGER label if this row ever gains another control. */
#home-price-bar #homeMiniWrap .gc-hdr-row{font-size:10px!important;letter-spacing:0.3px!important;gap:4px!important;flex-wrap:nowrap!important}
#home-price-bar #homeMiniWrap .gc-reset-inline{font:inherit!important;color:#ec5a30!important;font-weight:700!important;background:none!important;border:none!important;padding:0!important;margin:0!important;cursor:pointer!important;text-transform:inherit!important;letter-spacing:inherit!important;white-space:nowrap!important}
/* CHRISTMAS / NEW YEAR CHARTER START DATES - the state the renderer tagged but never painted.

   IT IS A RING, NOT A BACKGROUND, AND THAT IS FORCED BY HOW THE CELLS ARE BUILT. MEASURED:
   EVERY cell already carries an inline "background: rgb(238,248,241)", so a stylesheet
   background can only win with !important - and !important background is exactly what wipes the
   range bar's noon-start gradient (an earlier .gc-cd-sel rule did precisely that). The first
   attempt here used a plain background and simply never appeared.
   But only RANGE cells carry an inline box-shadow; unselected cells have none. So an
   un-!important inset ring paints on holiday days and is overridden the moment the renderer
   writes its own green inline ring. The color hierarchy resolves itself with no class
   juggling: gold ring normally, green ring while selected.
   border-color is safe to force - the range bar uses a gradient and a box-shadow, never the
   border - so the gold edge persists even while selected, which keeps the day readable as a
   holiday charter at the same time as it reads as chosen. */
#home-price-bar #ycs-cal-grid .ycs-cd[data-holiday]{box-shadow:inset 0 0 0 2px #e0a03a;border-color:#e0a03a!important;color:#8a5510!important;font-weight:700!important}
#home-price-bar #ycs-cal-head{display:none!important}
#home-price-bar #ycs-cal-legend{margin-top:6px!important;gap:4px 10px!important;font-size:9.2px!important}
/* "Available" and "Your dates" are dropped - green reads as open and the ringed cell reads as
   chosen without being told. The legend now only explains the states a reader genuinely cannot
   infer: why a day is closed, why it collides with the holidays, and what the gold ring means.
   Hidden by matched TEXT, not by index - see trimLegend. */
#home-price-bar #ycs-cal-legend .gc-lg-hide{display:none!important}
#home-price-bar #homeRow > div:has(#homeXmas) > div:first-child,
#home-price-bar #homeRow > div:has(#homeSearchBtn) > div:first-child{display:none!important}
/* COLLAPSED WITH NO DATE YET LEFT A 52px DEAD BAND. The stay line is still in the layout when
   it is empty - 13px of line box plus a 9px top margin - and it sits in its own flex item, so it
   also collected a row gap on each side. MEASURED 52px between the Start Date row and the reel
   header with nothing drawn in it. Hiding the whole slot while the line is empty takes that to
   20px, which is just the row gap.
   Deliberately keyed on :empty rather than on the collapsed state alone: the moment a date is
   chosen the line has text, the selector stops matching, and the stay line stays visible with
   the picker folded away - which is the behavior the collapse depends on. */
#home-price-bar.gc-cal-collapsed #homeRow > div.gc-calslot:has(#ycs-cal-hint:empty){display:none!important}
#home-price-bar.gc-cal-collapsed #ycs-cal-nav,
#home-price-bar.gc-cal-collapsed #ycs-cal-dow,
#home-price-bar.gc-cal-collapsed #ycs-cal-grid,
#home-price-bar.gc-cal-collapsed #ycs-cal-legend{display:none!important}
/* MATCHED TO THE SELECTS BESIDE IT, MEASURED. The Guests and Nights controls are native
   selects: height 40, font-size 16px, padding 0 10px, 1px #c9d6d9, radius 8. The first pass
   here was 38px tall at 12.8px and centered, which sat a visible 2px high and read as a
   different kind of control. These numbers are copied from those selects, not guessed.
   The caret is drawn because a native select renders its own arrow and this div does not -
   without it the field looked inert next to two obviously-openable neighbors.
   Right padding is 16px so "Choose" at 16px (about 55px wide) still clears the caret inside
   the 83px column a 320px phone gives, rather than ellipsing to "Choo...". */
/* SEARCH BOX OUTLINE - REVERTED to the site's own gray (#c9d6d9) 2026-09-09. It was briefly
   coral; next to the solid-coral search button and the coral nav pills it read as competing,
   closer to an error state than a field. There is deliberately NO rule here now - removing the
   override lets gc-navbar-moved's own
   ".gc-navbar-moved.wp-block-template-part .wp-block-search .wp-block-search__inside-wrapper
    { border: 1px solid #c9d6d9 !important }"
   apply again, which is the honest way to undo it.

   IF IT IS EVER RECOLOURED AGAIN, note what that rule is: the BORDER SHORTHAND with !important
   at four classes. A two-class override loses even with its own !important - that was tried,
   it matched the element, it was in the document, and the computed color stayed gray.
   !important does not beat specificity. Use five classes, e.g.
   .gc-navbar-moved.wp-block-template-part .gc-searchrow .wp-block-search .wp-block-search__inside-wrapper */
.gc-sd-field .gc-sd-box{position:relative;box-sizing:border-box;height:40px;line-height:38px;border:1px solid #c9d6d9;border-radius:8px;background:#fff;padding:0 16px 0 8px;font-size:16px;font-weight:400;color:#12303f;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gc-sd-field .gc-sd-box::after{content:"";position:absolute;right:5px;top:50%;margin-top:-2px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #12303f}
.gc-sd-field .gc-sd-box.gc-sd-empty{color:#8a97a3}
}


/* gc-cabin-card 2026-09-14: the home page quote card, rebuilt as the first tile of the boat grid on the
   3/4/5 cabin pages. The old "Quote my charter" bar and the three black cabin tiles are hidden; the old
   bar keeps working underneath (this card drives it), so pricing, availability and the cabin router
   behave exactly as before. Zero literal ampersands. */
.hpx-quicklinks{display:none!important}
#home-price-bar{position:absolute!important;left:-9999px!important;top:0!important;width:1px!important;height:1px!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important}
.gc-hull-hide{display:none!important}
#gc-cabin-card .gcc-hulls{margin-bottom:6px}
#gc-cabin-card{border-radius:12px;width:calc(33.333% - 1.34rem);min-width:280px;max-width:520px;display:flex;flex-direction:column;background:#fff;border:1.5px solid #dfe7e9;box-shadow:0 8px 24px rgba(15,43,51,.08);padding:20px 20px 18px;box-sizing:border-box;font-family:inherit;order:-1}
#gc-cabin-card h3{margin:0 0 12px;font-size:1.15rem;line-height:1.2;color:#ec5a30;font-weight:800}
#gc-cabin-card .gcc-row{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0 0 10px}
#gc-cabin-card .gcc-row label{display:inline-flex;align-items:center;gap:6px;font-size:.95rem;font-weight:600;color:#0f2b33;cursor:pointer;white-space:nowrap}
#gc-cabin-card .gcc-row input[type=checkbox]{width:18px;height:18px;accent-color:#ec5a30;margin:0;cursor:pointer}
#gc-cabin-card .gcc-field{display:grid;grid-template-columns:86px 1fr;align-items:center;gap:10px;margin:10px 0 0}
#gc-cabin-card .gcc-field span{font-size:.98rem;color:#3a4c52}
#gc-cabin-card select,#gc-cabin-card .gcc-date{width:100%;height:46px;border:1.5px solid #c9d6d9;border-radius:10px;background:#fff;font:inherit;font-size:1.05rem;font-weight:600;color:#0f2b33;padding:0 38px 0 14px;box-sizing:border-box;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 8l5 5 5-5' fill='none' stroke='%230f2b33' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:16px}
#gc-cabin-card .gcc-date{display:flex;align-items:center;text-align:left;cursor:pointer}
#gc-cabin-card .gcc-date.is-empty{color:#7a8a90;font-weight:500}
#gc-cabin-card .gcc-hol{margin-top:12px;gap:6px 16px}
#gc-cabin-card .gcc-hol label{font-size:.85rem;font-weight:600;color:#3a4c52}
#gc-cabin-card .gcc-cta{margin-top:14px;width:100%;height:50px;border:0;border-radius:100px;background:#ec5a30;color:#fff;font:inherit;font-size:1.05rem;font-weight:800;cursor:pointer}
#gc-cabin-card .gcc-cta:hover{background:#d94e21}
#gc-cabin-card .gcc-pills{display:flex;gap:10px;margin-top:10px}
#gc-cabin-card .gcc-pills a{flex:1 1 0;display:inline-flex;align-items:center;justify-content:center;gap:6px;height:44px;border:1.5px solid #ec5a30;border-radius:100px;color:#ec5a30;font-weight:700;font-size:.95rem;text-decoration:none;white-space:nowrap}
#gc-cabin-card .gcc-pills a:hover{background:#ec5a30;color:#fff}
#gc-cabin-card .gcc-pills svg{width:16px;height:16px;fill:currentColor}
@media(max-width:900px){#gc-cabin-card{width:100%;max-width:none}}

