
/* 17 September 2026, code audit: twelve rules keyed on element ids that no longer exist on 213 (a69c9e9, nnhourscard, 23f9a34, 8f17097, cce11b9, e8490d6, 22ac098) were removed. The previous file is option nn_bk_snip195_0917. */


/* ============================================================
   PART ONE: layout foundations, 26 to 30 August
   ============================================================ */

	/* One left edge down the whole page. The hero, the highlights strip and the body row
	   are three separate full-bleed containers that were each finding their own left edge:
	   the hero at 157, the highlights at 150 and the body at 96 on a 1425px viewport, so
	   nothing lined up. Same padding expression on all three, and the nested paddings that
	   sat inside them zeroed, brings every section to the same edge. 100% not 100vw: the
	   containing block excludes the scrollbar, which is the 7px that used to be left over. */
	body .elementor .elementor-element.elementor-element-3364f9a,
	body .elementor .elementor-element.elementor-element-3a77669,
	body .elementor .elementor-element.elementor-element-nnbodyrow{
	  padding-left:max(20px, calc((100% - 1140px) / 2)) !important;
	  padding-right:max(20px, calc((100% - 1140px) / 2)) !important;
	}
	@media (min-width:768px){
	  body .elementor .elementor-element.elementor-element-nnbodymain{
	    padding-left:0 !important;padding-right:0 !important}
	  body .elementor .elementor-element.elementor-element-nnherorow,
	  body .elementor .elementor-element.elementor-element-nnherocol{padding-left:0 !important}
	}
	/* (the chip padding rule was replaced by the box styling in the 30 August desktop pass) */

	/* The featured review sat hard against the highlights above it and its
	   author line had no gap at all under the quote. */
	body .elementor .elementor-element.elementor-element-09cadcb{
	  margin-top:26px !important}
	body .elementor .elementor-element.elementor-element-d6053e6{
	  margin-top:10px !important}

	@media (max-width:767px){
	  /* A service price sat directly on the last line of its description. */
	  body .elementor .nn-svcp{margin-top:8px !important;display:block}

	  /* The gallery section header stayed a flex row on a phone, so the
	     eyebrow and the heading sat side by side instead of stacking. Every
	     other section header on the page stacks. */
	  /* ea19619 moved out of the media query 30 August, see below */

	  /* The website, Instagram and Facebook links in the contact card sat 8px
	     apart and were only 21px tall, a poor tap target on a phone. */
	  body .elementor .elementor-element.elementor-element-62987da a{
	    display:inline-block;padding-top:7px;padding-bottom:7px}

	  /* A little more air between the highlights band and what follows. */
	  body .elementor .elementor-element.elementor-element-3364f9a{
	    padding-top:6px !important;padding-bottom:22px !important}
	}

	/* ---- Mobile pass, 29 August, from Danielle's list ---- */
	@media (max-width:767px){

	  /* 1. The FEATURED pill had padding 9px 0 9px 16px, no padding on the
	     right, so the last letter sat outside the pill. */

	  /* 2 and 3. The hero column nested four containers deep, each adding
	     its own padding, so the intro text started 43px in and was only 298px
	     wide, and the two groups of contact buttons started at 63px and 53px,
	     which is why they did not line up. One gutter on the section, none on
	     anything inside it. */
	body .elementor .elementor-element.elementor-element-3a77669{
	    padding-left:20px !important;padding-right:20px !important}
	body .elementor .elementor-element.elementor-element-nnherorow,
	body .elementor .elementor-element.elementor-element-nnherocol,
	body .elementor .elementor-element.elementor-element-c7da9a2,
	body .elementor .elementor-element.elementor-element-d6c235e,
	body .elementor .elementor-element.elementor-element-231a6e4,
	body .elementor .elementor-element.elementor-element-4be4701,
	body .elementor .elementor-element.elementor-element-nnacts2{
	    padding-left:0 !important;padding-right:0 !important}

	  /* 4. More air around the featured review. */
	body .elementor .elementor-element.elementor-element-09cadcb{margin-top:38px !important}
	body .elementor .elementor-element.elementor-element-3364f9a{padding-bottom:38px !important}

	  /* 5 and 6. Two empty decorative containers carry a background image on
	     a desktop and nothing on a phone, so they collapsed to a 20px strip:
	     one above the story text, one above the gallery. Elementor drops the
	     image at this width on purpose, so the empty box goes too. */
	  /* 3597042 moved out of the media query 30 August: it is empty at every width */

	  /* 7. The testimonial name sat beside the quote instead of under it. */
	  /* moved out of the media query 30 August, see below */

	}

	/* 8. The contact details carried a hairline under each link, which read
	   as clutter on a phone and as an underline on a desktop. Removed at both
	   widths so the card is consistent. */
	/* The testimonial byline sits under the quote at every width, not beside it.
	   JetEngine's frontend.css forces .jet-listing-dynamic-repeater__item > * to
	   display:flex, which is what put the name in a 77px gutter on desktop. */
	body .elementor .nn-qt{
	  flex-direction:column !important;align-items:flex-start !important;gap:6px}
	body .elementor .nn-qt p{width:auto !important;max-width:100% !important}
	body .elementor .nn-qt .nn-qt-b b{display:block;line-height:1.35}
	body .elementor .nn-qt .nn-qt-b span{display:block;font-size:13px;color:#7A867F;margin-top:1px;line-height:1.4}

	/* The Gallery section is a flex row, so on desktop the eyebrow, the heading, an
	   empty leftover container and the gallery itself were sharing the width four ways.
	   The gallery got 315px of a 783px column and rendered as an empty band. Same fault
	   as the testimonial byline: fixed for mobile in the 29 August pass, never for desktop. */
	body .elementor .elementor-element.elementor-element-ea19619{
	  flex-direction:column !important;align-items:flex-start !important}
	body .elementor .elementor-element.elementor-element-2f2cb02{display:none !important}

	/* The gallery images were stuck at scale(0.5), so every Gallery section on the site
	   rendered as an empty white band. Two CSS transitions on transform and filter sit
	   permanently in state=running, and a running transition outranks even an author
	   !important declaration, so the only way out is to stop the transition existing. */
	/* The container beside the story text has no image and no background at any width.
	   Left visible it took half the row and pushed the story into the right-hand side. */
	body .elementor .elementor-element.elementor-element-3597042{display:none !important}

	body .elementor .e-gallery-image{
	  transition:none !important;transform:none !important;filter:none !important}

	/* ---- Desktop layout pass, 30 August, from Danielle's four points ---- */

	/* 1. The featured review comes off the top. The testimonials do that job now. */
	body .elementor .elementor-element-09cadcb,
	body .elementor .elementor-element-d6053e6{display:none !important}

	/* 1b. Testimonials run across rather than down, as cards of equal height. */
	body .elementor .elementor-element-nnquoterep .jet-listing-dynamic-repeater__items{
	  display:flex !important;flex-wrap:wrap !important;gap:20px !important;align-items:stretch !important}
	body .elementor .elementor-element-nnquoterep .jet-listing-dynamic-repeater__item{
	  flex:1 1 220px !important;min-width:220px !important;box-sizing:border-box;
	  background:#F2F5F1;border-radius:12px;padding:22px 24px !important}
	body .elementor .elementor-element-nnquoterep .nn-qt{height:100%}

	/* 2. The right column sticks.

	   It was not sticking at all, and no amount of position:sticky was going to fix it:
	   body carried overflow-x:hidden, which forces overflow-y to auto, which makes body a
	   scroll container. Sticky then measures itself against body, and body never scrolls
	   (its scrollHeight equals its clientHeight), so nothing ever sticks. The same rule was
	   also swallowing programmatic scrolling. html already has overflow-x:clip doing the
	   real horizontal clipping, so body's copy was redundant as well as harmful.

	   With that cleared the column pins normally. It is 1406px against a 731px viewport, so
	   only about 700px of it can ever be on screen at once. Ordered so the two things a
	   reader wants are that 700px: the contact details and the map. Opening hours and the
	   enquiry form sit below and scroll away, and the hero's Enquire button still jumps
	   straight to the form. */
	@media (min-width:1025px){
	  /* Scoped to the widths where sticky actually runs. Below 1025px body keeps its
	     overflow-x:hidden, because it is containing a real horizontal overflow there
	     (about 490px at 390px wide) that predates all of this and is not this job. */
	  body{overflow:visible !important}
	  body .elementor .elementor-element.elementor-element-nnbodyside{
	    position:sticky !important;top:20px !important;align-self:flex-start !important;z-index:2}
	}

	/* 3. Bigger highlight boxes, text properly inset, all four the same height. */
	body .elementor .elementor-element-7695fcc .jet-listing-dynamic-repeater__items{
	  gap:16px !important;align-items:stretch !important}
	body .elementor .elementor-element-7695fcc .jet-listing-dynamic-repeater__item{
	  padding:24px 26px !important;border-radius:12px;background:#F2F5F1;
	  display:flex !important;align-items:center;box-sizing:border-box}
	body .elementor .nn-hl{font-size:15.5px !important;line-height:1.45 !important;display:block}

	/* 4. Hero: the right column matches the photo top and bottom, with the last
	   button sitting on the photo's bottom edge. The photo has no intrinsic height
	   (image_stretch is on), so the two columns simply have to agree. */
	@media (min-width:1025px){
	  body .elementor .elementor-element-nnherorow{min-height:520px !important;align-items:stretch !important}
	  body .elementor .elementor-element-nnherocol{padding-top:0 !important;padding-bottom:0 !important}
	  body .elementor .elementor-element-c7da9a2{gap:10px !important;padding-top:0 !important;padding-bottom:0 !important}
	  body .elementor .elementor-element-d6c235e{font-size:15px !important;line-height:1.5 !important}
	  body .elementor .elementor-element-231a6e4{margin-top:auto !important;padding-bottom:0 !important;margin-bottom:0 !important}
	  body .elementor .elementor-element-nnacts2{margin-bottom:0 !important;padding-bottom:0 !important}
/* 22 September: the Website button moved up into the action row (nnsitebtn2), so this quiet row can be empty; hide it then, or its top rule draws a stray line. */
body .elementor .elementor-element.elementor-element-nnacts2:not(:has(.elementor-widget)){display:none !important}
/* The arrow icon takes the button's text colour, not the widget's own green (which vanished on the green primary button). */
body .elementor .elementor-element-4be4701 > .elementor-element .elementor-button svg,
body .elementor .elementor-element-nnbansec .elementor-element-nnbanacts .elementor-element .elementor-button svg{fill:currentColor !important}
/* 22 September, Danielle: a Donate button (widgets nnbandonate in the photo hero, nndonatebtn2 in the card hero), shown only when donate_url is filled. Gold, so it reads as giving rather than booking, whatever position it takes in the row. */
body .elementor .elementor-element-nnbansec .elementor-element-nnbanacts .elementor-element.nn-donate-btn .elementor-button,
body .elementor .elementor-element.elementor-element-4be4701 > .elementor-element.elementor-widget-button.nn-donate-btn .elementor-button{background:#A9CB7A !important;background-color:#A9CB7A !important;color:#16241C !important;border:1px solid #A9CB7A !important;text-decoration:none}
body .elementor .elementor-element-nnbansec .elementor-element-nnbanacts .elementor-element.nn-donate-btn .elementor-button:hover,
body .elementor .elementor-element.elementor-element-4be4701 > .elementor-element.elementor-widget-button.nn-donate-btn .elementor-button:hover{background:#A9CB7A !important;background-color:#A9CB7A !important;color:#16241C !important;border-color:#A9CB7A !important}
body .elementor .elementor-element-nnbansec .elementor-element-nnbanacts .elementor-element.elementor-element-nnbandonate .elementor-button{border-radius:17px;padding:14px;font-size:15px;font-weight:500;box-shadow:none}
	}

	body .elementor .elementor-element.elementor-element-nnsidecontact a{
	  border-bottom:0 !important;text-decoration:none !important}
	
	/* ---- Main points, Services, Menu. 30 August ---- */
	body .elementor .nn-svcp:empty{display:none !important}

	/* Only the first menu block on a page keeps the WHAT WE SERVE / Menu heading pair */
	body .elementor .elementor-element-f58aeb3 ~ .elementor-element-nnmenutxt .nn-menuhead,
	body .elementor .elementor-element-f58aeb3 ~ .elementor-element-nnmenupdf .nn-menuhead,
	body .elementor .elementor-element-nnmenutxt ~ .elementor-element-nnmenupdf .nn-menuhead{display:none !important}
	/* nn-profile-css sets 34px on every body section at four class specificity,
	   so these have to be anchored the same way or they silently lose. */
	body .elementor-213 .elementor-element-nnbodymain .elementor-element-f58aeb3 ~ .elementor-element.e-con.elementor-element-nnmenutxt,
	body .elementor-213 .elementor-element-nnbodymain .elementor-element-f58aeb3 ~ .elementor-element.e-con.elementor-element-nnmenupdf,
	body .elementor-213 .elementor-element-nnbodymain .elementor-element-nnmenutxt ~ .elementor-element.e-con.elementor-element-nnmenupdf{padding-top:0 !important}
	body .elementor-213 .elementor-element-nnbodymain .elementor-element.e-con.elementor-element-f58aeb3:has(~ .elementor-element-nnmenutxt),
	body .elementor-213 .elementor-element-nnbodymain .elementor-element.e-con.elementor-element-f58aeb3:has(~ .elementor-element-nnmenupdf),
	body .elementor-213 .elementor-element-nnbodymain .elementor-element.e-con.elementor-element-nnmenutxt:has(~ .elementor-element-nnmenupdf){padding-bottom:20px !important}
	
	/* Main points, Menu and Services rows: one per line, note aligned right */
	body .elementor .nn-svcrow{width:100%}
	body .elementor .nn-svcl{flex:1 1 auto;min-width:0}
	body .elementor .nn-svcp{flex:0 0 auto;text-align:right}
	

/* ============================================================
   PART TWO: the second design pass, 31 August
   ============================================================ */


/* ---- 4. A rule starts each section, instead of 88px of nothing ---- */
body .elementor .elementor-element.elementor-element-nnbodymain{row-gap:0 !important}
body .elementor-213 .elementor-element-nnbodymain > .elementor-element.e-con{
  padding-top:0 !important;
  padding-bottom:0 !important;
  background-color:transparent !important;
}
body .elementor-213 .elementor-element-nnbodymain > .elementor-element.e-con + .elementor-element.e-con{
  margin-top:40px;
  border-top:1px solid #DDE4DA;
  padding-top:26px !important;
}

/* ---- 5. Type scale ---- */
/* The business name outranks a section heading again. */
@media (min-width:1025px){
  body .elementor .elementor-element-6d21a1c .elementor-heading-title{
    font-size:44px !important;line-height:1.05 !important;letter-spacing:-.012em !important}
}
/* Section headings down to 25, the gold eyebrow carries the identity. */
body .elementor .elementor-element-ada4f85 .elementor-heading-title,
body .elementor .elementor-element-nnmph .elementor-heading-title,
body .elementor .elementor-element-5ded1f7 .elementor-heading-title,
body .elementor .elementor-element-nnmth .elementor-heading-title,
body .elementor .elementor-element-nnpdfh .elementor-heading-title,
body .elementor .elementor-element-7b0c51c .elementor-heading-title,
body .elementor .elementor-element-95f1497 .elementor-heading-title,
body .elementor .elementor-element-nngalhead .elementor-heading-title,
body .elementor .elementor-element-nnquoteh .elementor-heading-title,
body .elementor .elementor-element-a5c20cd .elementor-heading-title{
  font-size:25px !important;line-height:1.18 !important;letter-spacing:-.005em !important}

/* Body copy in the brand ink rather than the theme default #333333. */
body .elementor .elementor-element.elementor-element-nnbodymain{color:#3A453D}
body .elementor .elementor-element-nnbodymain .elementor-widget-text-editor{color:#3A453D}
/* Running text stops at a comfortable measure. Lists, gallery and quote cards
   keep the full column, so this is scoped to text-editor widgets only. */
body .elementor .elementor-element-nnbodymain .elementor-widget-text-editor p{max-width:66ch}

/* ---- More around the dam comes back to the body width ---- */
body .elementor .elementor-element.elementor-element-nnkeepsec{
  padding-left:max(20px, calc((100% - 1140px) / 2)) !important;
  padding-right:max(20px, calc((100% - 1140px) / 2)) !important;
}

/* ---- 6a. The menu is one section, not three stacked ones ---- */
body .elementor-213 .elementor-element-nnbodymain > .elementor-element-f58aeb3 + .elementor-element-nnmenutxt,
body .elementor-213 .elementor-element-nnbodymain > .elementor-element-f58aeb3 + .elementor-element-nnmenupdf,
body .elementor-213 .elementor-element-nnbodymain > .elementor-element-nnmenutxt + .elementor-element-nnmenupdf{
  margin-top:16px;border-top:0;padding-top:0 !important;
}
/* The button sits with the note about the full menu, not on its own. */
body .elementor .elementor-element.elementor-element-nnmenupdf{align-items:flex-start !important}
/* ---- 1. The right column is one panel, not four cards ---- */
/* The enquiry form moved out of this column into the main one, so the three
   that remain share a single background and are separated by hairlines. */
@media (min-width:1025px){
  body .elementor .elementor-element.elementor-element-nnbodyside{
    background:#F2F5F1;border-radius:12px;padding:22px 20px;row-gap:0 !important;}
  body .elementor .elementor-element.elementor-element-nnsidecontact,
  body .elementor .elementor-element.elementor-element-nnhourscard,
  body .elementor .elementor-element.elementor-element-a69c9e9{
    background:transparent !important;border-radius:0 !important;
    padding:0 !important;order:0 !important;}
}
/* The directions card also holds a second copy of the hours and a map, both
   already suppressed. Hidden outright now so the card is just its button. */
/* The wrapper holds a duplicate hours block AND the map. Only the hours
   block is hidden now: the map renders wherever a listing has coordinates,
   which is also what its own visibility condition checks. Leaflet and
   OpenStreetMap, no key, no cost. */

/* Label and value share a line, which is where most of the height went.
   Website and socials stay stacked and full width because a business may
   have one link or three, and a two column flow would misalign them. */
body .elementor .elementor-element.elementor-element-62987da{
  display:grid !important;grid-template-columns:86px 1fr;
  column-gap:14px;row-gap:10px;align-items:start;}
body .elementor .elementor-element-62987da > .elementor-element{margin-bottom:0 !important}
body .elementor .elementor-element-62987da > .elementor-widget-divider{
  grid-column:1 / -1;margin:2px 0 !important;}
body .elementor .elementor-element-b93c7d4,
body .elementor .elementor-element-3e41669,
body .elementor .elementor-element-bb5623a,
body .elementor .elementor-element-09519ae{grid-column:1 / -1}
body .elementor .elementor-element-3e41669,
body .elementor .elementor-element-bb5623a,
body .elementor .elementor-element-09519ae{margin-top:-4px}

/* ---- The enquiry form is now a band at the foot of the main column ---- */
body .elementor .elementor-element.elementor-element-nnaskcard{
  background:#2A4438 !important;border-radius:12px;
  padding:26px 28px !important;margin-top:40px !important;border-top:0 !important;}
body .elementor .elementor-element-nnaskh .elementor-heading-title{
  color:#FFFFFF !important;font-size:24px !important;}
/* Opening hours: rows were 42px pills. A day and a time needs less. */
body .elementor .elementor-element-e55f3d7 .jet-listing-dynamic-repeater__item{
  padding:4px 0 !important;margin:0 !important;background:transparent !important;
  font-size:13.5px !important;line-height:1.5 !important;}
body .elementor .elementor-element-e55f3d7 .jet-listing-dynamic-repeater__item + .jet-listing-dynamic-repeater__item{
  border-top:1px solid #E6ECE2;}

/* ---- The enquiry band reads as one row of fields ---- */
body .elementor .elementor-element-nnaskcard form{
  display:grid;grid-template-columns:1fr 1fr;column-gap:16px;row-gap:12px;}
body .elementor .elementor-element-nnaskcard .jet-form-builder-row{margin:0 !important}
body .elementor .elementor-element-nnaskcard .field-type-textarea-field,
body .elementor .elementor-element-nnaskcard .jet-form-builder-messages-wrap{grid-column:1 / -1}
body .elementor .elementor-element-nnaskcard .field-type-submit-field{
  grid-column:1 / -1;justify-self:start;}
body .elementor .elementor-element-nnaskcard textarea{min-height:74px}
/* Legible on the dark ground. */
body .elementor .elementor-element-nnaskcard label,
body .elementor .elementor-element-nnaskcard .jet-form-builder__label,
body .elementor .elementor-element-nnaskcard .jet-form-builder__label-text{color:#AFC3B4 !important}
body .elementor .elementor-element-nnaskcard input[type="text"],
body .elementor .elementor-element-nnaskcard input[type="email"],
body .elementor .elementor-element-nnaskcard input[type="tel"],
body .elementor .elementor-element-nnaskcard textarea{
  background:rgba(255,255,255,.09) !important;color:#FFFFFF !important;
  border:1px solid rgba(232,240,227,.30) !important;border-radius:6px !important;}
body .elementor .elementor-element-nnaskcard input::placeholder,
body .elementor .elementor-element-nnaskcard textarea::placeholder{color:#93A897 !important}
body .elementor .elementor-element-nnaskcard button[type="submit"],
body .elementor .elementor-element-nnaskcard .jet-form-builder__action-button{
  background:#A9CB7A !important;color:#16241C !important;border-color:#A9CB7A !important;}
/* JetFormBuilder rows are column flex with wrap, and the label carries
   flex-basis:100%. Inside a grid the row gets a definite height, so that
   100% becomes the full height and the field wraps into a second column to
   the right. Stop the stretch and the wrapping and it stacks again. */
body .elementor .elementor-element-nnaskcard .jet-form-builder-row{
  align-self:start;flex-wrap:nowrap !important;}
body .elementor .elementor-element-nnaskcard .jet-form-builder__label{
  flex-basis:auto !important;}
body .elementor .elementor-element-nnaskcard .jet-form-builder__field-wrap{max-width:100%}

/* Trim the panel so the whole of it sits on one screen. */
@media (min-width:1025px){
  body .elementor .elementor-element.elementor-element-nnbodyside{padding:16px 18px;}
}
body .elementor .elementor-element-e55f3d7 .jet-listing-dynamic-repeater__item{padding:3px 0 !important}
/* Elementor containers take their padding and radius from custom properties,
   so overriding the physical properties alone loses. Set the variables too. */
@media (min-width:1025px){
  body .elementor-213 .elementor-element.elementor-element-nnbodyside > .elementor-element.e-con{
    --padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px;
    --border-radius:0px;--e-con-border-radius:0px;
    background-color:transparent !important;background-image:none !important;
    border-radius:0 !important;padding:0 !important;box-shadow:none !important;
  }
}
/* The hours list carried its own white box and a border on every row. Inside
   the panel that reads as a card within a card, and the row borders doubled
   up with the separators added above. */
@media (min-width:1025px){
  body .elementor .elementor-element-e55f3d7 .jet-listing-dynamic-repeater__items{
    background:transparent !important;border:0 !important;padding:0 !important;}
}
body .elementor .elementor-element-e55f3d7 .jet-listing-dynamic-repeater__item{
  border-bottom:0 !important;}
body .elementor .elementor-element.elementor-element-62987da{grid-template-columns:78px 1fr !important}
/* ---- 3. The hero split, and the pills ---- */
@media (min-width:1025px){
  body .elementor .elementor-element.elementor-element-nnherocol{
    width:auto !important;flex:1 1 52% !important;min-width:0;}
  body .elementor .elementor-element.elementor-element-c7da9a2{
    width:auto !important;flex:1 1 48% !important;min-width:0;}
}
/* Category and area are navigation, not status, so they read as a line of
   small ochre capitals. Featured is the only pill, and it now sits under
   the name where it reads as a badge on the business. */
body .elementor .elementor-element.elementor-element-nnchips{
  gap:0 !important;align-items:baseline !important;flex-wrap:nowrap !important;
  margin-bottom:12px !important;}
body .elementor .elementor-element-nnchipcat a,
body .elementor .elementor-element-nnchiparea a,
body .elementor .elementor-element-nnchipcat .jet-listing-dynamic-terms,
body .elementor .elementor-element-nnchiparea .jet-listing-dynamic-terms,
body .elementor .elementor-element-nnchipcat .jet-listing-dynamic-terms__link,
body .elementor .elementor-element-nnchiparea .jet-listing-dynamic-terms__link{
  background:none !important;background-color:transparent !important;
  padding:0 !important;border:0 !important;border-radius:0 !important;
  color:#4E7A2F !important;font-size:11px !important;font-weight:600 !important;
  letter-spacing:.14em !important;text-transform:uppercase !important;
  line-height:1.5 !important;white-space:nowrap;}
body .elementor .elementor-element.elementor-element-nnchipcat::after{
  content:"/";color:#B9C2B6;margin:0 9px;font-size:11px;}

/* ---- 2. One primary action, one secondary, the rest quiet ---- */
body .elementor .elementor-element.elementor-element-4be4701{
  gap:10px !important;align-items:stretch !important;flex-wrap:wrap !important;}
body .elementor .elementor-element-4be4701 > .elementor-element .elementor-button{
  height:44px !important;min-height:44px !important;font-size:15px !important;
  padding:0 17px !important;border-radius:6px !important;
  display:inline-flex !important;align-items:center !important;justify-content:center !important;}
/* 30 September: buttons a touch smaller (were 48px tall, 20px sides), and the Open now chip
   takes the same 6px corners as the buttons (it was a 20px pill). Danielle. */
body .elementor .elementor-element-nnopennow .nn-open{border-radius:6px !important}
body .elementor .elementor-element-4be4701 > .elementor-element:first-child .elementor-button{
  background-color:#335245 !important;color:#FFFFFF !important;border:1px solid #335245 !important;}
body .elementor .elementor-element-4be4701 > .elementor-element:not(:first-child) .elementor-button{
  background-color:#FFFFFF !important;color:#335245 !important;border:1px solid #B9CBBF !important;}

/* Everything else keeps its route but stops competing. */
body .elementor .elementor-element.elementor-element-nnacts2{
  gap:6px 20px !important;flex-wrap:wrap !important;margin-top:16px !important;
  padding-top:14px !important;border-top:1px solid #E4EAE1 !important;
  align-items:baseline !important;}
body .elementor .elementor-element-nnacts2 .elementor-button{
  background:none !important;background-color:transparent !important;
  border:0 !important;border-bottom:1px solid #C4D3C9 !important;border-radius:0 !important;
  color:#335245 !important;font-size:13.5px !important;font-weight:500 !important;
  padding:0 0 2px 0 !important;height:auto !important;min-height:0 !important;
  box-shadow:none !important;}
body .elementor .elementor-element-nnacts2 .elementor-button-icon{display:none !important}
/* The terms link keeps its pill padding at a specificity the rules above
   could not reach, so match its own nesting. */
body .elementor .elementor-element.elementor-element-nnchipcat,
body .elementor .elementor-element.elementor-element-nnchiparea{
  display:flex !important;align-items:baseline !important;width:auto !important;}
body .elementor .elementor-element.elementor-element-nnchipcat::after{
  content:"/";color:#B9C2B6;margin:0 9px;font-size:11px;line-height:1.5;}
body .elementor-213 .elementor-element.elementor-element-nnchipcat .jet-listing.jet-listing-dynamic-terms .jet-listing-dynamic-terms__link,
body .elementor-213 .elementor-element.elementor-element-nnchiparea .jet-listing.jet-listing-dynamic-terms .jet-listing-dynamic-terms__link{
  background:none !important;background-color:transparent !important;
  padding:0 !important;margin:0 !important;border:0 !important;border-radius:0 !important;
  min-height:0 !important;height:auto !important;
  color:#4E7A2F !important;font-size:11px !important;font-weight:600 !important;
  letter-spacing:.14em !important;text-transform:uppercase !important;line-height:1.5 !important;}
/* ---- 6. Long lists run in two columns ---- */
/* Nine rows or more is where a single column starts to feel like a wall.
   :has() counts the rows, so a short list is left alone. */
@media (min-width:1025px){
  body .elementor .elementor-element-nnmtrep .jet-listing-dynamic-repeater__items:has(> .jet-listing-dynamic-repeater__item:nth-child(9)),
  body .elementor .elementor-element-db87855 .jet-listing-dynamic-repeater__items:has(> .jet-listing-dynamic-repeater__item:nth-child(9)),
  body .elementor .elementor-element-5784598 .jet-listing-dynamic-repeater__items:has(> .jet-listing-dynamic-repeater__item:nth-child(9)){
    display:block !important;columns:2;column-gap:36px;}
  body .elementor .elementor-element-nnmtrep .jet-listing-dynamic-repeater__items:has(> .jet-listing-dynamic-repeater__item:nth-child(9)) > .jet-listing-dynamic-repeater__item,
  body .elementor .elementor-element-db87855 .jet-listing-dynamic-repeater__items:has(> .jet-listing-dynamic-repeater__item:nth-child(9)) > .jet-listing-dynamic-repeater__item,
  body .elementor .elementor-element-5784598 .jet-listing-dynamic-repeater__items:has(> .jet-listing-dynamic-repeater__item:nth-child(9)) > .jet-listing-dynamic-repeater__item{
    break-inside:avoid;display:block !important;width:100% !important;}
}

/* ---- 7. The gallery leads with one large picture ---- */
body .elementor .elementor-element-b7c8bfa .e-gallery-container{
  grid-template-columns:2fr 1fr 1fr !important;grid-auto-flow:dense !important;}
body .elementor .elementor-element-b7c8bfa .e-gallery-container:not(:has(> .e-gallery-item:nth-child(4))){
  grid-template-columns:2fr 1fr !important;}
body .elementor .elementor-element-b7c8bfa .e-gallery-item:first-child{
  grid-column:1;grid-row:span 2;}
body .elementor .elementor-element-b7c8bfa .e-gallery-item{height:100%}
body .elementor .elementor-element-b7c8bfa .e-gallery-image{
  height:100% !important;width:100% !important;object-fit:cover;border-radius:4px;}

/* ---- 8. A testimonial should not read like a paragraph ---- */
body .elementor .elementor-element-nnquoterep .nn-qt{position:relative;padding-top:26px}
body .elementor .elementor-element-nnquoterep .nn-qt::before{
  content:"\201C";position:absolute;top:2px;left:0;
  font-family:Fraunces,Georgia,serif;font-size:52px;line-height:1;color:#A9CB7A;opacity:.55;}
body .elementor .elementor-element-nnquoterep .nn-qt-t{
  font-family:Fraunces,Georgia,serif !important;font-size:16px !important;
  line-height:1.42 !important;color:#22332A !important;margin:0 0 14px !important;}
body .elementor .elementor-element-nnquoterep .nn-qt-b{
  border-top:1px solid #E0E8DC;padding-top:10px;margin:0 !important;}
body .elementor .elementor-element-nnquoterep .nn-qt-b b{
  font-size:13px !important;font-weight:600 !important;color:#335245 !important;
  letter-spacing:.01em !important;}
body .elementor .elementor-element-nnquoterep .nn-qt-b span{
  font-size:11.5px !important;color:#8A968C !important;margin-top:1px !important;}
/* The line about who supplied them belongs at the foot of the section. */
body .elementor .elementor-element.elementor-element-nnquotesec{display:flex;flex-direction:column}
body .elementor .elementor-element.elementor-element-nnquotenote{order:9;margin-top:14px !important}
body .elementor .elementor-element.elementor-element-nnquoterep{order:5}
/* ============================================================
   THE PHONE PASS
   The two columns become one at 1024px and below, and the right
   column stacks last, which put the contact details 6750px down.
   ============================================================ */
@media (max-width:1024px){
  /* Danielle, 31 August, on reflection: content first on a phone. The panel
     follows the story, points and gallery, and the call bar keeps Call and
     WhatsApp a thumb away the whole way down, so nothing is lost. */
  body .elementor .elementor-element.elementor-element-nnbodyside{
    order:0 !important;position:static !important;
    background:#F2F5F1;border-radius:12px;padding:16px 18px;row-gap:0 !important;
    margin-top:34px;}
  body .elementor-213 .elementor-element.elementor-element-nnbodyside > .elementor-element.e-con{
    --padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px;
    --border-radius:0px;--e-con-border-radius:0px;
    background-color:transparent !important;background-image:none !important;
    border-radius:0 !important;padding:0 !important;box-shadow:none !important;order:0 !important;}
  body .elementor .elementor-element-e55f3d7 .jet-listing-dynamic-repeater__items{
    background:transparent !important;border:0 !important;padding:0 !important;}

  /* The four highlights read as one panel of facts rather than four cards. */
  body .elementor .elementor-element-7695fcc .jet-listing-dynamic-repeater__items{
    background:#F2F5F1;border-radius:10px;padding:2px 16px;gap:0 !important;}
  body .elementor .elementor-element-7695fcc .jet-listing-dynamic-repeater__item{
    background:transparent !important;padding:12px 0 !important;border-radius:0 !important;
    min-height:0 !important;}
  body .elementor .elementor-element-7695fcc .jet-listing-dynamic-repeater__item + .jet-listing-dynamic-repeater__item{
    border-top:1px solid #E2E9DE;}
}

@media (max-width:767px){
  /* A dish took 148px because the row turned into a column. A price is
     short enough to sit beside the name, with the note wrapping under it. */
  body .elementor .nn-svcrow{
    flex-direction:row !important;align-items:baseline !important;gap:14px !important;}
  body .elementor .nn-svcl{flex:1 1 auto !important;min-width:0 !important}
  body .elementor .nn-svcp{flex:0 0 auto !important;text-align:right !important;white-space:nowrap}

  /* Two pictures a row, with the first one across the top. */
  body .elementor .elementor-element-b7c8bfa .e-gallery-container{
    grid-template-columns:1fr 1fr !important;}
  body .elementor .elementor-element-b7c8bfa .e-gallery-item:first-child{
    grid-column:1 / -1 !important;grid-row:auto !important;}

  /* The section rules stay, at a tighter step. */
  body .elementor-213 .elementor-element-nnbodymain > .elementor-element.e-con + .elementor-element.e-con{
    margin-top:30px;padding-top:20px !important;}
}
@media (max-width:767px){
  /* Better again: the price sits beside the NAME, and the description gets
     the full width underneath instead of being squeezed into 233px. */
  body .elementor .nn-svcrow{
    display:grid !important;grid-template-columns:1fr auto !important;
    column-gap:14px !important;row-gap:2px !important;align-items:baseline !important;}
  body .elementor .nn-svcl{display:contents !important}
  body .elementor .nn-svcn{grid-column:1;grid-row:1}
  body .elementor .nn-svcd{grid-column:1 / -1;grid-row:2}
  body .elementor .nn-svcp{grid-column:2;grid-row:1;text-align:right !important}
}

/* ============================================================
   PART THREE: Danielle's notes on the built pass, 31 August
   ============================================================ */

/* 1. The hero had 64px of dead space above the buttons, because the row was
   held at 520px and the text ran out before the photo did. Shrinking the row
   removes the slack rather than moving it somewhere else, and the columns
   still finish level. A long tagline simply grows the row again. */
@media (min-width:1025px){
  body .elementor .elementor-element.elementor-element-nnherorow{min-height:450px !important}
}

/* 2. The carousel slide was taller than the photograph, so the dots sat 100px
   below the picture. Let the photograph fill its slide. */
body .elementor .elementor-element-nnherocar .elementor-image-carousel-wrapper,
body .elementor .elementor-element-nnherocar .swiper{padding-bottom:20px !important}
body .elementor .elementor-element-nnherocar .swiper-slide,
body .elementor .elementor-element-nnherocar .swiper-slide figure,
body .elementor .elementor-element-nnherocar .swiper-slide a{height:100% !important;display:block}
body .elementor .elementor-element-nnherocar .swiper-slide img{
  height:100% !important;width:100% !important;object-fit:cover;display:block}
body .elementor .elementor-element-nnherocar .swiper-pagination{bottom:0 !important}

/* 3. The highlights strip and the body below it were touching. */
body .elementor .elementor-element.elementor-element-3364f9a{margin-bottom:46px !important}

/* 5. The strip already had a darker green behind the four cards. With no
   padding it only showed in the gaps between them, so it read as a seam
   rather than a band. */
body .elementor .elementor-element-7695fcc .jet-listing-dynamic-repeater__items{
  padding:18px !important;border-radius:14px;gap:16px !important}
@media (max-width:1024px){
  body .elementor .elementor-element-7695fcc .jet-listing-dynamic-repeater__items{padding:14px !important}
}

/* 6. The panel was drawn too tight, and the three blocks inside it kept their
   own 1px borders, which read as boxes once the backgrounds came off. */
@media (min-width:1025px){
  body .elementor .elementor-element.elementor-element-nnbodyside{padding:24px 22px !important}
}
body .elementor-213 .elementor-element.elementor-element-nnbodyside > .elementor-element.e-con{
  --border-width:0px;--border-top-width:0px;--border-right-width:0px;
  --border-bottom-width:0px;--border-left-width:0px;
  border:0 !important;}
body .elementor .elementor-element.elementor-element-62987da{row-gap:15px !important}
body .elementor .elementor-element-e55f3d7 .jet-listing-dynamic-repeater__item{padding:6px 0 !important}
@media (min-width:1025px){
}
@media (max-width:1024px){
  body .elementor .elementor-element.elementor-element-nnbodyside{padding:22px 20px}
}

/* 7. The enquiry band lost its dark green and its padding to the section rule
   further up this file, which zeroes padding and background on every child of
   the main column. That rule carries four classes; this one carries five and
   comes later, so it wins. Trap 9, self inflicted. */
body .elementor-213 .elementor-element-nnbodymain > .elementor-element.e-con.elementor-element-nnaskcard{
  --padding-top:30px;--padding-right:32px;--padding-bottom:30px;--padding-left:32px;
  background-color:#2A4438 !important;
  padding:30px 32px !important;
  border-radius:12px;border-top:0 !important;margin-top:48px !important;}
body .elementor .elementor-element-nnaskh .elementor-heading-title{color:#FFFFFF !important}

/* 8. The bylines sat wherever the quote ended, so three cards of the same
   height had their names on three different lines. */
body .elementor .elementor-element-nnquoterep .nn-qt{height:100%}
body .elementor .elementor-element-nnquoterep .nn-qt-b{margin-top:auto !important}
/* Trimmed back so the whole panel still sits on one screen: the contact rows
   keep their new breathing room, the hours rows and the separators give a
   little of it back. */
@media (min-width:1025px){
  body .elementor .elementor-element.elementor-element-nnbodyside{padding:20px 22px !important}
}
body .elementor .elementor-element-e55f3d7 .jet-listing-dynamic-repeater__item{padding:4px 0 !important}
/* The between-sections rule carries one class more than the band rule above,
   so the top padding needs matching at its own weight. */
body .elementor-213 .elementor-element-nnbodymain > .elementor-element.e-con + .elementor-element.e-con.elementor-element-nnaskcard{
  padding-top:30px !important}
/* The dots were overlapping the last four pixels of the photograph. */
body .elementor .elementor-element-nnherocar .elementor-image-carousel-wrapper,
body .elementor .elementor-element-nnherocar .swiper{padding-bottom:26px !important}
/* ============================================================
   PART FOUR: 31 August, evening
   ============================================================ */

/* 1. Main points become cards on a grid, so a business can write a heading
   and a sentence under it rather than filling a list. Three across on a
   desktop, two on a tablet, one on a phone, whatever the number of points. */
body .elementor .elementor-element-nnmprep .jet-listing-dynamic-repeater__items{
  display:grid !important;grid-template-columns:repeat(3,1fr) !important;
  gap:16px !important;align-items:stretch !important;}
@media (max-width:1024px){
  body .elementor .elementor-element-nnmprep .jet-listing-dynamic-repeater__items{
    grid-template-columns:repeat(2,1fr) !important;}
}
@media (max-width:520px){
  body .elementor .elementor-element-nnmprep .jet-listing-dynamic-repeater__items{
    grid-template-columns:1fr !important;}
}
body .elementor .elementor-element-nnmprep .jet-listing-dynamic-repeater__item{
  background:#F2F5F1;border-radius:12px;display:block !important;
  min-width:0;height:100%;}
/* These override the list shape, including the phone grid further up. */
body .elementor .elementor-element-nnmprep .nn-svcrow{
  display:block !important;padding:20px 22px !important;height:100%;
  grid-template-columns:none !important;}
body .elementor .elementor-element-nnmprep .nn-svcl{display:block !important}
body .elementor .elementor-element-nnmprep .nn-svcn{
  font-size:16px !important;font-weight:600 !important;color:#16241C !important;
  line-height:1.32 !important;margin-bottom:7px !important;}
body .elementor .elementor-element-nnmprep .nn-svcd{
  font-size:14px !important;color:#5A665D !important;line-height:1.55 !important;
  margin-top:0 !important;}
body .elementor .elementor-element-nnmprep .nn-svcp{
  display:block !important;text-align:left !important;white-space:normal !important;
  margin-top:12px !important;font-size:13px !important;font-weight:600 !important;
  color:#4E7A2F !important;}

/* 3. The hero tagline was held to 332px by a right padding it did not need. */
body .elementor .elementor-element.elementor-element-d6c235e{padding-right:0 !important}

/* 4. Website, Instagram and Facebook as icons on one row. The label text is
   kept in the accessibility tree and pushed out of sight, so a screen reader
   still announces "Instagram" rather than a bare link. */
body .elementor .elementor-element.elementor-element-nnsocials{
  display:flex !important;flex-direction:row !important;
  gap:10px !important;padding:0 !important;width:auto !important;margin-top:2px !important;}
body .elementor .elementor-element-nnsocials > .elementor-element{width:auto !important;margin:0 !important}
body .elementor .elementor-element-nnsocials .elementor-heading-title{margin:0 !important}
body .elementor .elementor-element-nnsocials .elementor-heading-title a{
  display:block;width:38px;height:38px;border-radius:9px;background:#FFFFFF;
  border:1px solid #DCE5D8 !important;background-repeat:no-repeat;background-position:center;
  background-size:19px 19px;text-indent:-9999px;overflow:hidden;white-space:nowrap;
  border-bottom:1px solid #DCE5D8 !important;}
body .elementor .elementor-element-nnsocials .elementor-heading-title a:hover{border-color:#335245 !important}
body .elementor .elementor-element-3e41669 .elementor-heading-title a{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2338594B' stroke-width='1.7' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18'/%3E%3Cpath d='M12 3c2.6 2.8 2.6 15.2 0 18'/%3E%3Cpath d='M12 3c-2.6 2.8-2.6 15.2 0 18'/%3E%3C/svg%3E")}
body .elementor .elementor-element-bb5623a .elementor-heading-title a{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2338594B' stroke-width='1.7'%3E%3Crect x='3.2' y='3.2' width='17.6' height='17.6' rx='5'/%3E%3Ccircle cx='12' cy='12' r='3.9'/%3E%3Ccircle cx='17.1' cy='6.9' r='1.1' fill='%2338594B' stroke='none'/%3E%3C/svg%3E")}
body .elementor .elementor-element-09519ae .elementor-heading-title a{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2338594B'%3E%3Cpath d='M14.6 8.6V7c0-.7.2-1.1 1.2-1.1h1.6V3h-2.6c-2.7 0-3.6 1.4-3.6 3.7v1.9H9.1v2.9h2.1V21h3.4v-9.5h2.3l.4-2.9z'/%3E%3C/svg%3E")}

/* 5. Two eyebrows and two section headings had drifted off the others. */
body .elementor .elementor-element-4500292 .elementor-heading-title,
body .elementor .elementor-element-nnquoteov .elementor-heading-title{
  font-size:12px !important;font-weight:600 !important;color:#A9CB7A !important;
  letter-spacing:.2em !important;text-transform:uppercase !important;}
body .elementor .elementor-element-ada4f85 .elementor-heading-title,
body .elementor .elementor-element-nnquoteh .elementor-heading-title{color:#335245 !important}
/* The gallery sat 10px right of every other section. */
body .elementor .elementor-element.elementor-element-9b5339a{padding:0 !important}
/* Elementor lazy loads container backgrounds with
   .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded) * { background-image:none !important }
   which is five classes and strips these icons until the container is marked
   loaded. Matching it needs five classes of our own, plus !important. */
body .elementor-213 .elementor-element-nnbodyside .elementor-element-nnsocials .elementor-element-3e41669 .elementor-heading-title a{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2338594B' stroke-width='1.7' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18'/%3E%3Cpath d='M12 3c2.6 2.8 2.6 15.2 0 18'/%3E%3Cpath d='M12 3c-2.6 2.8-2.6 15.2 0 18'/%3E%3C/svg%3E") !important}
body .elementor-213 .elementor-element-nnbodyside .elementor-element-nnsocials .elementor-element-bb5623a .elementor-heading-title a{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2338594B' stroke-width='1.7'%3E%3Crect x='3.2' y='3.2' width='17.6' height='17.6' rx='5'/%3E%3Ccircle cx='12' cy='12' r='3.9'/%3E%3Ccircle cx='17.1' cy='6.9' r='1.1' fill='%2338594B' stroke='none'/%3E%3C/svg%3E") !important}
body .elementor-213 .elementor-element-nnbodyside .elementor-element-nnsocials .elementor-element-09519ae .elementor-heading-title a{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2338594B'%3E%3Cpath d='M14.6 8.6V7c0-.7.2-1.1 1.2-1.1h1.6V3h-2.6c-2.7 0-3.6 1.4-3.6 3.7v1.9H9.1v2.9h2.1V21h3.4v-9.5h2.3l.4-2.9z'/%3E%3C/svg%3E") !important}

/* ============================================================
   PART FIVE: the phone contact block and enquiry form, 31 August
   ============================================================ */

/* On a phone the enquiry fields each take their own row at full width. */
@media (max-width:767px){
  body .elementor .elementor-element-nnaskcard form{
    grid-template-columns:1fr !important;}
  body .elementor .elementor-element-nnaskcard .jet-form-builder-row{width:100% !important}
}

/* The 78px label column worked beside a wide column and not on a 295px
   panel: values hung at a second left edge, the socials sat at the first,
   and the address wrapped five deep in the squeeze. Stacked, everything
   shares one edge. */
@media (max-width:767px){
  body .elementor .elementor-element.elementor-element-62987da{
    display:block !important;}
  body .elementor .elementor-element-62987da > .elementor-element{
    width:100% !important;}
  body .elementor .elementor-element-62987da > .elementor-widget-heading{
    margin-bottom:2px !important;}
  body .elementor .elementor-element-62987da > .elementor-widget-divider{
    margin:13px 0 !important;}
  body .elementor .elementor-element.elementor-element-nnsocials{
    margin-top:8px !important;}
}

/* ---- Danielle, 31 August, on the phone view ---- */
/* The story text squares off on both edges below 768px. Justify was removed
   on desktop for making rivers in a wide column (fault 1 of the original
   six); on a phone hyphenation keeps the gaps in check. Scoped to the story
   alone, on her instruction, at phone width only. */
@media (max-width:767px){
  body .elementor.elementor-213 .elementor-element.elementor-element-696953d p{
    text-align:justify !important;hyphens:auto;-webkit-hyphens:auto;}
}

/* A long price note stops wrapping the list rows: one line, clipped with an
   ellipsis. Scoped to the menu, services and price list rows, NOT the main
   points cards, whose note is a full width line by design. */
@media (max-width:767px){
  body .elementor .elementor-element-nnmtrep .nn-svcp,
  body .elementor .elementor-element-db87855 .nn-svcp,
  body .elementor .elementor-element-5784598 .nn-svcp{
    white-space:nowrap !important;overflow:hidden;text-overflow:ellipsis;
    max-width:42vw;justify-self:end;}

  /* The price list still runs the first-design format string: a classless
     flex row of two spans, styled inline, so the class hook above finds
     nothing in it. Target the second span structurally. 60vw rather than
     42: these prices are sentences (R4 400 a month) and the label is the
     long half of the row. */
  body .elementor .elementor-element-5784598 .jet-listing-dynamic-repeater__item > div > span:last-child{
    white-space:nowrap !important;overflow:hidden;text-overflow:ellipsis;
    max-width:60vw;flex-shrink:0;}
}

/* ---- Part seven: listing tag chips (Danielle, 2 September 2026) ----
   Taxonomy listing_tag (snippet 208). Chips cloned from the category chips:
   134c517 (template 213 hero), d8da630 (Gold card 272), 14656c4 (Platinum card
   284), f178c45 (Free card 299). The widget is hidden entirely when a listing
   has no tags, and the hero chip row may wrap on phone. */
body .elementor .elementor-element.elementor-element-134c517:has(.jet-listing-dynamic-terms:empty),
body .elementor .elementor-element.elementor-element-d8da630:has(.jet-listing-dynamic-terms:empty),
body .elementor .elementor-element.elementor-element-14656c4:has(.jet-listing-dynamic-terms:empty),
body .elementor .elementor-element.elementor-element-f178c45:has(.jet-listing-dynamic-terms:empty){display:none !important;}
body .elementor.elementor-213 .elementor-element.elementor-element-134c517 .jet-listing-dynamic-terms__link{margin-left:10px;}
@media (max-width:767px){
  body .elementor.elementor-213 .elementor-element.elementor-element-nnchips{flex-wrap:wrap !important;--flex-wrap:wrap;row-gap:6px;}
}

/* Part seven, card tag pill: on directory cards the tag renders as plain text
   under the category line; give it the same soft pill as the listing hero so
   a tag never reads as a second category. */
body .elementor .elementor-element.elementor-element-d8da630 .jet-listing-dynamic-terms__link,
body .elementor .elementor-element.elementor-element-14656c4 .jet-listing-dynamic-terms__link,
body .elementor .elementor-element.elementor-element-f178c45 .jet-listing-dynamic-terms__link{
  background:#E8F0E3;border-radius:20px;padding:2px 12px;display:inline-flex;}

/* fx-banner: the optional feature banner, 4 September 2026 */
.elementor-213 .elementor-element-nnbansec{position:relative;min-height:520px;display:flex;align-items:flex-end;
  background-size:cover;background-position:center 58%;overflow:hidden;
  padding:0;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}
.elementor-213 .elementor-element-nnbansec::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(43,68,56,.06) 0%,rgba(43,68,56,.02) 26%,rgba(22,38,30,.46) 66%,rgba(18,32,26,.88) 100%);}
.elementor-213 .elementor-element-nnbansec .elementor-element-nnbanin{position:relative;z-index:1;width:100%;
  --padding-top:40px;--padding-bottom:38px;--gap:0px;}
.elementor-213 .elementor-element-nnbansec .elementor-element-nnbanin > .elementor-element{margin-bottom:0;}
.elementor-213 .elementor-element-nnbansec .nn-crumb,
.elementor-213 .elementor-element-nnbansec .nn-crumb *{color:#D3DCCF;text-shadow:0 1px 3px rgba(0,0,0,.55);}
.elementor-213 .elementor-element-nnbansec .nn-crumb a{color:#EAF0E6;}
.elementor-213 .elementor-element-nnbansec .elementor-element-nnbanchips{margin-top:22px;}
.elementor-213 .elementor-element-nnbansec .jet-listing-dynamic-terms__link{background:rgba(255,255,255,.14);
  color:#F1E5CD;border:1px solid rgba(255,255,255,.30);}
.elementor-213 .elementor-element-nnbansec .elementor-element-nnbanh .elementor-heading-title{color:#ffffff;
  font-size:52px;line-height:1.03;margin-top:14px;text-shadow:0 2px 14px rgba(15,28,22,.45);}
.elementor-213 .elementor-element-nnbansec .elementor-element-nnbandesc,
.elementor-213 .elementor-element-nnbansec .elementor-element-nnbandesc p{color:#DDE4DA;max-width:56ch;
  margin-top:12px;text-shadow:0 1px 10px rgba(15,28,22,.5);}
.elementor-213 .elementor-element-nnbansec .elementor-element-nnbanacts{margin-top:26px;}
.elementor-213 .elementor-element-nnbansec .elementor-element-nnbanwa .elementor-button{background:#ffffff;
  color:#2B4438;border-color:#ffffff;}
.elementor-213 .elementor-element-nnbansec .elementor-element-nnbanwa .elementor-button:hover{background:#EDE5D2;color:#2B4438;}
.elementor-213 .elementor-element-nnbansec .elementor-element-nnbancall .elementor-button{background:transparent;
  color:#ffffff;border:1px solid rgba(255,255,255,.55);}
.elementor-213 .elementor-element-nnbansec .elementor-element-nnbancall .elementor-button:hover{background:rgba(255,255,255,.14);color:#ffffff;}
/* 22 September, Danielle: the website button must be more featured. It moved out of the small links row into the
   action row beside Call, as a full button. Whichever button comes first in the row (WhatsApp, else Call, else
   Website) is the white one; the rest are outlined. */
body .elementor .elementor-element-nnbansec .elementor-element-nnbanacts .elementor-element.elementor-element-nnbansite .elementor-button{background:transparent;background-color:transparent;color:#ffffff;border:1px solid rgba(255,255,255,.55);border-radius:17px;padding:14px;font-size:15px;font-weight:500;text-decoration:none;box-shadow:none}
body .elementor .elementor-element-nnbansec .elementor-element-nnbanacts .elementor-element.elementor-element-nnbansite .elementor-button:hover{background:rgba(255,255,255,.14);color:#ffffff;text-decoration:none}
body .elementor .elementor-element-nnbansec .elementor-element-nnbanacts .elementor-element.elementor-widget-button:first-child .elementor-button,
body .elementor .elementor-element-nnbansec .elementor-element-nnbanacts > .e-con-inner > .elementor-element.elementor-widget-button:first-child .elementor-button{background:#ffffff;background-color:#ffffff;color:#2B4438;border-color:#ffffff}
body .elementor .elementor-element-nnbansec .elementor-element-nnbanacts .elementor-element.elementor-widget-button:first-child .elementor-button:hover,
body .elementor .elementor-element-nnbansec .elementor-element-nnbanacts > .e-con-inner > .elementor-element.elementor-widget-button:first-child .elementor-button:hover{background:#E8F0E3;background-color:#E8F0E3;color:#2B4438;border-color:#E8F0E3}
.elementor-element-nnbansec ~ .elementor-element .elementor-element-bfaaa5b,
.elementor-element-nnbansec ~ .elementor-element .elementor-element-90baef5{display:none;}
@media (max-width:1024px){
  .elementor-213 .elementor-element-nnbansec{min-height:440px;background-position:center 55%;}
  .elementor-213 .elementor-element-nnbansec .elementor-element-nnbanh .elementor-heading-title{font-size:40px;}
}
@media (max-width:767px){
  .elementor-213 .elementor-element-nnbansec{min-height:400px;}
  .elementor-213 .elementor-element-nnbansec .elementor-element-nnbanin{--padding-top:26px;--padding-bottom:28px;}
  .elementor-213 .elementor-element-nnbansec .elementor-element-nnbanh .elementor-heading-title{font-size:30px;line-height:1.08;}
  .elementor-213 .elementor-element-nnbansec .elementor-element-nnbandesc,
  .elementor-213 .elementor-element-nnbansec .elementor-element-nnbandesc p{font-size:14px;}
}


body .elementor .elementor-element.elementor-element-nnbanchipc .jet-listing-dynamic-terms__link,
body .elementor .elementor-element.elementor-element-nnbanchipa .jet-listing-dynamic-terms__link,
body .elementor .elementor-element.elementor-element-nnbanchipt .jet-listing-dynamic-terms__link{
  background:rgba(255,255,255,.16);color:#F5EAD4;border:1px solid rgba(255,255,255,.34);
  border-radius:20px;padding:3px 14px;display:inline-flex;font-weight:500;}
.elementor-213 .elementor-element-nnbanopen{margin-top:20px;}
.elementor-213 .elementor-element-nnbanopen,
.elementor-213 .elementor-element-nnbanopen *{color:#DDE4DA;}
.elementor-213 .elementor-element-nnbanlinks{margin-top:22px;padding-top:16px;
  border-top:1px solid rgba(255,255,255,.22);}
.elementor-213 .elementor-element-nnbanlinks .elementor-button{color:#F1EFE7;background:transparent;
  border:0;padding-left:0;padding-right:0;}
.elementor-213 .elementor-element-nnbanlinks .elementor-button:hover{color:#ffffff;}

body .elementor .elementor-element.elementor-element-nnbanbook .elementor-button,
body .elementor .elementor-element.elementor-element-nnbansite .elementor-button,
body .elementor .elementor-element.elementor-element-nnbandir .elementor-button,
body .elementor .elementor-element.elementor-element-nnbanenq .elementor-button{
  background:transparent;background-color:transparent;border:0;box-shadow:none;
  color:#F1EFE7;padding:0;font-size:13px;font-weight:500;
  text-decoration:underline;text-underline-offset:4px;text-decoration-color:rgba(255,255,255,.45);}
body .elementor .elementor-element.elementor-element-nnbanbook .elementor-button:hover,
body .elementor .elementor-element.elementor-element-nnbansite .elementor-button:hover,
body .elementor .elementor-element.elementor-element-nnbandir .elementor-button:hover,
body .elementor .elementor-element.elementor-element-nnbanenq .elementor-button:hover{
  background:transparent;color:#ffffff;text-decoration-color:#ffffff;}
.elementor-213 .elementor-element-nnbanlinks{gap:26px;flex-wrap:wrap;}

/* fx-banner-mobile */
@media (max-width:767px){
  .elementor-213 .elementor-element-nnbansec{min-height:340px;}
  .elementor-213 .elementor-element-nnbanin{--padding-top:22px;--padding-bottom:24px;}
  .elementor-213 .elementor-element-nnbanchips{margin-top:16px;}
  .elementor-213 .elementor-element-nnbandesc,
  .elementor-213 .elementor-element-nnbandesc p{font-size:13.5px;line-height:1.5;}
  .elementor-213 .elementor-element-nnbanacts{margin-top:18px;}
  .elementor-213 .elementor-element-nnbanopen{margin-top:14px;}
  .elementor-213 .elementor-element-nnbanlinks{display:grid;grid-template-columns:1fr 1fr;
    gap:12px 18px;margin-top:18px;padding-top:14px;}
}

/* fx-banner-clamp: keep the cover from eating a whole phone screen */
@media (max-width:767px){
  .elementor-213 .elementor-element-nnbandesc{display:-webkit-box;-webkit-line-clamp:4;
    -webkit-box-orient:vertical;overflow:hidden;}
  .elementor-213 .elementor-element-nnbanlinks{gap:10px 16px;}
  body .elementor .elementor-element.elementor-element-nnbanbook .elementor-button,
  body .elementor .elementor-element.elementor-element-nnbansite .elementor-button,
  body .elementor .elementor-element.elementor-element-nnbandir .elementor-button,
  body .elementor .elementor-element.elementor-element-nnbanenq .elementor-button{font-size:12.5px;}
}

/* fx-banner-icon: the WhatsApp arrow was white on a white button */
body .elementor .elementor-element.elementor-element-nnbanwa .elementor-button,
body .elementor .elementor-element.elementor-element-nnbanwa .elementor-button *{color:#2B4438;}
body .elementor .elementor-element.elementor-element-nnbanwa .elementor-button svg{fill:#2B4438;}

/* fx-banner-scrim: readability comes from a left to right scrim, not from dimming the whole frame */
.elementor-213 .elementor-element-nnbansec::after{
  background:
    linear-gradient(180deg,rgba(18,32,26,0) 58%,rgba(18,32,26,.50) 100%),
    linear-gradient(90deg,rgba(18,32,26,.78) 0%,rgba(18,32,26,.70) 30%,rgba(18,32,26,.40) 55%,
                    rgba(18,32,26,.12) 78%,rgba(18,32,26,0) 100%);
}
@media (max-width:1024px){
  .elementor-213 .elementor-element-nnbansec::after{
    background:
      linear-gradient(180deg,rgba(18,32,26,0) 52%,rgba(18,32,26,.55) 100%),
      linear-gradient(90deg,rgba(18,32,26,.76) 0%,rgba(18,32,26,.62) 45%,rgba(18,32,26,.26) 80%,
                      rgba(18,32,26,.08) 100%);
  }
}
@media (max-width:767px){
  .elementor-213 .elementor-element-nnbansec::after{
    background:
      linear-gradient(180deg,rgba(18,32,26,.12) 0%,rgba(18,32,26,.30) 42%,rgba(18,32,26,.76) 100%),
      linear-gradient(90deg,rgba(18,32,26,.50) 0%,rgba(18,32,26,.40) 65%,rgba(18,32,26,.30) 100%);
  }
}

/* fx-banner-column: the scrim carries to where the longest line ends, the name stays on its own terms */
.elementor-213 .elementor-element-nnbansec::after{
  background:
    linear-gradient(180deg,rgba(18,32,26,0) 58%,rgba(18,32,26,.50) 100%),
    linear-gradient(90deg,rgba(18,32,26,.78) 0%,rgba(18,32,26,.74) 34%,rgba(18,32,26,.56) 58%,
                    rgba(18,32,26,.24) 80%,rgba(18,32,26,0) 100%);
}

/* fx-banner-scrim-narrow: must sit AFTER the desktop scrim or the unconditional rule wins */
@media (max-width:1024px){
  .elementor-213 .elementor-element-nnbansec::after{
    background:
      linear-gradient(180deg,rgba(18,32,26,0) 52%,rgba(18,32,26,.55) 100%),
      linear-gradient(90deg,rgba(18,32,26,.76) 0%,rgba(18,32,26,.66) 48%,rgba(18,32,26,.40) 82%,
                      rgba(18,32,26,.24) 100%);
  }
}
@media (max-width:767px){
  .elementor-213 .elementor-element-nnbansec::after{
    background:
      linear-gradient(180deg,rgba(18,32,26,.12) 0%,rgba(18,32,26,.30) 42%,rgba(18,32,26,.76) 100%),
      linear-gradient(90deg,rgba(18,32,26,.50) 0%,rgba(18,32,26,.42) 65%,rgba(18,32,26,.36) 100%);
  }
}

/* ================= fx-sept4: Danielle's 4 September list ================= */

/* 4. the highlights strip gets air above it and a forest ground */
.elementor-213 .elementor-element-3364f9a{margin-top:48px;}
body .elementor .elementor-element.elementor-element-7695fcc .jet-listing-dynamic-repeater__items{
  background:#335245;}
body .elementor .elementor-element.elementor-element-7695fcc .jet-listing-dynamic-repeater__item{
  background:#41634F;}
body .elementor .elementor-element.elementor-element-7695fcc .nn-hl{color:#F2EFE6;}
@media (max-width:767px){ .elementor-213 .elementor-element-3364f9a{margin-top:30px;} }

/* 5. the contact card: labels and values share a baseline */
.elementor-213 .elementor-element-62987da{align-items:baseline;}
.elementor-213 .elementor-element-62987da .elementor-widget-divider{align-self:stretch;}

/* 6. a service description folds after two lines */
.elementor-213 .nn-svcx{margin:0;}
.elementor-213 .nn-svcx > summary{display:block;list-style:none;cursor:pointer;}
.elementor-213 .nn-svcx > summary::-webkit-details-marker{display:none;}
.elementor-213 .nn-svcx:not([open]) .nn-svcd{display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;}
.elementor-213 .nn-svcx > summary::after{content:"Read more";display:inline-block;margin-top:7px;
  font-size:12px;font-weight:600;letter-spacing:.02em;color:#335245;
  border-bottom:1px solid rgba(51, 82, 69,.45);}
.elementor-213 .nn-svcx[open] > summary::after{content:"Show less";}
.elementor-213 .nn-svcx > summary:hover::after{color:#4E7A2F;border-bottom-color:rgba(78, 122, 47,.55);}
.elementor-213 .nn-svcx > summary:focus-visible{outline:2px solid #4E7A2F;outline-offset:3px;}
.elementor-213 .nn-svcx--fits > summary{cursor:default;}
.elementor-213 .nn-svcx--fits > summary::after{display:none;}

/* 7. the price sits better a step down */
.elementor-213 .nn-svcp{font-size:12px;line-height:18px;}

/* 10. the enquiry form closes the business section, full width on forest */
.elementor-213 .elementor-element-nnaskband{background-color:#335245;
  --padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;padding:0;}
body .elementor .elementor-element.elementor-element-nnaskcard{
  background:transparent;background-color:transparent;border:0;box-shadow:none;border-radius:0;
  max-width:1140px;margin-left:auto;margin-right:auto;
  --padding-top:58px;--padding-bottom:62px;--padding-left:24px;--padding-right:24px;}
.elementor-213 .elementor-element-nnaskband .elementor-element-nnaskh .elementor-heading-title{
  color:#ffffff;}
.elementor-213 .elementor-element-nnaskband .jet-form-builder__label{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;}
.elementor-213 .elementor-element-nnaskband .jet-form-builder__field{
  background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.34);color:#ffffff;
  border-radius:2px;padding:14px 16px;font-size:14px;}
.elementor-213 .elementor-element-nnaskband .jet-form-builder__field::placeholder{color:#C6D3C2;opacity:1;}
.elementor-213 .elementor-element-nnaskband .jet-form-builder__field:focus{
  background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.65);outline:none;}
.elementor-213 .elementor-element-nnaskband textarea.jet-form-builder__field{min-height:130px;}
.elementor-213 .elementor-element-nnaskband .jet-form-builder-row{margin-bottom:16px;}
.elementor-213 .elementor-element-nnaskband,
.elementor-213 .elementor-element-nnaskband p{color:#DDE4DA;}
@media (max-width:767px){
  body .elementor .elementor-element.elementor-element-nnaskcard{
    --padding-top:40px;--padding-bottom:44px;--padding-left:18px;--padding-right:18px;}
}


/* fx-askcard-flat: the card inside the band has no card of its own */
.elementor-213 .elementor-element-nnaskband .elementor-element.elementor-element-nnaskcard{
  background-color:#2A4438;border:1px solid #FFFFFF;box-shadow:none;border-radius:10px;}

/* ================= fx-redraw: three items from the Listing Template Redraw ================= */

/* 01. the sidebar is one panel now, so it has to read as one */
.elementor-213 .elementor-element-nnbodyside{position:sticky;top:14px;align-self:start;}
.elementor-213 .elementor-element-nnhrsh .elementor-heading-title{
  font-family:Inter,sans-serif;font-size:10.5px;font-weight:600;letter-spacing:.15em;
  text-transform:uppercase;color:#4E7A2F;line-height:1.5;}
.elementor-213 .elementor-element-nnhrsh{
  margin-top:16px;padding-top:14px;border-top:1px solid #E1E8DE;margin-bottom:8px;}
.elementor-213 .elementor-element-nndirbtn{margin-top:16px;}
.elementor-213 .elementor-element-nndirbtn .elementor-button{width:100%;justify-content:center;}

/* 02. the four blocks get a label and a gold rule across the top */
body .elementor .elementor-element.elementor-element-7695fcc .jet-listing-dynamic-repeater__item{
  border-top:2px solid #A9CB7A;border-radius:0 0 10px 10px;align-items:flex-start;}
.elementor-213 .nn-hl{display:block;width:100%;}
.elementor-213 .nn-hllbl{display:block;font-style:normal;font-family:Inter,sans-serif;font-size:10px;
  font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:#C5DDA4;margin-bottom:7px;}
.elementor-213 .nn-hllbl:empty{display:none;}
.elementor-213 .nn-hlval{font-weight:400;}

/* 03. the enquiry form, drawn as the redraw drew it */
.elementor-213 .elementor-element-nnaskband{background-color:#2A4438;}
.elementor-213 .elementor-element-nnaskband .elementor-element-nnaskh .elementor-heading-title{
  font-family:Fraunces,Georgia,serif;font-size:22px;font-weight:600;color:#ffffff;margin-bottom:6px;}
.elementor-213 .elementor-element-nnasklede,
.elementor-213 .elementor-element-nnasklede p{
  font-size:14px;line-height:1.55;color:#C3D3C6;max-width:52ch;margin:0 0 16px;}
.elementor-213 .elementor-element-nnaskband .jet-form-builder{
  display:grid;grid-template-columns:1fr 1fr 1.5fr auto;gap:10px;align-items:start;}
.elementor-213 .elementor-element-nnaskband .jet-form-builder > input,
.elementor-213 .elementor-element-nnaskband .jet-form-builder > .hidden-field,
.elementor-213 .elementor-element-nnaskband .jet-form-builder > .jet-form-builder__field.hidden-field{display:none;}
.elementor-213 .elementor-element-nnaskband .jet-form-builder-row{margin:0;}
.elementor-213 .elementor-element-nnaskband .jet-form-builder__field{
  height:44px;min-height:44px;padding:0 14px;border-radius:6px;font-size:13.5px;
  background:rgba(255,255,255,.10);border:1px solid rgba(232,240,227,.28);color:#ffffff;}
.elementor-213 .elementor-element-nnaskband textarea.jet-form-builder__field{
  height:44px;min-height:44px;padding:12px 14px;resize:vertical;line-height:1.35;}
.elementor-213 .elementor-element-nnaskband textarea.jet-form-builder__field:focus{height:120px;}
.elementor-213 .elementor-element-nnaskband .jet-form-builder__field::placeholder{color:#AFC3B4;opacity:1;}
@media (max-width:760px){
  .elementor-213 .elementor-element-nnaskband .jet-form-builder{grid-template-columns:1fr;}
  .elementor-213 .elementor-element-nnaskband .jet-form-builder-row.field-type-submit-field button{width:100%;}
}

/* fx-redraw-form2: pin the send column so the button stays on the row */
.elementor-213 .elementor-element-nnaskband .jet-form-builder{
  grid-template-columns:1fr 1fr 1.4fr 132px;align-items:start;}
.elementor-213 .elementor-element-nnaskband .jet-form-builder-row.field-type-submit-field{width:100%;}
.elementor-213 .elementor-element-nnaskband .jet-form-builder-row.field-type-submit-field button{
  width:100%;height:44px;border-radius:6px;}
@media (max-width:760px){
  .elementor-213 .elementor-element-nnaskband .jet-form-builder{grid-template-columns:1fr;}
}

/* fx-redraw-form3: Elementor and JetFormBuilder both write more specific rules than the last pass did */
body .elementor .elementor-element.elementor-element-nnaskband{background-color:#2A4438;}
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder{
  display:grid;grid-template-columns:1fr 1fr 1.4fr 136px;gap:10px;align-items:start;}
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder > input,
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder > .hidden-field{display:none;}
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .jet-form-builder-row{
  margin:0;width:100%;}
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder__field{
  height:44px;min-height:44px;padding:0 14px;border-radius:6px;font-size:13.5px;width:100%;
  background:rgba(255,255,255,.10);border:1px solid rgba(232,240,227,.28);color:#ffffff;}
body .elementor .elementor-element.elementor-element-nnaskband textarea.jet-form-builder__field{
  padding:12px 14px;line-height:1.35;resize:none;overflow:auto;}
body .elementor .elementor-element.elementor-element-nnaskband textarea.jet-form-builder__field:focus{
  height:132px;min-height:132px;}
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder__field::placeholder{
  color:#AFC3B4;opacity:1;}
body .elementor .elementor-element.elementor-element-nnaskband .field-type-submit-field button{
  width:100%;height:44px;border-radius:6px;background:#A9CB7A;color:#16241C;border:0;
  font-weight:600;font-size:13.5px;padding:0 14px;}
body .elementor .elementor-element.elementor-element-nnaskband .field-type-submit-field button:hover{
  background:#A9CB7A;}
@media (max-width:760px){
  body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder{
    grid-template-columns:1fr;}
  body .elementor .elementor-element.elementor-element-nnaskband textarea.jet-form-builder__field{
    height:96px;min-height:96px;}
}

/* fx-redraw-form4: JetFormBuilder pins textarea and submit rows to grid-column 1 / -1 */
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .field-type-textarea-field,
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .field-type-submit-field{
  grid-column:auto;}
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .jet-form-builder-messages-wrap{
  grid-column:1 / -1;}
@media (max-width:760px){
  body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .field-type-textarea-field,
  body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .field-type-submit-field{
    grid-column:1 / -1;}
}

/* fx-redraw-form5: centre the label inside the send button */
body .elementor .elementor-element.elementor-element-nnaskband .field-type-submit-field button{
  display:flex;align-items:center;justify-content:center;line-height:1;}

/* ================= fx-redraw-2: her three corrections ================= */

/* 1. the four blocks: no tray, dark green cards, rounded all the way round */
body .elementor .elementor-element.elementor-element-7695fcc .jet-listing-dynamic-repeater__items{background:transparent;padding:0;}
body .elementor .elementor-element.elementor-element-7695fcc .jet-listing-dynamic-repeater__item{
  background:#335245;border-top:3px solid #A9CB7A;border-radius:10px;overflow:hidden;}
body .elementor .elementor-element.elementor-element-7695fcc .nn-hllbl{color:#C5DDA4;}
body .elementor .elementor-element.elementor-element-7695fcc .nn-hl,
body .elementor .elementor-element.elementor-element-7695fcc .nn-hlval{color:#F2EFE6;}

/* 3. the enquiry band: light green ground, dark green form */
body .elementor .elementor-element.elementor-element-nnaskband{background-color:#E8F0E3;
  --padding-top:34px;--padding-bottom:38px;--padding-left:24px;--padding-right:24px;padding:34px 24px 38px;}
body .elementor .elementor-element.elementor-element-nnaskcard{background-color:#2A4438;border-radius:10px;
  max-width:1140px;margin-left:auto;margin-right:auto;
  --padding-top:26px;--padding-bottom:28px;--padding-left:28px;--padding-right:28px;}
@media (max-width:760px){
  body .elementor .elementor-element.elementor-element-nnaskband{--padding-top:22px;--padding-bottom:26px;--padding-left:14px;--padding-right:14px;padding:22px 14px 26px;}
  body .elementor .elementor-element.elementor-element-nnaskcard{--padding-top:20px;--padding-bottom:22px;--padding-left:18px;--padding-right:18px;}
}



/* fx-redraw-2d: the tray has no ground now, so it needs no frame either */
body .elementor .elementor-element.elementor-element-7695fcc .jet-listing-dynamic-repeater__items{
  border:0;border-radius:0;}

/* ================= fx-contact-rows: the Get in touch panel, drawn as the Redraw drew it =================
   One white row per detail. Left cell: badge and name. Right cell: the value. The two cells share a
   row of the grid and carry matching radii, so they read as one pill. Address and hours are quiet
   sub-sections beneath, not rows. */
body .elementor .elementor-element.elementor-element-62987da{
  display:grid !important;grid-template-columns:118px minmax(0,1fr) !important;
  gap:7px 0 !important;align-items:stretch !important;}
body .elementor .elementor-element.elementor-element-62987da > .elementor-element{margin:0;}
/* dividers are not needed when the rows separate themselves */
body .elementor .elementor-element.elementor-element-nncpdv0,body .elementor .elementor-element.elementor-element-nnwadiv0,body .elementor .elementor-element.elementor-element-nnemdv0,body .elementor .elementor-element.elementor-element-d3f0e3c,body .elementor .elementor-element.elementor-element-c458e9d{display:none;}
/* left cells */
body .elementor .elementor-element.elementor-element-nncplbl,
body .elementor .elementor-element.elementor-element-f4ec388,
body .elementor .elementor-element.elementor-element-nnwalbl,
body .elementor .elementor-element.elementor-element-nnemlbl,
body .elementor .elementor-element.elementor-element-b93c7d4{
  grid-column:1;background:#FFFFFF;border-radius:6px 0 0 6px;
  padding:9px 0 9px 10px;display:flex;align-items:center;min-height:46px;}
body .elementor .elementor-element.elementor-element-nncplbl .elementor-heading-title,
body .elementor .elementor-element.elementor-element-f4ec388 .elementor-heading-title,
body .elementor .elementor-element.elementor-element-nnwalbl .elementor-heading-title,
body .elementor .elementor-element.elementor-element-nnemlbl .elementor-heading-title,
body .elementor .elementor-element.elementor-element-b93c7d4 .elementor-heading-title{
  display:flex;align-items:center;gap:8px;margin:0;
  font-family:Inter,sans-serif;font-size:13px;font-weight:500;letter-spacing:0;
  text-transform:none;color:#16241C;line-height:1.2;white-space:nowrap;}
body .elementor .elementor-element.elementor-element-nncplbl .elementor-heading-title::before,
body .elementor .elementor-element.elementor-element-f4ec388 .elementor-heading-title::before,
body .elementor .elementor-element.elementor-element-nnwalbl .elementor-heading-title::before,
body .elementor .elementor-element.elementor-element-nnemlbl .elementor-heading-title::before,
body .elementor .elementor-element.elementor-element-b93c7d4 .elementor-heading-title::before{
  content:"";display:inline-flex;align-items:center;justify-content:center;flex:none;
  width:26px;height:26px;border-radius:6px;background:#E8F0E3;color:#335245;
  font-size:12.5px;font-weight:700;}
body .elementor .elementor-element.elementor-element-nncplbl .elementor-heading-title::before{content:"C";}
body .elementor .elementor-element.elementor-element-f4ec388 .elementor-heading-title::before{content:"P";}
body .elementor .elementor-element.elementor-element-nnwalbl .elementor-heading-title::before{content:"W";}
body .elementor .elementor-element.elementor-element-nnemlbl .elementor-heading-title::before{content:"@";}
body .elementor .elementor-element.elementor-element-b93c7d4 .elementor-heading-title::before{content:"\2197";}
/* right cells */
body .elementor .elementor-element.elementor-element-nncpval,
body .elementor .elementor-element.elementor-element-907db40,
body .elementor .elementor-element.elementor-element-nnwaval,
body .elementor .elementor-element.elementor-element-nnemval,
body .elementor .elementor-element.elementor-element-nnsocials{
  grid-column:2;background:#FFFFFF;border-radius:0 6px 6px 0;
  padding:9px 12px 9px 6px;display:flex;align-items:center;justify-content:flex-end;min-height:46px;min-width:0;}
body .elementor .elementor-element.elementor-element-nncpval .elementor-heading-title,
body .elementor .elementor-element.elementor-element-907db40 .elementor-heading-title,
body .elementor .elementor-element.elementor-element-nnwaval .elementor-heading-title,
body .elementor .elementor-element.elementor-element-nnemval .elementor-heading-title{
  margin:0;font-family:Inter,sans-serif;font-size:13px;font-weight:500;letter-spacing:0;
  text-transform:none;color:#3A453D;line-height:1.35;text-align:right;overflow-wrap:anywhere;}
body .elementor .elementor-element.elementor-element-nnsocials{gap:6px;flex-wrap:wrap;--gap:6px;}
body .elementor .elementor-element.elementor-element-nnsocials .elementor-element{margin:0;}
/* the two quiet sub-sections: where to find them, opening hours */
body .elementor .elementor-element.elementor-element-6b1d85d,body .elementor .elementor-element.elementor-element-nnhrsh{
  grid-column:1 / -1;margin-top:12px;padding-top:14px;border-top:1px solid #E1E8DE;}
body .elementor .elementor-element.elementor-element-6b1d85d .elementor-heading-title,body .elementor .elementor-element.elementor-element-nnhrsh .elementor-heading-title{
  font-family:Inter,sans-serif;font-size:10.5px;font-weight:600;letter-spacing:.15em;
  text-transform:uppercase;color:#4E7A2F;line-height:1.5;margin:0;}
body .elementor .elementor-element.elementor-element-648bc9a{grid-column:1 / -1;margin-top:2px;}
body .elementor .elementor-element.elementor-element-648bc9a .elementor-heading-title{
  font-family:Inter,sans-serif;font-size:13.5px;font-weight:400;letter-spacing:0;text-transform:none;
  color:#4A564D;line-height:1.5;margin:0;}
/* the panel itself */
body .elementor .elementor-element.elementor-element-nnsidecontact{background:#F2F5F1;border-radius:8px;}
body .elementor .elementor-element.elementor-element-nnhrsh{margin-top:14px;}
body .elementor .elementor-element.elementor-element-nndirbtn{margin-top:14px;}

/* ===== fx-sept4c: the second list of 4 September ===== */

/* 01. the four highlight cards run the full row: the first starts on the story's left edge, the last ends on the contact card's right edge */
body .elementor .elementor-element.elementor-element-7695fcc .jet-listing-dynamic-repeater__items{padding:0 !important;}
@media (min-width:1025px){
  body .elementor .elementor-element.elementor-element-nnbodyside{flex-grow:1 !important;}
}

/* 02. the stuck panel sits halfway down the viewport, equal room above and below; a panel taller than the viewport scrolls with the page instead. The admin bar offset only exists when logged in */
body.admin-bar .elementor-213 .elementor-element-nnbodyside{--nn-abar:32px;}
@media (min-width:1025px){
  body .elementor .elementor-element.elementor-element-nnbodyside{top:max(calc(14px + var(--nn-abar,0px)),calc(50vh - (var(--nn-side-h,0px) / 2) + (var(--nn-abar,0px) / 2))) !important;}
  body .elementor .elementor-element.elementor-element-nnbodyside.nn-side--tall{position:relative !important;top:auto !important;}
}

/* 03. room under the directions button */
body .elementor .elementor-element.elementor-element-nnbodyside{padding-bottom:22px !important;overflow:visible !important;}

/* 04. the enquiry band is dark green edge to edge (set in the template); the card inside carries a white outline. An older rule zeroes border-top with !important, so this one carries it too */
body .elementor .elementor-element.elementor-element-nnaskcard{border:1px solid #FFFFFF !important;}

/* 05. below 1025px the highlight cards keep the desktop card look; the older mobile rule made them transparent on a mist strip that no longer exists */
@media (max-width:1024px){
  body .elementor .elementor-element.elementor-element-7695fcc .jet-listing-dynamic-repeater__item{background:#335245 !important;border-radius:10px !important;padding:18px 20px !important;}
}

/* 06. every cell in the contact grid fills its row, so the label and its value (or the icon set) are the same height; Elementor mobile margins were making the socials row step */
body .elementor .elementor-element.elementor-element-62987da > .elementor-element{margin:0 !important;align-self:stretch !important;height:auto !important;}

/* 07. breathing room between the end of the profile and the enquiry band (Danielle, 4 September: "add more white space above the enquiry block"). Elementor containers read padding from the custom property, so both are set */
body .elementor .elementor-element.elementor-element-nnbodyrow{--padding-bottom:72px;padding-bottom:72px !important;}
@media (max-width:767px){
  body .elementor .elementor-element.elementor-element-nnbodyrow{--padding-bottom:44px;padding-bottom:44px !important;}
}


/* fx-sept5 · View my current listings button (nnlistbtn), sits under Get directions. The panel is a 20px-gap flex column, so -8px gives a 12px gap between the two buttons */
.elementor-213 .elementor-element-nnlistbtn{margin-top:-8px;}
.elementor-213 .elementor-element-nnlistbtn .elementor-button{width:100%;justify-content:center;}
body .elementor .elementor-element.elementor-element-nnlistbtn{margin-top:-8px !important;}

/* fx-sept5c · Portrait hero images. The carousel slide takes the natural height of its image, so a portrait photograph (Louise Cawood's headshot, Kevlar's pole shots) stretched the hero to 1000px. Cap the slide image at 620px and crop from the top so heads stay in frame; landscape images sit well under the cap and are untouched. */
body .elementor .elementor-element.elementor-element-nnherocar .swiper-slide img{max-height:620px !important;object-fit:cover !important;object-position:center top !important;}

/* fx-sept5d · The story text widget 696953d carries a desktop-only right padding of 14% (a line-length measure beside the contact panel) and no phone value, so on a phone the paragraphs sat 30px from the left and 74px from the right. Below 1025px the column is full width and the measure is the screen, so the padding goes. */
@media (max-width:1024px){ body .elementor .elementor-element.elementor-element-696953d{padding-right:0 !important;} }

/* fx-hero-collapse · Danielle, 7 September: the hero row takes its height from the text
   column and the photograph fills whatever that is, so a listing whose photo does not
   justify the height loses the gap between the description and the Call and WhatsApp
   buttons. This overrides the 450px min-height that PART THREE item 1 left on the row
   (and the 520px in Hero block 4 above it), which is what was actually holding the hero
   open; the carousel was never the cause. The row and column selectors use the doubled
   .elementor-element.elementor-element- form on purpose: the 450px rule does, and the
   single-class form loses to it however late it sits in the file. Desktop only, and the
   breakpoint matches the
   existing hero rules at 1025px rather than 768px, so the stacked layout below is
   untouched. The buttons keep margin-top:auto from block 4: with the column now sized to
   its content there is no free space for it to eat, and on a long column (hours, long
   description) it still pins them to the foot exactly as before. */
@media (min-width:1025px){
  body .elementor .elementor-element.elementor-element-nnherorow{min-height:0 !important}
  body .elementor .elementor-element.elementor-element-nnherocol{min-height:0 !important;position:relative !important}
  body .elementor .elementor-element.elementor-element-nnherocar{position:absolute !important;inset:0 !important;height:100% !important;min-height:0 !important}
  body .elementor .elementor-element-nnherocar .elementor-image-carousel-wrapper,
  body .elementor .elementor-element-nnherocar .elementor-image-carousel,
  body .elementor .elementor-element-nnherocar .swiper,
  body .elementor .elementor-element-nnherocar .swiper-wrapper,
  body .elementor .elementor-element-nnherocar .swiper-slide{height:100% !important}
  body .elementor .elementor-element.elementor-element-nnherocar .swiper-slide img{height:100% !important;max-height:none !important;object-fit:cover !important}
}
/* /fx-hero-collapse */

/* fx-socials-row: where the social icons sit. The Website label (b93c7d4) is only
   rendered when website_url exists. When it is, and at least one icon rendered, the icons
   are its value: the right cell of the same row, so label and icons make one white pill
   like every other row. When it
   is not, the icons span both columns and sit on the panel ground, right-aligned, rather
   than wearing a value-cell pill beside an empty left cell. And when the label is there
   but nothing in the socials block rendered (a placeholder website_url hides the icon),
   the label is hidden too rather than showing a name with no value.
   8 September 2026; the with-label case added 9 September after Danielle's "the website
   text and icon are not on the same line" on WaterArc. Remove everything to
   /fx-socials-row to revert. */
body .elementor .elementor-element.elementor-element-nnsocials{
  grid-column:1 / -1 !important;
  justify-content:flex-end !important;
  align-items:center !important;
  background-color:transparent !important;
  background-image:none !important;
  --border-radius:0px;
  border-radius:0 !important;
  --padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px;
  padding:0 !important;
  min-height:0 !important;
  margin-top:4px !important;
}
body .elementor .elementor-element.elementor-element-62987da:has(> .elementor-element-b93c7d4):has(> .elementor-element-nnsocials :is(.elementor-element-3e41669, .elementor-element-bb5623a, .elementor-element-09519ae, .nn-socx:not([href=""]))) .elementor-element.elementor-element-nnsocials{
  grid-column:2 !important;
  background-color:#FFFFFF !important;
  --border-radius:0px 6px 6px 0px;
  border-radius:0 6px 6px 0 !important;
  --padding-top:4px;--padding-right:6px;--padding-bottom:4px;--padding-left:6px;
  padding:4px 6px !important;
  min-height:46px !important;
  margin-top:0 !important;
}
/* :has() may not nest inside :has(), so "the label when nothing rendered" is written the
   other way round, and inside @supports so a browser without :has() keeps the label. */
@supports selector(:has(> a)) {
  body .elementor .elementor-element.elementor-element-62987da > .elementor-element.elementor-element-b93c7d4{
    display:none !important;
  }
  body .elementor .elementor-element.elementor-element-62987da:has(> .elementor-element-nnsocials :is(.elementor-element-3e41669, .elementor-element-bb5623a, .elementor-element-09519ae, .nn-socx:not([href=""]))) > .elementor-element.elementor-element-b93c7d4{
    display:flex !important;
  }
}
/* /fx-socials-row */

/* fx-wagroups: the WhatsApp group chips under the hero buttons. A business can run
   more than one group, Estate Kitchen runs eight, so this is a repeater rather than
   a button. There are two of them, nnwagrps in the ordinary hero and nnwagrps2 in the
   feature banner hero, because a listing with a banner renders none of the ordinary
   hero at all. Keyed on the shared class so one rule serves both, with the ids named
   as well in case the class control ever stops reaching the widget wrapper.
   JetEngine flexes the direct child of a repeater item, so the anchor is pinned to
   inline-flex or every chip stretches to the full width. 8 September 2026.
   Remove everything to /fx-wagroups to revert. */
body .elementor .nn-wagrps .jet-listing-dynamic-repeater__items,
body .elementor .elementor-element-nnwagrps .jet-listing-dynamic-repeater__items,
body .elementor .elementor-element-nnwagrps2 .jet-listing-dynamic-repeater__items{
  display:flex !important;flex-wrap:wrap !important;gap:8px !important;align-items:center;
}
body .elementor .nn-wagrps .jet-listing-dynamic-repeater__item,
body .elementor .elementor-element-nnwagrps .jet-listing-dynamic-repeater__item,
body .elementor .elementor-element-nnwagrps2 .jet-listing-dynamic-repeater__item{
  width:auto !important;margin:0 !important;
}
body .elementor .jet-listing-dynamic-repeater__item > a.nn-wagrp{display:inline-flex !important}
body .elementor a.nn-wagrp{
  align-items:center;justify-content:center;
  background-color:#25D366;color:#FFFFFF;
  font-size:12.5px;font-weight:600;letter-spacing:.2px;line-height:1;
  padding:9px 14px;border-radius:999px;text-decoration:none;
  border:1px solid #25D366;transition:background-color .18s ease,border-color .18s ease;
}
body .elementor a.nn-wagrp:hover,body .elementor a.nn-wagrp:focus{
  background-color:#1EB055;border-color:#1EB055;color:#FFFFFF;text-decoration:none;
}

/* the label above the chips, so it is obvious what the green pills are. Two of them,
   one per hero, and they need different colours because one sits on cream and the
   other on a photograph. 8 September 2026. */
body .elementor .nn-wagrp-lbl .elementor-heading-title,
body .elementor .elementor-element-nnwaghd .elementor-heading-title,
body .elementor .elementor-element-nnwaghd2 .elementor-heading-title{
  font-family:Inter,sans-serif;font-size:11px;font-weight:700;
  text-transform:uppercase;letter-spacing:1.4px;line-height:1.2;margin:0;
}
body .elementor .elementor-element-nnwaghd .elementor-heading-title{color:#4E7A2F}
body .elementor .elementor-element-nnwaghd2 .elementor-heading-title{color:#EFE3D2}

/* Spacing, set here because the widget margin controls do not survive: Elementor
   generates those per element and that file is not dependable on this host. The two
   heroes need different numbers, since the banner hero container carries a 20px row
   gap of its own and the ordinary one carries none. */
body .elementor .elementor-element.elementor-element-nnwaghd{margin-top:16px !important}
body .elementor .elementor-element.elementor-element-nnwagrps{margin-top:7px !important}
/* /fx-wagroups */

/* fx-centre-chip: the shopping centre a business trades in, as a third chip after category and
   area (ordinary hero) and as a pill in the banner hero. The chip is a one-item listing grid
   (item 3463, query 112), so the grid wrapper is flattened and the heading takes the chip style. */
body .elementor .elementor-element.elementor-element-nnchipctr,
body .elementor .elementor-element.elementor-element-nnbanchipctr,
body .elementor .elementor-element.elementor-element-nnfindctr{width:auto !important;flex:0 0 auto !important;max-width:none !important;margin:0 !important}
.nn-chipctr .jet-listing-grid,.nn-chipctr .jet-listing-grid__items,.nn-chipctr .jet-listing-grid__item,.nn-chipctr .jet-engine-listing-overlay-wrap,.nn-chipctr .elementor,.nn-chipctr .e-con,.nn-chipctr .e-con-inner{display:inline-flex !important;margin:0 !important;padding:0 !important;width:auto !important;min-width:0 !important;gap:0 !important;flex:0 0 auto}
.nn-chipctr .jet-engine-frontend-query-editor-buttons{display:none !important}
.nn-chipctr .nn-cchip__t .elementor-heading-title{cursor:pointer}
body .elementor .elementor-element.elementor-element-nnchipctr .nn-cchip__t .elementor-heading-title{color:#4E7A2F !important;font-family:Inter,sans-serif !important;font-size:11px !important;font-weight:600 !important;letter-spacing:.14em !important;text-transform:uppercase !important;line-height:1.5 !important;white-space:nowrap;margin:0}
body .elementor .elementor-element.elementor-element-nnchipctr::before{content:"/";color:#B9C2B6;margin:0 9px;font-size:11px}
body .elementor .elementor-element.elementor-element-nnbanchipctr .nn-cchip__t .elementor-heading-title{display:inline-flex;align-items:center;padding:3px 14px;border-radius:20px;background:rgba(255,255,255,.16);color:#F1E5CD !important;border:1px solid rgba(255,255,255,.34);font:500 16px/24px Inter,sans-serif !important;text-transform:none !important;letter-spacing:0 !important;white-space:nowrap}
body .elementor .elementor-element.elementor-element-nnchips:has(.elementor-element-nnchipctr){flex-wrap:wrap !important;row-gap:4px}
@media (max-width:767px){body .elementor .elementor-element.elementor-element-nnchipctr .nn-cchip__t .elementor-heading-title{white-space:normal}body .elementor .elementor-element.elementor-element-nnchipctr{flex-basis:100% !important}body .elementor .elementor-element.elementor-element-nnchipctr::before{content:none}}
/* /fx-centre-chip */

/* fx-findus: the Shopping centre row in the contact panel, centre name (linked) and shop number.
   New elements get no generated CSS on this host, so the label and value typography are set here to match 6b1d85d and 648bc9a. */
.nn-findval{grid-column:2;min-width:0}
body .elementor .elementor-element.elementor-element-nnfindval{padding:0 !important;margin:0 !important;display:flex !important;flex-direction:row !important;flex-wrap:wrap !important;gap:2px 6px !important;align-items:baseline !important;width:auto !important}
body .elementor .elementor-element.elementor-element-nnfindlbl{padding:14px 0 0 0 !important;margin:0 !important}
body .elementor .elementor-element.elementor-element-nnfindlbl .elementor-heading-title{font:600 10.5px/1.5 Inter,sans-serif !important;letter-spacing:.15em !important;text-transform:uppercase !important;color:#4E7A2F !important;margin:0}
body .elementor .elementor-element.elementor-element-nnfindshop .elementor-heading-title{font:400 13.5px/1.5 Inter,sans-serif !important;color:#4A564D !important;text-transform:none !important;letter-spacing:0 !important;margin:0}
body .elementor .elementor-element.elementor-element-nnfindctr .nn-cchip__t .elementor-heading-title{font:500 15px/1.4 Inter,sans-serif !important;color:#335245 !important;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(51, 82, 69,.35);text-transform:none !important;letter-spacing:0 !important}
body .elementor .elementor-element.elementor-element-nnfindshop{width:auto !important;flex:0 0 auto}
body .elementor .elementor-element.elementor-element-nnfindshop .elementor-heading-title::before{content:"\00B7";margin:0 4px 0 0;color:#77836F}
/* /fx-findus */

/* fx-social-other: the social_other repeater (platform + url) as pills beside Instagram and
   Facebook. Rows saved with the default platform and no url render an anchor with an empty
   href, which is hidden here. Labels come from the platform key. */
.nn-socother .jet-listing-dynamic-repeater__items{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
.nn-socother .jet-listing-dynamic-repeater__item{margin:0 !important;padding:0 !important}
.nn-socother .jet-listing-dynamic-repeater__item:has(> a[href=""]),.nn-socother .jet-listing-dynamic-repeater__item:has(> a:not([href]))
{display:none !important}
a.nn-socx{display:inline-flex !important;align-items:center;height:38px;padding:0 16px;border:1px solid #DCE5D8;border-radius:9px;background:#fff;color:#335245 !important;font:600 14px/1 Inter,sans-serif;text-decoration:none !important}
a.nn-socx:hover{border-color:#335245}
a.nn-socx[data-p="linkedin"]::after{content:"LinkedIn"}
a.nn-socx[data-p="tiktok"]::after{content:"TikTok"}
a.nn-socx[data-p="youtube"]::after{content:"YouTube"}
a.nn-socx[data-p="twitter"]::after{content:"X (Twitter)"}
a.nn-socx:not([data-p="linkedin"]):not([data-p="tiktok"]):not([data-p="youtube"]):not([data-p="twitter"])::after{content:"Social"}
/* a widget whose rows are all hidden still sat in the icon row as a zero-width flex item
   and left a gap before the panel edge; hide it whole. 9 September 2026. */
body .elementor .elementor-element.elementor-element-nnsocother:not(:has(a.nn-socx[href]:not([href=""]))){display:none !important}
/* /fx-social-other */

/* fx-claimnote: the unclaimed notice at the foot of the contact panel, and the
   parts of the page a basic listing does not offer. 9 September 2026, the
   two-lane launch. The notice is two hand-built widgets (nnclaimh, nnclaimp) in
   nnsidecontact, shown by dynamic visibility on nn_unclaimed_note, which snippet
   150 answers only for a logged out visitor on a basic listing. Hand-built
   elements get no generated CSS on this host, so all of their type is here.
   Remove everything to /fx-claimnote to revert. */
/* The claim block, 30 September 2026. Danielle: "a dedicated claims block that is
   separate from the contact block ... right under the directions button in the first
   section. an outline block that stated business unclaimed and has the button". The
   three widgets (nnclaimh "Business unclaimed", nnclaimp, nnclaimbtn) moved out of the
   contact panel into container nnclaimbox, in the hero column after the buttons, shown by
   dynamic visibility on nn_unclaimed_note like the widgets inside it. Template backup:
   draft 6001. The button is ochre because it is the one thing on the page addressed to
   the owner rather than to a visitor. */
body .elementor .elementor-element.elementor-element-nnclaimbox{
  margin-top:20px !important;padding:18px 20px 20px !important;
  border:1px solid #DCC7A6;border-radius:10px;background:transparent;
  gap:0 !important;row-gap:0 !important;width:100% !important;max-width:100% !important}
body .elementor .elementor-element.elementor-element-nnclaimh{margin:0 !important}
body .elementor .elementor-element.elementor-element-nnclaimh .elementor-heading-title{
  margin:0;display:flex;align-items:center;gap:8px;
  font-family:Inter,sans-serif;font-size:11px;font-weight:700;letter-spacing:1.5px;
  text-transform:uppercase;color:#4E7A2F;line-height:1.3}
body .elementor .elementor-element.elementor-element-nnclaimh .elementor-heading-title::before{
  content:"";flex:0 0 auto;width:8px;height:8px;border-radius:50%;
  border:1.5px solid #4E7A2F;box-sizing:border-box}
body .elementor .elementor-element.elementor-element-nnclaimp{margin:8px 0 0 !important}
body .elementor .elementor-element.elementor-element-nnclaimp p{
  margin:0;font-family:Inter,sans-serif;font-size:13.5px;font-weight:400;line-height:1.55;color:#55635B}
body .elementor .elementor-element.elementor-element-nnclaimp a{
  color:#335245;text-decoration:underline;text-underline-offset:2px}
body .elementor .elementor-element.elementor-element-nnclaimp a:hover{color:#4E7A2F}
/* the enquiry form would write to a business that has not asked to hear from
   anyone through us, so it waits until the listing is claimed. This block is
   ours rather than theirs, which is why hiding it in CSS is enough; the
   business's own material is emptied at the source in snippet 150 instead. */
body.nn-lane-basic .elementor-element.elementor-element-nnaskband,
body.nn-lane-basic .elementor-element.elementor-element-nnaskcard,
body.nn-lane-basic .elementor-element.elementor-element-nnenqbtn,
body.nn-lane-basic .elementor-element.elementor-element-nnbanenq{display:none !important}
/* A listing with nothing in the main column would leave a 730px hole beside the
   contact panel: the basic lane empties it, and so does an unapproved listing
   whose June description was removed in the 9 September sweep. Keyed on the
   column being empty rather than on the lane, so it is right in both states.
   Written hide-then-restore because :has() cannot nest inside :has(), and
   inside @supports so a browser without :has() keeps the ordinary two columns. */
@supports selector(:has(> *)) {
  body .elementor .elementor-element.elementor-element-nnbodymain{display:none !important}
  body .elementor .elementor-element.elementor-element-nnbodyside{
    flex-grow:0 !important;width:100% !important;max-width:420px !important;margin-top:0 !important}
  body .elementor .elementor-element.elementor-element-nnbodyrow:has(> .elementor-element-nnbodymain > *)
    .elementor-element.elementor-element-nnbodymain{display:flex !important}
  body .elementor .elementor-element.elementor-element-nnbodyrow:has(> .elementor-element-nnbodymain > *)
    .elementor-element.elementor-element-nnbodyside{
      /* 22 September: a flex-basis of 0 and min-width 0, not width:auto alone. With the basis left at auto
         the column took its content's widest line (Visit Hartbees' social buttons and long email address),
         grew past its 32% and fell off the right of the page. */
      flex:1 1 0% !important;min-width:0 !important;width:auto !important;max-width:none !important}
}
body .elementor .elementor-element.elementor-element-nnbodyside .elementor-element-nnemval .elementor-heading-title,
body .elementor .elementor-element.elementor-element-nnbodyside .elementor-element-nnemval a{overflow-wrap:anywhere}
/* 22 September, Danielle: the labelled pills for the extra networks looked messy. They are now icon squares, the same
   38px tile as the website, Instagram and Facebook icons, all in one right-aligned row. The network name stays in the
   markup for screen readers (text-indent hides it). */
body .elementor .elementor-element.elementor-element-nnbodyside .elementor-element-nnsocials .elementor-element-nnsocother{flex:0 1 auto !important;width:auto !important;max-width:100% !important}
body .elementor .elementor-element.elementor-element-nnbodyside .elementor-element-nnsocother .jet-listing-dynamic-repeater__items{justify-content:flex-end;gap:10px}
/* 22 September, Danielle: style the social channels better. The row is labelled Online (the website is a hero button now), the tiles sit left to right from the label in one even row, filled pale sage with no border, darker on hover. */
body .elementor .elementor-element.elementor-element-nnbodyside .elementor-element.elementor-element-nnsocials{justify-content:flex-start !important;align-items:center !important;align-content:center !important;gap:8px !important;padding-left:2px !important}
body .elementor .elementor-element.elementor-element-nnbodyside .elementor-element-nnsocother .jet-listing-dynamic-repeater__items{justify-content:flex-start;gap:8px}
body .elementor .elementor-element.elementor-element-nnbodyside .elementor-element-nnsocials a{width:38px !important;height:38px !important;border:0 !important;border-radius:10px !important;background-color:#EEF3EC !important;background-size:20px 20px !important;background-position:center !important;background-repeat:no-repeat !important;transition:background-color .15s}
body .elementor .elementor-element.elementor-element-nnbodyside .elementor-element-nnsocials a:hover{background-color:#D9E4D4 !important}
/* 22 September, Danielle: a better website icon. A cleaner globe: circle, equator, one meridian, the same weight as the other tiles. */
body .elementor .elementor-element.elementor-element-nnbodyside .elementor-element-nnsocials .elementor-element-3e41669 .elementor-heading-title a{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%2338594B%27%20stroke-width%3D%271.7%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%279.5%27%2F%3E%3Cpath%20d%3D%27M2.5%2012h19%27%2F%3E%3Cpath%20d%3D%27M12%202.5a14.2%2014.2%200%200%200%200%2019a14.2%2014.2%200%200%200%200-19%27%2F%3E%3C%2Fsvg%3E") !important;background-size:21px 21px !important}
body .elementor .elementor-element.elementor-element-nnbodyside a.nn-socx{width:38px;height:38px;padding:0 !important;text-indent:-9999px;overflow:hidden;background-repeat:no-repeat;background-position:center;background-size:20px 20px;background-color:#fff}
body .elementor .elementor-element.elementor-element-nnbodyside a.nn-socx[data-p="tiktok"]{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%2338594B%27%20stroke-width%3D%271.7%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M9.5%2012.2a3.6%203.6%200%201%200%203.6%203.6V4.5a4.6%204.6%200%200%200%204.6%204.6%27%2F%3E%3C%2Fsvg%3E")}
body .elementor .elementor-element.elementor-element-nnbodyside a.nn-socx[data-p="youtube"]{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%2338594B%27%20stroke-width%3D%271.7%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%272.8%27%20y%3D%275.5%27%20width%3D%2718.4%27%20height%3D%2713%27%20rx%3D%274%27%2F%3E%3Cpath%20d%3D%27M10.2%209.2v5.6l4.6-2.8z%27%20fill%3D%27%2338594B%27%20stroke%3D%27none%27%2F%3E%3C%2Fsvg%3E")}
body .elementor .elementor-element.elementor-element-nnbodyside a.nn-socx[data-p="linkedin"]{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%2338594B%27%20stroke-width%3D%271.7%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%273.2%27%20y%3D%273.2%27%20width%3D%2717.6%27%20height%3D%2717.6%27%20rx%3D%274%27%2F%3E%3Cpath%20d%3D%27M8%2010.5v6.5%27%2F%3E%3Ccircle%20cx%3D%278%27%20cy%3D%277.4%27%20r%3D%27.9%27%20fill%3D%27%2338594B%27%20stroke%3D%27none%27%2F%3E%3Cpath%20d%3D%27M12%2017v-6.5M12%2013.3a2.6%202.6%200%200%201%205.2%200V17%27%2F%3E%3C%2Fsvg%3E")}
body .elementor .elementor-element.elementor-element-nnbodyside a.nn-socx[data-p="twitter"]{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%2338594B%27%20stroke-width%3D%271.7%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M4.5%204.5h4.2l10.8%2015h-4.2z%27%2F%3E%3Cpath%20d%3D%27M19%204.5l-5.8%206.6M5%2019.5l5.9-6.7%27%2F%3E%3C%2Fsvg%3E")}
body .elementor .elementor-element.elementor-element-nnbodyside a.nn-socx:not([data-p="tiktok"]):not([data-p="youtube"]):not([data-p="linkedin"]):not([data-p="twitter"]){background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%2338594B%27%20stroke-width%3D%271.7%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M9.5%2016.5H8a4.5%204.5%200%200%201%200-9h1.5M14.5%207.5H16a4.5%204.5%200%200%201%200%209h-1.5M8.5%2012h7%27%2F%3E%3C%2Fsvg%3E")}
body .elementor .elementor-element.elementor-element-nnclaimbtn{
  margin:14px 0 0 !important;align-self:flex-start;width:auto !important;max-width:100%}
body .elementor .elementor-element.elementor-element-nnclaimbtn .elementor-button{
  display:inline-flex;align-items:center;justify-content:center;width:auto !important;min-height:42px;
  background-color:#4E7A2F;border:1px solid #4E7A2F;border-radius:6px;padding:0 20px;
  font-family:Inter,sans-serif;font-size:14px;font-weight:500;letter-spacing:.4px;line-height:1.2;
  color:#FFFFFF;text-decoration:none;box-shadow:none;
  transition:background-color .2s ease,border-color .2s ease}
body .elementor .elementor-element.elementor-element-nnclaimbtn .elementor-button:hover,
body .elementor .elementor-element.elementor-element-nnclaimbtn .elementor-button:focus{
  background-color:#335245;border-color:#335245;color:#FFFFFF}
body .elementor .elementor-element.elementor-element-nnclaimbtn .elementor-button-content-wrapper{justify-content:center}
@media (max-width:767px){
  body .elementor .elementor-element.elementor-element-nnclaimbox{margin-top:18px !important;padding:16px 16px 18px !important}
  body .elementor .elementor-element.elementor-element-nnclaimbtn{align-self:stretch;width:100% !important}
  body .elementor .elementor-element.elementor-element-nnclaimbtn .elementor-button{display:flex;width:100% !important;min-height:46px}
}
/* 30 September, later: the logo and the claim block end on the same line. Danielle: "the
   longer wording is making the block bigger so it doesn't align with the bottom edge of the
   logo block". A basic listing's hero picture is a single logo, so the carousel's 26px strip
   for dots is dropped and the logo fills its column, and the claim block sits at the foot of
   the text column. Desktop only. */
@media (min-width:1025px){
  body.nn-lane-basic .elementor .elementor-element-nnherocar:not(:has(.swiper-slide + .swiper-slide)) .elementor-image-carousel-wrapper,
  body.nn-lane-basic .elementor .elementor-element-nnherocar:not(:has(.swiper-slide + .swiper-slide)) .swiper{padding-bottom:0 !important}
  body.nn-lane-basic .elementor .elementor-element.elementor-element-231a6e4:has(~ .elementor-element-nnclaimbox){margin-bottom:20px !important}
  body .elementor .elementor-element.elementor-element-nnclaimbox{margin-top:auto !important}
}
/* /fx-claimnote */

/* fx-keepcards: the "More around the dam" cards (grid nnrelgrid in nnkeepsec) are all the same
   height. Danielle, 30 September: "they all need to be the exact same height.. use the elipse
   tool on the heading and description if necessary". Each card fills its grid cell, so the cards
   in a row match; the category chips keep to one line (a second chip that does not fit ends in
   an ellipsis), the name to two lines and the description to three, each with an ellipsis; the
   divider and the area line sit at the foot of every card. Only this section; the directory's
   cards are untouched. Remove everything to /fx-keepcards to revert. */
body .elementor .elementor-element-nnkeepsec .jet-listing-grid__item{display:flex !important}
body .elementor .elementor-element-nnkeepsec .jet-listing-grid__item > .jet-engine-listing-overlay-wrap{
  display:flex;flex-direction:column;flex:1 1 auto;width:100%;min-width:0}
body .elementor .elementor-element-nnkeepsec .jet-engine-listing-overlay-wrap > .elementor{
  display:flex;flex-direction:column;flex:1 1 auto;min-width:0}
body .elementor .elementor-element-nnkeepsec .elementor-element.nn-card{flex:1 1 auto !important;height:auto !important}
body .elementor .elementor-element-nnkeepsec .elementor-element.nn-card > .e-con-inner{flex:1 1 auto}
body .elementor .elementor-element-nnkeepsec .elementor-element.nn-card__body{flex:1 1 auto !important}
body .elementor .elementor-element-nnkeepsec .elementor-element.nn-card__body > .elementor-widget-divider{margin-top:auto !important}
body .elementor .elementor-element-nnkeepsec .nn-card__over .jet-listing-dynamic-terms{
  display:flex !important;flex-wrap:nowrap;align-items:center;min-width:0;overflow:hidden}
body .elementor .elementor-element-nnkeepsec .nn-card__over .jet-listing-dynamic-terms__link{flex:0 0 auto;white-space:nowrap}
body .elementor .elementor-element-nnkeepsec .nn-card__over .jet-listing-dynamic-terms__link ~ .jet-listing-dynamic-terms__link{
  flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
body .elementor .elementor-element-nnkeepsec .nn-card__over .jet-listing-dynamic-terms__delimiter{flex:0 0 auto;margin-right:6px;font-size:11px;line-height:1}
body .elementor .elementor-element-nnkeepsec .nn-card__title .elementor-heading-title{
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}
body .elementor .elementor-element-nnkeepsec .elementor-element.nn-card__desc{
  display:-webkit-box !important;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden}
/* /fx-keepcards */

/* fx-tracking: the small capitals labels sit closer together on listing pages. Danielle,
   30 September: "the text for "business unclaimed" and "where to find them" etc letter spacing
   is too far apart". They ranged from 0.13em to 0.22em; all are now 0.06em. Listing pages only
   (template 213, including the cards in More around the dam); the header, footer and other
   pages keep their spacing. Remove everything to /fx-tracking to revert. */
body.single-business_listing .elementor-213 :is(
  .elementor-element-nnclaimh, .elementor-element-6b1d85d, .elementor-element-nnhrsh,
  .elementor-element-nnkeepov, .elementor-element-nnfaqov, .elementor-element-nngaleye,
  .elementor-element-nnmpeye, .elementor-element-nnmteye, .elementor-element-4500292,
  .elementor-element-e926f09, .elementor-element-febdb33, .elementor-element-bbcfe97,
  .elementor-element-899aa7e, .elementor-element-nncchipt, .elementor-element-nnfindlbl,
  .elementor-element-nnlinkov) .elementor-heading-title,
body.single-business_listing .elementor-213 .nn-hllbl,
body.single-business_listing .elementor-213 :is(.elementor-element-nnchipcat, .elementor-element-nnchiparea,
  .elementor-element-8a83b84, .elementor-element-d8da630) :is(.jet-listing-dynamic-terms, .jet-listing-dynamic-terms__link),
body.single-business_listing .elementor-213 .elementor-element-af1f1d9 .jet-listing-dynamic-field__content,
body.single-business_listing .elementor-213 .elementor-element-nnaskform .jet-form-builder__label-text{
  letter-spacing:.06em !important}
/* the hero chips and the centre chip carry stronger rules of their own, so they are named in full */
body.single-business_listing .elementor-213 .elementor-element.elementor-element-nnchipcat .jet-listing.jet-listing-dynamic-terms .jet-listing-dynamic-terms__link,
body.single-business_listing .elementor-213 .elementor-element.elementor-element-nnchiparea .jet-listing.jet-listing-dynamic-terms .jet-listing-dynamic-terms__link,
body.single-business_listing .elementor .elementor-element.elementor-element-nnchipctr .nn-cchip__t .elementor-heading-title,
body.single-business_listing .elementor .elementor-element.elementor-element-nnchippar .nn-cchip__t .elementor-heading-title{
  letter-spacing:.06em !important}
/* /fx-tracking */

/* fx-storybody : the business's own story under its description (hand-off 11, 16 September 2026, Danielle: wire it in). Widget nnstorybody on 213 reads story_body and shows only when it exists; same measure and type as the description widget 696953d. */
body .elementor.elementor-213 .elementor-element.elementor-element-nnstorybody{margin-top:14px !important;padding-right:14% !important}
body .elementor.elementor-213 .elementor-element.elementor-element-nnstorybody p{font-family:Inter,sans-serif !important;font-size:15px !important;line-height:1.75 !important;font-weight:400 !important;color:#3A453D !important;text-align:left !important;margin:0 0 14px !important}
body .elementor.elementor-213 .elementor-element.elementor-element-nnstorybody p:last-child{margin-bottom:0 !important}
@media (max-width:1024px){body .elementor .elementor-element.elementor-element-nnstorybody{padding-right:0 !important}}
/* /fx-storybody */
/* fx-linked : a business inside a business. Relation 114 (Linked Businesses, one parent per listing). Danielle 16 September
   ("create linked businesses within a business listing, ie Islands Medical Centre is a business, however there are individuals").
   On the child, a "Part of" chip after the centre chip in both heroes (grid item 3463, query 116), dressed like the centre chip.
   On the parent, the Who you'll find here section (container nnlinksec, grid nnlinkgrid, card 272, query 115) after Services. */
body .elementor .elementor-element.elementor-element-nnchippar,
body .elementor .elementor-element.elementor-element-nnbanchippar{width:auto !important;flex:0 0 auto !important;max-width:none !important;margin:0 !important}
body .elementor .elementor-element.elementor-element-nnchippar .nn-cchip__t .elementor-heading-title{color:#4E7A2F !important;font-family:Inter,sans-serif !important;font-size:11px !important;font-weight:600 !important;letter-spacing:.14em !important;text-transform:uppercase !important;line-height:1.5 !important;white-space:nowrap;margin:0}
body .elementor .elementor-element.elementor-element-nnchippar::before{content:"/";color:#B9C2B6;margin:0 9px;font-size:11px}
body .elementor .elementor-element.elementor-element-nnchippar .nn-cchip__t .elementor-heading-title::before,
body .elementor .elementor-element.elementor-element-nnbanchippar .nn-cchip__t .elementor-heading-title::before{content:"Part of\00a0"}
body .elementor .elementor-element.elementor-element-nnbanchippar .nn-cchip__t .elementor-heading-title{display:inline-flex;align-items:center;padding:3px 14px;border-radius:20px;background:rgba(255,255,255,.16);color:#F1E5CD !important;border:1px solid rgba(255,255,255,.34);font:500 16px/24px Inter,sans-serif !important;text-transform:none !important;letter-spacing:0 !important;white-space:nowrap}
body .elementor .elementor-element-nnparh .elementor-heading-title,
body .elementor .elementor-element-nnlinkh .elementor-heading-title{font-size:25px !important;line-height:1.18 !important;letter-spacing:-.005em !important;color:#335245 !important}
@media (max-width:767px){body .elementor .elementor-element.elementor-element-nnchippar .nn-cchip__t .elementor-heading-title{white-space:normal}body .elementor .elementor-element.elementor-element-nnchippar{flex-basis:100% !important}body .elementor .elementor-element.elementor-element-nnchippar::before{content:none}}
/* /fx-linked */

/* fx-resp: responsiveness pass, 17 September. Three faults the sweep found on template 213.
1. The enquiry form's Turnstile box is 300px wide and was auto-placed into the 136px send column,
   so it broke out of the card on every width and pushed the button to a second row. The button
   goes back to the fourth column on row one; the Turnstile takes a row of its own underneath.
2. Between 761 and 1024 four columns no longer fit, so the form runs as two.
3. The shopping-centre chip in the contact panel could not wrap, so a long centre name ran past
   the panel on a 360 phone. */
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .captcha-token-container{
grid-column:1 / -1;grid-row:2;margin:0;min-height:0;line-height:0}
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .field-type-submit-field{
grid-column:4;grid-row:1}
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .jet-form-builder-messages-wrap{
grid-column:1 / -1;grid-row:auto}
@media (min-width:761px) and (max-width:1024px){
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder{grid-template-columns:1fr 1fr}
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .field-type-textarea-field{grid-column:1 / -1;grid-row:2}
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .captcha-token-container{grid-column:1;grid-row:3;align-self:center}
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .field-type-submit-field{grid-column:2;grid-row:3;align-self:center;justify-self:end;width:auto;min-width:160px}
}
@media (max-width:760px){
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .captcha-token-container{grid-column:1 / -1;grid-row:auto}
body .elementor .elementor-element.elementor-element-nnaskband .jet-form-builder .field-type-submit-field{grid-column:1 / -1;grid-row:auto}
}
body .elementor .elementor-element.elementor-element-nnfindctr{max-width:100% !important;min-width:0}
.elementor-element-nnfindctr .jet-listing-grid,.elementor-element-nnfindctr .jet-listing-grid__items,.elementor-element-nnfindctr .jet-listing-grid__item,.elementor-element-nnfindctr .jet-engine-listing-overlay-wrap,.elementor-element-nnfindctr .elementor,.elementor-element-nnfindctr .e-con,.elementor-element-nnfindctr .e-con-inner,.elementor-element-nnfindctr .nn-cchip,.elementor-element-nnfindctr .nn-cchip__t{max-width:100% !important;min-width:0 !important}
body .elementor .elementor-element.elementor-element-nnfindctr .nn-cchip__t .elementor-heading-title{white-space:normal !important;overflow-wrap:anywhere}
/* 4. Between 1025 and 1140 the two-column body kept a 369px contact panel beside a 63% main column and ran
   about 40px past the screen; the panel now takes what is left of the row. */
@media (min-width:1025px) and (max-width:1140px){
body .elementor .elementor-element.elementor-element-nnbodymain{--width:60%;width:60% !important;flex:0 1 auto !important;min-width:0}
body .elementor .elementor-element.elementor-element-nnbodyside{flex:1 1 0 !important;min-width:0 !important;width:auto !important}
}
/* /fx-resp */
/* Several menu PDFs (snippet 1320): the one button becomes a wrapping row of buttons, main menu first. */
.nn-menubtns{display:flex;flex-wrap:wrap;gap:10px 12px;align-items:center}
.nn-menubtns .elementor-button{margin:0}
/* /menus */
/* fx-sept29 · Hero photograph height on the card hero, at Danielle's request (29 September). The 7 September collapse
   sized the row to the text column, so a listing with a short description showed a squat photograph (303px tall on a
   567px column). The photo column now has a floor of about four by three (34vw, capped at 520px) on desktop; the
   carousel already fills the column, so the photograph simply gets taller and crops from the top as before. The text
   column centres its block instead of pinning the buttons to the foot, so a short listing does not open a gap between
   the description and the buttons; a long column still fills the height and looks exactly as it did. Desktop only. */
@media (min-width:1025px){
body .elementor .elementor-element.elementor-element-nnherocol{min-height:min(34vw,520px) !important}
body .elementor .elementor-element.elementor-element-c7da9a2{justify-content:center !important}
body .elementor .elementor-element.elementor-element-231a6e4{margin-top:0 !important}
}
/* /fx-sept29 */
