.elementor-kit-7{--e-global-color-primary:#7D1F28;--e-global-color-secondary:#211F19;--e-global-color-text:#38352B;--e-global-color-accent:#54151B;--e-global-color-e01a3ab5:#98252F;--e-global-color-c2e630ee:#691A21;--e-global-color-47e89f38:#3E0F14;--e-global-color-c92760e1:#D14754;--e-global-color-83ad9a2f:#F1C6CA;--e-global-color-c9090f6a:#FFFFFF;--e-global-color-b58b1242:#FBFAF6;--e-global-color-bae80961:#F6F5EE;--e-global-color-e65ea476:#F2F1E7;--e-global-color-68c6b9d7:#EBE9DA;--e-global-color-3761e1da:#5E574E;--e-global-color-13793d94:#BEB4AD;--e-global-color-f990286a:#E0E0DC;--e-global-typography-primary-font-family:"Plus Jakarta Sans";--e-global-typography-primary-font-weight:800;--e-global-typography-primary-text-transform:none;--e-global-typography-primary-line-height:1.1em;--e-global-typography-primary-letter-spacing:-0.9px;--e-global-typography-secondary-font-family:"Plus Jakarta Sans";--e-global-typography-secondary-font-weight:700;--e-global-typography-secondary-text-transform:none;--e-global-typography-secondary-line-height:1.3em;--e-global-typography-secondary-letter-spacing:-0.3px;--e-global-typography-text-font-family:"Plus Jakarta Sans";--e-global-typography-text-font-size:18px;--e-global-typography-text-font-weight:400;--e-global-typography-text-text-transform:none;--e-global-typography-text-line-height:1.5em;--e-global-typography-text-letter-spacing:0px;--e-global-typography-accent-font-family:"Plus Jakarta Sans";--e-global-typography-accent-font-size:14px;--e-global-typography-accent-font-weight:700;--e-global-typography-accent-text-transform:uppercase;--e-global-typography-accent-line-height:1.4em;--e-global-typography-accent-letter-spacing:1.2px;color:var( --e-global-color-text );font-family:"Plus Jakarta Sans", Sans-serif;font-size:18px;font-weight:400;line-height:1.5em;letter-spacing:0px;}.elementor-kit-7 button,.elementor-kit-7 input[type="button"],.elementor-kit-7 input[type="submit"],.elementor-kit-7 .elementor-button{background-color:var( --e-global-color-primary );font-family:"Plus Jakarta Sans", Sans-serif;font-size:16px;font-weight:700;color:var( --e-global-color-c9090f6a );border-radius:999px 999px 999px 999px;padding:15px 28px 15px 28px;}.elementor-kit-7 button:hover,.elementor-kit-7 button:focus,.elementor-kit-7 input[type="button"]:hover,.elementor-kit-7 input[type="button"]:focus,.elementor-kit-7 input[type="submit"]:hover,.elementor-kit-7 input[type="submit"]:focus,.elementor-kit-7 .elementor-button:hover,.elementor-kit-7 .elementor-button:focus{background-color:var( --e-global-color-e01a3ab5 );color:var( --e-global-color-c9090f6a );}.elementor-kit-7 e-page-transition{background-color:#FFBC7D;}.elementor-kit-7 a{color:var( --e-global-color-primary );}.elementor-kit-7 a:hover{color:var( --e-global-color-c2e630ee );}.elementor-kit-7 h1{color:var( --e-global-color-secondary );font-family:"Plus Jakarta Sans", Sans-serif;font-size:56px;font-weight:800;line-height:1.07em;letter-spacing:-1.6px;}.elementor-kit-7 h2{color:var( --e-global-color-secondary );font-family:"Plus Jakarta Sans", Sans-serif;font-size:38px;font-weight:800;line-height:1.15em;letter-spacing:-0.9px;}.elementor-kit-7 h3{color:var( --e-global-color-secondary );font-family:"Plus Jakarta Sans", Sans-serif;font-size:25px;font-weight:700;line-height:1.3em;letter-spacing:-0.4px;}.elementor-kit-7 h4{color:var( --e-global-color-secondary );font-family:"Plus Jakarta Sans", Sans-serif;font-size:21px;font-weight:700;line-height:1.35em;letter-spacing:-0.2px;}.elementor-kit-7 h5{color:var( --e-global-color-secondary );font-family:"Plus Jakarta Sans", Sans-serif;font-size:17px;font-weight:700;line-height:1.4em;letter-spacing:0px;}.elementor-kit-7 h6{color:var( --e-global-color-primary );font-family:"Plus Jakarta Sans", Sans-serif;font-size:14px;font-weight:700;text-transform:uppercase;line-height:1.4em;letter-spacing:1.2px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1280px;}.e-con{--container-max-width:1280px;}.elementor-widget:not(:last-child){--kit-widget-spacing:24px;}.elementor-element{--widgets-spacing:24px 24px;--widgets-spacing-row:24px;--widgets-spacing-column:24px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-kit-7 h1{font-size:44px;}.elementor-kit-7 h2{font-size:32px;}.elementor-kit-7 h3{font-size:24px;}.elementor-kit-7 h4{font-size:20px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-kit-7 h1{font-size:40px;}.elementor-kit-7 h2{font-size:30px;}.elementor-kit-7 h3{font-size:23px;}.elementor-kit-7 h4{font-size:20px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}/* Start custom CSS *//* Robson Glass - site-wide rules. Global Settings guide. */

/* CODE NOTE A - text link hover underline */
.elementor-widget-text-editor a { text-decoration: none; }
.elementor-widget-text-editor a:hover { text-decoration: underline; }

/* CODE NOTE B - button hover, pressed and touch */
.elementor-button, a.elementor-button {
  transition: background .16s ease, color .16s ease,
              box-shadow .16s ease, transform .16s ease;
}
.elementor-button:active {
  background-color: #691A21;   /* Maroon pressed */
  transform: translateY(0);
  box-shadow: none;
}
@media (hover: hover) {
  .elementor-button:hover {
    background-color: #98252F;  /* Maroon hover */
    transform: translateY(-3px);
    box-shadow: 0 8px 20px -6px rgba(125,31,40,.5);
  }
}
@media (prefers-reduced-motion: reduce) {
  .elementor-button:hover, .elementor-button:active { transform: none; }
}

/* Light button: add the CSS class "btn-light" in the widget Advanced tab */
.btn-light .elementor-button:active {
  background-color: #F6F5EE;                /* Cream 100 */
  box-shadow: inset 0 0 0 2px #691A21;      /* Maroon pressed ring */
  transform: translateY(0);
}
@media (hover: hover) {
  .btn-light .elementor-button:hover {
    background-color: #FFFFFF;
    color: #7D1F28;
    transform: translateY(-3px);
    box-shadow: inset 0 0 0 2px #7D1F28,     /* Primary maroon ring */
                0 18px 40px -16px rgba(0,0,0,.5);
  }
}

/* Outline button: add the CSS class "btn-outline" in the widget Advanced tab.
   States file - outline lifts 2px, with a soft shadow. */
@media (hover: hover) {
  .btn-outline .elementor-button:hover {
    transform: translateY(-2px);
    box-shadow: 0 18px 40px -16px rgba(0,0,0,.5);
  }
}

/* CODE NOTE C - balanced headings */
h1, h2, h3 { text-wrap: balance; }
p { text-wrap: pretty; }

/* CODE NOTE D - sticky-header anchor offset.
   Stops jump links landing under the sticky header.
   Needed by Mirrors & Splashbacks, Leadlight and Service Areas. */
:root { scroll-padding-top: 90px; }

/* CODE NOTE E - service card bullet lists.
   Homepage services grid (donor for the six service pages).
   Elementor's Text Editor has no list controls, so the mockup's
   18px indent and 8px item spacing are set here.
   Add the CSS class "svc-list" to the Text Editor. */
.svc-list ul { padding-left: 18px; margin: 0; }
.svc-list li { margin-bottom: 8px; }
.svc-list li:last-child { margin-bottom: 0; }

/* CODE NOTE F - form file upload field.
   Elementor gives input[type="file"] no styling at all, so the browser's native
   "Choose File" button sits hard against the field edge and clips. This boxes the
   field like the mockup's dashed drop zone and gives the button its own pill.

   WARNING, and it applies to every page from here on: Elementor find-and-replaces
   its own scoping keyword anywhere in Custom CSS, in Site Settings AND in a widget's
   Advanced tab. That keyword happens to be a substring of the standard file-button
   pseudo-element, so typing it normally produces broken CSS. The Firefox rule below
   therefore writes the letter r as the CSS escape backslash-r, which parses back to
   the same pseudo-element but hides the keyword from the replacer.
   The -webkit- rule covers Chrome, Edge and Safari.
   Applies to every form on the site. */
.elementor-field-type-upload .elementor-upload-field {
  display: block;
  width: 100%;
  padding: 14px 15px;
  background-color: #FBFAF6;              /* Cream 50 */
  border: 1.5px dashed #E0E0DC;           /* Hairline */
  border-radius: 12px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.4;
  color: #5E574E;                         /* Stone 500 */
  cursor: pointer;
}
.elementor-field-type-upload .elementor-upload-field::-webkit-file-upload-button {
  margin: 0 12px 0 0;
  padding: 8px 16px;
  background-color: #FFFFFF;
  border: 1px solid #E0E0DC;              /* Hairline */
  border-radius: 999px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 700;
  color: #7D1F28;                         /* Primary maroon */
  cursor: pointer;
}
.elementor-field-type-upload .elementor-upload-field::file-selecto\r-button {
  margin: 0 12px 0 0;
  padding: 8px 16px;
  background-color: #FFFFFF;
  border: 1px solid #E0E0DC;
  border-radius: 999px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 700;
  color: #7D1F28;
  cursor: pointer;
}
@media (hover: hover) {
  .elementor-field-type-upload .elementor-upload-field:hover {
    border-color: #7D1F28;
    color: #7D1F28;
  }
}

/* CODE NOTE G - section rise on scroll (the "fade up").
   Copied from the signed-off mockups, which carry it as [data-rise].
   The section goes from transparent and 26px low to solid and settled, tied to
   SCROLL POSITION, not to a timer. A charcoal heading at part opacity over cream
   reads as light grey, so the heading appears grey and darkens to full Ink 900 as
   you scroll. There is no colour keyframe - the darkening IS the opacity ramp.

   Elementor's own Entrance Animation cannot do this. It is time-based and fires
   once when the section enters the viewport, so nothing tracks the scroll. The
   Entrance Animation was removed from these sections and replaced by this.

   Add the CSS class "rise" to a section's OUTER container. Do it only on the
   sections the page mockup marks with data-rise - never the hero, and never a
   final CTA.

   Browsers without scroll-driven animations (Firefox, Safari before 26) get no
   animation at all and simply show the section, which is what the mockup does too. */
@keyframes rg-rise {
  from { opacity: 0; transform: translateY(26px); }
  to   { opacity: 1; transform: none; }
}
@supports (animation-timeline: view()) {
  .rise {
    animation: rg-rise both linear;
    animation-timeline: view();
    animation-range: entry 0% entry 40%;
  }
}
@media (prefers-reduced-motion: reduce) {
  .rise { animation: none; opacity: 1; transform: none; }
}/* End custom CSS */