/* bv-design.css: Bay Views and Harbourview Apartments desktop parity layer (Stage 4). Replaces the content build's bv-base.css. Loads after the ported
   live CSS (bv-bundle.css, bv-live.css) and before bv-mobile.css (the designed bands below 1250px).
   Every rule here either undoes something Divi adds that live (Bootstrap 3 + iLaunch general.css) never had, or puts back a live rule that the CSS
   port scoped under #page-container although its element lives outside it (the photo pop-up is appended to <body>).
   Measured against live with build/stage4/design_pairs_bv.js + design_diff.py at 1440. $B = body.bv-site, $P = body.bv-site #page-container.
   Bootstrap 3 sizes everything border-box, like Divi, so (unlike the V2 sites) no content-box restore is needed. */

/* ---------- 1. Divi neutralisers (were bv-base.css) ---------- */
/* Divi caps .container at 1080px / 80%; live's bootstrap container is 1170px (the width comes from the ported bootstrap rules at 768, 992, 1200) */
body.bv-site #page-container .container { max-width: none; }
/* below 768 bootstrap leaves .container at auto width; Divi's 80% made every phone column 78px narrower than live */
@media (max-width: 767px) {
  body.bv-site #page-container .container { width: auto; }
}
/* Divi's text rhythm: p padding, ul/ol padding and 26px line height, heading padding, bold-ish body weight and greyscale smoothing; live uses the browser defaults + bootstrap */
body.bv-site { font-weight: 400; -webkit-font-smoothing: auto; -moz-osx-font-smoothing: auto; }
body.bv-site :where(.et-l, #main-content) p { padding-bottom: 0; }
body.bv-site :where(.et-l, #main-content) ul, body.bv-site :where(.et-l, #main-content) ol { padding: 0 0 0 40px; line-height: inherit; }
body.bv-site :where(.et-l, #main-content) :is(h1, h2, h3, h4, h5, h6) { padding-bottom: 0; }
/* Divi's content-table look is not on live */
body.bv-site :where(.et-l, #main-content) table:not(.variations) { border: 0; margin: 0; width: auto; text-align: start; }
body.bv-site :where(.et-l, #main-content) table[width="100%"]:not(.variations) { width: 100%; }
/* the contact details table carries width="500" on live (its heading stays on one line); the reset above had dropped it to auto */
body.bv-site :where(.et-l, #main-content) table[width="500"]:not(.variations) { width: 500px; }
body.bv-site :where(.et-l, #main-content) :is(td, th) { padding: 1px; border: 0; text-align: start; }
/* Divi's `.et-l--body ul { list-style-type: disc }` reaches nested lists too; live's nested lists (the site map's pages and posts) keep the browser's
   circle, then square */
body.bv-site #page-container .page-content ul ul { list-style-type: circle; }
body.bv-site #page-container .page-content ul ul ul { list-style-type: square; }
/* Divi pads "#main-content .container" at the top and draws a rule on sidebar views */
html body.bv-site #main-content .container { padding-top: 0; }
body.bv-site #main-content .container::before { display: none; }
/* Divi gives every image max-width:100%; live's images (the 2000px slides, banners) render at their own width, bootstrap's .img-responsive opts in where wanted */
body.bv-site img { max-width: none; }
/* live's body{overflow-x:hidden} stops sideways scrolling (the bootstrap .row's -15px margin sticks out of the narrow icon banner on pages with the slider hero). With Divi's wrappers that clip no longer reaches the viewport;
   overflow-x on html/body would break fancybox (it saves and restores the page scroll when it opens), so the page wrapper clips instead (clip creates no scroll container). */
body.bv-site #page-container { overflow-x: clip; }
/* the blog views load Divi's own nav stylesheet, whose `.nav li { line-height: 1em }` would shrink the menu items' line boxes */
body.bv-site #page-container #navbar .nav li { line-height: inherit; }
/* ...and its `.nav li ul { visibility: hidden; opacity: 0; box-shadow }` (shown again only on :hover): live shows and hides the drop-down with display
   alone and draws no shadow; with Divi's rule the list could not be reached by keyboard or by tap on those views */
body.bv-site #page-container #navbar .nav li ul { visibility: visible; opacity: 1; box-shadow: none; }

/* ---------- 2. Search form: live's keyword field is an unstyled input (the browser's 2px inset border); Divi restyles bare inputs ---------- */
/* (revert, not the computed 2px inset values: an author-set border makes Chrome drop the native field look that live shows) */
body.bv-site #page-container .page-content table.searchpage input[type="text"] { -webkit-appearance: revert; appearance: revert; padding: revert; border: revert; border-radius: revert; background: revert; color: #333333; }

/* ---------- 3. Photo pop-up (fancybox 1.3.4, appended to <body>): its frame and shadow pieces carry the class .fancy-bg, which the port scoped under
   #page-container, so they lost their 20px size and absolute position. Live's rule, unscoped. ---------- */
body.bv-site .fancy-bg { position: absolute; padding: 0; margin: 0; border: 0; width: 20px; height: 20px; z-index: 1001; }
/* live's Bootstrap `* { box-sizing: border-box }` reaches the pop-up too (the port's content-box line for fancybox assumed otherwise: the caption box
   came out 20px wider and 20px shorter than live), and live's generic `a { color: #333 }` reaches its close and arrow links (Divi's blue did here) */
body.bv-site :is(#fancybox-tmp, #fancybox-loading, #fancybox-loading *, #fancybox-overlay, #fancybox-wrap *) { box-sizing: border-box; }
/* (on live the frame itself, its outer box and the inner picture box are content-box: measured element by element, build/stage4/widget_pair.js) */
body.bv-site :is(#fancybox-wrap, #fancybox-outer, #fancybox-inner) { box-sizing: content-box; }
body.bv-site :where(#fancybox-wrap) a { color: #333333; }
/* ...and live's Bootstrap `a:hover, a:focus` colour and `a:focus` ring (the close X shows the ring when focused on live; Divi's reset removed it) */
body.bv-site :where(#fancybox-wrap) a:is(:hover:not(#fancybox-left, #fancybox-right), :focus) { color: #23527c; text-decoration: underline; }
body.bv-site :where(#fancybox-wrap) a:focus { outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; }

/* ---------- 4. Contact, review, newsletter subscribe and unsubscribe forms: Divi contact-form modules dressed as live's Bootstrap 3 forms (measured at
   1440): label 15px bold above a 34px field (6px 12px padding, 14px Source Sans Pro, 1px #ccc border, faint inset shadow), 15px between groups, a 74px
   message box, the Verification row (label, then a 78px area where live shows Google's reCAPTCHA box: here Divi's maths question and its field), and
   live's orange SUBMIT (.btn.btn-primary: 14px bold capitals, 42px tall, 0 40px 0 24px padding, the arrow picture 18px from the right).
   Divi's maths question stands in for live's reCAPTCHA, whose key is bound to the live host. ---------- */
body.bv-site #page-container .bv-contact-form { margin: 0; padding: 0; background: none; }
body.bv-site #page-container .bv-contact-form .et_pb_contact { padding: 0; margin: 0; }
body.bv-site #page-container .bv-contact-form form.et_pb_contact_form { display: block; margin: 0; padding: 0; }
body.bv-site #page-container .bv-contact-form p.et_pb_contact_field { float: none; clear: both; width: auto; margin: 0 0 15px; padding: 0; }
body.bv-site #page-container .bv-contact-form .et_pb_contact_form_label { display: inline-block; margin: 0 0 5px; padding: 0; font: 700 15px/24px 'Source Sans Pro', Arial, Helvetica, sans-serif; color: #333333; text-transform: none; }
body.bv-site #page-container .bv-contact-form .et_pb_contact p input.input,
body.bv-site #page-container .bv-contact-form .et_pb_contact p textarea.input {
  display: block; width: 100%; height: 34px; margin: 0; padding: 6px 12px; border: 1px solid #cccccc; border-radius: 0; background-color: #ffffff;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); font: 400 14px/20px 'Source Sans Pro', Arial, Helvetica, sans-serif; color: #333333; }
body.bv-site #page-container .bv-contact-form .et_pb_contact p input.input[data-field_type="email"],
body.bv-site #page-container .bv-contact-form .et_pb_contact p textarea.input { color: #555555; }
body.bv-site #page-container .bv-contact-form .et_pb_contact p textarea.input { height: 74px; min-height: 0; resize: vertical; }
body.bv-site #page-container .bv-contact-form .et_pb_contact .input::placeholder { color: #999999; opacity: 1; }
body.bv-site #page-container .bv-contact-form .et_pb_contact .input:focus { border-color: #66afe9; outline: 0; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }
/* Verification group: the label line, then a 78px area (live's reCAPTCHA box) holding the question and its field, 15px below */
body.bv-site #page-container .bv-contact-form .et_contact_bottom_container { display: block; float: none; clear: both; margin: 0; padding: 0; text-align: left; }
body.bv-site #page-container .bv-contact-form .et_pb_contact_right { display: block; float: none; margin: 0 0 15px; padding: 0; text-align: left; }
body.bv-site #page-container .bv-contact-form .et_pb_contact_right p.clearfix { display: block; float: none; box-sizing: border-box; height: 107px; margin: 0; padding: 0; font: 400 15px/34px 'Source Sans Pro', Arial, Helvetica, sans-serif; color: #333333; text-align: left; }
body.bv-site #page-container .bv-contact-form .et_pb_contact_right p.clearfix::before { content: "Verification"; display: block; visibility: visible; height: 24px; margin: 0 0 5px; font-weight: 700; line-height: 24px; }
body.bv-site #page-container .bv-contact-form .et_pb_contact_right p.clearfix::after { display: none; }
body.bv-site #page-container .bv-contact-form .et_pb_contact_captcha_question { font: 400 15px/34px 'Source Sans Pro', Arial, Helvetica, sans-serif; color: #333333; }
body.bv-site #page-container .bv-contact-form .et_pb_contact p input.input.et_pb_contact_captcha { display: inline-block; width: 80px; max-width: none; margin: 0 0 0 4px; vertical-align: top; color: #333333; }
/* SUBMIT: live's input.btn.btn-primary (white on #ed8d51 with the arrow picture; #3b72b3 when hovered or pressed, Bootstrap's #286090 when focused) */
body #page-container .et_pb_section .bv-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_button.et_pb_contact_submit {
  display: inline-block; float: none; position: relative; height: 42px; margin: 0 !important; padding: 0 40px 0 24px !important; border: 0 !important; border-radius: 0 !important;
  background: url(/wp-content/uploads/ilaunch/skin/button-bg.png) right 18px center no-repeat #ed8d51 !important; color: #ffffff !important;
  font: 700 14px/42px 'Source Sans Pro', Arial, Helvetica, sans-serif !important; letter-spacing: 1px !important; text-transform: uppercase; cursor: pointer; transition: none; }
body #page-container .et_pb_section .bv-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_button.et_pb_contact_submit:focus { background-color: #286090 !important; padding: 0 40px 0 24px !important; }
body #page-container .et_pb_section .bv-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_button.et_pb_contact_submit:hover,
body #page-container .et_pb_section .bv-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_button.et_pb_contact_submit:active { background-color: #3b72b3 !important; padding: 0 40px 0 24px !important; }
body #page-container .et_pb_section .bv-contact-form.et_pb_contact_form_container.et_pb_module .et_pb_button.et_pb_contact_submit::after { display: none !important; }
/* the success line (Divi replaces the form with it) and the error list keep live's body text */
body.bv-site #page-container .bv-contact-form .et-pb-contact-message { font: 400 17px/22px 'Source Sans Pro', Arial, Helvetica, sans-serif; color: #333333; margin: 0; }
body.bv-site #page-container .bv-contact-form .et-pb-contact-message > * { margin: 0 0 15px; }
/* Reviews: live's form is the boxed .form-standard (1px #eee border, 15px padding, 25px margin; 200px side margins from 1200px) */
/* (the margin sits on the module so it collapses with the intro paragraph's margin, as live's form margin does) */
body.bv-site.page-id-1138 #page-container .bv-contact-form { margin: 25px 0; }
body.bv-site.page-id-1138 #page-container .bv-contact-form form.et_pb_contact_form { border: 1px solid #eeeeee; padding: 15px; }
@media (min-width: 1200px) {
  body.bv-site.page-id-1138 #page-container .bv-contact-form { margin: 25px 200px; }
}
/* Newsletter subscribe (1148) and unsubscribe (1149): live's .form-horizontal (label in a 25% column, field in a 66.67% (subscribe) or 58.33%
   (unsubscribe) column of the 30px-wider bootstrap row; the code and the button under the field) from 768px; no "Verification" label */
@media (min-width: 768px) {
  body.bv-site:is(.page-id-1148, .page-id-1149) #page-container .bv-contact-form form.et_pb_contact_form { display: grid; grid-template-columns: calc(25% + 7.5px) calc(66.6667% - 10px) 1fr; grid-auto-flow: row; margin: 0; }
  body.bv-site.page-id-1149 #page-container .bv-contact-form form.et_pb_contact_form { grid-template-columns: calc(25% + 7.5px) calc(58.3333% - 12.5px) 1fr; }
  body.bv-site:is(.page-id-1148, .page-id-1149) #page-container .bv-contact-form p.et_pb_contact_field { display: contents; }
  body.bv-site:is(.page-id-1148, .page-id-1149) #page-container .bv-contact-form p.et_pb_contact_field > .et_pb_contact_form_label { grid-column: 1; align-self: start; display: block; margin: 0 0 15px; }
  body.bv-site:is(.page-id-1148, .page-id-1149) #page-container .bv-contact-form .et_pb_contact p.et_pb_contact_field > input.input { grid-column: 2; margin: 0 0 15px; }
  body.bv-site:is(.page-id-1148, .page-id-1149) #page-container .bv-contact-form .et_contact_bottom_container { grid-column: 2 / 4; }
  body.bv-site:is(.page-id-1148, .page-id-1149) #page-container .bv-contact-form .et_pb_contact_right p.clearfix { height: 78px; }
  body.bv-site:is(.page-id-1148, .page-id-1149) #page-container .bv-contact-form .et_pb_contact_right p.clearfix::before { content: none; display: none; }
  /* live's button row is its own .form-group: 15px below (subscribe: the row is 44px, the height of the unsubscribe link's paragraph beside it) */
  body.bv-site:is(.page-id-1148, .page-id-1149) #page-container .bv-contact-form .et_contact_bottom_container { padding-bottom: 15px; }
  body.bv-site.page-id-1148 #page-container .bv-contact-form .et_contact_bottom_container { padding-bottom: 17px; }
  /* "click here to unsubscribe" sits beside the Subscribe button on live (a col-sm-3 after the button's col-sm-5) */
  body.bv-site.page-id-1148 #page-container .page-content p.bv-unsub-link { position: relative; z-index: 2; width: calc(25% - 22.5px); margin: -59px 0 35px calc(66.6667% + 20px); line-height: 24px; }
}

/* ---------- 5. Keyboard focus: Divi's reset removes every outline (`:focus { outline: 0 }`, `a { outline: 0 }`), live shows the browser's ring
   (and Bootstrap's ring on links and buttons). Low specificity so live's own outline rules still decide where they exist. ---------- */
body.bv-site :focus-visible { outline: revert; }
/* controls whose own CSS removes the ring on live too (slider arrows, the phone menu button, the maths-question field): a ring only while
   focused from the keyboard, so nothing changes for a mouse or a finger */
body.bv-site #page-container #feature .sp-arrow:focus-visible { outline: 2px solid #ffffff !important; outline-offset: 2px; box-shadow: 0 0 0 4px #274c78 !important; }
body.bv-site #page-container .navbar-toggle:focus-visible { outline: 2px solid #274c78 !important; outline-offset: 2px; }
body.bv-site #page-container .bv-contact-form .et_pb_contact p input.input:focus-visible { outline: revert; }
/* the offers page's first "BOOK NOW" carries an inline `outline: 0px` in live's own copy, so it had no ring on live either: a ring while keyboard-focused */
body.bv-site #page-container .page-content a[style*="outline"]:focus-visible { outline: 2px solid #274c78 !important; outline-offset: 2px !important; }

/* ---------- 6. Phone numbers: explicit tel: links that keep the surrounding text's colour and look in every state (live shows plain text there) ---------- */
body.bv-site #page-container a.tel-link, body.bv-site #page-container a.tel-link:link, body.bv-site #page-container a.tel-link:visited,
body.bv-site #page-container a.tel-link:hover, body.bv-site #page-container a.tel-link:active, body.bv-site #page-container a.tel-link:focus,
body.bv-site a[x-apple-data-detectors] { color: inherit !important; text-decoration: none !important; font: inherit; }

/* ---------- 7. Jake's look round, 14 Oct ---------- */
/* offers: on a tablet the two deal cards sit side by side as inline blocks, which line up on their text baseline, so the shorter card dropped lower; align their tops */
body.bv-site #page-container .list.deals .entry { vertical-align: top; }
/* contact: the Get Directions button sat hard against the last address line, on every width */
body.bv-site #page-container .page-content td a.btn-primary { display: inline-block; margin-top: 20px; }
/* reviews: the guests' words are set in italics (the reviewer, place and date lines stay upright) */
body.bv-site.page-id-1138 #page-container .page-content blockquote > p { font-style: italic; }
/* keyword landing pages ("heavy texts"): wording untouched; paragraphs are split at sentence ends in the page content, the line length is capped,
   the line height opened up and the keyword links underlined so they still read as links */
body.bv-site:is(.page-id-1140, .page-id-1141, .page-id-1142, .page-id-1143, .page-id-1144, .page-id-1145) #page-container .page-content p { max-width: 900px; line-height: 1.75; margin: 0 0 20px 0; }
body.bv-site:is(.page-id-1140, .page-id-1141, .page-id-1142, .page-id-1143, .page-id-1144, .page-id-1145) #page-container .page-content p a { text-decoration: underline; }
/* contact: the "Address:" label stays level with the first address line now that the button sits under the address */
body.bv-site.page-id-1137 #page-container .page-content table td { vertical-align: top; }
