/* Ringfair International design system (DESIGN.md).
   Loaded after Xtra, Codevz Plus and Elementor. Colours and fonts are also set in
   Elementor Site Settings and Xtra Theme Options; the tokens below mirror those values,
   and everything else in this file uses var(--rf-*) only. */

/* 1. Tokens ------------------------------------------------------------------ */
:root{
  --rf-navy-950:#010F2B; --rf-navy-900:#021A47; --rf-navy-800:#0B2A5E; --rf-navy-700:#1B3B73;
  --rf-red-500:#DD3333; --rf-red-600:#C42B2B; --rf-red-700:#A32222; --rf-red-50:#FCECEC; --rf-globe-500:#004AAD;
  --rf-white:#FFFFFF; --rf-mist:#F3F6FA; --rf-cloud:#E8EDF5; --rf-line:#DCE3EE; --rf-input-border:#7F8AA0;
  --rf-slate-700:#3B4A63; --rf-slate-500:#5B6880; --rf-on-navy:#FFFFFF; --rf-on-navy-muted:#B8C4D9;--rf-on-navy-rule:rgba(255,255,255,.55);
  --rf-font-display:"Archivo","Helvetica Neue",Arial,sans-serif; --rf-font-text:"Inter","Helvetica Neue",Arial,sans-serif;
  --rf-fs-display:clamp(2.5rem,1.75rem + 2.9vw,4rem); --rf-fs-h1:clamp(2.25rem,1.8rem + 1.8vw,3.25rem);
  --rf-fs-h2:clamp(1.875rem,1.5rem + 1.6vw,2.75rem); --rf-fs-h3:clamp(1.375rem,1.25rem + .55vw,1.625rem); --rf-fs-h4:1.25rem;
  --rf-fs-lead:clamp(1.125rem,1.05rem + .35vw,1.3125rem); --rf-fs-body:clamp(1rem,.97rem + .12vw,1.0625rem);
  --rf-fs-small:.875rem; --rf-fs-eyebrow:.8125rem; --rf-fs-stat:clamp(3rem,2.2rem + 3.4vw,5rem);
  --rf-space-1:.25rem; --rf-space-2:.5rem; --rf-space-3:.75rem; --rf-space-4:1rem; --rf-space-5:1.5rem;
  --rf-space-6:2rem; --rf-space-7:3rem; --rf-space-8:4rem; --rf-space-9:6rem; --rf-space-10:8rem;
  --rf-section-y:clamp(4rem,2.8rem + 4.6vw,7rem); --rf-section-y-tight:clamp(3rem,2.4rem + 2.4vw,4.5rem);
  --rf-container:1240px; --rf-gutter:clamp(1.25rem,.9rem + 1.5vw,2rem); --rf-grid-gap:clamp(1rem,.8rem + .8vw,1.5rem);
  --rf-radius-xs:2px; --rf-radius-sm:4px; --rf-radius-md:6px; --rf-radius-lg:10px;
  --rf-shadow-sm:0 1px 2px rgba(2,26,71,.06),0 1px 3px rgba(2,26,71,.08);
  --rf-shadow-md:0 2px 4px rgba(2,26,71,.04),0 8px 24px rgba(2,26,71,.10);
  --rf-shadow-lg:0 4px 8px rgba(2,26,71,.06),0 24px 48px rgba(2,26,71,.18);
  --rf-ease:cubic-bezier(.2,.7,.2,1); --rf-dur-fast:150ms; --rf-dur:220ms; --rf-dur-slow:300ms;
  --rf-scrim-hero:linear-gradient(90deg,rgba(2,26,71,.94) 0%,rgba(2,26,71,.86) 40%,rgba(2,26,71,.45) 72%,rgba(2,26,71,.15) 100%);
  --rf-scrim-hero-mobile:linear-gradient(180deg,rgba(2,26,71,.35) 0%,rgba(2,26,71,.88) 45%,rgba(2,26,71,.96) 100%);
  --rf-scrim-band:linear-gradient(rgba(2,26,71,.78),rgba(2,26,71,.78));
  --rf-scrim-tile:linear-gradient(180deg,rgba(2,26,71,0) 30%,rgba(2,26,71,.70) 60%,rgba(2,26,71,.95) 100%);
  --rf-focus-ring:0 0 0 3px rgba(0,74,173,.25);
  --rf-mobile-nav-h:64px; --rf-topbar-h:36px; --rf-header-h:64px; --rf-sticky-offset:0px;
  /* Assets: lattice pattern, select chevron, white line icons for the red squares. */
  --rf-check:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E");
  --rf-lattice:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='56'%3E%3Cpath d='M0 0L56 56M56 0L0 56' stroke='%23fff' stroke-opacity='.05'/%3E%3C/svg%3E");
  --rf-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23021A47' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  --rf-ico-bolt:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2 4.5 13.5H11L10 22l8.5-11.5H12L13 2Z'/%3E%3C/svg%3E");
  --rf-ico-plug:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 2v5M15 2v5M6 7h12v3a6 6 0 0 1-12 0V7ZM12 16v6'/%3E%3C/svg%3E");
  --rf-ico-nut:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2.8 20 7.4v9.2l-8 4.6-8-4.6V7.4l8-4.6Z'/%3E%3Ccircle cx='12' cy='12' r='3.2'/%3E%3C/svg%3E");
  --rf-ico-pole:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2v20M4 6h16M6.5 10.5h11M8 6l4 4.5L16 6M9 22h6'/%3E%3C/svg%3E");
  --rf-ico-shield:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2.5 4.5 5.5v5.7c0 4.6 3.2 8.6 7.5 10.3 4.3-1.7 7.5-5.7 7.5-10.3V5.5L12 2.5Z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E");
  --rf-ico-gauge:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.2 17a8.5 8.5 0 1 1 15.6 0'/%3E%3Cpath d='m12 14.5 4-5'/%3E%3Ccircle cx='12' cy='14.5' r='1.3'/%3E%3C/svg%3E");
}

/* 2. Base type ---------------------------------------------------------------- */
body{color:var(--rf-slate-700);font-family:var(--rf-font-text);font-size:var(--rf-fs-body);line-height:1.65;-webkit-font-smoothing:antialiased}
body h1,body h2,body h3,body h4,body h5,body h6{font-family:var(--rf-font-display);color:var(--rf-navy-900);text-wrap:balance}
body h2{font-size:var(--rf-fs-h2);font-weight:700;line-height:1.15;letter-spacing:-.015em}
body h3{font-size:var(--rf-fs-h3);font-weight:700;line-height:1.25;letter-spacing:-.01em}
body h4{font-size:var(--rf-fs-h4);font-weight:600;line-height:1.3}
p,li{text-wrap:pretty}
::selection{background-color:var(--rf-navy-900);color:var(--rf-white)}
:focus-visible{outline:3px solid var(--rf-globe-500);outline-offset:3px}
.rf-vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* Eyebrow: red bar + small uppercase label. Use on any Heading/Text widget or block. */
.rf-eyebrow,.rf-eyebrow .elementor-heading-title{display:flex;align-items:center;gap:12px;margin:0 0 12px;color:var(--rf-navy-900);font:700 var(--rf-fs-eyebrow)/1.2 var(--rf-font-text);letter-spacing:.14em;text-transform:uppercase}
.rf-eyebrow .elementor-heading-title{margin:0}
.rf-eyebrow:not(.elementor-widget)::before,.rf-eyebrow .elementor-heading-title::before{content:"";flex:none;width:32px;height:4px;background:var(--rf-red-500)}
.rf-lead,.rf-lead p{font-size:var(--rf-fs-lead);line-height:1.55;max-width:60ch}
.rf-display .elementor-heading-title,h1.rf-display{font-size:var(--rf-fs-display);font-weight:800;line-height:1.05;letter-spacing:-.025em;max-width:16ch}
.rf-dark,.rf-dark p{color:var(--rf-on-navy-muted)}
.rf-dark h1,.rf-dark h2,.rf-dark h3,.rf-dark h4,.rf-dark .elementor-heading-title,.rf-dark .rf-eyebrow .elementor-heading-title{color:var(--rf-on-navy)}

