/* fg-design.css - Stage 4 DESKTOP parity layer for Founda Gardens (iLaunch on Divi, template family B without a booking bar).
   Loaded after fg-bundle.css + fg-live.css + fg-extra.css and before fg-mobile.css.
   Every rule here undoes something Divi adds that live never had, or restores what live's own markup and CSS did that the
   Divi wrappers change. Desktop (1250px and up) must be a pixel copy of live; nothing here recolours or resizes live's look. */

/* 1. Form controls the browser itself sizes as border-box (select, buttons, submit inputs) are border-box on live too;
      fg-extra.css made every element inside #page-container content-box, so these go back. */
body.fg-site #page-container select, body.fg-site #page-container button,
body.fg-site #page-container input[type=submit], body.fg-site #page-container input[type=button], body.fg-site #page-container input[type=reset] { box-sizing: border-box; }

/* 2. Browser-default spacing and line boxes the live CSS relies on, which Divi's reset removes. :where() keeps these at
      element weight, so every live rule still wins where live sets a value. */
body.fg-site :where(.et-l, #main-content) p { padding-bottom: 0; }
/*    Divi's reset also zeroes the browser's own block margins (p 1em, h6 2.33em, dl/dd); live relies on them wherever its CSS sets
      no margin of its own (the home location text, list pages). 'revert' hands them back at element weight. */
body.fg-site :where(.et-l, #main-content) :where(p, h6, dl, dd, figure, pre) { margin: revert; }
body.fg-site :where(.et-l, #main-content) h6 { font-size: revert; }
body.fg-site :where(.et-l, #main-content) ul, body.fg-site :where(.et-l, #main-content) ol { padding: 0 0 0 40px; margin: 1em 0; line-height: inherit; list-style-type: revert; }
body.fg-site :where(.et-l, #main-content) :is(ul, ol) :is(ul, ol) { margin-top: 0; margin-bottom: 0; }
body.fg-site :where(.et-l, #main-content) li { line-height: inherit; }
body.fg-site :where(.et-l, #main-content) :is(h1, h2, h3, h4, h5, h6) { padding-bottom: 0; line-height: inherit; font-weight: revert; color: inherit; }
body.fg-site :where(.et-l, #main-content) h5 { font-size: 0.83em; }

/* 3. Divi's content-table look (borders, cell padding, width 100%) is not on live. */
body.fg-site :where(.et-l, #main-content) table:not(.variations) { border: 0; margin: 0; width: auto; text-align: start; border-collapse: separate; }
body.fg-site :where(.et-l, #main-content) table[width="100%"]:not(.variations) { width: 100%; }
/*    Divi's reset sets border-spacing 0, which also wipes the cellspacing attribute live's tables carry (the units table's
      cellspacing="1"), and fg-extra.css made tables content-box (the browser's own is border-box). */
body.fg-site #page-container table { box-sizing: border-box; }
body.fg-site :where(.et-l, #main-content) table { border-spacing: 2px; }
body.fg-site :where(.et-l, #main-content) table[cellspacing="0"] { border-spacing: 0; }
body.fg-site :where(.et-l, #main-content) table[cellspacing="1"] { border-spacing: 1px; }
body.fg-site :where(.et-l, #main-content) table[cellspacing="2"] { border-spacing: 2px; }
body.fg-site :where(.et-l, #main-content) table[cellspacing="3"] { border-spacing: 3px; }
body.fg-site :where(.et-l, #main-content) table[cellspacing="4"] { border-spacing: 4px; }
body.fg-site :where(.et-l, #main-content) table[cellspacing="5"] { border-spacing: 5px; }
body.fg-site :where(.et-l, #main-content) tr td, body.fg-site :where(.et-l, #main-content) tr th { border-top: 0; padding: 1px; }
body.fg-site :where(.et-l, #main-content) table[cellpadding="0"] tr td, body.fg-site :where(.et-l, #main-content) table[cellpadding="0"] tr th { padding: 0; }

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

/* 5. Divi forces greyscale font smoothing; live uses the browser default. */
body.fg-site { -webkit-font-smoothing: auto; -moz-osx-font-smoothing: auto; }

/* 6. Phone menu button (added to the header for the phone and tablet design; never shown at 980px and up). */
body.fg-site #page-container .ils-menu-toggle { display: none; }

/* 7. Phone numbers are explicit tel: links (kit rule 2026-10-07; live shows plain text, which iOS turns into its own link
      colour). They keep the surrounding text's colour, size and no underline in every state, so 1250 and up looks exactly
      like live. Class + attribute + state, with !important: live's "#footer a" (two ids once scoped) would otherwise paint
      the footer number white instead of the vcard's #dddddd. */
body.fg-site #page-container a.tel-link[href^="tel:"]:is(:link, :visited, :hover, :active, :focus),
body.fg-site a[x-apple-data-detectors] { color: inherit !important; text-decoration: none !important; font: inherit; letter-spacing: inherit; }

/* 8. On archive views (category, month, tag) Divi prints the Theme Builder footer row with padding-bottom:20px!important,
      so those pages would end 20px lower than every other page. */
html body.fg-site #et-boc .et-l.et-l--footer .et_pb_row { padding-bottom: 0 !important; }

/* 9. Keyboard focus. Divi resets ":focus { outline: 0 }"; live has no such reset and shows the browser's own ring.
      Low specificity on purpose: live's own "outline: none" rules (fancybox, slider, select) still win, as on live.
      Below 1250 fg-mobile.css draws its own AA ring. */
body.fg-site :focus-visible { outline: revert; }

/* 10. Hero slider before it starts: slidepark sets these inline when it runs; until then the list's default margin
       collapsed through the wrappers and the header and hero jumped once the slider started. */
body.fg-site #page-container ul#featuremain { margin: 0; padding: 0; list-style: none; }

/* 11. Posts with no lead image carry an empty, zero-size lightbox link (<a class="gallery-item" href="#"></a>): a keyboard
       stop with nothing to see. Taken out of the page; posts with a picture keep theirs. */
body.fg-site #page-container a.gallery-item[href="#"]:empty { display: none; }

/* 12. Contact and review forms: the Divi contact-form module dressed as live's table.form (th labels right-aligned in 37px
       lines, 236 x 37px white inputs with a 1px #e1e1e1 border, a 609 x 113px message box, the gold star 7px down at the right
       edge of each required cell, live's red SUBMIT, the "Required fields" note under it). Live's column widths come from its
       auto table layout and differ per form, so each grid is pinned per page (measured on live at 1440). Live's reCAPTCHA
       (iLaunch's key) is replaced by Divi's maths question in live's Verification cell (DELIBERATE, Stage 3). The grid applies
       from 1170px (live's fixed layout fits there); below that fg-mobile.css stacks the form. */
body.fg-site #page-container .fg-contact-form { margin: 15px 0 0; padding: 0; background: none; }
body.fg-site #page-container .fg-contact-form .et-pb-contact-message:empty { display: none; }
body.fg-site #page-container .fg-contact-form .et_pb_contact { padding: 0; margin: 0; }
body.fg-site #page-container .fg-contact-form form.et_pb_contact_form { margin: 0; padding: 0; }
body.fg-site #page-container .fg-contact-form p.et_pb_contact_field { margin: 0; padding: 0; width: auto; float: none; }
body.fg-site #page-container .fg-contact-form .et_pb_contact_form_label {
  display: block; position: relative; margin: 0; padding: 5px 10px 5px 5px; font: 400 17px/37px 'PT Sans', Arial, Helvetica, sans-serif;
  color: #666666; text-align: right; }
body.fg-site #page-container .fg-contact-form p.et_pb_contact_field .input,
body.fg-site #page-container .fg-contact-form input.et_pb_contact_captcha {
  display: block; box-sizing: border-box; margin: 5px 0 5px 5px; width: 236px; height: 37px; padding: 8px 15px; border: 1px solid #e1e1e1; border-radius: 0; background: #ffffff;
  font: 400 15px/normal 'PT Sans', Helvetica, sans-serif; color: #666666; box-shadow: none; }
body.fg-site #page-container .fg-contact-form p.et_pb_contact_field textarea.input { width: 609px; height: 113px; min-height: 113px; margin-bottom: 11px; resize: both; }
body.fg-site #page-container .fg-contact-form p.et_pb_contact_field .input::placeholder { color: transparent; }
body.fg-site #page-container .fg-contact-form .input.et_contact_error, body.fg-site #page-container .fg-contact-form .et_pb_contact_captcha.et_contact_error { border-color: #e02b20; }
body.fg-site #page-container .fg-contact-form p.et_pb_contact_field:has(> [data-required_mark="required"]) > .et_pb_contact_form_label::after {
  content: ""; position: absolute; top: 7px; left: calc(100% + var(--fg-td, 261px) - 16px); width: 16px; height: 16px;
  background: url(/wp-content/uploads/ilaunch/skin/images/icon-required.png) no-repeat; pointer-events: none; }
body.fg-site #page-container .fg-contact-form .et_contact_bottom_container { float: none; margin: 0; padding: 0; }
body.fg-site #page-container .fg-contact-form .et_pb_contact_right { float: none; margin: 0; padding: 0; }
body.fg-site #page-container .fg-contact-form .et_pb_contact_right p.clearfix { margin: 5px 0 0 5px; padding: 0; font: 400 17px/37px 'PT Sans', Helvetica, sans-serif; color: #666666; float: none; display: flex; gap: 6px; align-items: flex-start; }
body.fg-site #page-container .fg-contact-form .et_pb_contact_captcha_question { font: inherit; color: inherit; }
body.fg-site #page-container .fg-contact-form input.et_pb_contact_captcha { width: 64px; margin: 0; display: inline-block; }
body.fg-site #page-container .et_pb_section .fg-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_button {
  display: inline-block; float: none; width: auto; height: 47px; margin: 5px 20px 0 5px; padding: 0 45px !important; border: 1px solid #e1e1e1 !important; border-radius: 0 !important;
  background: #ee2525 !important; color: #ffffff !important; font: 700 18px/45px 'Raleway', Arial, Helvetica, sans-serif !important;
  letter-spacing: 1px !important; text-transform: uppercase; cursor: pointer; transition: all 1s; }
body.fg-site #page-container .et_pb_section .fg-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_button:hover { background: #43a8dc !important; padding: 0 45px !important; }
body.fg-site #page-container .et_pb_section .fg-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_button::after { display: none !important; }
/*    The build's "Required fields" note (p.ils-required-note right after the form) drawn as live's em.required in the last row. */
body.fg-site #page-container p.ils-required-note { margin: 0 20px 15px 5px; padding: 0 0 5px; text-align: right; }   /* live: the note's cell has 5px padding under it, then the table's 15px margin */
body.fg-site #page-container p.ils-required-note em.required { display: block; padding: 0 20px 0 0; font: normal 400 11px/22px 'PT Sans', Arial, Helvetica, sans-serif;
  color: #666666; background: url(/wp-content/uploads/ilaunch/skin/images/icon-required.png) no-repeat right center; }
/*    After a successful submit Divi replaces the form with its thank-you line; the note then has nothing to annotate. */
body.fg-site #page-container .fg-contact-form:not(:has(form)) + p.ils-required-note { display: none; }

@media (min-width: 1170px) {
  body.fg-site #page-container .fg-contact-form form.et_pb_contact_form { display: grid; grid-template-columns: 98.4375px 261px 113.671875px 261px 106.875px 329.015625px; column-gap: 0; row-gap: 0; }
  body.fg-site.page-id-1681 #page-container .fg-contact-form form.et_pb_contact_form { grid-template-columns: 101.421875px 261px 113.25px 261px 104.3125px 329.015625px; }
  body.fg-site.page-id-1681 #page-container .fg-contact-form p.et_pb_contact_field:has(> textarea[data-required_mark="required"]) { --fg-td: 635.25px; }
  body.fg-site #page-container .fg-contact-form p.et_pb_contact_field,
  body.fg-site #page-container .fg-contact-form .et_contact_bottom_container,
  body.fg-site #page-container .fg-contact-form .et_pb_contact_right { display: contents; }
  body.fg-site #page-container .fg-contact-form .et_pb_contact_field_0 > label { grid-area: 1 / 1; }
  body.fg-site #page-container .fg-contact-form .et_pb_contact_field_0 > .input { grid-area: 1 / 2; }
  body.fg-site #page-container .fg-contact-form .et_pb_contact_field_1 > label { grid-area: 1 / 3; }
  body.fg-site #page-container .fg-contact-form .et_pb_contact_field_1 > .input { grid-area: 1 / 4; }
  body.fg-site #page-container .fg-contact-form .et_pb_contact_field_2 > label { grid-area: 1 / 5; }
  body.fg-site #page-container .fg-contact-form .et_pb_contact_field_2 > .input { grid-area: 1 / 6; }
  body.fg-site #page-container .fg-contact-form .et_pb_contact_field_3 > label { grid-area: 2 / 1; }
  body.fg-site #page-container .fg-contact-form .et_pb_contact_field_3 > .input { grid-area: 2 / 2 / 3 / 5; }
  body.fg-site #page-container .fg-contact-form .et_pb_contact_right p.clearfix { grid-area: 2 / 6; position: relative; }
  body.fg-site #page-container .fg-contact-form .et_pb_contact_right p.clearfix::before { content: "Verification"; position: absolute; right: 100%; top: -5px; width: auto; padding: 5px 10px 5px 5px; font: 400 17px/37px 'PT Sans', Arial, Helvetica, sans-serif; color: #666666; text-align: right; display: block; visibility: visible; height: auto; margin-right: 5px; white-space: nowrap; }
  body.fg-site #page-container .et_pb_section .fg-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_contact_submit { grid-area: 3 / 1 / 4 / 7; justify-self: end; }
  /* /newsletter/unsubscribe: one field and the button in live's default 2px cell spacing, no captcha, no note (measured on live:
     label cell 115px, field cell 261px, table 382 x 110px; the button sits under the field). */
  body.fg-site.page-id-1709 #page-container .fg-contact-form form.et_pb_contact_form { grid-template-columns: 115px 261px; column-gap: 2px; row-gap: 2px; padding: 2px; width: max-content; }
  body.fg-site.page-id-1709 #page-container .fg-contact-form p.et_pb_contact_field:has(> [data-required_mark="required"]) { --fg-td: 263px; }
  body.fg-site.page-id-1709 #page-container .et_pb_section .fg-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_contact_submit { grid-area: 2 / 2; justify-self: start; margin: 5px 0 5px 5px; }
}

/* 13. Divi draws its sidebar divider (a 1px #e2e2e2 line, "#main-content .container:before") on archive and post views,
       which Divi treats as sidebar layouts; live has no such line. */
body.fg-site #main-content .container::before { display: none; }

/* 14. Fancybox's shadow frame (fix round 1, checklist "body-appended widgets"): the port scoped live's ".fancy-bg" base rule under
       #page-container, but fancybox appends #fancybox-wrap to <body>, so the eight shadow pieces were static and 0px tall and the photo
       pop-up had no frame shadow at any width. Live's rule, unscoped; the per-piece #fancy-bg-* rules (fg-bundle.css) still win on size. */
body.fg-site .fancy-bg { position: absolute; padding: 0; margin: 0; border: 0; width: 20px; height: 20px; z-index: 1001; }

/* 15. Contact page "Get Directions" button (Jake feedback 13 Oct): a real button under the address, label centred in its box, clear gap above. */
body.fg-site #page-container .maintext a.button.alt.small { display: inline-block; margin-top: 10px; padding: 12px 22px; line-height: 20px; height: auto; text-align: center; }

/* 16. FAQs (Jake feedback 13 Oct): one category list at the start, straight after the intro line (live repeated it beside every category);
       three equal cells on desktop, stacked on phone. */
body.fg-site #page-container .maintext .faq-cats .panel.faqs { margin: 30px 0 0 0; height: auto; }
body.fg-site #page-container .maintext .faq-cats .panel.faqs h3 { margin-bottom: 10px; }
body.fg-site #page-container .maintext .faq-cats ul.archive { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 30px; }
body.fg-site #page-container .maintext .faq-cats li { margin: 15px 0 0 0; }
@media (max-width: 767px) {
  body.fg-site #page-container .maintext .faq-cats ul.archive { grid-template-columns: minmax(0, 1fr); }
}

/* 17. Keyword landing pages (Jake feedback 13 Oct, "heavy texts"): copy was one 1170px-wide block at 24px line height. Wording is untouched;
       paragraphs are split at sentence ends (in the page content), the line length is capped, the line height opened up, and keyword links
       underlined so they still read as links. The booking button sits clear of the last paragraph. */
body.fg-site #page-container .maintext.full p { max-width: 900px; line-height: 1.75; margin: 0 0 20px 0; }
body.fg-site #page-container .maintext.full p a.link { text-decoration: underline; }
body.fg-site #page-container .maintext.full p:has(> a.button) { margin-top: 30px; }
@media (max-width: 480px) {
  body.fg-site #page-container .maintext.full a.button { font-size: 14px; letter-spacing: 0; padding-left: 10px; padding-right: 10px; white-space: nowrap; display: block; text-align: center; }
}
@media (max-width: 340px) {
  body.fg-site #page-container .maintext.full a.button { font-size: 12.5px; padding-left: 6px; padding-right: 6px; }
}
@media (max-width: 480px) {
  body.fg-site #page-container .maintext.full a.button { white-space: nowrap !important; padding-left: 8px !important; padding-right: 8px !important; }
}

/* 18. Terms & Conditions (Jake feedback 13 Oct): numbered clauses (numbering runs on across sections so a clause can be quoted by number),
       a heading above every group, and space between clauses. */
body.fg-site #page-container .maintext ol.terms-clauses { list-style: decimal outside; padding: 0 0 0 40px; margin: 0 0 30px 0; max-width: 900px; }
body.fg-site #page-container .maintext ol.terms-clauses li { margin: 0 0 12px 0; line-height: 1.75; padding-left: 6px; }
body.fg-site #page-container .maintext ol.terms-clauses li::before { content: none; }
body.fg-site #page-container .maintext h1 + h2.normal { margin-top: 30px; }
