/* bbs-design.src.css - FAMILY B (Broadbeach Savannah) desktop parity source, from kit ilaunch-divi-parity.template.css (kit 8017df7) with
   section 9 rewritten for family B's unboxed form, sections 5, 13 and 17 dropped, palette set, family B sections 19+ appended.
   Original header follows.
   ilaunch-divi-parity.template.css - DESKTOP parity layer for an iLaunch site rebuilt on Divi (Stage 4).
   Every rule here undoes something Divi adds that live iLaunch CSS never had; together they took Tropic Towers
   (2026-10-06) from 40-170px height differences and blurred text to pixel-identical pages at 1440.
   USAGE
     1. Copy to {client_output_dir}/build/, replace tokens:  body.bbs-site = body.{body_class}   body.bbs-site #page-container = body.{body_class} #page-container
        body.bbs-site.bbs-home #page-container = body.{body_class}.bbs-home #page-container   bbs = the config 'sc' prefix (forms carry module_class "bbs-contact-form")
        Page ids: replace 1629 1638 1639 1627 and bbs-home with this site's values.
        e.g.  sed -e 's/[$]H/body.tt-site.tt-home #page-container/g' -e 's/[$]P/body.tt-site #page-container/g' -e 's/[$]B/body.tt-site/g' -e 's/[$]SC/tt/g' (in that order)
     2. Upload to wp-content/uploads/ilaunch/theme/ and add it to ilaunch-site-config.php 'css' AFTER the live CSS and BEFORE
        the responsive file:  array('theme/X-bundle.css','theme/X-live.css','theme/X-design.css','theme/X-mobile.css').
     3. Section 5 (dead social widgets) and section 9 (forms) are site-specific: check live first (page ids, field order,
        form colours) and delete what the site does not have. Then run design_pairs.js + design_diff.py at 1440.
   Also needed (code, not CSS): kit mu-plugins/ilaunch-site.php drops Divi's own Google Fonts request (since 2026-10-06), and
   Divi code modules must store newlines as <!-- [et_pb_line_break_holder] --> or wpautop adds stray <br> (see lessons).
   Since 2026-10-07 it also carries the Tropic Towers fix rounds (sections 14-18): the pre-start hero, nested list bullets,
   the form thank-you alignment, the home booking hover and the tel: link states, plus the palette block (section 0).
   Expand it with kit/expand_css_template.py (tokens, page ids, palette) rather than sed, and prove the copy with
   design_pairs.js + design_diff.py at 1440 and button_states.js / link_contrast.js.
   Source: Tropic Towers build/tt-design.css (verified READY by 3.18, 2026-10-07). */

/* 0. Palette (2026-10-07). Every site-specific colour the two templates use, as custom properties on the body, so a
      new site edits ONE block (or passes --palette to kit/expand_css_template.py) instead of hunting hex codes. Values
      are Tropic Towers' (the Family A reference). Below 1250 every pairing must stay WCAG AA: re-check with
      button_states.js / link_contrast.js after changing any of them. Roles:
        --ils-gold         live's button / offer yellow (white text on it is live's own 1.8:1; keep at 1250+)
        --ils-green        live's dark green: header band below 1170, button hover/active background, calendar header
        --ils-on-gold      dark text on --ils-gold below 1250 (AA >= 4.5:1 against --ils-gold and --ils-gold-aa)
        --ils-gold-text    gold-family text on white below 1250 (AA on #ffffff)
        --ils-olive        live's olive panel and menu bar
        --ils-olive-aa     olive darkened so white text is AA (menu bar 980-1249, teaser panel, phone menu button)
        --ils-olive-dark   menu active/hover olive (white text AA)
        --ils-gold-aa      the menu's Book Now gold behind --ils-on-gold below 1250
        --ils-footer-link  footer menu links on the dark footer (phone)
        --ils-form-panel   contact/review form panel (live's table.form)
        --ils-form-label   form label cells
        --ils-cal-current  booking calendar: the selected day
   */