/* 3. Buttons: primary, secondary, inverse, text link --------------------------- */
:is(.rf-btn--primary .elementor-button,.rf-btn--secondary .elementor-button,.rf-btn--inverse .elementor-button,.rf-enquire .wp-block-button__link,.rf-cta .wp-block-button__link,.rf-family .wp-block-button__link,.wpcf7 .wpcf7-submit){
  display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 24px;border:2px solid transparent;border-radius:var(--rf-radius-sm);
  font:600 1rem/1.2 var(--rf-font-text);letter-spacing:.01em;text-transform:none;text-decoration:none;cursor:pointer;
  transition:background-color var(--rf-dur-fast) var(--rf-ease),color var(--rf-dur-fast) var(--rf-ease),border-color var(--rf-dur-fast) var(--rf-ease),transform var(--rf-dur) var(--rf-ease),box-shadow var(--rf-dur) var(--rf-ease)}
/* Primary */
:is(.rf-btn--primary .elementor-button,.rf-enquire .wp-block-button__link,.rf-cta .wp-block-button:not(.is-style-outline) .wp-block-button__link,.rf-family .wp-block-button__link,.wpcf7 .wpcf7-submit){background-color:var(--rf-red-500);border-color:var(--rf-red-500);color:var(--rf-white)}
:is(.rf-btn--primary .elementor-button,.rf-enquire .wp-block-button__link,.rf-cta .wp-block-button:not(.is-style-outline) .wp-block-button__link,.rf-family .wp-block-button__link,.wpcf7 .wpcf7-submit):hover{background-color:var(--rf-red-600);border-color:var(--rf-red-600);color:var(--rf-white);transform:translateY(-1px);box-shadow:var(--rf-shadow-sm)}
:is(.rf-btn--primary .elementor-button,.rf-enquire .wp-block-button__link,.rf-cta .wp-block-button:not(.is-style-outline) .wp-block-button__link,.rf-family .wp-block-button__link,.wpcf7 .wpcf7-submit):active{background-color:var(--rf-red-700);border-color:var(--rf-red-700);transform:none;box-shadow:none}
/* Secondary (light surfaces only) */
.rf-btn--secondary .elementor-button{background-color:transparent;border-color:var(--rf-navy-900);color:var(--rf-navy-900)}
.rf-btn--secondary .elementor-button:hover{background-color:var(--rf-navy-900);color:var(--rf-white)}
.rf-btn--secondary .elementor-button:active{background-color:var(--rf-navy-800);border-color:var(--rf-navy-800);color:var(--rf-white)}
/* Inverse (navy bands and photos) */
:is(.rf-btn--inverse .elementor-button,.rf-cta .is-style-outline .wp-block-button__link){background-color:var(--rf-white);border-color:var(--rf-white);color:var(--rf-navy-900)}
:is(.rf-btn--inverse .elementor-button,.rf-cta .is-style-outline .wp-block-button__link):hover{background-color:var(--rf-cloud);border-color:var(--rf-cloud);color:var(--rf-navy-900)}
:is(.rf-btn--inverse .elementor-button,.rf-cta .is-style-outline .wp-block-button__link):active{background-color:var(--rf-line);border-color:var(--rf-line)}
.rf-dark .elementor-button:focus-visible,.rf-cta .wp-block-button__link:focus-visible,.rf-hero .elementor-button:focus-visible{outline-color:var(--rf-white)}
/* Small size: product cards, header CTA */
:is(.rf-btn--sm .elementor-button,.rf-enquire .wp-block-button__link){min-height:44px;padding:0 16px;font-size:.9375rem}
.elementor-button .elementor-button-icon{transition:transform var(--rf-dur) var(--rf-ease)}
.elementor-button:hover .elementor-button-icon{transform:translateX(3px)}
/* Text link with a red arrow */
.rf-link a,a.rf-link,.rf-back a{display:inline-flex;align-items:center;gap:8px;color:var(--rf-navy-900);font:600 1rem/1.3 var(--rf-font-text);text-decoration:none}
.rf-link a:hover,a.rf-link:hover,.rf-back a:hover{color:var(--rf-navy-900);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}
.rf-dark .rf-link a{color:var(--rf-white)}

/* 4. Header (complements Xtra Theme Options: row colours, logo, sizes) ---------- */
/* Active item follows WordPress's own classes, so the "/" Home link no longer lights up on every page. */
#site_header .sf-menu > .cz.current_menu:not(.current-menu-item,.current-menu-ancestor,.current-menu-parent,.current_page_item,.current_page_parent,.current_page_ancestor) > a{color:inherit}
#site_header .sf-menu > .cz.current_menu:not(.current-menu-item,.current-menu-ancestor,.current-menu-parent,.current_page_item,.current_page_parent,.current_page_ancestor) > a:before{transform:scale(0)}
#site_header .sf-menu > .cz:is(.current-menu-item,.current-menu-ancestor,.current-menu-parent,.current_page_item,.current_page_parent,.current_page_ancestor) > a:before{transform:scale(1)}
/* Menu CTA renders as a primary button, without the hover underline. */
#site_header .rf-menu-cta{margin-left:var(--rf-space-4)}
/* Header CTA: the "Request a Quote" menu item (class rf-menu-cta) as a small Primary button. It has its own rules:
   an id inside the shared button lists above would raise every button's specificity and override the variants. */
#site_header .sf-menu > .rf-menu-cta > a{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:0 16px;border:2px solid var(--rf-red-500);border-radius:var(--rf-radius-sm);background-color:var(--rf-red-500);color:var(--rf-white);font:600 .9375rem/1.2 var(--rf-font-text);letter-spacing:.01em;text-transform:none;text-decoration:none;transition:background-color var(--rf-dur-fast) var(--rf-ease),border-color var(--rf-dur-fast) var(--rf-ease),transform var(--rf-dur) var(--rf-ease),box-shadow var(--rf-dur) var(--rf-ease)}
#site_header .sf-menu > .rf-menu-cta > a:hover,#site_header .sf-menu > .rf-menu-cta:hover > a,#site_header .sf-menu > .rf-menu-cta.current_menu > a{background-color:var(--rf-red-600);border-color:var(--rf-red-600);color:var(--rf-white);transform:translateY(-1px);box-shadow:var(--rf-shadow-sm)}
#site_header .sf-menu > .rf-menu-cta > a:active{background-color:var(--rf-red-700);border-color:var(--rf-red-700);transform:none;box-shadow:none}
#site_header .sf-menu > .rf-menu-cta > a:before{display:none}
/* The desktop hamburger opens an empty drawer: hidden until it has content (decision 7). */
#site_header .header_3 .offcanvas_container{display:none}
#site_header .onSticky{box-shadow:var(--rf-shadow-sm)}
/* Desktop rows from the Theme Options header builder: header_1 is the navy top bar (phone, hours, quote link) and
   header_3 the main bar (logo, menu, search). Xtra floats the items; here each row is one centred line. Phones use header_4. */
#site_header :is(.header_1,.header_3) .elms_row > .clr{display:flex;align-items:center}
#site_header :is(.header_1,.header_3) .elms_row > .clr::before,#site_header :is(.header_1,.header_3) .elms_row > .clr::after{display:none}
#site_header :is(.header_1,.header_3) :is(.elms_left,.elms_right){display:flex;align-items:center}
#site_header :is(.header_1,.header_3) .elms_right{flex-direction:row-reverse;margin-left:auto}
#site_header .header_1 .elms_row > .clr{height:var(--rf-topbar-h)}
#site_header .header_3 .elms_row > .clr{min-height:var(--rf-header-h)}
#site_header .header_1 .elm_icon_text{display:inline-flex;align-items:center;min-height:var(--rf-topbar-h)}
#site_header .header_1 a.elm_icon_text:hover .it_text{text-decoration:underline;text-underline-offset:3px}
#site_header .header_1 :focus-visible{outline:2px solid var(--rf-white);outline-offset:-2px}
/* Desktop: the top bar scrolls away and the main bar stays at the top. It is plain CSS, so nothing shifts while scrolling;
   ringfair.js adds the shadow once the bar has stuck. Xtra's overflow:hidden on #layout makes it a scroll container, which
   stops sticky; clip crops the same way without one, and flow-root keeps it a block formatting context as before. */
