/* Design token overrides (see docs/design-system.md). Loaded after the imported stylesheets, so edit values here. */
.gf-site-kit-6{--e-global-typography-text-font-family:var(--text-font)} /* paragraphs use Inter; headings keep League Spartan */
.gf-honeypot{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;overflow:hidden!important}
.gf-form-notice:not(:empty){padding:16px;margin-top:18px;border:1px solid #b5cadf;border-radius:4px;background:#eef6ff;color:#12365b;font-size:16px;line-height:1.5}
.gf-form-notice[data-state=success]{background:#edf8ee;color:#1b592c;border-color:#b4d8bb}.gf-form-notice[data-state=error]{background:#fff1ef;color:#8f2424;border-color:#e9bcb7}
form[aria-busy=true] button{opacity:.65;cursor:wait}.wpr-loader-hidden{display:none!important}
.outer-menu .gf-expanded>.sub-menu{display:block!important;max-height:none!important;opacity:1!important;visibility:visible!important}
.gf-comparison{position:relative;overflow:hidden}.gf-comparison img{display:block;width:100%;height:100%;object-fit:cover}.gf-comparison img:first-of-type{position:relative}.gf-comparison img:nth-of-type(2){position:absolute;inset:0;clip-path:inset(0 0 0 var(--reveal,50%))}.gf-comparison-range{position:absolute;left:5%;bottom:24px;width:90%;z-index:5;accent-color:#1064bc;cursor:ew-resize}
.gf-site-widget-ucaddon_uc_before_after .uc_before_after{visibility:visible!important}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
/* Keep desktop submenus independent of the imported top-level top-level typography. */
.gf-site-nav-menu--main .menu-item-has-children{position:relative}
.gf-site-nav-menu--main .menu-item-has-children>.sub-menu{position:absolute;left:0;top:100%;width:290px!important;min-width:0!important;max-width:calc(100vw - 32px);margin:0!important;padding:8px!important;z-index:100;display:none!important;background:#fff;border:1px solid #e2edf3;border-radius:0 0 8px 8px;box-shadow:0 12px 28px #132c3a26;box-sizing:border-box}
.gf-site-nav-menu--main .menu-item-has-children.gf-expanded>.sub-menu{display:block!important}
.gf-site-nav-menu--main .sub-menu>li{width:100%;margin:0!important;border:0!important}
.gf-site-nav-menu--main .sub-menu a.gf-site-sub-item{display:block!important;padding:12px 16px!important;font-size:16px!important;line-height:1.45!important;font-weight:600!important;letter-spacing:normal!important;white-space:normal!important;color:#34383c!important;border:0!important;border-radius:4px;overflow-wrap:break-word}
.gf-site-nav-menu--main .sub-menu a.gf-site-sub-item:hover,.gf-site-nav-menu--main .sub-menu a.gf-site-sub-item:focus-visible{background:#eef9ff!important;color:#005b8e!important}
/* Preserve contrast for the current page, including hover and keyboard focus. */
.gf-site-nav-menu--main .sub-menu a.gf-site-sub-item[aria-current="page"],.gf-site-nav-menu--main .sub-menu a.gf-site-sub-item.gf-site-item-active{background:#005b8e!important;color:#fff!important}
.gf-site-nav-menu--main .menu-item-has-children>a:focus-visible,.gf-site-nav-menu--main .sub-menu a:focus-visible{outline:2px solid #005b8e;outline-offset:-2px}
.gf-site-nav-menu--main .menu-item-has-children.gf-expanded>a .sub-arrow{transform:rotate(180deg)}
.ue-audio-player audio{display:block;width:100%;max-width:420px;margin:12px auto}.swiper{overflow:hidden}
/* Pointer capture maps dragging anywhere on the image directly to the divider. */
.wpr-ba-image-container{touch-action:pan-y;cursor:ew-resize;--gf-reveal:50%}
.wpr-ba-image-container .wpr-ba-image-1 img{display:block}
.wpr-ba-image-container .wpr-ba-image-2{inset:0!important;width:100%!important;clip-path:inset(0 0 0 var(--gf-reveal))}
.wpr-ba-image-container .wpr-ba-image-2 img{inset:0!important;width:100%!important;height:100%!important;object-fit:cover}
.wpr-ba-image-container .wpr-ba-divider{left:var(--gf-reveal)!important;width:4px!important;transform:translateX(-50%);background:#a5dfff;pointer-events:none}
.wpr-ba-image-container .wpr-ba-divider-icons{width:44px!important;height:44px!important;min-width:44px;align-items:center;justify-content:center;border:2px solid #fff;border-radius:50%;background:#005b8e!important;color:#fff;box-shadow:0 2px 8px #0003}
.wpr-ba-image-container .wpr-ba-divider-icons:before,.wpr-ba-image-container .wpr-ba-divider-icons:after{display:none!important}
.wpr-ba-image-container .wpr-ba-divider-icons i{font-size:18px!important;color:#fff!important}
.wpr-ba-image-container .wpr-ba-label{pointer-events:none}
.gf-ba-range{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;opacity:0!important;pointer-events:none!important;margin:0!important}
.wpr-ba-image-container:focus-within{outline:3px solid #005b8e;outline-offset:4px}
.uc_material_accordion .uc_ac_box:not(.gf-accordion-open)>.uc_content{display:none!important}.uc_material_accordion .gf-accordion-open>.uc_content{display:block!important;height:auto!important}.uc_material_accordion .gf-accordion-open .uc_dactive,.uc_material_accordion .uc_ac_box:not(.gf-accordion-open) .uc_active{display:none!important}.uc_material_accordion .gf-accordion-open .uc_active{display:inline-block!important}
.gf-site-widget-gallery .gf-site-gallery__container{display:block!important;columns:3;column-gap:15px;height:auto!important}.gf-site-widget-gallery .e-gallery-item{position:relative!important;display:block!important;width:100%!important;margin-bottom:15px;break-inside:avoid;overflow:hidden;transform:none!important}.gf-site-widget-gallery .e-gallery-image{position:relative!important;background-size:cover;background-position:center;width:100%;height:auto!important;padding-bottom:0!important}.gf-lightbox{border:0;padding:0;max-width:94vw;max-height:94vh;background:#132c3a;border-radius:8px}.gf-lightbox::backdrop{background:#000c}.gf-lightbox img{display:block;max-width:90vw;max-height:88vh;object-fit:contain}.gf-lightbox button{position:absolute;right:8px;top:8px;border:0;border-radius:50%;width:40px;height:40px;background:#fff;color:#132c3a;cursor:pointer;font-size:24px}
@media(max-width:1024px){.gf-site-widget-gallery .gf-site-gallery__container{columns:2;column-gap:10px}}
/* Shared review cards use natural heights, independent of imported carousel sizing. */
.gf-reviews{background:#eef9ff;padding:80px 24px;color:#132c3a}.gf-reviews-inner{max-width:1200px;margin:0 auto;min-width:0}.gf-reviews-heading{text-align:center;margin-bottom:32px}.gf-reviews .gf-reviews-eyebrow{font:700 13px/1.4 system-ui;letter-spacing:.18em;text-transform:uppercase;color:#005b8e;margin:0 0 12px}.gf-reviews h2{font:800 clamp(28px,4vw,44px)/1.15 system-ui;text-transform:uppercase;color:#005b8e;margin:0 0 22px;letter-spacing:-.02em}.gf-reviews-summary{display:inline-flex;gap:16px;align-items:center;background:white;border-radius:16px;padding:16px 24px;color:#132c3a;text-decoration:none}.gf-reviews-summary>span:last-child{display:grid;text-align:left;gap:3px}.gf-reviews-summary strong{font:700 20px/1.4 system-ui}.gf-reviews-summary>span:last-child>span{font:14px/1.5 system-ui;text-decoration:underline}.gf-reviews-google{font:800 40px/1 system-ui;color:#4285f4}.gf-review-stars{color:#b87500;letter-spacing:2px;font-size:18px;white-space:nowrap}
.gf-reviews-track{display:flex;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;align-items:flex-start;padding:4px 4px 18px;scrollbar-width:thin;scrollbar-color:#82bedf #e1eff7}.gf-review-card{flex:0 0 calc((100% - 24px)/2);scroll-snap-align:start;box-sizing:border-box;border:1px solid #e2edf3;border-radius:20px;background:#fff;padding:28px;min-width:0;box-shadow:0 3px 12px #132c3a05}.gf-review-rating{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:20px}.gf-review-rating>span:last-child{font:12px/1.4 system-ui;color:#617481}.gf-review-card p{font:400 16px/1.65 system-ui;color:#304653;margin:0 0 16px;white-space:pre-line;overflow-wrap:anywhere}.gf-review-card .gf-review-no-text{color:#617481;font-style:italic}.gf-review-card footer{margin-top:22px}.gf-review-card footer a{font:700 14px/1.4 system-ui;color:#005b8e;text-decoration:none}.gf-review-card footer a:hover{text-decoration:underline}.gf-review-full summary{font:600 14px/1.5 system-ui;color:#005b8e;cursor:pointer;margin:0 0 14px;list-style:none;text-decoration:underline}.gf-review-full summary::-webkit-details-marker{display:none}.gf-review-read-less,.gf-review-full[open] .gf-review-read-more{display:none}.gf-review-full[open] .gf-review-read-less{display:inline}.gf-review-card:has(.gf-review-full[open]) .gf-review-excerpt{display:none}.gf-reviews-bottom{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:12px}.gf-reviews-bottom>p{font:12px/1.5 system-ui;color:#617481;margin:0}.gf-reviews-controls{display:flex;gap:10px}.gf-reviews-controls[hidden]{display:none}.gf-reviews-controls button{width:44px;height:44px;border:1px solid #005b8e;border-radius:50%;background:white;color:#005b8e;font:22px/1 system-ui;cursor:pointer;padding:0}.gf-reviews-controls button:hover{background:#005b8e;color:white}.gf-reviews-track:focus-visible,.gf-reviews-controls button:focus-visible,.gf-review-full summary:focus-visible{outline:3px solid #68b9e8;outline-offset:4px}
@media(max-width:767px){.gf-reviews{padding:48px 16px}.gf-reviews-track{gap:16px}.gf-review-card{flex-basis:100%;padding:24px}.gf-reviews-bottom{align-items:flex-start}.gf-reviews-bottom>p{max-width:200px}}
.gf-review-card .gf-review-excerpt{display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.gf-reviews-controls button:focus{background:#005b8e;color:white}

.gf-comparison{touch-action:pan-y;cursor:ew-resize}
.gf-comparison-divider{position:absolute;top:0;bottom:0;left:var(--reveal,50%);width:4px;transform:translateX(-50%);background:#a5dfff;z-index:5;pointer-events:none;display:flex;align-items:center;justify-content:center}
.gf-comparison-divider>span{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;border:2px solid white;border-radius:50%;background:#005b8e;color:white;font:700 24px/1 system-ui;box-shadow:0 2px 8px #0003}
.gf-comparison:focus-within{outline:3px solid #005b8e;outline-offset:4px}

.gf-confirmation{background:#eef9ff;padding:80px 24px;color:#132c3a}
.gf-confirmation-card{max-width:720px;margin:0 auto;padding:48px;background:#fff;border:1px solid #e2edf3;border-radius:20px}
.gf-confirmation .gf-confirmation-eyebrow{font-size:13px;font-weight:700;letter-spacing:.18em;color:#005b8e;margin:0 0 16px}
.gf-confirmation h1{font-size:clamp(30px,4vw,44px);line-height:1.15;color:#005b8e;margin:0 0 24px}
.gf-confirmation p{font-size:18px;line-height:1.6;margin:0 0 20px}
.gf-confirmation a{color:#005b8e;text-decoration:underline}
.gf-confirmation a.gf-confirmation-home{display:inline-block;padding:14px 24px;margin-top:8px;background:#005b8e;color:#fff;text-decoration:none;border-radius:28px;font-weight:600}
.gf-confirmation a:focus-visible{outline:3px solid #005b8e;outline-offset:4px}
@media(max-width:767px){.gf-confirmation{padding:40px 16px}.gf-confirmation-card{padding:28px 24px}}

/* Aylesbury hub page (resources/site/pages/gate-repairs-aylesbury.html, built by scripts/build_aylesbury_page.py) and its quote form. */
.gf-site .gfp{display:flex;flex-direction:column;align-items:stretch;width:100%;box-sizing:border-box}
/* The imported stylesheet hides .h3 between 768px and 1024px; on this page the headings that use it stay visible. */
.gf-site .gfp .h3{display:block}
/* Full width inside the design system's section-sides padding, like the other pages. Headings and paragraphs carry no margins of their own; the gap sets the spacing. */
.gfp-wrap{width:100%;display:flex;flex-direction:column;gap:var(--gap-l);min-width:0}
.gfp-wrap>*{margin-block:0}
.gfp-stack>*,.gfp-card>*{margin-block:0}
.gfp-hero .gfp-wrap{gap:var(--gap-m)}
.gfp-hero .gfp-wrap>.gfp-grid{margin-top:var(--gap-s)}
.gfp-grid{display:grid;gap:var(--gap-m);grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));width:100%}
.gfp-grid[data-cols="2"]{--cols:2}.gfp-grid[data-cols="3"]{--cols:3}.gfp-grid[data-cols="4"]{--cols:4}
.gfp-facts{--cols:5}
@media(max-width:1100px){.gfp-grid[data-cols="4"],.gfp-facts{--cols:2}.gfp-grid[data-cols="3"]{--cols:2}}
@media(max-width:767px){.gfp-grid,.gfp-grid[data-cols="2"],.gfp-grid[data-cols="3"],.gfp-grid[data-cols="4"],.gfp-facts{--cols:1}}
.gfp-card{display:flex;flex-direction:column;gap:var(--gap-s);min-width:0;border-radius:20px;box-sizing:border-box}
.gfp-card h3,.gfp-card p{margin:0}
.gfp-card p+p{margin-top:var(--gap-xs)}
.gfp-link-card{text-decoration:none;color:inherit;transition:transform .15s ease,box-shadow .15s ease}
.gfp-link-card:hover,.gfp-link-card:focus-visible{transform:translateY(-3px);box-shadow:0 10px 24px rgba(19,44,58,.18)}
.gfp-more{margin-top:auto;font-family:var(--heading-font);font-weight:900;font-size:var(--label-text);letter-spacing:3px;text-transform:uppercase;color:var(--neutral-blue)}
.gfp-chip{display:flex;align-items:center;justify-content:center;text-align:center;padding:var(--gap-m) var(--gap-s);border-radius:14px;min-width:0}
.gfp-chip p{margin:0;font-weight:600;color:var(--dark-blue)}
/* Buttons in a group share one width, side by side when there is room and stacked at full width when there is not. */
.gfp-buttons{display:flex;flex-wrap:wrap;gap:var(--gap-m);width:100%}
.gfp-buttons-centre{justify-content:center}
.gfp-buttons a{flex:1 1 17rem;min-width:min(100%,17rem);max-width:24rem;min-height:56px;box-sizing:border-box;align-items:center;justify-content:center;white-space:normal}
.gfp .primary-btn,.gfp .secondary-btn{display:inline-flex;text-decoration:none;text-align:center}
.gfp .secondary-btn{color:var(--white-text)}
.gfp-text-link{color:var(--neutral-blue);text-decoration:underline;font-weight:600}
.gfp-text-link-light{color:var(--light-blue)}
.gfp-stack{display:flex;flex-direction:column;gap:var(--gap-m);min-width:0}
.gfp-facts .gfp-card{gap:var(--gap-xs)}
.gfp-split{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:var(--gap-xl);align-items:center}
.gfp-split-form{align-items:start;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
@media(max-width:900px){.gfp-split,.gfp-split-form{grid-template-columns:minmax(0,1fr)}}
.gfp-photo{display:block;width:100%;height:auto;max-height:560px;object-fit:cover;border-radius:20px}
.gfp-breadcrumb ol{display:flex;flex-wrap:wrap;gap:6px 10px;margin:0;padding:0;list-style:none;font-size:var(--text-s);color:var(--light-blue)}
.gfp-breadcrumb li+li::before{content:"›";margin-right:10px;color:var(--light-blue)}
.gfp-breadcrumb a{color:var(--white-text);text-decoration:underline}
.gfp-breadcrumb [aria-current]{color:var(--light-blue)}
.gfp-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--gap-xs)}
.gfp-list li{position:relative;padding-left:1.7em;line-height:1.5}
.gfp-list li::before{content:"✓";position:absolute;left:0;font-weight:700;color:var(--neutral-blue)}
.gfp-list-light li{color:var(--white-text)}
.gfp-list-light li::before{color:var(--light-blue)}
.gfp-steps{margin:0;padding-left:1.4em;display:flex;flex-direction:column;gap:var(--gap-xs);color:var(--white-text)}
.gfp-steps li{padding-left:.3em;line-height:1.5}
.gfp-steps li::marker{color:var(--light-blue);font-weight:700}
.gfp-faq h3{margin-bottom:var(--gap-xs)}
.gfp-map{position:relative;width:100%;min-height:360px;border-radius:20px;overflow:hidden;background:var(--tint-blue);display:flex}
.gfp-map iframe{display:block;width:100%;height:420px;border:0}

/* The quote form (resources/views/partials/lead-form.blade.php): same fields as the advert landing page, in the site's dark form style. */
.gfp-form{display:flex;flex-direction:column;gap:var(--gap-s);color:var(--white-text);min-width:0}
.gfp-form *{box-sizing:border-box}
.gfp-form .gfp-form-title{margin:0 0 var(--gap-xs)}
.gfp-form .gfp-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.gfp-form label,.gfp-form .gfp-label{font-family:var(--text-font);font-weight:600;font-size:var(--text-s);color:var(--white-text)}
.gfp-form .gfp-opt{font-weight:400;color:var(--light-blue)}
.gfp-form input[type=text],.gfp-form input[type=tel],.gfp-form input[type=email],.gfp-form select,.gfp-form textarea{width:100%;font:inherit;font-size:var(--text-s);color:var(--white-text);padding:14px 16px;border-radius:10px;border:1px solid var(--bg-silver);background:var(--tint-dark-blue)}
.gfp-form input[type=file]{width:100%;font:inherit;font-size:var(--text-s);color:var(--white-text);padding:12px;border-radius:10px;border:1px dashed var(--light-blue);background:var(--tint-dark-blue)}
.gfp-form input::placeholder,.gfp-form textarea::placeholder{color:#b8c9d3}
.gfp-form select option{color:var(--dark-blue);background:#fff}
.gfp-form :is(input,select,textarea):focus-visible,.gfp-form button:focus-visible,.gfp-form a:focus-visible{outline:3px solid var(--light-blue);outline-offset:2px}
.gfp-form .gfp-hint{font-size:.875rem;color:#c9d8e0}
.gfp-form .gfp-err{margin:0;color:#ffd0cb;font-weight:600;font-size:.9375rem}
.gfp-form .gfp-has-error :is(input,select,textarea){border-color:#ff8f85;border-width:2px}
.gfp-form .gfp-consent{display:flex;align-items:flex-start;gap:12px}
.gfp-form .gfp-consent input{margin-top:4px;width:20px;height:20px;flex:none;accent-color:var(--light-blue)}
.gfp-form .gfp-consent label{font-weight:400;line-height:1.5}
.gfp-form .gfp-consent a{color:var(--light-blue);text-decoration:underline;font-weight:700}
.gfp-form .gfp-summary{padding:16px 18px;border-radius:10px;background:#fff1ef;color:#7a1f1f;border:1px solid #e9bcb7}
.gfp-form .gfp-summary h3{margin:0 0 6px;font-size:1.0625rem}
.gfp-form .gfp-summary ul{margin:0;padding-left:1.2em}
.gfp-form .gfp-ts-note{margin:0;min-height:1.2em;color:#ffd0cb;font-size:.9375rem}
.gfp-form .gfp-hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.gfp-form .gfp-submit{cursor:pointer;width:100%;justify-content:center;font-family:var(--text-font);font-weight:600;background:var(--light-blue);color:var(--dark-blue);border:0;border-radius:50px;padding:16px 24px;letter-spacing:3px;text-transform:uppercase;font-size:var(--text-m)}
.gfp-form .gfp-submit:hover{background-image:linear-gradient(270deg,#aae0ff 0%,#ffffff 100%)}
.gfp-form .gfp-submit:disabled{opacity:.65;cursor:wait}
.gfp-form .gfp-after{margin:0;text-align:center;font-size:var(--text-s);color:#dce8ee}
.gfp-form .gfp-after a{color:#fff;font-weight:700}


.gfp-area-link{color:inherit;text-decoration:underline;text-underline-offset:3px;font-weight:700}
.gfp-area-link:hover,.gfp-area-link:focus-visible{color:var(--dark-blue)}

.gf-site .gfp-band{padding-block:var(--section-s);padding-inline:var(--section-sides);align-self:center}
.gfp-cta-band .gfp-wrap{align-items:center;gap:var(--gap-s)}
.gfp-cta-band .gfp-wrap>*{max-width:60rem}
.gfp-photo{object-position:center 60%}


.gfp-form .gfp-note{margin:0;font-size:var(--text-s);color:#fff}
.gfp-form .gfp-note[hidden]{display:none}



.gfp-buttons-wide a{max-width:34rem}
.gfp-map+.gfp-buttons{margin-top:calc(var(--gap-s) * -1)}

/* Sagging gate repair page (resources/site/pages/sagging-gate-repair.html, built by scripts/build_sagging_gate_page.py). */
.gfp-anchor{display:block;height:0;scroll-margin-top:var(--gap-xl)}
.gfp-split-top{align-items:start}
.gfp-prices{margin:0;display:flex;flex-direction:column}
.gfp-prices>div{display:flex;justify-content:space-between;gap:var(--gap-m);padding:var(--gap-xs) 0;border-bottom:1px solid var(--tint-dark-blue)}
.gfp-prices>div:last-child{border-bottom:0}
.gfp-prices dt{margin:0;color:var(--white-text);font-size:var(--text-s)}
.gfp-prices dd{margin:0;text-align:right;font-weight:700;color:var(--light-blue);font-size:var(--text-s)}
.gfp-table-wrap{width:100%;overflow-x:auto;border-radius:20px;box-shadow:0 8px 24px rgba(19,44,58,.10)}
.gfp-dark .gfp-table-wrap,.bg-dark-blue .gfp-table-wrap{box-shadow:0 0 0 1px rgba(255,255,255,.16),0 8px 24px rgba(0,0,0,.25)}
.gf-site .gfp-table{width:100%;margin:0;border-collapse:separate;border-spacing:0;background:var(--white-text);overflow:hidden;font-size:var(--text-m);color:var(--dark-blue)}
.gf-site .gfp-table th,.gf-site .gfp-table td{border:0;border-bottom:1px solid var(--tint-blue);background:transparent;padding:22px 28px;text-align:left;vertical-align:middle;line-height:1.5}
.gf-site .gfp-table thead th{background:var(--dark-blue);color:var(--light-blue);padding:18px 28px;font-family:var(--heading-font);font-size:var(--label-text);font-weight:900;letter-spacing:3px;text-transform:uppercase;border-bottom:0}
.bg-dark-blue .gf-site .gfp-table thead th,.gf-site .bg-dark-blue .gfp-table thead th{background:var(--neutral-blue)}
.gf-site .gfp-table tbody th{width:32%;font-family:var(--heading-font);font-size:var(--text-l);font-weight:700;color:var(--neutral-blue)}
.gf-site .gfp-table tbody td:last-child{color:var(--dark-blue)}
.gf-site .gfp-table tbody tr:nth-child(even)>*{background:var(--tint-blue)}
.gf-site .gfp-table tbody tr:hover>*{background:#e3f4ff}
.gf-site .gfp-table tbody tr:last-child>*{border-bottom:0}
@media(max-width:700px){
  .gf-site .gfp-table thead{position:absolute;left:-9999px}
  .gf-site .gfp-table,.gf-site .gfp-table tbody,.gf-site .gfp-table tr,.gf-site .gfp-table th,.gf-site .gfp-table td{display:block;width:100%;box-sizing:border-box}
  .gf-site .gfp-table tbody tr{padding:var(--gap-xs) 0;border-bottom:3px solid var(--tint-blue)}
  .gf-site .gfp-table tbody tr:last-child{border-bottom:0}
  .gf-site .gfp-table th,.gf-site .gfp-table td{border-bottom:0;padding:8px var(--gap-m)}
  .gf-site .gfp-table tbody th{width:100%;box-shadow:none;font-size:var(--text-m)}
  .gf-site .gfp-table td::before,.gf-site .gfp-table tbody th::before{content:attr(data-label);display:block;font-size:.8125rem;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--neutral-blue)}
}
.gfp-warning{border-left:8px solid var(--dark-blue)}
.gfp-review{margin:0}
.gfp-review blockquote{margin:0;display:flex;flex-direction:column;gap:var(--gap-xs)}
.gfp-review blockquote p{margin:0}
.gfp-review figcaption{margin-top:auto;font-size:var(--text-s);color:var(--neutral-blue)}
.gfp-review figcaption a{color:inherit;font-weight:700}
.gfp-stars{margin:0;letter-spacing:3px;color:#e8a317;font-size:1.25rem}
.gfp-review-full summary{cursor:pointer;list-style:none;font-weight:700;color:var(--neutral-blue)}
.gfp-review-full summary::-webkit-details-marker{display:none}
.gfp-review-full .gfp-review-less,.gfp-review-full[open] .gfp-review-more{display:none}
.gfp-review-full[open] .gfp-review-less{display:inline}
.gfp-review-full[open] summary{margin-bottom:var(--gap-xs)}

/* Gate type cards on the sagging gate repair page: optional photo, label, headline and a callout. */
.gfp-gatecards{align-items:stretch}
.gfp-gatecard{display:grid;grid-template-columns:minmax(0,1fr);background:var(--white-text);border-radius:20px;overflow:hidden;color:var(--dark-blue);box-shadow:0 0 0 1px var(--tint-blue),0 8px 24px rgba(19,44,58,.10)}
.gfp-gatecard-photo-on{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)}
.gfp-gatecard-photo img{display:block;width:100%;height:100%;min-height:280px;object-fit:cover}
.gfp-gatecard-body{display:flex;flex-direction:column;gap:var(--gap-s);padding:var(--gap-l);min-width:0}
.gfp-gatecard-body>*{margin:0}
.gfp-gatecard-label{color:var(--tint-dark-blue)}
.gfp-gatecard-title{line-height:1.2}
.gfp-callout{display:flex;gap:var(--gap-s);align-items:flex-start;margin-top:auto;padding:var(--gap-m);border-radius:14px;background:var(--tint-blue)}
.gfp-callout>div{min-width:0}
.gfp-callout p{margin:0}
.gfp-callout-icon{flex:none;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;color:#fff;font-weight:900;font-size:1.25rem;line-height:1;background:var(--neutral-blue)}
.gfp-callout-warn .gfp-callout-icon{background:#d9352f}
.gfp-callout-label{margin-bottom:6px!important;font-family:var(--heading-font);font-weight:900;font-size:var(--label-text);letter-spacing:3px;text-transform:uppercase;color:var(--neutral-blue)}
.gfp-callout-warn .gfp-callout-label{color:#d9352f}
.gfp-callout-text{font-size:var(--text-m);line-height:1.55;color:var(--dark-blue)}
@media(max-width:900px){.gfp-gatecard-photo-on{grid-template-columns:minmax(0,1fr)}.gfp-gatecard-photo img{min-height:220px;max-height:300px}}

/* Pricing table: a round icon beside each service and the price picked out in blue. */
.gfp-cell-label{display:flex;align-items:center;gap:var(--gap-s)}
.gfp-cell-icon{flex:none;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:var(--tint-blue);color:var(--neutral-blue);box-shadow:0 0 0 1px #d4eaf7}
.gfp-cell-icon svg{width:24px;height:24px}
.gf-site .gfp-table .gfp-price{font-family:var(--heading-font);font-size:var(--text-l);font-weight:700;color:var(--neutral-blue);white-space:nowrap}
.gf-site .gfp-table-pricing thead th{background:var(--neutral-blue);color:var(--white-text);letter-spacing:2px}
.gf-site .gfp-table-pricing tbody th{width:30%;box-shadow:none;color:var(--dark-blue);font-size:var(--text-m)}
.gf-site .gfp-table-pricing tbody tr:nth-child(even)>*{background:var(--tint-blue)}
.gf-site .gfp-table-pricing tbody td+td{border-left:1px solid var(--tint-blue)}
@media(max-width:700px){.gf-site .gfp-table-pricing tbody th{width:100%}.gf-site .gfp-table-pricing tbody td+td{border-left:0}.gf-site .gfp-table-pricing tbody th .gfp-cell-label{margin-top:4px}}

/* Table and list text use the site's paragraph font (Inter); only the header labels use the heading font (League Spartan). */
.gf-site .gfp-table,.gf-site .gfp-table td,.gf-site .gfp-table tbody th,.gf-site .gfp-table .gfp-price,.gfp-list,.gfp-list li,.gfp-steps,.gfp-prices dt,.gfp-prices dd,.gfp-callout-text{font-family:var(--text-font),sans-serif}
.gf-site .gfp-table tbody th{font-weight:700}
.gf-site .gfp-table .gfp-price{font-weight:700}

/* A single card that would stretch too wide on its own: narrower and centred. */
.gfp-card.gfp-narrow{width:100%;max-width:760px;margin-inline:auto}

/* Inline links keep their colour on hover and gain an underline (the imported styles turned them dark). */
.gf-site .gfp .gfp-text-link:visited{color:var(--neutral-blue)}
.gf-site .gfp .gfp-text-link:hover,.gf-site .gfp .gfp-text-link:focus-visible{color:var(--neutral-blue);text-decoration:underline}
.gf-site .gfp .gfp-text-link-light,.gf-site .gfp .gfp-text-link-light:visited{color:var(--light-blue)}
.gf-site .gfp .gfp-text-link-light:hover,.gf-site .gfp .gfp-text-link-light:focus-visible{color:var(--light-blue);text-decoration:underline}

/* Tighter spacing on the sagging gate repair page: the label, heading and intro lines sit close together, and the cards or table below keep a clear gap. */
.gfp-tight:not(.gfp-hero) .gfp-wrap{gap:var(--gap-m)}
.gfp-tight:not(.gfp-hero) .gfp-wrap>:is(.h-sub,.h2,.h3,p)+:is(.h2,.h3,p){margin-top:calc(var(--gap-xs) * -1)}
.gfp-tight:not(.gfp-hero) .gfp-wrap>:is(.gfp-grid,.gfp-table-wrap,.gfp-buttons){margin-top:var(--gap-xs)}
.gfp-tight:not(.gfp-hero) .gfp-wrap>:is(.h-sub,.h2)+:is(.h2,.h3,p){margin-top:calc(var(--gap-xxs) * -1)}
.gfp-tight:not(.gfp-hero) .gfp-wrap>:is(.gfp-grid,.gfp-table-wrap)+p{margin-top:var(--gap-xs)}

/* Company details card: each label sits right above its text, with a clear gap between the groups. */
.gfp-card.gfp-details{gap:0}
.gfp-card.gfp-details p{margin:0}
.gfp-card.gfp-details p+p{margin-top:2px}
.gfp-card.gfp-details .h-sub{margin-bottom:2px}
.gfp-card.gfp-details p:not(.h-sub)+.h-sub{margin-top:var(--gap-m)}

.gfp-buttons-wide a{max-width:36rem}

/* Long reviews: opening "Read full review" replaces the short excerpt instead of repeating it. */
.gfp-review blockquote:has(details[open])>.gfp-review-excerpt{display:none}
.gfp-review-full p{margin:0}
.gfp-review-full p+p{margin-top:var(--gap-xs)}
.gfp-review figcaption,.gfp-review figcaption a{font-style:normal}

/* Intro photo above the price card: show the whole picture, not a crop. */
.gf-site .gfp-split .gfp-photo[src*="sagging-gate-drooping-leaf"]{object-fit:cover;object-position:center;aspect-ratio:605/272}

/* Page photos: every image with .gfp-photo has the same 20px rounded corners as the cards. The imported styles reset img corners to square, hence the extra specificity. */
.gf-site img.gfp-photo{border-radius:20px}

/* Prices at a glance band under the intro: five price cards, the first one highlighted. */
.gfp-price-strip .gfp-wrap{gap:var(--gap-m)}
.gfp-pricecards{--cols:5;align-items:stretch}
.gfp-pricecard{display:flex;flex-direction:column;gap:var(--gap-xs);padding:var(--gap-m);border-radius:20px;background:var(--tint-dark-blue);min-width:0;box-sizing:border-box}
.gfp-pricecard p{margin:0}
.gfp-pricecard .gfp-cell-icon{background:rgba(170,224,255,.16);color:var(--light-blue);box-shadow:none;margin-bottom:var(--gap-xxs)}
.gfp-pricecard-label{font-family:var(--text-font),sans-serif;font-weight:600;font-size:var(--text-s);letter-spacing:.5px;color:var(--light-blue)}
.gfp-pricecard-value{font-family:var(--heading-font);font-weight:700;font-size:clamp(1.75rem,2.6vw,2.5rem);line-height:1.05;color:var(--white-text);text-transform:uppercase}
.gfp-pricecard-note{margin-top:auto!important;padding-top:var(--gap-xxs);font-family:var(--text-font),sans-serif;font-size:var(--text-s);line-height:1.45;color:#d6e6ef}
.gfp-pricecard-main{background:var(--light-blue)}
.gfp-pricecard-main .gfp-cell-icon{background:rgba(19,44,58,.12);color:var(--dark-blue)}
.gfp-pricecard-main .gfp-pricecard-label,.gfp-pricecard-main .gfp-pricecard-value,.gfp-pricecard-main .gfp-pricecard-note{color:var(--dark-blue)}
@media(max-width:1100px){.gfp-pricecards{--cols:2}}
@media(max-width:767px){.gfp-pricecards{--cols:1}}

.gfp-price-strip .gfp-wrap{gap:var(--gap-s)}
.gfp-price-strip .gfp-pricecards{margin-top:0}
.gfp-pricecard-label{font-size:.9rem;letter-spacing:0;white-space:nowrap}
@media(max-width:1100px){.gfp-pricecard-label{white-space:normal}}
/* Price cards: the name, price and note sit close together from the top of the card. */
.gfp-pricecard{gap:var(--gap-xxs)}
.gfp-pricecard .gfp-cell-icon{margin-bottom:var(--gap-xs)}
.gfp-pricecard-note{margin-top:0!important;padding-top:var(--gap-xxs)}
/* A long price such as "Custom quote" stays on one line and shrinks with the card instead of wrapping. */
.gfp-pricecard{container-type:inline-size}
.gfp-pricecard-value-long{white-space:nowrap;font-size:min(1.9rem,11cqw)}
