.fe-69f146ab6003f84ae5ca48f9{--grid-gutter:calc(var(--mobile-site-gutter,6vw) - 11px);--cell-max-width:calc(( var(--site-max-width,1500px) - (11px * (8 - 1)) ) / 8);grid-area:1/1/-1/-1;grid-template-rows:repeat(1,minmax(24px,auto));grid-template-columns:minmax(var(--grid-gutter), 1fr) repeat(8, minmax(0, var(--cell-max-width))) minmax(var(--grid-gutter), 1fr);gap:11px;display:grid;position:relative;overflow-x:clip}@media (width>=768px){.background-width--inset .fe-69f146ab6003f84ae5ca48f9{--inset-padding:calc(var(--site-gutter) * 2)}.fe-69f146ab6003f84ae5ca48f9{--grid-gutter:calc(var(--site-gutter,4vw) - 11px);--cell-max-width:calc(( var(--site-max-width,1500px) - (11px * (24 - 1)) ) / 24);--inset-padding:0vw;--row-height-scaling-factor:.0215;--container-width:min(var(--site-max-width,1500px), calc(100vw - var(--site-gutter,4vw) * 2 - var(--inset-padding)));grid-template-rows:repeat(13,minmax(calc(var(--container-width) * var(--row-height-scaling-factor)), auto));grid-template-columns:minmax(var(--grid-gutter), 1fr) repeat(24, minmax(0, var(--cell-max-width))) minmax(var(--grid-gutter), 1fr)}}.fe-block-0ce94d5682f6d9e8d91e{z-index:1;grid-area:1/1/2/11}.fe-block-0ce94d5682f6d9e8d91e .site-block{justify-content:center}.fe-block-0ce94d5682f6d9e8d91e .site-block-alignment-wrapper{align-items:center}@media (width>=768px){.fe-block-0ce94d5682f6d9e8d91e{z-index:1;grid-area:1/1/14/27}.fe-block-0ce94d5682f6d9e8d91e .site-block{justify-content:center}.fe-block-0ce94d5682f6d9e8d91e .site-block-alignment-wrapper{align-items:center}}.fe-block-0ce94d5682f6d9e8d91e{--opacity:100%;--translate-x:0px;--translate-y:0px;--rotation:0deg;--scale-x:100%;--scale-y:100%;--skew-x:0deg;--skew-y:0deg;--origin-x:50%;--origin-y:50%;--block-transform:none;opacity:var(--opacity,1);transform:var(--block-transform);transform-origin:var(--origin-x) var(--origin-y)}.eq-basket-toggle{color:#fff;cursor:pointer;z-index:9000;background:var(--c-primary);border:none;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;padding:0;transition:background .2s;display:none;position:fixed;bottom:28px;right:28px;box-shadow:0 4px 16px #0000003d}.eq-basket-toggle:hover{background:var(--c-primary-dark)}.eq-basket-toggle svg{flex-shrink:0;width:22px;height:22px}.eq-basket-count{color:#fff;background:var(--c-navy);border-radius:10px;justify-content:center;align-items:center;min-width:20px;height:20px;padding:0 4px;font-size:11px;font-weight:700;line-height:1;display:flex;position:absolute;top:-4px;right:-4px}.eq-basket-overlay{z-index:2147480000;opacity:0;pointer-events:none;background:#0006;transition:opacity .25s;position:fixed;inset:0}.eq-basket-overlay.open{opacity:1;pointer-events:auto}.eq-basket-panel{z-index:2147480001;background:#fff;flex-direction:column;width:420px;max-width:100vw;height:100%;font-family:inherit;transition:transform .3s;display:flex;position:fixed;top:0;right:0;transform:translate(100%);box-shadow:-4px 0 24px #0000001f}.eq-basket-panel.open{transform:translate(0)}.eq-basket-header{border-bottom:1px solid #e2e8f0;flex-shrink:0;justify-content:space-between;align-items:center;padding:24px 28px;display:flex}.eq-basket-header h2,.eq-basket-header h3{color:var(--c-navy);margin:0;padding:0;font-size:19px;font-weight:700;letter-spacing:-.01em}.eq-basket-close{cursor:pointer;color:#666;background:0 0;border:none;padding:0 4px;font-size:1.5rem;line-height:1}.eq-basket-close:hover{color:#1a2b3c}.eq-basket-items{flex:1;padding:14px 28px;overflow-y:auto}.eq-basket-empty{text-align:center;color:#6b7789;padding:56px 12px;font-size:15px;line-height:1.6}.eq-basket-item{border-bottom:1px solid #eef2f6;justify-content:space-between;align-items:center;gap:14px;padding:16px 0;display:flex}.eq-basket-item:last-child{border-bottom:none}.eq-basket-item-name{color:#1a2b3c;flex:1;font-size:15px;font-weight:600;line-height:1.45}.eq-basket-item-controls{flex-shrink:0;align-items:center;gap:6px;display:flex}.eq-basket-qty-btn{cursor:pointer;color:#1a2b3c;background:#f5f8fa;border:1px solid #d6dce6;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;padding:0;font-size:15px;line-height:1;display:flex}.eq-basket-qty-btn:hover{background:#e2e8f0}.eq-basket-qty-value{text-align:center;color:#1a2b3c;min-width:22px;font-size:14px;font-weight:600}.eq-basket-item-remove{color:#6b7789;cursor:pointer;background:0 0;border:none;flex-shrink:0;margin-left:2px;padding:0;font-size:1.2rem;line-height:1}.eq-basket-item-remove:hover{color:#c62828}.eq-basket-total-block{border-top:1px solid #e2e8f0;padding:18px 28px 8px}.eq-basket-total-row{color:#1a2b3c;justify-content:space-between;align-items:baseline;margin-bottom:4px;font-size:14px;display:flex}.eq-basket-total-row .label{color:#666}.eq-basket-total-row .value{font-weight:600}.eq-basket-rollup{background:#eaf4f9;border-left:3px solid #0075a3;color:#1a2b3c;margin:0 0 10px;padding:10px 12px;font-size:13px;line-height:1.5}.eq-basket-rollup-go{background:none;border:0;padding:0;margin-top:7px;font:inherit;font-weight:700;color:#0075a3;text-decoration:underline;cursor:pointer;display:block}.eq-basket-rollup-go:hover{color:#004f73}.eq-basket-rollup-go:focus-visible{outline:2px solid #0075a3;outline-offset:2px}.eq-basket-total-row.is-edu .label{color:#0075a3}.eq-basket-total-row.is-edu .value{color:#0075a3;font-weight:600}.eq-basket-total-row.is-total{border-top:1px solid #e2e8f0;margin-top:8px;padding-top:8px;font-size:15px}.eq-basket-total-row.is-total .label{color:#1a2b3c;font-weight:700}.eq-basket-total-row.is-total .value{font-weight:700}.eq-basket-estimate-note{color:#8a93a3;margin-top:10px;font-size:12px;line-height:1.55}.eq-basket-footer{border-top:1px solid #e2e8f0;flex-shrink:0;padding:22px 28px}.eq-basket-enquire{color:#fff;cursor:pointer;text-align:center;box-sizing:border-box;background:#1a2b3c;border:none;border-radius:4px;width:100%;padding:13px 16px;font-size:15px;font-weight:600;transition:background .2s;display:block}.eq-basket-enquire:hover{background:#333}.eq-basket-enquire:disabled{opacity:.4;cursor:not-allowed}.eq-basket-section-title{text-transform:uppercase;letter-spacing:.12em;color:var(--c-navy);margin:28px 0 16px;padding-top:22px;border-top:1px solid #eef2f6;font-size:12px;font-weight:800}.eq-basket-field{margin-bottom:16px}.eq-basket-field>label{color:#555;text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px;font-size:12px;font-weight:600;display:block}.eq-basket-field-row{gap:10px;display:flex}.eq-basket-field-row .eq-basket-field{flex:1}.eq-basket-field input[type=text],.eq-basket-field input[type=email],.eq-basket-field input[type=date],.eq-basket-field input[type=tel],.eq-basket-field textarea,.eq-basket-field select{color:#1a2b3c;box-sizing:border-box;background:#fff;border:1px solid #e2e8f0;border-radius:4px;width:100%;padding:8px 10px;font-family:inherit;font-size:14px;transition:border-color .2s}.eq-basket-field input:focus,.eq-basket-field textarea:focus,.eq-basket-field select:focus{border-color:#1a2b3c;outline:none}.eq-basket-field textarea{resize:vertical;min-height:68px}.eq-basket-radio-group{flex-direction:column;gap:10px;display:flex}.eq-basket-radio-label,.eq-basket-check-label{color:#1a2b3c;cursor:pointer;align-items:flex-start;gap:8px;font-size:14px;line-height:1.4;display:flex}.eq-basket-radio-label input,.eq-basket-check-label input{cursor:pointer;flex-shrink:0;width:15px;height:15px;margin-top:2px}/* basket panel — mirrors the contact-page form: square #f7f7f7 fields with a dark hairline border, muted "(required)" labels, uppercase primary submit. Uses #eqBasketPanel to outrank the component's own attribute selectors. */#eqBasketPanel input[type=text],#eqBasketPanel input[type=email],#eqBasketPanel input[type=date],#eqBasketPanel input[type=tel],#eqBasketPanel textarea,#eqBasketPanel select{background:#f7f7f7;border:1px solid #39393b;border-radius:0;color:#39393b;font-family:inherit;font-size:15px;padding:12px 12px}#eqBasketPanel input:focus,#eqBasketPanel textarea:focus,#eqBasketPanel select:focus{border-color:#39393b;outline:2px solid var(--c-primary);outline-offset:-2px}#eqBasketPanel label{color:#39393b;font-weight:400;font-size:15px;text-transform:none;letter-spacing:normal}#eqBasketPanel .eq-req{color:#39393b;font-weight:400;font-size:.8em}#eqBasketPanel .eq-basket-section-title{color:var(--c-text-dark);font-weight:700}#eqBasketPanel .eq-basket-enquire{background:var(--c-primary);border-radius:3px;color:#fff;font-weight:800;text-transform:uppercase;padding:16px 30px}#eqBasketPanel .eq-basket-enquire:hover{background:var(--c-primary-dark)}#eqBasketPanel .eq-basket-qty-btn{border-radius:3px;border-color:#d6dce6}
#eqBasketFormNote{color:#CC3B3B;font-size:14px;font-weight:600;margin:0 0 10px}

#eqBasketPanel .eq-basket-section-title{color:var(--c-navy)}
#eqBasketPanel .eq-basket-section-title:first-child{margin-top:6px;padding-top:0;border-top:0}
#eqBasketItems{flex:0 1 auto;max-height:45vh}
.eq-basket-next-note{color:#8a93a3;font-size:12.5px;line-height:1.55;margin:12px 0 0;text-align:center}
#eqBasketPanel .eq-basket-footer .eq-basket-enquire{font-size:15px;padding:16px 20px;width:100%}
.sit-consent{position:fixed;bottom:20px;left:20px;z-index:99998;max-width:340px;background:#1a2f4e;color:#e8ecf4;padding:18px 20px;box-shadow:0 8px 32px rgba(0,0,0,.28);font-size:13.5px;line-height:1.55;display:none}
.sit-consent.sit-consent-open{display:block}
.sit-consent p{margin:0 0 12px;color:#e8ecf4}
.sit-consent a{color:#7fc4e8;text-decoration:underline}
.sit-consent-actions{display:flex;gap:10px}
.sit-consent-btn{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:10px 18px;border:1px solid #0075a3;cursor:pointer;border-radius:0}
.sit-consent-accept{background:#0075a3;color:#fff}
.sit-consent-accept:hover{background:#004f73;border-color:#004f73}
.sit-consent-decline{background:transparent;color:#cfd8e6;border-color:#3d5273}
.sit-consent-decline:hover{color:#fff;border-color:#cfd8e6}
@media (max-width:600px){.sit-consent{left:12px;right:92px;bottom:12px;max-width:none}}

/* One scrolling panel, not two nested scroll boxes. On a phone the items box
   was capped at 45vh and the dates/options box scrolled on its own inside
   what was left, so the date fields the estimate asks for sat hidden inside
   a 200px scroll region. The panel scrolls as a whole now; the header and
   the footer button stick to its ends. */
.eq-basket-panel{overflow-y:auto;-webkit-overflow-scrolling:touch}
.eq-basket-header{position:sticky;top:0;background:#fff;z-index:2}
.eq-basket-items,#eqBasketItems{flex:none;max-height:none;overflow:visible}
.eq-basket-footer{position:sticky;bottom:0;background:#fff;z-index:2;margin-top:auto}
/* the availability notice is inserted beside the item list, outside its
   padding, so it ran edge to edge and past the right side on a phone */
.eq-basket-avail{margin:0 28px 4px}
/* 12px grey notes: #8a93a3 was 3.1:1 on white, under AA */
.eq-basket-estimate-note,.eq-basket-next-note{color:#66717f}

/* 320px phones: two date fields need 314px and the panel's content box is
   264px, so "Last day" was cut off at the panel edge. Let them shrink, and
   stack them once there is no room. */
.eq-basket-field-row .eq-basket-field{min-width:0}
#eqBasketPanel input[type=date]{min-width:0;width:100%}
@media (max-width:360px){.eq-basket-field-row{flex-wrap:wrap}}
/* thumb-sized targets: the remove cross was 11x19px, two pixels from the
   plus button, and a thumb aiming for + could delete the line */
.eq-basket-qty-btn{width:34px;height:34px}
.eq-basket-item-remove{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;margin-left:8px;border-radius:3px}
.eq-basket-close{padding:6px 10px}
/* iOS zooms into fields under 16px */
@media (max-width:767px){#eqBasketPanel input[type=date],#eqBasketPanel input[type=text],#eqBasketPanel input[type=email],#eqBasketPanel input[type=tel],#eqBasketPanel select,#eqBasketPanel textarea{font-size:16px}}
/* the consent bar sat over the mobile menu's Contact Us button on a first
   visit; the menu sets this body class while it is open */
body.header--menu-open .sit-consent{display:none}
/* closed, the panel is hidden for real (not merely slid off-screen), so its
   controls leave the tab order and screen readers stop reading a dialog that
   is not open; visibility flips after the slide so the close animation shows */
.eq-basket-panel:not(.open){visibility:hidden;transition:transform .3s,visibility 0s .3s}
.eq-basket-panel.open{visibility:visible;transition:transform .3s}
/* "Added: … · View list (N)": sits beside the list button (which is at right:28px,
   56px wide), so it points at where the list lives; hidden again after a few
   seconds or as soon as the list opens */
.eq-basket-toast{position:fixed;right:96px;bottom:34px;z-index:9001;display:flex;align-items:center;gap:12px;max-width:min(420px,calc(100vw - 120px));background:#1a2b3c;color:#fff;padding:10px 10px 10px 16px;border-radius:4px;box-shadow:0 8px 24px rgba(0,0,0,.24);font-size:14px;line-height:1.4;opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .2s,transform .2s}
.eq-basket-toast.is-on{opacity:1;transform:none;pointer-events:auto}
.eq-basket-toast-text{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.eq-basket-toast-go{flex:0 0 auto;background:var(--c-primary);color:#fff;border:0;border-radius:3px;padding:8px 12px;font-family:inherit;font-weight:800;font-size:12px;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;cursor:pointer}
.eq-basket-toast-go:hover{background:var(--c-primary-dark)}
.eq-basket-toast-go:focus-visible{outline:2px solid #fff;outline-offset:2px}
/* and the button itself gives a small nod, so the eye goes to it */
@keyframes eq-bump{0%{transform:scale(1)}35%{transform:scale(1.18)}70%{transform:scale(.96)}100%{transform:scale(1)}}
.eq-basket-toggle.is-bump{animation:eq-bump .45s ease}
/* on a phone the name wraps to two lines rather than being cut mid-word */
@media (max-width:600px){.eq-basket-toast{left:12px;right:96px;max-width:none;bottom:28px;align-items:center}.eq-basket-toast-text{white-space:normal;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.3;font-size:13.5px}}
@media (prefers-reduced-motion:reduce){.eq-basket-toast{transition:none}.eq-basket-toggle.is-bump{animation:none}}