@media screen and (min-width:769px){
  :root{--rf-sticky-offset:var(--rf-header-h)}
  html{scroll-padding-top:calc(var(--rf-sticky-offset) + var(--rf-space-4))}
  #layout{display:flow-root;overflow:clip}
  #site_header{position:sticky;top:calc(-1 * var(--rf-topbar-h))}
  .admin-bar #site_header{top:calc(var(--wp-admin--admin-bar--height,32px) - var(--rf-topbar-h))}
  #site_header.rf-stuck{box-shadow:var(--rf-shadow-sm)}
}
/* Up to 1199 px: tighter menu spacing keeps the logo, menu and search on one line down to 1000 px. */
@media screen and (min-width:769px) and (max-width:1199px){
  #site_header #menu_header_3 > .cz > a{margin-inline:10px}
  #site_header .rf-menu-cta{margin-left:var(--rf-space-2)}
}
/* 769-999 px (tablets in portrait): the menu takes its own line under the logo, and only that line sticks. */
@media screen and (min-width:769px) and (max-width:999px){
  #site_header .header_3 .elms_row > .clr{flex-wrap:wrap}
  #site_header .header_3 .elms_left{min-height:var(--rf-header-h)}
  #site_header .header_3 .elms_right{flex-basis:100%;min-height:var(--rf-header-h)}
  #site_header{top:calc(-1 * (var(--rf-topbar-h) + var(--rf-header-h)))}
  .admin-bar #site_header{top:calc(var(--wp-admin--admin-bar--height,32px) - var(--rf-topbar-h) - var(--rf-header-h))}
}

/* 5. Inner-page title banner (replaces the green pylon photo) ------------------- */
.page_cover .page_title{position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;justify-content:center;min-height:360px;
  padding-block:56px;background:var(--rf-navy-900);background-image:none;text-transform:none;text-align:left}
.page_cover .page_title::before,.page_cover .page_title::after{content:"";position:absolute;top:0;right:0;bottom:0;clip-path:polygon(120px 0,100% 0,100% 100%,0 100%)}
.page_cover .page_title::before{z-index:-2;width:calc(46% + 12px);background:var(--rf-red-500)}
.page_cover .page_title::after{z-index:-1;width:46%;background:var(--rf-title-img,var(--rf-navy-800)) center/cover no-repeat}
/* Rows keep Xtra's site width so the banner lines up with the content below; the theme centres titles, so reset. */
.page_cover .page_title,.page_cover .page_title .row{text-align:left}
.page_cover .page_title .breadcrumbs_container{order:-1;margin-bottom:var(--rf-space-4)}
.page_cover .page_title .codevz-section-title{max-width:min(560px,48%);margin:0;color:var(--rf-on-navy);font:800 var(--rf-fs-h1)/1.1 var(--rf-font-display);letter-spacing:-.02em;text-align:left;text-transform:none;text-wrap:balance}
/* Breadcrumbs wrap instead of truncating at 180 px. */
.page_cover .breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:0;font:500 var(--rf-fs-small)/1.4 var(--rf-font-text);text-transform:none}
.page_cover .breadcrumbs a,.page_cover .breadcrumbs i{color:var(--rf-on-navy-muted)}
.page_cover .breadcrumbs a:hover{color:var(--rf-white);text-decoration:underline}
.page_cover .breadcrumbs .cz_br_current,.page_cover .breadcrumbs .inactive_l a{color:var(--rf-white)}
.page_cover .inactive_l{opacity:1}
.page_cover .inactive_l span{max-width:none;white-space:normal;overflow:visible;text-overflow:clip}
/* Per-page banner photo (graded WebP in assets/img). */
.rf-page-products{--rf-title-img:image-set(url(../img/title-products-1200.webp) 1x,url(../img/title-products-1600.webp) 2x)}
.rf-page-transformers{--rf-title-img:image-set(url(../img/title-transformers-1200.webp) 1x,url(../img/title-transformers-1600.webp) 2x)}
.rf-page-conductor-cables{--rf-title-img:image-set(url(../img/title-cables-1200.webp) 1x,url(../img/title-cables-1600.webp) 2x)}
.rf-page-bolts-fasteners{--rf-title-img:image-set(url(../img/title-bolts-1200.webp) 1x,url(../img/title-bolts-1600.webp) 2x)}
.rf-page-line-structures-stays{--rf-title-img:image-set(url(../img/title-structures-1200.webp) 1x,url(../img/title-structures-1600.webp) 2x)}
.rf-page-line-fittings-insulation{--rf-title-img:image-set(url(../img/title-fittings-1200.webp) 1x,url(../img/title-fittings-1600.webp) 2x)}
.rf-page-accessories-testing{--rf-title-img:image-set(url(../img/title-testing-1200.webp) 1x,url(../img/title-testing-1600.webp) 2x)}
.rf-page-request-a-quote{--rf-title-img:image-set(url(../img/title-quote-1200.webp) 1x,url(../img/title-quote-1600.webp) 2x)}
.rf-page-about-us{--rf-title-img:image-set(url(../img/title-about-1200.webp) 1x,url(../img/title-about-1600.webp) 2x)}
.rf-page-faq{--rf-title-img:image-set(url(../img/title-faq-1200.webp) 1x,url(../img/title-faq-1600.webp) 2x)}
.rf-page-contact-us{--rf-title-img:image-set(url(../img/title-contact-1200.webp) 1x,url(../img/title-contact-1600.webp) 2x)}
.rf-page-privacy-notice{--rf-title-img:image-set(url(../img/title-privacy-1200.webp) 1x,url(../img/title-privacy-1600.webp) 2x)}

/* 6. Block-editor pages: catalogue, quote, privacy ------------------------------ */
.rf-lead{margin-bottom:var(--rf-space-7);color:var(--rf-slate-700)}
.rf-grid,.rf-grid-families{margin:0 0 var(--rf-space-7)}
:is(.rf-grid,.rf-grid-families) > .wp-block-group__inner-container,:is(.rf-grid,.rf-grid-families):not(:has(> .wp-block-group__inner-container)){display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:auto;gap:var(--rf-grid-gap)}
/* No empty slots: a lone last card spans the row as a wide card, two last cards share it. */
:is(.rf-grid,.rf-grid-families) :is(.rf-card,.rf-family):last-child:nth-child(3n+1){grid-column:1 / -1}
:is(.rf-grid,.rf-grid-families) :is(.rf-card,.rf-family):last-child:nth-child(3n+2){grid-column:span 2}
@media (min-width:768px){
  :is(.rf-grid,.rf-grid-families) .rf-card:last-child:nth-child(3n+1) > .wp-block-group__inner-container{display:grid;grid-template-columns:48px minmax(0,1fr) auto;grid-template-rows:auto auto;grid-template-areas:"icon title price" "icon desc enquire";align-items:center;align-content:center;column-gap:24px;row-gap:8px}
  :is(.rf-grid,.rf-grid-families) .rf-card:last-child:nth-child(3n+1) > .wp-block-group__inner-container::before{grid-area:icon;align-self:start;margin:0}
  :is(.rf-grid,.rf-grid-families) .rf-card:last-child:nth-child(3n+1) h3{grid-area:title}
  :is(.rf-grid,.rf-grid-families) .rf-card:last-child:nth-child(3n+1) p:not(.rf-price){grid-area:desc}
  :is(.rf-grid,.rf-grid-families) .rf-card:last-child:nth-child(3n+1) .rf-price{grid-area:price;margin:0;padding:0;justify-self:end}
  :is(.rf-grid,.rf-grid-families) .rf-card:last-child:nth-child(3n+1) .wp-block-buttons{grid-area:enquire;margin:0;justify-self:end}
}
:is(.rf-card,.rf-family){position:relative;margin:0!important;padding:28px;background:var(--rf-white);border:1px solid var(--rf-line);border-radius:var(--rf-radius-md);box-shadow:var(--rf-shadow-sm);
  transition:transform var(--rf-dur) var(--rf-ease),box-shadow var(--rf-dur) var(--rf-ease)}