/* Family B (Broadbeach Savannah) role mapping: --ils-gold = live's orange offer button #f59b3d; --ils-green = live's
   burgundy #830914 (header, .button rest, offer hover); --ils-on-gold = dark text on orange/gold below 1250;
   --ils-gold-text = live's heading gold #ce9a63 darkened to AA on white; --ils-olive* = the burgundy header/menu family;
   --ils-gold-aa = the menu BOOK NOW gold (#ce9a63) behind --ils-on-gold below 1250; --ils-footer-link = footer links
   on burgundy; form-panel, form-label and cal-current are unused on family B (no boxed form, no booking calendar). */
body.bbs-site { --ils-gold: #f59b3d; --ils-green: #830914; --ils-on-gold: #2b1400; --ils-gold-text: #93602b; --ils-olive: #830914; --ils-olive-aa: #830914; --ils-olive-dark: #5c0610; --ils-gold-aa: #ce9a63; --ils-footer-link: #ffffff; --ils-form-panel: #ffffff; --ils-form-label: #ffffff; --ils-cal-current: #ce9a63; --ils-gold-live: #ce9a63; --ils-tan: #eec69b; }

/* 1. Live iLaunch CSS assumes the browser default content-box; Divi sets * {box-sizing:border-box}, which shrank every padded
      box (header band 125 -> 91px, booking date field, special-offer text, footer container 195 -> 155px). Divi's own
      contact-form module keeps border-box. */
body.bbs-site #page-container, body.bbs-site #page-container *, body.bbs-site #page-container *::before, body.bbs-site #page-container *::after { box-sizing: content-box; }
body.bbs-site #page-container .et_pb_contact_form_container, body.bbs-site #page-container .et_pb_contact_form_container * { box-sizing: border-box; }

/* 2. Footer: with content-box restored the fixed-height .container (155px + 40px padding) gives live's 195px block and
      live's gap under the copyright, so the build-stage padding-bottom on #footer is no longer needed (live: 0). */
/* family B: live's #footer keeps its own 40px bottom padding (general.css), so this family A reset is not used */

/* 3. Browser-default spacing the live CSS relies on, which Divi's reset removes. No ids in these selectors, so every
      live rule (body.bbs-site #page-container ...) still wins where live sets its own value. */
body.bbs-site :where(.et-l, #main-content) p { padding-bottom: 0; margin-bottom: 1em; }
body.bbs-site :where(.et-l, #main-content) ul, body.bbs-site :where(.et-l, #main-content) ol { padding: 0 0 0 40px; margin: 1em 0; line-height: inherit; }

/* 4. Divi pads "#main-content .container" 58px at the top (meant for its own header); live's .container has no such padding.
      Hidden while Divi's border-box absorbed it into the fixed 340px #topcontainer; content-box exposed it. */
html body.bbs-site #main-content .container { padding-top: 0; }

/* 5. (family A dead social-widget spacer) see the family B section 19 below. */

/* 6. Form controls the browser sizes as border-box by default (select, buttons, submit inputs): keep that after rule 1,
      or the booking bar's Duration select and Check Availability button grow by their padding (240 -> 253, 280 -> 310px). */
body.bbs-site #page-container select, body.bbs-site #page-container button,
body.bbs-site #page-container input[type=submit], body.bbs-site #page-container input[type=button], body.bbs-site #page-container input[type=reset] { box-sizing: border-box; }

/* 7. Divi's content-table look (1px #eee borders, 6px 24px cell padding, width 100%, left align) is not on live. Back to the
      browser defaults, honouring the table's own width="100%" and cellpadding="0" attributes as live does. */
body.bbs-site :where(.et-l, #main-content) table:not(.variations) { border: 0; margin: 0; width: auto; text-align: start; }
body.bbs-site :where(.et-l, #main-content) table[width="100%"]:not(.variations) { width: 100%; }
body.bbs-site :where(.et-l, #main-content) tr td, body.bbs-site :where(.et-l, #main-content) tr th { border-top: 0; padding: 1px; }
body.bbs-site :where(.et-l, #main-content) table[cellpadding="0"] tr td, body.bbs-site :where(.et-l, #main-content) table[cellpadding="0"] tr th { padding: 0; }

/* 8. Divi draws a 5px coloured rule down the left of every blockquote; live has none (reviews). */
body.bbs-site :where(.et-l, #main-content) blockquote { border-left: 0; }

/* 9. Contact and review forms, FAMILY B (Broadbeach Savannah live, measured 2026-10-08): live's table.form is unboxed:
      right-aligned plain labels (Lato 16px #333, 37px lines, 5px 10px 5px 5px cell padding), white inputs with a 1px
      #e1e1e1 border (236 x 36 incl. 8px 15px padding), a gold star at the right of each required cell (td.required
      background right 7px), message 609 x 108, a "Verification" label (live's reCAPTCHA is iLaunch's key, so Divi's maths
      captcha sits in that cell), the site .button SUBMIT (burgundy, white 15px bold uppercase, arrow, 0 65px 0 40px, 52px
      with its 1px border) at the right, "Required fields" (11px, star) under it. Live column widths at 1250+:
      98 261 114 261 107 329 (= 1170, the .container). The narrower layouts are in the responsive file. */
body.bbs-site #page-container .bbs-contact-form { margin: 15px 0; padding: 0; background: none; }
body.bbs-site #page-container .bbs-contact-form .et_pb_contact { padding: 0; }
body.bbs-site #page-container .bbs-contact-form form.et_pb_contact_form { margin: 0; padding: 0; background: none; }
body.bbs-site #page-container .bbs-contact-form p.et_pb_contact_field { margin: 0; padding: 0; width: auto; float: none; }
body.bbs-site #page-container .bbs-contact-form .et_pb_contact_form_label {
  display: block; margin: 0; padding: 5px 10px 5px 5px; background: none; font: 400 16px/37px 'Lato', Arial, Helvetica, sans-serif; color: #333333; text-align: right; box-sizing: border-box; }
body.bbs-site #page-container .bbs-contact-form .et_pb_contact_field input.input,
body.bbs-site #page-container .bbs-contact-form .et_pb_contact_field textarea.input {
  display: block; margin: 5px 0 0 5px; border: 1px solid #e1e1e1; border-radius: 0; background: #ffffff; padding: 8px 15px; height: 36px; width: 236px;
  font: 400 15px/normal 'Lato', Arial, Helvetica, sans-serif; color: #333333; box-shadow: none; }
body.bbs-site #page-container .bbs-contact-form .et_pb_contact_field textarea.input { width: 609px; height: 108px; min-height: 108px; resize: both; }
body.bbs-site #page-container .bbs-contact-form .et_pb_contact_field .input::placeholder { color: transparent; }
body.bbs-site #page-container .bbs-contact-form .et_pb_contact_field .input:focus { border-color: #e1e1e1; color: #333333; background: #ffffff; }
body.bbs-site #page-container .bbs-contact-form p.et_pb_contact_field:has(> [data-required_mark="required"]) {
  background: url(/wp-content/uploads/ilaunch/skin/icon-required.png) no-repeat right 7px; }
body.bbs-site #page-container .bbs-contact-form .et_contact_bottom_container { float: none; margin: 0; text-align: left; }
body.bbs-site #page-container .bbs-contact-form .et_pb_contact_right { float: none; text-align: left; }
body.bbs-site #page-container .bbs-contact-form .et_pb_contact_right p.clearfix {
  position: relative; margin: 0; padding: 5px 0 0 112px; min-height: 37px; font: 400 16px/36px 'Lato', Arial, Helvetica, sans-serif; color: #333333; text-align: left; float: none; display: block; }
body.bbs-site #page-container .bbs-contact-form .et_pb_contact_right p.clearfix::before {
  content: "Verification"; position: absolute; left: 0; top: 0; width: 107px; display: block; visibility: visible; height: auto; margin: 0; padding: 5px 10px 5px 5px; font: 400 16px/37px 'Lato', Arial, Helvetica, sans-serif; color: #333333; text-align: right; box-sizing: border-box; }
body.bbs-site #page-container .bbs-contact-form .et_pb_contact_right p.clearfix::after { display: none; }
body.bbs-site #page-container .bbs-contact-form .et_pb_contact_captcha_question { padding-left: 0; font: 400 16px/36px 'Lato', Arial, Helvetica, sans-serif; color: #333333; }
body.bbs-site #page-container .bbs-contact-form input.et_pb_contact_captcha {
  display: inline-block; width: 70px; height: 36px; margin: 0 0 0 8px; padding: 8px 15px; border: 1px solid #e1e1e1; border-radius: 0; background: #ffffff;
  font: 400 15px/normal 'Lato', Arial, Helvetica, sans-serif; color: #333333; vertical-align: top; }
body.bbs-site #page-container .bbs-contact-form .et_pb_contact_submit.et_pb_button,
body #page-container .et_pb_section .bbs-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_button {
  display: block; width: auto; height: 52px; margin: 0; padding: 0 65px 0 40px !important; border: 1px solid #e1e1e1 !important; border-radius: 0 !important;
  background: url(/wp-content/uploads/ilaunch/skin/button-bg.png) right 22px center no-repeat var(--ils-green) !important; color: #ffffff !important;
  font: 700 15px/50px 'Lato', Arial, Helvetica, sans-serif !important; text-transform: uppercase; letter-spacing: 1px !important; cursor: pointer; transition: all 1s; }
body #page-container .et_pb_section .bbs-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_button:hover {
  background: url(/wp-content/uploads/ilaunch/skin/button-bg.png) right 22px center no-repeat var(--ils-gold) !important; padding: 0 65px 0 40px !important; }
body #page-container .et_pb_section .bbs-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_button::after { display: none !important; }
body.bbs-site #page-container .bbs-contact-form form.et_pb_contact_form::after {
  content: "Required fields"; display: block; visibility: visible; height: auto; clear: none; font: 400 11px/22px 'Lato', Arial, Helvetica, sans-serif;
  color: #333333; padding-right: 20px; background: url(/wp-content/uploads/ilaunch/skin/icon-required.png) no-repeat right center; text-align: right; }

@media (min-width: 1250px) {
  body.bbs-site #page-container .bbs-contact-form form.et_pb_contact_form {
    display: grid; grid-template-columns: 98px 261px 114px 261px 107px 329px; grid-template-rows: 84px 124px 57px 27px; column-gap: 0; row-gap: 0; }
  body.bbs-site #page-container .bbs-contact-form .et_contact_bottom_container, body.bbs-site #page-container .bbs-contact-form .et_pb_contact_right, body.bbs-site #page-container .bbs-contact-form .et_pb_contact { display: contents; }
  body.bbs-site #page-container .bbs-contact-form p.et_pb_contact_field { display: grid; align-content: start; }
  body.bbs-site #page-container .bbs-contact-form .et_pb_contact_field_0 { grid-area: 1 / 1 / 2 / 3; grid-template-columns: 98px 261px; }
  body.bbs-site #page-container .bbs-contact-form .et_pb_contact_field_1 { grid-area: 1 / 3 / 2 / 5; grid-template-columns: 114px 261px; }
  body.bbs-site #page-container .bbs-contact-form .et_pb_contact_field_2 { grid-area: 1 / 5 / 2 / 7; grid-template-columns: 107px 329px; }
  body.bbs-site #page-container .bbs-contact-form .et_pb_contact_field_3 { grid-area: 2 / 1 / 3 / 5; grid-template-columns: 98px 1fr; }
  body.bbs-site #page-container .bbs-contact-form .et_pb_contact_right p.clearfix { grid-area: 2 / 5 / 3 / 7; }
  body #page-container .et_pb_section .bbs-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_contact_submit { grid-area: 3 / 1 / 4 / 7; justify-self: end; align-self: end; margin: 0 20px 0 0 !important; }
  body.bbs-site #page-container .bbs-contact-form form.et_pb_contact_form::after { grid-area: 4 / 1 / 5 / 7; justify-self: end; align-self: start; margin: 0 20px 0 0; }
}
/* nested lists: browser default has no vertical margin (site map) */
body.bbs-site :where(.et-l, #main-content) :is(ul, ol) :is(ul, ol) { margin-top: 0; margin-bottom: 0; }

/* 10. Divi forces greyscale font smoothing on body; live uses the browser default (slightly heavier text on macOS). */
body.bbs-site { -webkit-font-smoothing: auto; -moz-osx-font-smoothing: auto; }

/* 11. Divi's right-sidebar layout draws a 1px grey vertical rule (#main-content .container::before) on blog views; not on live. */
body.bbs-site #main-content .container::before { display: none; }

/* 12. Phone menu button (added to the header fragment for the mobile design; never shown at desktop widths). */
body.bbs-site #page-container .ils-menu-toggle { display: none; }

/* 13. (booking calendar) not used: family B has no booking bar. */
/* 14. Home hero slider before slidepark starts (Tropic Towers 2026-10-06 classification round F1, PSI performance; pairs
      with the hero fragment kit/extract_chrome.py emits). Live's <img>
      slides become background-image slides only once the footer scripts run; until then the first photo showed stretched
      (fill) with the queued slides spilling below the hero. Show it exactly as the slide will be drawn (cover, centred)
      and clip the queue, so the swap changes no pixels (speed index and LCP) and nothing is ever stretched. The list
      also loses the browser's default margin/padding before the slider starts (they pushed the hero 15px down and 40px
      wide). slidepark sets exactly these values inline when it starts, so the running slider looks exactly as before. */
body.bbs-site #page-container ul.featuremain.slidepark { position: relative; overflow: hidden; margin: 0; padding: 0; list-style: none; }
body.bbs-site #page-container ul.featuremain.slidepark > li > img { object-fit: cover; object-position: center center; }

/* 15. Nested lists (Tropic Towers 3.18 m1): Divi's `.entry-content ul { list-style-type: disc }` hits every level; live (browser default) shows
   hollow circles at the second level and squares at the third (site map) */
body.bbs-site :where(.et-l, #main-content) ul ul { list-style-type: circle; }
body.bbs-site :where(.et-l, #main-content) ul ul ul { list-style-type: square; }
/* 16. Form thank-you alignment (Tropic Towers 3.18 m9): after a successful send Divi replaces the form with its thank-you line; the form's centred 1184px box then
   indented that line to x 128 while the heading and intro above sit at x 35. Without a form the box spans the column. */
body.bbs-site #page-container .bbs-contact-form:not(:has(form)) { width: auto; max-width: none; margin-left: 0; margin-right: 0; }
/* 17. (home booking button) not used: family B has no booking bar. */
/* 18. Phone numbers (Darcie on a real iPhone, Tropic Towers 2026-10-07): iOS turned the header number into its own link and painted it
   dark grey on the dark green header. The phone and reservations numbers are now explicit tel: links (class tel-link)
   that keep the surrounding text colour, with no underline, in every state and at every width (so 1250 and up looks
   exactly like live); the fax and any other bare number are left alone by the format-detection meta in ilaunch-site.php. The tel: links
   themselves are written by kit/build_pages.py and kit/extract_chrome.py (kit/ilaunch_tel.py), never by hand. */
body.bbs-site #page-container a.tel-link, body.bbs-site #page-container a.tel-link:link, body.bbs-site #page-container a.tel-link:visited,
body.bbs-site #page-container a.tel-link:hover, body.bbs-site #page-container a.tel-link:active, body.bbs-site #page-container a.tel-link:focus,
body.bbs-site a[x-apple-data-detectors] { color: inherit !important; text-decoration: none !important; font: inherit; }


/* ==================== FAMILY B sections (Broadbeach Savannah, Stage 4 2026-10-08) ==================== */
/* 19. Divi caps every .container at max-width 1080px (80%); live's .container is a fixed 1170px (header, content, footer). */
body.bbs-site #page-container .container { max-width: none; }
/* 20. The template's Divi theme options style every heading uppercase with 4px letter-spacing (et-core-unified CSS);
       live leaves h2-h6 in their own case with normal spacing (only live's h1 rule sets uppercase + 3px). Zero-specificity
       reset beside the body class, so every live rule still wins. Not changed in Theme Options (sitewide state). */
body.bbs-site :where(h1, h2, h3, h4, h5, h6) { text-transform: none; letter-spacing: normal; }
/* 21. Live ends the main text of most pages with an empty ".socialwidgets" block (Google +1 / Facebook Like, dead services
       that now draw nothing): 20px of padding under a 15px margin. Not ported as markup; reproduced as an empty block so
       the spacing matches. Live has none on /faq, /search and /site-map; the blog list keeps its own ported block.
       Phones skip it (responsive file). Live's /news (page 1662 here, added in 3.18 fix round 2) has none either. */
@media (min-width: 768px) {
body.bbs-site.page:not(.page-id-1629):not(.page-id-1638):not(.page-id-1639):not(.page-id-1627):not(.page-id-1662) #page-container .content .container > :is(.maintext, .maintextfull)::after {
  content: ""; display: block !important; height: 0; margin: 15px 0 0; padding: 10px 0; clear: both; }
}
/* 22. The review form (live /reviews: Name, Location, Email, Comments) sizes its label columns to its own words, so its
       column widths and first row differ from the contact form's (no label wraps, 47px row). Measured on live 2026-10-08. */
@media (min-width: 1250px) {
  body.bbs-site.page-id-1630 #page-container .bbs-contact-form form.et_pb_contact_form { grid-template-columns: 101px 261px 113px 261px 104px 329px; grid-template-rows: 47px 124px 57px 27px; }
  body.bbs-site.page-id-1630 #page-container .bbs-contact-form .et_pb_contact_field_0 { grid-template-columns: 101px 261px; }
  body.bbs-site.page-id-1630 #page-container .bbs-contact-form .et_pb_contact_field_1 { grid-template-columns: 113px 261px; }
  body.bbs-site.page-id-1630 #page-container .bbs-contact-form .et_pb_contact_field_2 { grid-template-columns: 104px 329px; }
  body.bbs-site.page-id-1630 #page-container .bbs-contact-form .et_pb_contact_field_3 { grid-template-columns: 101px 1fr; }
  body.bbs-site.page-id-1630 #page-container .bbs-contact-form .et_pb_contact_right p.clearfix { padding-left: 109px; }
  body.bbs-site.page-id-1630 #page-container .bbs-contact-form .et_pb_contact_right p.clearfix::before { width: 104px; }
}
/* 23. Home offer image performance (skill: hero performance pattern). Live serves a 1.9MB PNG (fully opaque) behind
       Cloudflare; the identical picture is re-encoded as a 261KB JPEG (1000px phone copy 78KB). The page content keeps
       live's PNG URL (Stage 3's proven copy); the stylesheet swaps the background, so only the JPEG is downloaded.
       Low-priority preloads for both sit in the hero fragment (the offer is below the fold; the hero stays the LCP). */
body.bbs-site.bbs-home #page-container .special .special-image { background-image: url(/wp-content/uploads/ilaunch/cache/22222222-2000x500c.jpg) !important; }
@media (max-width: 767px) {
  body.bbs-site.bbs-home #page-container .special .special-image { background-image: url(/wp-content/uploads/ilaunch/cache/22222222-1000x250c.jpg) !important; }
}
/* 24. A room's video thumbnail (a.overlay-youtube, 64x49) carries its title as TRANSPARENT text (live), which wraps out
       of the box under the next thumbnail (overlap_check COVERED at every width). Invisible either way, so no pixel
       changes: its lines are collapsed (line-height 0) inside the thumbnail box at a 14px size (font-size 0 tripped
       mobile_audit's 14px floor); the link keeps its accessible name. */
body.bbs-site #page-container .gallery.room a.overlay-youtube { font-size: 14px; line-height: 0; overflow: hidden; white-space: normal; word-break: break-word; }
/* 25. The 404 page has no live twin (live's 404 is iLaunch's bare server page), so it is ours and AA at every width:
       the WordPress search block's grey button (4.2:1) and the menu BOOK NOW (white on gold 2.5:1, live's colours on
       every page that has a live twin) take AA colours on this page only. */
body.bbs-site .wp-block-search__button { color: #ffffff; background: var(--ils-green); border-color: var(--ils-green); }
body.bbs-site .wp-block-search__input { font-size: 16px; }
body.bbs-site.error404 #page-container #menu li.alt a:link, body.bbs-site.error404 #page-container #menu li.alt a:visited, body.bbs-site.error404 #page-container #menu li.alt a:active { color: var(--ils-on-gold); }
body.bbs-site.error404 #page-container #menu li.alt a:focus, body.bbs-site.error404 #page-container #menu li.alt a:hover, body.bbs-site.error404 #page-container #menu li.alt:hover a:link, body.bbs-site.error404 #page-container #menu li.alt:hover a:visited { color: #ffffff; background-color: var(--ils-olive-dark); }
body.bbs-site.error404 #page-container .socialmedia a.rss, body.bbs-site.error404 #page-container .socialmedia a.rss:hover, body.bbs-site.error404 #page-container .socialmedia a.rss:focus, body.bbs-site.error404 #page-container .socialmedia a.rss:active { color: #ffffff; }
/* 25b. (3.18 fix round 2, 2026-10-09, finding N2) The 404 laid out like the site's other inner pages: one column, the heading
       105px under the hero at 1170+ (50px below 1170, 32px on phones, as .container.main), live's 1170 box at 1170+ and the
       inner pages' 24px / 16px side gutters below it, the sidebar widgets (search, recent posts) stacked under the text at
       a readable width instead of Divi's narrow right-sidebar column. */
html body.bbs-site.error404 #main-content .container { padding: 105px 0 50px; }
body.bbs-site.error404 #main-content #left-area, body.bbs-site.error404 #main-content #sidebar { float: none; width: 100%; margin: 0; padding: 0; }
body.bbs-site.error404 #main-content #sidebar { margin-top: 40px; }
body.bbs-site.error404 #main-content #sidebar .et_pb_widget { float: none; width: 100%; margin: 0 0 32px; }
body.bbs-site.error404 #main-content #sidebar .wp-block-search { max-width: 480px; }
body.bbs-site.error404 #main-content #sidebar ul { padding: 0; margin: 12px 0 0; list-style: none; }
body.bbs-site.error404 #main-content #sidebar li { margin: 0 0 8px; padding: 0; }
@media (max-width: 1169px) {
  html body.bbs-site.error404 #main-content .container { padding: 50px 24px 40px; }
}
@media (max-width: 767px) {
  html body.bbs-site.error404 #main-content .container { padding: 32px 16px 32px; }
}

/* 2026-10-15 Jake feedback: keyword landing copy reads as heavy. Two-sentence paragraphs, 1.75 line height, 20px between, ~900px measure. */
body.bbs-site #page-container .maintext.bbs-kw { max-width: 900px; }
body.bbs-site #page-container .maintext.bbs-kw p { margin: 0 0 20px; line-height: 1.75; }
body.bbs-site #page-container .maintext.bbs-kw p:last-child { margin-bottom: 0; }
/* Apartments: the lead photo opens in the lightbox (it is no longer repeated as the first thumbnail). */
body.bbs-site #page-container .list.rooms .entry .main-photo p a.bbs-main-zoom { background: none; cursor: zoom-in; }

/* 2026-10-15 Jake feedback: Contact "Get directions" is a stand-alone button, label centred, clear gap above. */
body.bbs-site #page-container .maintext table a.button.alt.small { display: inline-block; margin: 14px 0 6px; padding: 0 22px; height: 44px; line-height: 44px; text-align: center; white-space: nowrap; box-sizing: border-box; }
/* 2026-10-15 Jake feedback: the closing "Book your stay ... now" phrase on keyword pages is a booking link; underline body-copy links so they read as links. */
body.bbs-site #page-container .maintext.bbs-kw p a { text-decoration: underline; }