:is(.rf-card,.rf-family):hover{transform:translateY(-4px);box-shadow:var(--rf-shadow-md)}
:is(.rf-card,.rf-family) > .wp-block-group__inner-container,:is(.rf-card,.rf-family):not(:has(> .wp-block-group__inner-container)){display:flex;flex-direction:column;align-items:flex-start;gap:12px;height:100%}
/* Icon header: white line icon in a red square, one icon per product family. */
:is(.rf-card,.rf-family) > .wp-block-group__inner-container::before,:is(.rf-card,.rf-family):not(:has(> .wp-block-group__inner-container))::before{content:"";flex:none;width:48px;height:48px;margin-bottom:8px;border-radius:var(--rf-radius-xs);background:var(--rf-icon,var(--rf-ico-bolt)) center/24px no-repeat,var(--rf-red-500)}
.rf-page-transformers{--rf-icon:var(--rf-ico-bolt)}
.rf-page-conductor-cables{--rf-icon:var(--rf-ico-plug)}
.rf-page-bolts-fasteners{--rf-icon:var(--rf-ico-nut)}
.rf-page-line-structures-stays{--rf-icon:var(--rf-ico-pole)}
.rf-page-line-fittings-insulation{--rf-icon:var(--rf-ico-shield)}
.rf-page-accessories-testing{--rf-icon:var(--rf-ico-gauge)}
.rf-family:has(a[href*="/transformers/"]){--rf-icon:var(--rf-ico-bolt)}
.rf-family:has(a[href*="/conductor-cables/"]){--rf-icon:var(--rf-ico-plug)}
.rf-family:has(a[href*="/bolts-fasteners/"]){--rf-icon:var(--rf-ico-nut)}
.rf-family:has(a[href*="/line-structures-stays/"]){--rf-icon:var(--rf-ico-pole)}
.rf-family:has(a[href*="/line-fittings-insulation/"]){--rf-icon:var(--rf-ico-shield)}
.rf-family:has(a[href*="/accessories-testing/"]){--rf-icon:var(--rf-ico-gauge)}
:is(.rf-card,.rf-family) h3{margin:0;font-size:var(--rf-fs-h3)}
:is(.rf-card,.rf-family) h3 a{color:var(--rf-navy-900);text-decoration:none}
:is(.rf-card,.rf-family) h3 a:hover{color:var(--rf-red-600)}
:is(.rf-card,.rf-family) p{margin:0;color:var(--rf-slate-700);font-size:.9375rem;line-height:1.6}
:is(.rf-card,.rf-family) .wp-block-buttons{margin:auto 0 0}
.rf-card .rf-price{margin-top:auto;padding-top:8px;color:var(--rf-red-600);font:700 .75rem/1.2 var(--rf-font-text);letter-spacing:.12em;text-transform:uppercase}
.rf-card .rf-price + .wp-block-buttons{margin-top:0}
/* "What to include in your enquiry", quotation checklist, contact box */
:is(.rf-enquiry,.rf-contact-box){margin:0 0 var(--rf-space-6);padding:28px 32px;background:var(--rf-mist);border-left:4px solid var(--rf-red-500);border-radius:0 var(--rf-radius-md) var(--rf-radius-md) 0}
:is(.rf-enquiry,.rf-contact-box) h3{margin:0 0 12px;font-size:var(--rf-fs-h4)}
:is(.rf-enquiry,.rf-contact-box) p{margin:0 0 8px;color:var(--rf-slate-700);font-size:.9375rem}
:is(.rf-enquiry,.rf-contact-box) strong{color:var(--rf-navy-900)}
.rf-note{color:var(--rf-slate-500);font-size:var(--rf-fs-small);font-style:normal}
/* Navy quotation panel at the foot of each family page */
.rf-cta{position:relative;isolation:isolate;overflow:hidden;margin:var(--rf-space-8) 0 var(--rf-space-5);padding:clamp(28px,4vw,56px);border-radius:var(--rf-radius-lg);background:var(--rf-navy-900) var(--rf-lattice)}
.rf-cta::after{content:"";position:absolute;top:0;right:0;bottom:0;z-index:-1;width:22%;background:var(--rf-red-500);clip-path:polygon(64px 0,100% 0,100% 100%,0 100%)}
.rf-cta h2{max-width:22ch;margin:0 0 12px;color:var(--rf-on-navy);font-size:var(--rf-fs-h2)}
.rf-cta p{max-width:56ch;margin:0 0 var(--rf-space-5);color:var(--rf-on-navy-muted)}
.rf-cta hr,.rf-cta .wp-block-separator{display:none}
.rf-cta .wp-block-buttons{gap:var(--rf-space-4)}
.rf-back{margin-top:var(--rf-space-5)}
/* Request a Quote layout */
.rf-quote{gap:var(--rf-space-7);align-items:flex-start}
.rf-consent{color:var(--rf-slate-500);font-size:var(--rf-fs-small)}

/* 7. Contact Form 7 (styling only; forms, fields and mail untouched) ----------- */
.wpcf7 label{display:block;color:var(--rf-navy-900);font:600 var(--rf-fs-small)/1.3 var(--rf-font-text)}
.wpcf7 .wpcf7-form-control-wrap{display:block;margin-top:8px}
.wpcf7 .rf-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 var(--rf-space-5)}
.wpcf7 :is(input[type=text],input[type=email],input[type=tel],input[type=url],input[type=number],input[type=date],select,textarea).wpcf7-form-control{
  width:100%;min-height:48px;margin:0;padding:0 14px;border:1px solid var(--rf-input-border);border-radius:var(--rf-radius-sm);background-color:var(--rf-white);
  color:var(--rf-navy-900);font:400 1rem/1.4 var(--rf-font-text);box-shadow:none;transition:border-color var(--rf-dur-fast) var(--rf-ease),box-shadow var(--rf-dur-fast) var(--rf-ease)}
.wpcf7 textarea.wpcf7-form-control{min-height:132px;padding:12px 14px;resize:vertical}
.wpcf7 select.wpcf7-form-control{appearance:none;padding-right:44px;background:var(--rf-white) var(--rf-chevron) no-repeat right 14px center/18px}
.wpcf7 input[type=date].wpcf7-form-control{padding-right:12px}
.wpcf7 ::placeholder{color:var(--rf-slate-500);opacity:1}
/* Xtra forces a red focus border with !important; the focus ring is globe blue. */
.wpcf7 :is(input,select,textarea).wpcf7-form-control:focus{outline:none;border-color:var(--rf-globe-500)!important;box-shadow:inset 0 0 0 1px var(--rf-globe-500),var(--rf-focus-ring)}
.wpcf7 .wpcf7-not-valid{border-color:var(--rf-red-600)!important;background-color:var(--rf-red-50)}
.wpcf7 .wpcf7-not-valid-tip{margin-top:6px;color:var(--rf-red-600);font:500 var(--rf-fs-small)/1.4 var(--rf-font-text)}
.wpcf7 form .wpcf7-response-output{margin:var(--rf-space-5) 0 0;padding:14px 16px;border:1px solid var(--rf-line);border-left:4px solid var(--rf-navy-900);border-radius:var(--rf-radius-sm);background:var(--rf-mist);color:var(--rf-navy-900);font-size:var(--rf-fs-small)}
.wpcf7 form.invalid .wpcf7-response-output,.wpcf7 form.failed .wpcf7-response-output,.wpcf7 form.unaccepted .wpcf7-response-output{border-left-color:var(--rf-red-600);background:var(--rf-red-50)}
.wpcf7 form.sent .wpcf7-response-output{border-left-color:var(--rf-navy-900)}
/* File upload: a styled "Choose file" button inside a dashed drop area. */
.wpcf7 input[type=file].wpcf7-form-control{width:100%;padding:14px;border:1.5px dashed var(--rf-input-border);border-radius:var(--rf-radius-sm);background:var(--rf-mist);color:var(--rf-slate-500);font:400 .9375rem var(--rf-font-text);cursor:pointer}
.wpcf7 input[type=file].wpcf7-form-control::file-selector-button{min-height:44px;margin-right:12px;padding:0 16px;border:2px solid var(--rf-navy-900);border-radius:var(--rf-radius-sm);background:var(--rf-white);color:var(--rf-navy-900);font:600 .9375rem var(--rf-font-text);cursor:pointer;transition:background-color var(--rf-dur-fast) var(--rf-ease),color var(--rf-dur-fast) var(--rf-ease)}
.wpcf7 input[type=file].wpcf7-form-control:hover::file-selector-button{background:var(--rf-navy-900);color:var(--rf-white)}
/* Consent checkbox: 22 px box, 44 px tap row. */
.wpcf7 .wpcf7-acceptance .wpcf7-list-item{margin:0}
.wpcf7 .wpcf7-acceptance label{display:flex;align-items:flex-start;gap:12px;min-height:44px;color:var(--rf-slate-700);font-weight:400;font-size:.9375rem;line-height:1.5;cursor:pointer}
/* Xtra's core.css forces width:auto/margin/padding with !important on every checkbox. */
.wpcf7 .wpcf7-acceptance input[type=checkbox]{flex:none;width:22px!important;height:22px;margin:0!important;padding:0!important;accent-color:var(--rf-red-500)}
.wpcf7 .wpcf7-acceptance a{color:var(--rf-navy-900);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.wpcf7 .wpcf7-submit{margin-top:var(--rf-space-2)}
.wpcf7 .wpcf7-spinner{margin:0 0 0 12px;vertical-align:middle}

/* 8. Elementor components (classes set in each widget's Advanced → CSS Classes) - */
/* Pages rebuilt with these containers run full width (body class rf-full, set in functions.php): Xtra's centred
   .row would otherwise cut every band to the content width. The containers box their own content. */
.rf-full #page_content > .row{width:100%!important;max-width:none;padding-inline:0}
/* Layout. Inside the design's own containers Elementor's default 10 px padding and 20 px gaps are reset, and
   each component sets its spacing from the tokens. Top-level containers get the page gutter and width. */
:where(.rf-hero,.rf-section,.rf-band,.rf-navy,.rf-quote-band):is(.e-con),
:where(.rf-hero,.rf-section,.rf-band,.rf-navy,.rf-quote-band) .e-con{--padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px;--gap:0px;--row-gap:0px;--column-gap:0px;--widgets-spacing:0px;--widgets-spacing-row:0px;--widgets-spacing-column:0px;--container-max-width:var(--rf-container)}
:where(.rf-hero,.rf-section,.rf-band,.rf-navy,.rf-quote-band).e-con.e-parent{--padding-left:var(--rf-gutter);--padding-right:var(--rf-gutter)}
.rf-section,.rf-band,.rf-navy{--padding-top:var(--rf-section-y);--padding-bottom:var(--rf-section-y)}
.rf-section--tight,.rf-stats,.rf-quote-band{--padding-top:var(--rf-section-y-tight);--padding-bottom:var(--rf-section-y-tight)}
.rf-section--mist{background-color:var(--rf-mist)}
.rf-navy{background-color:var(--rf-navy-900);background-image:var(--rf-lattice)}
:where(.rf-hero,.rf-section,.rf-band,.rf-navy,.rf-quote-band) .elementor-widget-text-editor p:last-child{margin-bottom:0}
/* Elementor's heading widget sets line-height 1 and the kit's primary weight (800) on every title. */
.elementor-widget-heading h1.elementor-heading-title{line-height:1.1}
.elementor-widget-heading h2.elementor-heading-title{font-weight:700;line-height:1.15}
.elementor-widget-heading h3.elementor-heading-title{font-weight:700;line-height:1.25}
.elementor-widget-heading h4.elementor-heading-title{font-weight:600;line-height:1.3}
/* Section header: eyebrow, H2 and lead; an optional action sits on the heading row. */
.e-con.rf-head{flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:var(--rf-space-5) var(--rf-space-7);margin-bottom:var(--rf-space-7)}
.e-con.rf-head__text{--width:auto;width:auto;flex:1 1 480px;max-width:720px}
:is(.rf-head__text,.rf-band,.rf-statement,.rf-faq__main) .rf-lead{margin-top:var(--rf-space-4)}
.e-con.rf-actions{flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--rf-space-4);margin-top:var(--rf-space-6)}
.rf-center{text-align:center}
.rf-center > .e-con-inner{align-items:center}
.rf-center .rf-eyebrow,.rf-center .rf-eyebrow .elementor-heading-title{justify-content:center}
.rf-center .rf-lead{margin-inline:auto}
.rf-center .e-con.rf-actions{justify-content:center}
/* Hero: photo widget behind, navy scrim, one headline. */
.rf-hero{position:relative;isolation:isolate;overflow:hidden;background-color:var(--rf-navy-900)}
.rf-hero.e-con{--padding-top:clamp(96px,4rem + 6vw,168px);--padding-bottom:clamp(112px,4rem + 8vw,184px);min-height:min(86vh,760px);justify-content:center}
.rf-hero::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--rf-scrim-hero);pointer-events:none}
:is(.rf-hero .rf-hero__media,.rf-band .rf-band__media){position:absolute!important;inset:0;z-index:-2;width:100%!important;max-width:none;height:100%;margin:0}
:is(.rf-hero .rf-hero__media,.rf-band .rf-band__media) :is(.elementor-widget-container,img){width:100%;height:100%;margin:0}
:is(.rf-hero .rf-hero__media,.rf-band .rf-band__media) img{object-fit:cover;max-width:none}
.rf-hero .rf-hero__media img{object-position:68% 35%}
.e-con.rf-hero__copy{max-width:780px}
.rf-hero .rf-display .elementor-heading-title{max-width:19ch}
.rf-hero .rf-lead{margin-top:var(--rf-space-5)}
.rf-hero .rf-wire{position:absolute!important;left:0;right:0;bottom:22px;width:100%!important;margin:0;pointer-events:none}
.rf-wire svg{display:block;width:100%;height:44px;color:var(--rf-red-500)}
.rf-wire path{fill:none;stroke:currentColor;stroke-width:2;stroke-dasharray:1;stroke-dashoffset:1;animation:rf-wire 900ms var(--rf-ease) 250ms forwards}
@keyframes rf-wire{to{stroke-dashoffset:0}}
/* Band: photo with the flat navy scrim (bill-of-materials, Why Ringfair). */
.rf-band{position:relative;isolation:isolate;overflow:hidden;background-color:var(--rf-navy-900)}
.rf-band::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--rf-scrim-band);pointer-events:none}
/* Category tiles */
.rf-tile{position:relative;isolation:isolate;overflow:hidden;aspect-ratio:4/5;border-radius:var(--rf-radius-md);background:var(--rf-navy-900);color:var(--rf-on-navy-muted);text-decoration:none;box-shadow:var(--rf-shadow-sm);transition:transform var(--rf-dur) var(--rf-ease),box-shadow var(--rf-dur) var(--rf-ease)}
.rf-tile::before{content:"";position:absolute;inset:0;z-index:1;background:var(--rf-scrim-tile);pointer-events:none}
.rf-tile::after{content:"";position:absolute;left:0;bottom:0;z-index:3;width:100%;height:4px;background:var(--rf-red-500);transform:scaleX(0);transform-origin:left;transition:transform var(--rf-dur-slow) var(--rf-ease)}
.rf-tile .rf-tile__img{position:absolute!important;inset:0;z-index:0;width:100%!important;height:100%;margin:0}
.rf-tile .rf-tile__img :is(.elementor-widget-container,img){width:100%;height:100%;margin:0}
.rf-tile .rf-tile__img img{object-fit:cover;max-width:none;transition:transform var(--rf-dur-slow) var(--rf-ease)}
.rf-tile .rf-tile__icon{position:absolute!important;top:20px;left:20px;z-index:2;width:auto!important;margin:0}
.rf-tile .rf-tile__icon .elementor-icon{display:grid;place-items:center;width:48px;height:48px;padding:0;border-radius:var(--rf-radius-xs);background:var(--rf-red-500);color:var(--rf-white);font-size:24px}
.rf-tile .rf-tile__body{position:absolute!important;left:0;right:0;bottom:0;z-index:2;padding:24px 24px 28px}
.rf-tile .rf-tile__title .elementor-heading-title{color:var(--rf-white);font-size:var(--rf-fs-h3)}
.rf-tile .rf-tile__desc{margin-top:var(--rf-space-2);color:var(--rf-on-navy-muted);font-size:.9375rem;line-height:1.5}
.rf-tile .rf-tile__go{margin-top:var(--rf-space-4)}
.rf-tile .rf-tile__go .elementor-heading-title{color:var(--rf-white);font:600 .9375rem/1.3 var(--rf-font-text)}
.rf-arrow{display:inline-block;margin-left:4px;color:var(--rf-red-500);transition:transform var(--rf-dur) var(--rf-ease)}
/* On the dark tiles the arrow is white: red on the navy scrim measures under 4.5:1. */
.rf-tile .rf-arrow{color:var(--rf-white)}
.rf-tile:is(:hover,:focus-visible) .rf-arrow{transform:translateX(3px)}
.e-con.rf-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--rf-grid-gap)}
.rf-tile:is(:hover,:focus-visible){transform:translateY(-4px);box-shadow:var(--rf-shadow-lg)}
.rf-tile:is(:hover,:focus-visible) .rf-tile__img img{transform:scale(1.04)}
.rf-tile:is(:hover,:focus-visible)::after{transform:scaleX(1)}
/* Stats band */
.rf-stat{position:relative;padding-top:24px;border-top:1px solid var(--rf-navy-700)}
.rf-stat::before{content:"";position:absolute;top:-2px;left:0;width:32px;height:3px;background:var(--rf-red-500)}
.rf-count .elementor-heading-title{color:var(--rf-white);font:800 var(--rf-fs-stat)/1 var(--rf-font-display);letter-spacing:-.02em;font-variant-numeric:tabular-nums lining-nums}
.rf-count .rf-plus{color:var(--rf-red-500)}
.rf-stat__label .elementor-heading-title{color:var(--rf-on-navy-muted);font:600 .8125rem/1.3 var(--rf-font-text);letter-spacing:.14em;text-transform:uppercase}
/* Client strip: typographic marks in equal cells */
.rf-clients ul{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;margin:0;padding:0;list-style:none;border:1px solid var(--rf-line);background:var(--rf-line)}
.rf-clients li{display:grid;place-items:center;min-height:112px;margin:0;padding:16px;background:var(--rf-mist);color:var(--rf-navy-700);font:700 1.125rem/1.25 var(--rf-font-display);text-align:center;transition:background-color var(--rf-dur-fast) var(--rf-ease),color var(--rf-dur-fast) var(--rf-ease)}
.rf-clients li:hover{background:var(--rf-white);color:var(--rf-navy-900)}
/* Quote band with the red slash */
.rf-quote-band{position:relative;isolation:isolate;overflow:hidden;background-color:var(--rf-navy-900);background-image:var(--rf-lattice)}
.rf-quote-band::after{content:"";position:absolute;top:0;right:0;bottom:0;z-index:-1;width:40%;background:var(--rf-red-500);clip-path:polygon(96px 0,100% 0,100% 100%,0 100%)}

/* Stats band layout: heading left, three stats right. */
.rf-stats > .e-con-inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);align-items:end;gap:var(--rf-space-7)}
.e-con.rf-stats__head{align-self:end}
.e-con.rf-stats__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--rf-space-6)}
.rf-stat .rf-stat__label{margin-top:var(--rf-space-2)}
/* Statement band: one H2 and the tagline line, the photo beside them. */
.rf-statement > .e-con-inner{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:var(--rf-space-8)}
.e-con.rf-statement__text,.rf-statement .rf-statement__img{align-self:center}
.rf-statement__img img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:var(--rf-radius-lg);box-shadow:var(--rf-shadow-md)}
.rf-section--tight .e-con.rf-head{margin-bottom:var(--rf-space-6)}
/* Quote band layout: heading left, actions on the red slash. */
.rf-quote-band > .e-con-inner{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--rf-space-6) var(--rf-space-8)}
.rf-quote-band > .e-con-inner > .e-con{align-self:center}
.rf-quote-band h2.elementor-heading-title{max-width:20ch}
.e-con.rf-quote-band__actions{flex-direction:column;align-items:flex-start;gap:var(--rf-space-3);padding-left:var(--rf-space-7)}
.rf-quote-band__phone .elementor-heading-title{font:700 1.125rem/1.3 var(--rf-font-text)}
.rf-quote-band__phone a{color:var(--rf-white);text-decoration:underline;text-decoration-color:var(--rf-on-navy-rule);text-underline-offset:4px}
/* Split: copy beside media (Our story, Mission & vision, ordering steps, Get in touch). */
.rf-split > .e-con-inner{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--rf-space-8)}
.rf-split > .e-con-inner > *{align-self:center}
.rf-split__text .rf-lead{margin-top:var(--rf-space-4)}
.rf-split__img img{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:var(--rf-radius-lg);box-shadow:var(--rf-shadow-md)}
/* Check list: red squares with a white tick, in two even columns. */
.rf-checks ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--rf-space-3) var(--rf-space-5);margin:var(--rf-space-6) 0 0;padding:0;list-style:none}
.rf-checks li{display:flex;align-items:center;gap:var(--rf-space-3);margin:0;color:var(--rf-navy-900);font:600 1rem/1.35 var(--rf-font-text)}
.rf-checks li::before{content:"";flex:none;width:24px;height:24px;border-radius:var(--rf-radius-xs);background:var(--rf-red-500) var(--rf-check) center/14px no-repeat}
/* Value rows: title and one-line note under a rule with the red segment. */
.rf-values ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--rf-space-6) var(--rf-space-5);margin:var(--rf-space-6) 0 0;padding:0;list-style:none}
.rf-values li{position:relative;margin:0;padding-top:var(--rf-space-4);border-top:2px solid var(--rf-line)}
.rf-values li::before{content:"";position:absolute;top:-2px;left:0;width:32px;height:2px;background:var(--rf-red-500)}
.rf-values strong{display:block;color:var(--rf-navy-900);font:700 1.0625rem/1.3 var(--rf-font-display)}
.rf-values span{display:block;margin-top:var(--rf-space-1);color:var(--rf-slate-500);font-size:.9375rem;line-height:1.45}
/* About: the opening pair (two photos, one offset) and the product-line photo grid. */
.e-con.rf-pair{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:repeat(12,minmax(0,1fr));aspect-ratio:1/1}
.rf-pair .rf-pair__a{grid-column:1 / 9;grid-row:1 / 9}
.rf-pair .rf-pair__b{z-index:1;grid-column:5 / 13;grid-row:5 / 13}
.rf-pair :is(.elementor-widget-container,img){height:100%}
.rf-pair img{display:block;width:100%;object-fit:cover;border-radius:var(--rf-radius-lg);box-shadow:var(--rf-shadow-md)}
.rf-pair .rf-pair__b img{box-shadow:0 0 0 8px var(--rf-white),var(--rf-shadow-lg)}
.e-con.rf-photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--rf-space-3)}
.rf-photo-grid img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:var(--rf-radius-md)}
/* Stats with four figures (About): two by two beside the heading. */
.rf-stats--4 .e-con.rf-stats__grid{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:var(--rf-space-7)}
.rf-stats__head .rf-lead{margin-top:var(--rf-space-4)}
.rf-quote-band .rf-lead{margin-top:var(--rf-space-3);max-width:52ch}
/* Accordions (Codevz widget; open and close behaviour unchanged): white rows, navy questions,
   a red square with plus/minus, and a red bar on the open item. */
.rf-acc .cz_acc > div{border-top:1px solid var(--rf-line)}
.rf-acc .cz_acc > div > div{position:relative;margin:0;border-bottom:1px solid var(--rf-line);background:var(--rf-white)}
.rf-acc .cz_acc_child{display:flex;align-items:center;justify-content:space-between;gap:var(--rf-space-4);margin:0;padding:var(--rf-space-5) 0 var(--rf-space-5) var(--rf-space-5);border:0;background:none;color:var(--rf-navy-900);font:600 1.125rem/1.35 var(--rf-font-display);cursor:pointer;transition:color var(--rf-dur-fast) var(--rf-ease)}
.rf-acc .cz_acc_child:hover{color:var(--rf-red-600)}
/* Codevz toggles its two icon elements with inline display values; they are hidden and one red square is drawn
   instead, a plus when closed and a minus when open (keyed off its cz_isOpen class). */
.rf-acc .cz_acc_child > i{display:none!important}
.rf-acc .cz_acc_child::after{content:"";flex:none;width:32px;height:32px;border-radius:var(--rf-radius-xs);background-color:var(--rf-red-500);background-image:linear-gradient(var(--rf-white),var(--rf-white)),linear-gradient(var(--rf-white),var(--rf-white));background-size:12px 2px,2px 12px;background-position:center;background-repeat:no-repeat;transition:background-size var(--rf-dur) var(--rf-ease)}
.rf-acc .cz_isOpen > .cz_acc_child::after{background-size:12px 2px,2px 0}
.rf-acc .cz_isOpen::before{content:"";position:absolute;top:0;bottom:0;left:0;width:4px;background:var(--rf-red-500)}
.rf-acc .cz_acc_child_content{margin:0;padding:0 calc(32px + var(--rf-space-5)) var(--rf-space-5) var(--rf-space-5);border:0;background:none;color:var(--rf-slate-700);font-size:1rem;line-height:1.65}
.rf-acc .cz_acc_child_content p:last-child{margin-bottom:0}
/* FAQs: questions beside a sticky "Ask us" panel. */
.rf-faq > .e-con-inner{display:grid;grid-template-columns:minmax(0,8fr) minmax(0,4fr);align-items:start;gap:var(--rf-space-8)}
.e-con.rf-faq__aside{position:sticky;top:calc(var(--rf-sticky-offset) + var(--rf-space-6))}
.e-con.rf-faq__group{margin-top:var(--rf-space-7)}
.rf-faq__sub{margin:var(--rf-space-1) 0 var(--rf-space-4);color:var(--rf-slate-500);font-size:.9375rem}
.rf-faq__img img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--rf-radius-lg)}
.e-con.rf-form-panel{--padding-top:var(--rf-space-6);--padding-bottom:var(--rf-space-6);--padding-left:var(--rf-space-6);--padding-right:var(--rf-space-6);border:1px solid var(--rf-line);border-radius:var(--rf-radius-lg);background:var(--rf-white);box-shadow:var(--rf-shadow-sm)}
.rf-faq__aside .e-con.rf-form-panel{margin-top:var(--rf-space-5)}
/* The theme's clearfix pseudo-elements on the form would take the first grid cell. */
.rf-form--2col .wpcf7-form::before,.rf-form--2col .wpcf7-form::after{display:none}
.rf-form--2col .wpcf7-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--rf-space-5)}
.rf-form--2col .wpcf7-form > :is(fieldset,.wpcf7-response-output,p.rf-consent,p:has(textarea),p:has(.wpcf7-submit)){grid-column:1 / -1}
/* Contact: three info cards (each one link), and the map toned down to the palette. */
.e-con.rf-contact-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--rf-grid-gap)}
.e-con.rf-contact-card{flex-direction:row;flex-wrap:nowrap;align-items:center;gap:var(--rf-space-4);--padding-top:var(--rf-space-5);--padding-bottom:var(--rf-space-5);--padding-left:var(--rf-space-5);--padding-right:var(--rf-space-5);border:1px solid var(--rf-line);border-radius:var(--rf-radius-md);background:var(--rf-white);box-shadow:var(--rf-shadow-sm);color:inherit;text-decoration:none;transition:transform var(--rf-dur) var(--rf-ease),box-shadow var(--rf-dur) var(--rf-ease)}
.rf-contact-card:is(:hover,:focus-visible){transform:translateY(-4px);box-shadow:var(--rf-shadow-md)}
.rf-contact-card .rf-contact-card__icon{width:auto!important;margin:0}
.rf-contact-card .e-con.rf-contact-card__body{--width:auto;flex:1 1 auto;min-width:0}
.rf-contact-card .rf-contact-card__icon .elementor-icon{display:grid;place-items:center;width:48px;height:48px;padding:0;border-radius:var(--rf-radius-xs);background:var(--rf-red-500);color:var(--rf-white);font-size:20px}
.rf-contact-card__title .elementor-heading-title{font-size:1.125rem}
.rf-contact-card__text{margin-top:2px;color:var(--rf-slate-700)}
.rf-map-band.e-con.e-parent{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px}
.rf-map iframe{display:block;width:100%;filter:grayscale(1) contrast(1.05)}
/* Links inside running text are underlined, not marked by colour alone. */
#page_content :is(p,li) a:not([class]),.wpcf7 .wpcf7-list-item-label a{text-decoration:underline;text-underline-offset:3px}
/* 9. Footer, back-to-top, phone bar ---------------------------------------------- */
#site_footer.page_footer{margin-top:0;background-color:var(--rf-navy-950)}
#site_footer .cz_middle_footer{padding-top:var(--rf-section-y-tight);padding-bottom:var(--rf-space-7);background:var(--rf-navy-900)}
#site_footer .cz_middle_footer,#site_footer .cz_middle_footer p,#site_footer .cz_middle_footer a{color:var(--rf-on-navy-muted);font-size:.9375rem}
#site_footer .cz_middle_footer a:hover{color:var(--rf-white)}
#site_footer .rf-footer-title{margin:0 0 var(--rf-space-4);color:var(--rf-white);font:700 1rem/1.3 var(--rf-font-display);letter-spacing:.02em;text-transform:none}
#site_footer .rf-footer-links{margin:0;padding:0;list-style:none}
#site_footer .rf-footer-links li{margin:0 0 var(--rf-space-2)}
#site_footer .footer_2{background:var(--rf-navy-950)}
#site_footer .footer_2,#site_footer .footer_2 a,#site_footer .footer_2 .cz_elm,#site_footer .footer_2 .cz_elm *{color:var(--rf-on-navy-muted)!important}
#site_footer .footer_2 a:hover,#site_footer .footer_2 .cz_elm a:hover *{color:var(--rf-white)!important}
i.backtotop{width:44px;height:44px;line-height:44px;right:16px;bottom:16px;border-radius:var(--rf-radius-xs);background-color:var(--rf-navy-900);color:var(--rf-white);box-shadow:var(--rf-shadow-md)}
i.backtotop:hover{background-color:var(--rf-red-500);color:var(--rf-white)}
.xtra-fixed-mobile-nav{min-height:var(--rf-mobile-nav-h);padding-bottom:env(safe-area-inset-bottom);background-color:var(--rf-navy-900);box-shadow:0 -1px 0 var(--rf-navy-700)}
.xtra-fixed-mobile-nav > a{position:relative;color:var(--rf-white)}
.xtra-fixed-mobile-nav > a i,.xtra-fixed-mobile-nav > a img{color:var(--rf-white)}
.xtra-fixed-mobile-nav > a.xtra-active,.xtra-fixed-mobile-nav > a:hover{background-color:var(--rf-navy-800)}
.xtra-fixed-mobile-nav > a.xtra-active::before{content:"";position:absolute;top:0;left:20%;right:20%;height:2px;background:var(--rf-red-500)}

/* 10. Responsive ---------------------------------------------------------------- */
@media (max-width:1023px){
  .rf-hero::before{background:var(--rf-scrim-hero-mobile)}
  .rf-hero.e-con{--padding-top:clamp(160px,30vw,260px);--padding-bottom:72px;min-height:0;justify-content:flex-end}
  .rf-tile{aspect-ratio:1/1}
  .e-con.rf-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rf-stats > .e-con-inner{grid-template-columns:1fr}
  .rf-statement > .e-con-inner{gap:var(--rf-space-7)}
  .rf-split > .e-con-inner{gap:var(--rf-space-7)}
  .rf-faq > .e-con-inner{grid-template-columns:1fr}
  .e-con.rf-faq__aside{position:static}
  .e-con.rf-contact-card{flex-direction:column;align-items:flex-start}
  /* Phone bar: slide away while a form field has focus, so it never covers what you type. */
  body:has(:is(input,textarea,select):focus) .xtra-fixed-mobile-nav{transform:translateY(110%)}
  .xtra-fixed-mobile-nav{transition:transform var(--rf-dur) var(--rf-ease)}
  :is(.rf-grid,.rf-grid-families) > .wp-block-group__inner-container,:is(.rf-grid,.rf-grid-families):not(:has(> .wp-block-group__inner-container)){grid-template-columns:repeat(2,minmax(0,1fr))}
  :is(.rf-grid,.rf-grid-families) :is(.rf-card,.rf-family):last-child:nth-child(3n+1),:is(.rf-grid,.rf-grid-families) :is(.rf-card,.rf-family):last-child:nth-child(3n+2){grid-column:auto}
  :is(.rf-grid,.rf-grid-families) :is(.rf-card,.rf-family):last-child:nth-child(odd){grid-column:1 / -1}
  .page_cover .page_title::before{width:calc(40% + 12px)}
  .page_cover .page_title::after{width:40%}
  .page_cover .page_title .codevz-section-title{max-width:56%}
  .rf-clients ul{grid-template-columns:repeat(3,1fr)}
  .rf-quote-band::after{width:34%}
  #site_footer .cz_middle_footer > .row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--rf-space-6)}
  #site_footer .cz_middle_footer > .row > .col{width:auto;float:none;margin:0;padding:0}
  i.backtotop{bottom:calc(var(--rf-mobile-nav-h) + 16px + env(safe-area-inset-bottom))}
  /* Xtra clears the fixed phone bar with an inline margin under the footer, which shows the white body;
     clear it with navy padding inside the footer instead. */
  #site_footer.page_footer{margin-bottom:0!important;padding-bottom:calc(var(--rf-mobile-nav-h) + env(safe-area-inset-bottom))}
}
@media (max-width:767px){
  :is(.rf-grid,.rf-grid-families) > .wp-block-group__inner-container,:is(.rf-grid,.rf-grid-families):not(:has(> .wp-block-group__inner-container)){grid-template-columns:1fr;grid-auto-rows:auto}
  :is(.rf-grid,.rf-grid-families) :is(.rf-card,.rf-family):last-child:nth-child(odd){grid-column:auto}
  .wpcf7 .rf-form-grid{grid-template-columns:1fr}
  .wpcf7 .wpcf7-submit{width:100%}
  .page_cover .page_title{min-height:0;padding-block:40px 44px;border-bottom:6px solid var(--rf-red-500)}
  .page_cover .page_title::before,.page_cover .page_title::after{display:none}
  .page_cover .page_title .codevz-section-title{max-width:none}
  .rf-cta::after{display:none}
  .rf-clients ul{grid-template-columns:1fr 1fr}
  .rf-clients li{min-height:84px;font-size:1rem}
  .rf-clients li:last-child{grid-column:1 / -1}
  .rf-quote-band::after{top:auto;width:100%;height:150px;clip-path:polygon(0 32px,100% 0,100% 100%,0 100%)}
  #site_footer .cz_middle_footer > .row{grid-template-columns:1fr}
  .e-con.rf-head{flex-direction:column;align-items:flex-start}
  .e-con.rf-head__text{flex:none;max-width:none}
  /* Category tiles become compact rows: thumbnail, name, description, chevron (all six fit in ~700 px). */
  .e-con.rf-tiles{grid-template-columns:1fr;gap:var(--rf-space-3)}
  .e-con.rf-tile{display:grid;grid-template-columns:88px minmax(0,1fr) 12px;align-items:center;gap:var(--rf-space-4);aspect-ratio:auto;padding:var(--rf-space-3) var(--rf-space-5) var(--rf-space-3) var(--rf-space-3);background:var(--rf-white);border:1px solid var(--rf-line);box-shadow:none}
  .rf-tile::before,.rf-tile .rf-tile__icon,.rf-tile .rf-tile__go{display:none}
  .rf-tile .rf-tile__img{position:static!important;width:88px!important;height:88px;overflow:hidden;border-radius:var(--rf-radius-sm)}
  .rf-tile .rf-tile__body{position:static!important;padding:0}
  .rf-tile .rf-tile__title .elementor-heading-title{color:var(--rf-navy-900);font-size:1.0625rem}
  .rf-tile .rf-tile__desc{margin-top:var(--rf-space-1);color:var(--rf-slate-500);font-size:.875rem;line-height:1.45}
  .rf-tile::after,.rf-tile:is(:hover,:focus-visible)::after{position:static;grid-column:3;width:10px;height:10px;background:none;border:solid var(--rf-red-500);border-width:2px 2px 0 0;transform:rotate(45deg);transition:none}
  .rf-tile:is(:hover,:focus-visible){transform:none;box-shadow:var(--rf-shadow-sm)}
  .e-con.rf-stats__grid{grid-template-columns:1fr}
  .rf-statement > .e-con-inner{grid-template-columns:1fr}
  .rf-statement__img img{aspect-ratio:4/3}
  .rf-quote-band > .e-con-inner{grid-template-columns:1fr}
  /* The red slash moves under the actions, so it never sits behind the heading or copy. */
  .rf-quote-band::after{display:none}
  .rf-quote-band.e-con{--padding-bottom:0px}
  .e-con.rf-quote-band__actions{position:relative;isolation:isolate;--width:auto;width:auto;margin:0 calc(var(--rf-gutter) * -1);--padding-top:48px;--padding-bottom:var(--rf-section-y-tight);--padding-left:var(--rf-gutter);--padding-right:var(--rf-gutter)}
  .e-con.rf-quote-band__actions::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--rf-red-500);clip-path:polygon(0 28px,100% 0,100% 100%,0 100%)}
  .rf-split > .e-con-inner{grid-template-columns:1fr;gap:var(--rf-space-6)}
  .rf-checks ul,.rf-values ul{grid-template-columns:1fr}
  .e-con.rf-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rf-stats--4 .e-con.rf-stats__grid{grid-template-columns:1fr}
  .e-con.rf-contact-cards{grid-template-columns:1fr}
  .e-con.rf-contact-card{flex-direction:row;align-items:center}
  .rf-form--2col .wpcf7-form{grid-template-columns:1fr}
  .rf-acc .cz_acc_child{padding-left:var(--rf-space-4);font-size:1.0625rem}
  .rf-acc .cz_acc_child_content{padding:0 var(--rf-space-4) var(--rf-space-5)}
}

/* 11. Motion -------------------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .rf-wire path{stroke-dashoffset:0}
}
