/* Able Pro v3 design. Blue, white and green only (heat shown in amber). Every rule is scoped to body.ap3. */

body.ap3 {
	--n950: #04101F;
	--n900: #061833;
	--n800: #0A2347;
	--n700: #10336A;
	--b600: #0F5FD9;
	--b500: #2B7BF3;
	--b400: #5B9BFF;
	--sky: #38BDF8;
	--sky2: #7DD3FC;
	--ice: #EAF3FF;
	--mist: #F4F8FE;
	--g600: #16A34A;
	--g500: #22C55E;
	--g400: #4ADE80;
	--amber: #F59E0B;
	--ink: #0B1B33;
	--text: #3F4E66;
	--muted: #6B7A92;
	--line: #DCE6F4;
	--r: 22px;
	--r-sm: 14px;
	--shadow: 0 1px 2px rgba(6, 24, 51, .06), 0 12px 32px -12px rgba(6, 24, 51, .18);
	--shadow-lg: 0 30px 60px -24px rgba(6, 24, 51, .35);
	--ease: cubic-bezier(.2, .8, .2, 1);
	--font-h: "Sora", "Segoe UI", system-ui, sans-serif;
	--font-b: "Inter", "Segoe UI", system-ui, sans-serif;
	background: #fff;
	color: var(--text);
	font-family: var(--font-b);
	font-size: 17px;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}

body.ap3 .site-footer,
body.ap3 .cta-band,
body.ap3 .mobile-bar { display: none !important; }

.ap3-page { overflow: clip; }
.ap3-page *, .ap3-page *::before, .ap3-page *::after, .ap3-foot *, .ap3-float * { box-sizing: border-box; }
.ap3-page :where(h1, h2, h3, p, ul, ol, figure) { margin: 0; }
.ap3-page :where(ul, ol) { padding: 0; list-style: none; }
.ap3-page a { color: inherit; text-decoration: none; }
.ap3-page :where(p a, .ap3-sub a, .ap3-prose a) { color: var(--b600); text-decoration: underline; text-underline-offset: 3px; }
.ap3-page img { max-width: 100%; height: auto; }

.ap3-wrap { width: min(1220px, 100% - 40px); margin-inline: auto; position: relative; }
.ap3-sec { padding: clamp(64px, 9vw, 112px) 0; position: relative; }

.ap3-ico { width: 1.25em; height: 1.25em; flex: none; display: inline-block; vertical-align: -.22em; }

/* ---------- Type ---------- */
.ap3-page :where(h1, h2, h3), .ap3-h1, .ap3-h2, .ap3-h3 { font-family: var(--font-h); color: var(--ink); letter-spacing: -.02em; line-height: 1.12; font-weight: 700; }
.ap3-h1 { font-size: clamp(2.2rem, 5vw, 3.9rem); font-weight: 800; color: #fff; letter-spacing: -.035em; line-height: 1.04; text-wrap: balance; }
.ap3-h2 { font-size: clamp(1.75rem, 3.4vw, 2.7rem); text-wrap: balance; margin-bottom: 18px; }
.ap3-h3 { font-size: clamp(1.25rem, 2vw, 1.6rem); }
.ap3-sub { font-size: 1.08rem; color: var(--muted); max-width: 640px; }
.ap3-intro__copy p, .ap3-local__copy p { margin-bottom: 16px; font-size: 1.06rem; }

.ap3-kicker { display: inline-flex; align-items: center; gap: 8px; font: 600 .78rem/1 var(--font-b); letter-spacing: .14em; text-transform: uppercase; color: var(--b600); background: var(--ice); padding: 9px 14px 9px 10px; border-radius: 999px; margin-bottom: 18px; }
.ap3-kicker .ap3-ico { width: 18px; height: 18px; color: var(--g600); }
.ap3-kicker--light { background: rgba(255, 255, 255, .1); color: #CFE3FF; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14); }
.ap3-kicker--light .ap3-ico { color: var(--g400); }

.ap3-head { max-width: 760px; margin-bottom: clamp(32px, 5vw, 52px); }
.ap3-head--light .ap3-h2 { color: #fff; }

/* ---------- Buttons ---------- */
.ap3-btn { --bg: var(--b600); --fg: #fff; position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 54px; padding: 0 26px; border-radius: 999px; background: var(--bg); color: var(--fg) !important; font: 600 1rem/1 var(--font-b); text-decoration: none !important; border: 0; cursor: pointer; overflow: hidden; isolation: isolate; transition: transform .3s var(--ease), box-shadow .3s var(--ease), background .3s; white-space: nowrap; }
.ap3-btn .ap3-ico { width: 20px; height: 20px; transition: transform .3s var(--ease); }
.ap3-btn:hover { transform: translateY(-2px); }
.ap3-btn:hover .ap3-ico--arrow { transform: translateX(4px); }
.ap3-btn:focus-visible { outline: 3px solid var(--sky); outline-offset: 3px; }
.ap3-btn--green { --bg: linear-gradient(135deg, var(--g500), var(--g600)); box-shadow: 0 10px 24px -8px rgba(22, 163, 74, .65); }
.ap3-btn--green::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, .45) 50%, transparent 70%); transform: translateX(-120%); animation: ap3-shine 4.5s var(--ease) infinite; }
.ap3-btn--blue { --bg: linear-gradient(135deg, var(--b500), var(--b600)); box-shadow: 0 10px 24px -10px rgba(15, 95, 217, .7); }
.ap3-btn--glass { --bg: rgba(255, 255, 255, .1); box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, .35); backdrop-filter: blur(8px); }
.ap3-btn--glass:hover { --bg: rgba(255, 255, 255, .18); }
.ap3-btn--lg { min-height: 60px; font-size: 1.06rem; padding: 0 30px; }
.ap3-btn--block { width: 100%; }
@keyframes ap3-shine { 0%, 55% { transform: translateX(-120%); } 85%, 100% { transform: translateX(120%); } }

/* ---------- Hero ---------- */
.ap3-hero { position: relative; color: #D5E3F7; background: radial-gradient(1200px 600px at 85% 20%, rgba(43, 123, 243, .45), transparent 60%), radial-gradient(800px 500px at 0% 100%, rgba(34, 197, 94, .18), transparent 60%), linear-gradient(160deg, var(--n900), var(--n950) 70%); padding: clamp(40px, 6vw, 72px) 0 clamp(110px, 12vw, 150px); overflow: hidden; isolation: isolate; }
.ap3-hero--heating, .ap3-hero--fireplace, .ap3-hero--boiler { background: radial-gradient(1000px 560px at 85% 25%, rgba(245, 158, 11, .22), transparent 60%), radial-gradient(900px 600px at 70% 0%, rgba(43, 123, 243, .38), transparent 60%), linear-gradient(160deg, var(--n900), var(--n950) 70%); }
.ap3-hero--air, .ap3-hero--rebate { background: radial-gradient(1000px 560px at 85% 25%, rgba(34, 197, 94, .26), transparent 60%), radial-gradient(900px 600px at 70% 0%, rgba(43, 123, 243, .35), transparent 60%), linear-gradient(160deg, var(--n900), var(--n950) 70%); }
.ap3-hero__bg { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.ap3-hero__bg::before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(rgba(255, 255, 255, .045) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .045) 1px, transparent 1px); background-size: 56px 56px; mask-image: radial-gradient(ellipse at 70% 40%, #000 20%, transparent 75%); }
@keyframes ap3-dash { to { stroke-dashoffset: -480; } }

.ap3-hero__grid { display: grid; grid-template-columns: 1.08fr .92fr; gap: clamp(28px, 4vw, 64px); align-items: center; }
.ap3-hero__copy { position: relative; z-index: 2; }
.ap3-crumbs ol { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 22px; font-size: .86rem; }
.ap3-crumbs li { display: flex; align-items: center; gap: 6px; color: #8FA9CF; }
.ap3-crumbs li + li::before { content: "/"; opacity: .5; }
.ap3-crumbs a { color: #B8CCE8; }
.ap3-crumbs a:hover { color: #fff; }
.ap3-eyebrow { display: inline-flex; align-items: center; gap: 10px; padding: 8px 16px 8px 12px; border-radius: 999px; background: rgba(255, 255, 255, .08); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .16); color: #E6F0FF; font-weight: 600; font-size: .9rem; margin-bottom: 22px; animation: ap3-in .8s var(--ease) both; }
.ap3-live { position: relative; width: 9px; height: 9px; border-radius: 50%; background: var(--g400); display: inline-block; flex: none; }
.ap3-live::after { content: ""; position: absolute; inset: -5px; border-radius: 50%; border: 2px solid var(--g400); animation: ap3-ping 1.8s var(--ease) infinite; }
@keyframes ap3-ping { 0% { transform: scale(.4); opacity: 1; } 100% { transform: scale(1.6); opacity: 0; } }
.ap3-hero .ap3-h1 { animation: ap3-in .9s .08s var(--ease) both; }
@keyframes ap3-draw { to { stroke-dashoffset: 0; } }
.ap3-lead { font-size: clamp(1.05rem, 1.6vw, 1.22rem); color: #C3D5EE; max-width: 600px; animation: ap3-in .9s .16s var(--ease) both; }
.ap3-points { display: flex; flex-wrap: wrap; gap: 10px 18px; margin: 22px 0 6px; animation: ap3-in .9s .24s var(--ease) both; }
.ap3-points li { display: flex; align-items: center; gap: 8px; color: #EAF3FF; font-weight: 600; font-size: .96rem; }
.ap3-points .ap3-ico { color: var(--g400); }
.ap3-cta-row { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 30px; animation: ap3-in .9s .32s var(--ease) both; }
.ap3-hero__note { display: flex; align-items: center; gap: 9px; margin-top: 20px; font-size: .9rem; color: #9DB5D6; animation: ap3-in .9s .4s var(--ease) both; }
.ap3-hero__note .ap3-ico { color: var(--amber); }
.ap3-meta { display: flex; align-items: center; gap: 8px; margin-top: 22px; color: #A9C0E0; font-size: .95rem; }
.ap3-meta span { opacity: .6; }
@keyframes ap3-in { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }

.ap3-hero--home { padding-top: clamp(56px, 7vw, 96px); padding-bottom: clamp(130px, 14vw, 180px); }
.ap3-hero--home .ap3-h1 { font-size: clamp(2.5rem, 6vw, 4.6rem); }

/* ---------- Ribbon ---------- */
.ap3-ribbon { display: flex; overflow: hidden; background: var(--mist); border-block: 1px solid var(--line); padding: 16px 0; mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.ap3-ribbon__track { display: flex; flex: none; gap: 44px; padding-right: 44px; animation: ap3-marquee 48s linear infinite; }
.ap3-ribbon__track li { display: flex; align-items: center; gap: 10px; font-weight: 600; color: var(--ink); white-space: nowrap; font-size: .96rem; }
.ap3-ribbon__track .ap3-ico { color: var(--b600); width: 22px; height: 22px; }
.ap3-ribbon:hover .ap3-ribbon__track { animation-play-state: paused; }
@keyframes ap3-marquee { to { transform: translateX(-100%); } }

/* ---------- Reveal ---------- */
.ap3-js .ap3-reveal { opacity: 0; transform: translateY(26px); transition: opacity .8s var(--ease), transform .8s var(--ease); transition-delay: calc(var(--i, 0) * 80ms); }
.ap3-js .ap3-reveal.is-in { opacity: 1; transform: none; }

/* ---------- Intro + dial ---------- */
.ap3-intro__grid { display: grid; grid-template-columns: 1.35fr .65fr; gap: clamp(32px, 5vw, 80px); align-items: center; }
.ap3-dial { background: linear-gradient(170deg, #fff, var(--mist)); border: 1px solid var(--line); border-radius: 28px; padding: 30px; box-shadow: var(--shadow); text-align: center; }
.ap3-dial__ring { position: relative; width: 200px; margin: 0 auto 22px; }
.ap3-dial__ring svg { width: 100%; display: block; transform: rotate(-90deg); }
.ap3-dial__track { fill: none; stroke: var(--ice); stroke-width: 12; }
.ap3-dial__arc { fill: none; stroke: url(#none); stroke: var(--b500); stroke-width: 12; stroke-linecap: round; stroke-dasharray: 515; stroke-dashoffset: 515; transition: stroke-dashoffset 2s var(--ease); }
.ap3-dial.is-in .ap3-dial__arc { stroke-dashoffset: 170; }
.ap3-dial__tick { stroke: #C5D6EE; stroke-width: 2; }
.ap3-dial__val { position: absolute; inset: 0; display: grid; place-content: center; }
.ap3-dial__val b { font: 800 3.4rem/1 var(--font-h); color: var(--ink); letter-spacing: -.04em; }
.ap3-dial__val small { position: absolute; top: 58px; right: 46px; font: 700 1rem var(--font-h); color: var(--b600); }
.ap3-dial__val span { font-size: .78rem; text-transform: uppercase; letter-spacing: .14em; color: var(--muted); margin-top: 6px; }
.ap3-dial__list { text-align: left; display: grid; gap: 12px; margin-bottom: 22px; }
.ap3-dial__list li { display: flex; gap: 10px; align-items: center; font-weight: 600; color: var(--ink); font-size: .95rem; }
.ap3-dial__list .ap3-ico { color: var(--g600); }

/* ---------- Cards ---------- */
.ap3-cards { background: linear-gradient(180deg, #fff, var(--mist)); }
.ap3-cards__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.ap3-card { position: relative; padding: 30px 28px 28px; border-radius: var(--r); background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow); transition: transform .45s var(--ease), box-shadow .45s var(--ease), border-color .45s; overflow: hidden; }
.ap3-card::before { content: ""; position: absolute; inset: 0 0 auto; height: 4px; background: linear-gradient(90deg, var(--b500), var(--sky), var(--g500)); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--ease); }
.ap3-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: #C7DAF5; }
.ap3-card:hover::before { transform: scaleX(1); }
.ap3-card__ico { display: grid; place-items: center; width: 58px; height: 58px; border-radius: 18px; background: linear-gradient(140deg, var(--b500), var(--b600)); color: #fff; margin-bottom: 20px; box-shadow: 0 12px 22px -10px rgba(15, 95, 217, .8); transition: transform .5s var(--ease); }
.ap3-card__ico .ap3-ico { width: 28px; height: 28px; }
.ap3-card:nth-child(3n + 2) .ap3-card__ico { background: linear-gradient(140deg, var(--sky), #0EA5E9); }
.ap3-card:nth-child(3n + 3) .ap3-card__ico { background: linear-gradient(140deg, var(--g500), var(--g600)); box-shadow: 0 12px 22px -10px rgba(22, 163, 74, .8); }
.ap3-card:hover .ap3-card__ico { transform: rotate(-8deg) scale(1.08); }
.ap3-card__n { position: absolute; top: 26px; right: 26px; font: 700 .85rem var(--font-h); color: #B8C9E2; }
.ap3-card h3 { font-size: 1.2rem; margin-bottom: 10px; }
.ap3-card p { font-size: .98rem; }

/* ---------- Checklist + steps ---------- */
.ap3-process__grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 4vw, 56px); align-items: start; }
.ap3-process__grid--one { grid-template-columns: 1fr; max-width: 760px; }
.ap3-checklist { background: linear-gradient(160deg, var(--ice), #F6FBFF); border-radius: 28px; padding: clamp(28px, 4vw, 44px); border: 1px solid var(--line); }
.ap3-checklist ul { display: grid; gap: 14px; }
.ap3-checklist li { display: flex; gap: 14px; align-items: flex-start; font-weight: 500; color: var(--ink); }
.ap3-tick { width: 28px; height: 28px; flex: none; }
.ap3-tick circle { fill: #fff; stroke: var(--g500); stroke-width: 2; }
.ap3-tick path { fill: none; stroke: var(--g600); stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 20; stroke-dashoffset: 20; }
.ap3-checklist.is-in .ap3-tick path { animation: ap3-draw .5s var(--ease) forwards; animation-delay: calc(.3s + var(--i) * .12s); }
.ap3-checklist li { --i: 0; }
.ap3-steps__list { position: relative; display: grid; gap: 26px; padding-left: 4px; }
.ap3-steps__rail { position: absolute; left: 25px; top: 20px; bottom: 20px; width: 3px; background: var(--line); border-radius: 3px; overflow: hidden; }
.ap3-steps__rail i { position: absolute; inset: 0; background: linear-gradient(var(--b500), var(--g500)); transform: scaleY(0); transform-origin: top; transition: transform 1.6s var(--ease) .2s; }
.ap3-steps.is-in .ap3-steps__rail i { transform: scaleY(1); }
.ap3-steps__list li { position: relative; display: flex; gap: 20px; align-items: flex-start; }
.ap3-steps__n { position: relative; z-index: 1; display: grid; place-items: center; width: 46px; height: 46px; flex: none; border-radius: 50%; background: #fff; border: 2px solid var(--b500); color: var(--b600); font: 800 1.05rem var(--font-h); box-shadow: 0 0 0 6px #fff; transition: background .4s, color .4s; transition-delay: calc(.3s + var(--i) * .3s); }
.ap3-steps.is-in .ap3-steps__n { background: var(--b600); color: #fff; }
.ap3-steps__list h3 { font-size: 1.12rem; margin: 9px 0 6px; }

/* ---------- Local ---------- */
.ap3-local { background: var(--mist); }
.ap3-local__grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 72px); align-items: center; }
.ap3-tags { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }
.ap3-tags li { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px 8px 10px; border-radius: 999px; background: #fff; border: 1px solid var(--line); font-weight: 600; font-size: .9rem; color: var(--ink); }
.ap3-tags .ap3-ico { width: 16px; height: 16px; color: var(--g600); }
.ap3-map { width: 100%; display: block; border-radius: 22px; box-shadow: var(--shadow-lg); }
.ap3-map__river { fill: none; stroke: #1D5FB8; stroke-width: 16; stroke-linecap: round; opacity: .55; }
.ap3-map__road { fill: none; stroke: #2B4C7B; stroke-width: 3; stroke-dasharray: 8 8; animation: ap3-dash 30s linear infinite; }
.ap3-map__pin circle { fill: var(--sky); stroke: #0A1E3B; stroke-width: 2; }
.ap3-map__pin text { font: 600 11px var(--font-b); fill: #BFD7F5; }
.ap3-map__pin { opacity: 0; transition: opacity .6s; transition-delay: calc(.4s + var(--i) * .15s); }
.ap3-local__map.is-in .ap3-map__pin { opacity: 1; }
.ap3-map__center circle { fill: var(--g500); }
.ap3-map__center .ap3-map__ping { fill: rgba(34, 197, 94, .25); transform-box: fill-box; transform-origin: center; animation: ap3-ping 2.2s var(--ease) infinite; }
.ap3-map__center text { font: 700 15px var(--font-h); fill: #fff; }

/* ---------- Why ---------- */
.ap3-why { background: linear-gradient(165deg, var(--n800), var(--n950)); color: #BFD0E8; overflow: hidden; isolation: isolate; }
.ap3-why__glow { position: absolute; inset: -30% -10% auto auto; width: 700px; height: 700px; border-radius: 50%; background: radial-gradient(closest-side, rgba(43, 123, 243, .45), transparent); z-index: -1; animation: ap3-bob 12s ease-in-out infinite; }
.ap3-why__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.ap3-why__card { position: relative; padding: 30px 26px; border-radius: var(--r); background: rgba(255, 255, 255, .05); border: 1px solid rgba(255, 255, 255, .1); backdrop-filter: blur(6px); transition: transform .4s var(--ease), background .4s; }
.ap3-why__card:hover { transform: translateY(-6px); background: rgba(255, 255, 255, .09); }
.ap3-why__ico { display: grid; place-items: center; width: 54px; height: 54px; border-radius: 16px; background: rgba(74, 222, 128, .14); color: var(--g400); margin-bottom: 18px; box-shadow: inset 0 0 0 1px rgba(74, 222, 128, .3); }
.ap3-why__ico .ap3-ico { width: 26px; height: 26px; }
.ap3-why__card h3 { color: #fff; font-size: 1.15rem; margin-bottom: 8px; }
.ap3-why__card p { font-size: .96rem; }

/* ---------- Links / near / cities / services ---------- */
.ap3-links__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.ap3-link { display: flex; align-items: center; gap: 16px; padding: 20px; border-radius: 18px; background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow); transition: transform .35s var(--ease), border-color .35s, box-shadow .35s; }
.ap3-link:hover { transform: translateY(-4px); border-color: var(--b400); box-shadow: var(--shadow-lg); }
.ap3-link__ico { display: grid; place-items: center; width: 50px; height: 50px; flex: none; border-radius: 14px; background: var(--ice); color: var(--b600); transition: background .35s, color .35s; }
.ap3-link:hover .ap3-link__ico { background: var(--b600); color: #fff; }
.ap3-link__body { display: grid; gap: 4px; flex: 1; min-width: 0; }
.ap3-link__body b { font: 700 1.02rem/1.3 var(--font-h); color: var(--ink); }
.ap3-link__body small { font-size: .88rem; color: var(--muted); line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ap3-link__arrow { color: var(--b500); transition: transform .35s var(--ease); }
.ap3-link:hover .ap3-link__arrow { transform: translateX(4px); }
.ap3-near { padding-block: 0 clamp(48px, 6vw, 72px); }
.ap3-sec + .ap3-near { padding-top: clamp(48px, 6vw, 72px); }
.ap3-near__box { display: flex; align-items: center; justify-content: space-between; gap: 24px 40px; flex-wrap: wrap; padding: 28px 32px; border-radius: 24px; background: linear-gradient(120deg, var(--ice), #F2FBF5); border: 1px solid var(--line); }
.ap3-near__box .ap3-kicker { background: #fff; margin-bottom: 10px; }
.ap3-near__chips { display: flex; flex-wrap: wrap; gap: 10px; }
.ap3-near__chips a { display: inline-flex; align-items: center; gap: 6px; padding: 10px 16px 10px 12px; border-radius: 999px; background: #fff; border: 1px solid var(--line); font-weight: 600; color: var(--ink); transition: background .3s, color .3s, transform .3s var(--ease); }
.ap3-near__chips a:hover { background: var(--b600); color: #fff; transform: translateY(-2px); }
.ap3-near__chips .ap3-ico { width: 16px; height: 16px; color: var(--g600); }
.ap3-near__chips a:hover .ap3-ico { color: #fff; }

.ap3-cities__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.ap3-city { position: relative; display: grid; gap: 6px; padding: 24px; border-radius: 20px; background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow); transition: transform .35s var(--ease), box-shadow .35s; overflow: hidden; }
.ap3-city:hover { transform: translateY(-5px); box-shadow: var(--shadow-lg); }
.ap3-city__pin { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: #DCFCE7; color: var(--g600); margin-bottom: 8px; }
.ap3-city b { font: 700 1.15rem var(--font-h); color: var(--ink); }
.ap3-city small { color: var(--muted); font-size: .88rem; line-height: 1.45; }
.ap3-city .ap3-link__arrow { position: absolute; top: 28px; right: 24px; }

.ap3-svc { background: var(--mist); }
.ap3-svc__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.ap3-svc__card { padding: 26px; border-radius: var(--r); background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow); }
.ap3-svc__top { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.ap3-svc__top .ap3-card__ico { margin: 0; width: 48px; height: 48px; border-radius: 14px; }
.ap3-svc__top h3 { font-size: 1.12rem; }
.ap3-svc__card ul { display: grid; gap: 2px; }
.ap3-svc__card a { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 10px; font-weight: 500; color: var(--ink); transition: background .25s, color .25s; }
.ap3-svc__card a:hover { background: var(--ice); color: var(--b600); }
.ap3-svc__card a .ap3-ico { width: 16px; height: 16px; color: var(--b500); }

.ap3-fam { display: grid; grid-template-columns: repeat(5, 1fr); gap: 18px; }
.ap3-fam__item { position: relative; display: flex; flex-direction: column; gap: 6px; padding: 18px 18px 20px; border-radius: var(--r); background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow); transition: transform .4s var(--ease), box-shadow .4s; }
.ap3-fam__item:hover { transform: translateY(-8px); box-shadow: var(--shadow-lg); }
.ap3-fam__art { display: block; border-radius: 16px; background: linear-gradient(160deg, var(--n800), var(--n950)); padding: 8px; margin-bottom: 10px; }
.ap3-fam__art .ap3-scene { display: block; width: 100%; height: auto; }
.ap3-fam__item b { font: 700 1.05rem var(--font-h); color: var(--ink); }
.ap3-fam__item small { color: var(--muted); font-size: .86rem; line-height: 1.45; flex: 1; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ap3-fam__go { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; color: var(--b600); font-size: .92rem; margin-top: 6px; }
.ap3-fam__item:not(:hover) .ap3-scene * { animation-play-state: paused; }
.ap3-off, .ap3-off * { animation-play-state: paused !important; }

/* ---------- FAQ ---------- */
.ap3-faq__grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(28px, 5vw, 72px); align-items: start; }
.ap3-faq--big .ap3-faq__grid { grid-template-columns: 1fr; max-width: 900px; }
.ap3-faq__head { position: sticky; top: 120px; }
.ap3-faq--big .ap3-faq__head { position: static; }
.ap3-faq__list { display: grid; gap: 12px; }
.ap3-qa { border-radius: 18px; background: #fff; border: 1px solid var(--line); transition: border-color .3s, box-shadow .3s; }
.ap3-qa[open] { border-color: #BFD5F3; box-shadow: var(--shadow); }
.ap3-qa summary { display: flex; justify-content: space-between; align-items: center; gap: 18px; padding: 20px 22px; cursor: pointer; list-style: none; font: 600 1.04rem/1.4 var(--font-h); color: var(--ink); }
.ap3-qa summary::-webkit-details-marker { display: none; }
.ap3-qa summary:focus-visible { outline: 3px solid var(--sky); outline-offset: 2px; border-radius: 18px; }
.ap3-qa__pm { position: relative; width: 32px; height: 32px; flex: none; border-radius: 50%; background: var(--ice); transition: background .3s, transform .4s var(--ease); }
.ap3-qa__pm::before, .ap3-qa__pm::after { content: ""; position: absolute; left: 50%; top: 50%; width: 12px; height: 2px; margin: -1px 0 0 -6px; background: var(--b600); border-radius: 2px; transition: transform .4s var(--ease), background .3s; }
.ap3-qa__pm::after { transform: rotate(90deg); }
.ap3-qa[open] .ap3-qa__pm { background: var(--b600); transform: rotate(180deg); }
.ap3-qa[open] .ap3-qa__pm::before, .ap3-qa[open] .ap3-qa__pm::after { background: #fff; }
.ap3-qa[open] .ap3-qa__pm::after { transform: rotate(0); }
.ap3-qa__a { padding: 0 22px 22px; }
.ap3-qa[open] .ap3-qa__a { animation: ap3-in .45s var(--ease); }
.ap3-faq__search { display: flex; align-items: center; gap: 10px; margin-top: 22px; padding: 0 18px; border-radius: 999px; border: 1.5px solid var(--line); background: #fff; }
.ap3-faq__search input { flex: 1; border: 0; outline: 0; padding: 15px 0; font: inherit; background: none; color: var(--ink); }
.ap3-faq__search:focus-within { border-color: var(--b500); }
.ap3-qa.is-hidden { display: none; }

/* ---------- CTA band ---------- */
.ap3-cta { position: relative; padding: clamp(64px, 8vw, 100px) 0; background: linear-gradient(130deg, var(--b600), var(--n800) 55%, var(--n950)); color: #CFE0F7; overflow: hidden; isolation: isolate; }
.ap3-cta__air { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; }
.ap3-cta__air path { fill: none; stroke: rgba(255, 255, 255, .14); stroke-width: 2; stroke-dasharray: 10 22; animation: ap3-dash 16s linear infinite; }
.ap3-cta__grid { display: grid; grid-template-columns: 1fr minmax(320px, 440px); gap: clamp(28px, 5vw, 72px); align-items: center; }
.ap3-cta .ap3-h2 { color: #fff; font-size: clamp(2rem, 4vw, 3rem); }
.ap3-cta__copy > p { font-size: 1.12rem; max-width: 520px; }
.ap3-cta__phone { display: inline-flex; align-items: center; gap: 16px; margin-top: 30px; color: #fff; }
.ap3-cta__ring { position: relative; display: grid; place-items: center; width: 62px; height: 62px; border-radius: 50%; background: var(--g500); color: #fff; }
.ap3-cta__ring::before { content: ""; position: absolute; inset: -8px; border-radius: 50%; border: 2px solid rgba(74, 222, 128, .6); animation: ap3-ping 2s var(--ease) infinite; }
.ap3-cta__ring .ap3-ico { width: 28px; height: 28px; animation: ap3-wiggle 3s ease-in-out infinite; }
@keyframes ap3-wiggle { 0%, 80%, 100% { transform: rotate(0); } 84% { transform: rotate(-14deg); } 88% { transform: rotate(12deg); } 92% { transform: rotate(-8deg); } 96% { transform: rotate(6deg); } }
.ap3-cta__phone small { display: block; font-size: .85rem; color: #A9C2E4; }
.ap3-cta__phone b { font: 800 clamp(1.5rem, 3vw, 2rem)/1.1 var(--font-h); letter-spacing: -.02em; }

/* ---------- Forms ---------- */
.ap3-form { position: relative; background: #fff; color: var(--text); border-radius: 26px; padding: clamp(22px, 3vw, 34px); box-shadow: var(--shadow-lg); border: 1px solid var(--line); }
.ap3-form__head { display: flex; align-items: center; gap: 14px; margin-bottom: 20px; }
.ap3-form--quick .ap3-form__head { display: grid; gap: 2px; }
.ap3-form__head b { display: block; font: 700 1.3rem var(--font-h); color: var(--ink); }
.ap3-form__head span { color: var(--muted); font-size: .93rem; }
.ap3-form__badge { display: grid; place-items: center; width: 54px; height: 54px; flex: none; border-radius: 16px; background: linear-gradient(140deg, var(--g500), var(--g600)); color: #fff; }
.ap3-form__badge .ap3-ico { width: 26px; height: 26px; }
.ap3-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.ap3-field { display: grid; gap: 7px; margin-bottom: 14px; }
.ap3-field > span { font-weight: 600; font-size: .9rem; color: var(--ink); }
.ap3-field em { font-style: normal; color: var(--b600); }
.ap3-field :is(input, select, textarea) { width: 100%; min-height: 52px; padding: 13px 16px; border-radius: 14px; border: 1.5px solid var(--line); background: var(--mist); color: var(--ink); font: inherit; font-size: 1rem; transition: border-color .25s, background .25s, box-shadow .25s; appearance: none; }
.ap3-field select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F5FD9' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; background-size: 18px; padding-right: 44px; }
.ap3-field textarea { min-height: 96px; resize: vertical; }
.ap3-field :is(input, select, textarea):focus { outline: 0; border-color: var(--b500); background: #fff; box-shadow: 0 0 0 4px rgba(43, 123, 243, .15); }
.ap3-field.is-invalid :is(input, select, textarea) { border-color: var(--amber); background: #FFFBEB; box-shadow: 0 0 0 4px rgba(245, 158, 11, .16); }
.ap3-fs { border: 0; padding: 0; margin: 0 0 22px; min-width: 0; }
.ap3-fs legend { display: flex; align-items: center; gap: 10px; padding: 0; margin-bottom: 14px; font: 700 1.04rem var(--font-h); color: var(--ink); }
.ap3-fs legend i { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--ice); color: var(--b600); font: 800 .85rem var(--font-h); font-style: normal; }
.ap3-tiles { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }
.ap3-tile input, .ap3-pill input { position: absolute; opacity: 0; pointer-events: none; }
.ap3-tile span { display: grid; justify-items: center; gap: 8px; padding: 16px 8px 14px; border-radius: 16px; border: 1.5px solid var(--line); background: var(--mist); text-align: center; font-weight: 600; font-size: .84rem; line-height: 1.25; color: var(--ink); cursor: pointer; transition: border-color .25s, background .25s, transform .25s var(--ease), box-shadow .25s; height: 100%; }
.ap3-tile .ap3-ico { width: 30px; height: 30px; color: var(--b600); transition: transform .35s var(--ease); }
.ap3-tile span:hover { border-color: var(--b400); transform: translateY(-2px); }
.ap3-tile input:checked + span { border-color: var(--b600); background: #fff; box-shadow: 0 0 0 3px rgba(43, 123, 243, .18), var(--shadow); }
.ap3-tile input:checked + span .ap3-ico { transform: scale(1.15); color: var(--g600); }
.ap3-tile input:focus-visible + span, .ap3-pill input:focus-visible + span { outline: 3px solid var(--sky); outline-offset: 2px; }
.ap3-tiles.is-invalid .ap3-tile span { border-color: var(--amber); }
.ap3-pills { display: flex; flex-wrap: wrap; gap: 10px; }
.ap3-pill span { display: inline-flex; align-items: center; gap: 8px; padding: 11px 16px; border-radius: 999px; border: 1.5px solid var(--line); background: var(--mist); font-weight: 600; font-size: .9rem; color: var(--ink); cursor: pointer; transition: all .25s var(--ease); }
.ap3-pill .ap3-ico { width: 18px; height: 18px; color: var(--b600); }
.ap3-pill input:checked + span { background: var(--b600); border-color: var(--b600); color: #fff; }
.ap3-pill input:checked + span .ap3-ico { color: #fff; }
.ap3-pill--urgent input:checked + span { background: var(--amber); border-color: var(--amber); color: var(--ink); }
.ap3-pill--urgent input:checked + span .ap3-ico { color: var(--ink); }
.ap3-pills--sm .ap3-pill span { padding: 9px 13px; font-size: .84rem; }
.ap3-form__tip { display: flex; gap: 10px; align-items: flex-start; margin-top: 14px; padding: 14px 16px; border-radius: 14px; background: #FFF7E6; border: 1px solid #FCD34D; color: var(--ink); font-size: .93rem; }
.ap3-form__tip .ap3-ico { color: #D97706; margin-top: 2px; }
.ap3-form__tip[hidden] { display: none; }
.ap3-form__submit { margin-top: 6px; }
.ap3-form__submit.is-loading { pointer-events: none; opacity: .85; }
.ap3-form__submit.is-loading .ap3-ico { animation: ap3-rot .8s linear infinite; }
.ap3-form__fine { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 14px; font-size: .84rem; color: var(--muted); }
.ap3-form__fine .ap3-ico { color: var(--g600); width: 16px; height: 16px; }
.ap3-form__msg:not(:empty) { margin-top: 14px; padding: 12px 16px; border-radius: 12px; background: #FFF7E6; border: 1px solid #FCD34D; color: var(--ink); font-weight: 500; font-size: .93rem; }
.ap3-form__done { position: absolute; inset: 0; z-index: 3; display: grid; place-content: center; justify-items: center; gap: 10px; padding: 30px; text-align: center; background: #fff; border-radius: inherit; animation: ap3-in .5s var(--ease); }
.ap3-form__done[hidden] { display: none; }
.ap3-form__done b { font: 800 1.6rem var(--font-h); color: var(--ink); }
.ap3-form__done p { max-width: 340px; }
.ap3-done { width: 96px; height: 96px; }
.ap3-done circle { fill: #DCFCE7; stroke: var(--g500); stroke-width: 3; }
.ap3-done path { fill: none; stroke: var(--g600); stroke-width: 6; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 60; stroke-dashoffset: 60; animation: ap3-draw .7s .25s var(--ease) forwards; }
.ap3-hp { position: absolute !important; left: -9999px !important; }

.ap3-booking { background: linear-gradient(180deg, var(--mist), #fff); padding-top: clamp(40px, 5vw, 64px); }
.ap3-booking__grid { display: grid; grid-template-columns: 1.45fr .55fr; gap: clamp(24px, 4vw, 56px); align-items: start; }
.ap3-booking__side .ap3-sec { padding: 0; }
.ap3-booking__side .ap3-process__grid { width: 100%; grid-template-columns: 1fr; }
.ap3-booking__side { position: sticky; top: 110px; }

.ap3-contact { padding-top: clamp(40px, 5vw, 64px); background: linear-gradient(180deg, var(--mist), #fff); }
.ap3-contact__grid { display: grid; grid-template-columns: .7fr 1.3fr; gap: clamp(24px, 4vw, 48px); align-items: start; }
.ap3-contact__cards { display: grid; gap: 16px; }
.ap3-ccard { display: grid; gap: 4px; padding: 24px; border-radius: 22px; background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow); transition: transform .35s var(--ease); }
.ap3-ccard:hover { transform: translateY(-4px); }
.ap3-ccard > .ap3-ico { width: 44px; height: 44px; padding: 10px; border-radius: 14px; background: var(--ice); color: var(--b600); margin-bottom: 8px; }
.ap3-ccard small { color: var(--muted); font-weight: 600; text-transform: uppercase; letter-spacing: .1em; font-size: .74rem; }
.ap3-ccard b { font: 700 1.15rem/1.35 var(--font-h); color: var(--ink); word-break: break-word; }
.ap3-ccard span { color: var(--b600); font-weight: 600; font-size: .9rem; }
.ap3-ccard--blue { background: linear-gradient(140deg, var(--b500), var(--n800)); border: 0; }
.ap3-ccard--blue > .ap3-ico { background: rgba(255, 255, 255, .14); color: #fff; }
.ap3-ccard--blue :is(small, b, span) { color: #fff; }
.ap3-ccard--blue b { font-size: 1.6rem; }

/* ---------- Blog ---------- */
.ap3-article__grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: clamp(32px, 5vw, 72px); align-items: start; }
.ap3-article__body { max-width: 760px; font-size: 1.08rem; }
.ap3-article__sec { scroll-margin-top: 120px; margin-bottom: 44px; }
.ap3-article__sec h2 { font-size: clamp(1.45rem, 2.4vw, 1.9rem); margin-bottom: 16px; }
.ap3-article__sec p { margin-bottom: 16px; }
.ap3-article__list { display: grid; gap: 10px; margin: 6px 0 18px; padding: 22px 24px; border-radius: 18px; background: var(--mist); border: 1px solid var(--line); }
.ap3-article__list li { display: flex; gap: 12px; align-items: flex-start; color: var(--ink); }
.ap3-article__list .ap3-ico { color: var(--g600); margin-top: 3px; }
.ap3-article__side { position: sticky; top: 110px; display: grid; gap: 20px; }
.ap3-toc { padding: 24px; border-radius: 20px; border: 1px solid var(--line); background: #fff; }
.ap3-toc b { display: flex; align-items: center; gap: 8px; font: 700 1rem var(--font-h); color: var(--ink); margin-bottom: 12px; }
.ap3-toc ol { display: grid; gap: 2px; counter-reset: toc; }
.ap3-toc a { display: block; padding: 8px 10px 8px 14px; border-left: 2px solid var(--line); font-size: .92rem; color: var(--muted); line-height: 1.4; transition: color .25s, border-color .25s, background .25s; }
.ap3-toc a:hover, .ap3-toc a.is-active { color: var(--b600); border-color: var(--b600); background: var(--mist); }
.ap3-sidecta { display: grid; gap: 12px; padding: 24px; border-radius: 20px; background: linear-gradient(160deg, var(--ice), #F2FBF5); border: 1px solid var(--line); }
.ap3-sidecta .ap3-card__ico { width: 48px; height: 48px; margin: 0; }
.ap3-sidecta b { font: 700 1.2rem var(--font-h); color: var(--ink); }

.ap3-prose { max-width: 820px; font-size: 1.04rem; }
.ap3-prose :is(h2, h3) { margin: 32px 0 12px; }
.ap3-prose p, .ap3-prose ul, .ap3-prose ol { margin-bottom: 14px; }
.ap3-prose ul { list-style: disc; padding-left: 22px; }

/* ---------- Footer ---------- */
.ap3-foot { background: var(--n950); color: #9FB2CF; font-family: var(--font-b); font-size: .95rem; }
.ap3-foot a { color: #C9D7EC; text-decoration: none; transition: color .2s; }
.ap3-foot a:hover { color: #fff; }
.ap3-foot__top { padding: 72px 0 48px; border-bottom: 1px solid rgba(255, 255, 255, .08); background: radial-gradient(700px 300px at 10% 0%, rgba(43, 123, 243, .18), transparent 70%); }
.ap3-foot__grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 40px; }
.ap3-foot__logo img { max-height: 64px; width: auto; filter: drop-shadow(0 0 1px rgba(255, 255, 255, .3)); background: #fff; border-radius: 14px; padding: 6px 10px; }
.ap3-foot__name { font: 800 1.6rem var(--font-h); color: #fff !important; }
.ap3-foot__brand p { margin: 18px 0; max-width: 360px; line-height: 1.6; }
.ap3-foot__phone, .ap3-foot__mail { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.ap3-foot__phone { font: 700 1.3rem var(--font-h); color: #fff !important; }
.ap3-foot__phone .ap3-ico, .ap3-foot__mail .ap3-ico { color: var(--g400); }
.ap3-foot__247 { display: flex !important; align-items: center; gap: 10px; color: #DCFCE7; font-weight: 600; margin: 14px 0 0 !important; }
.ap3-foot h3 { font: 700 .82rem var(--font-b); text-transform: uppercase; letter-spacing: .14em; color: #fff; margin: 6px 0 18px; }
.ap3-foot ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 11px; }
.ap3-foot nav a { display: inline-flex; align-items: center; gap: 9px; }
.ap3-foot nav .ap3-ico { width: 17px; height: 17px; color: #5B8BD6; }
.ap3-foot__base { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px; padding: 22px 0 28px; font-size: .86rem; }
.ap3-foot__base p { margin: 0; display: flex; gap: 20px; }

.ap3-float { position: fixed; right: 22px; bottom: 22px; z-index: 90; display: flex; gap: 10px; align-items: center; transform: translateY(140%); transition: transform .5s var(--ease); font-family: var(--font-b); }
.ap3-float.is-on { transform: none; }
.ap3-float a { display: inline-flex; align-items: center; gap: 10px; height: 58px; border-radius: 999px; color: #fff; text-decoration: none; font-weight: 700; box-shadow: 0 16px 32px -12px rgba(6, 24, 51, .6); }
.ap3-float__call { width: 58px; justify-content: center; background: var(--b600); }
.ap3-float__book { padding: 0 24px 0 20px; background: linear-gradient(135deg, var(--g500), var(--g600)); }
.ap3-float .ap3-ico { width: 22px; height: 22px; }
body.ap3:has(.apd-mobilebar) .ap3-float { display: none; }
@media (min-width: 1025px) { body.ap3:has(.apd-mobilebar) .ap3-float { display: flex; } }

/* ---------- Responsive ---------- */
@media (max-width: 1100px) {
	.ap3-fam { grid-template-columns: repeat(3, 1fr); }
	.ap3-why__grid { grid-template-columns: repeat(2, 1fr); }
	.ap3-cities__grid { grid-template-columns: repeat(2, 1fr); }
	.ap3-tiles { grid-template-columns: repeat(4, 1fr); }
	.ap3-foot__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 960px) {
	.ap3-hero__grid, .ap3-intro__grid, .ap3-process__grid, .ap3-local__grid, .ap3-faq__grid, .ap3-cta__grid, .ap3-booking__grid, .ap3-contact__grid, .ap3-article__grid { grid-template-columns: 1fr; }
	.ap3-hero__art { max-width: 520px; width: 100%; margin: 0 auto; }
	.ap3-cards__grid, .ap3-links__grid, .ap3-svc__grid { grid-template-columns: repeat(2, 1fr); }
	.ap3-faq__head, .ap3-booking__side, .ap3-article__side { position: static; }
	.ap3-dial { max-width: 460px; }
	.ap3-article__side { order: -1; }
	.ap3-toc { display: none; }
}
@media (max-width: 640px) {
	body.ap3 { font-size: 16px; }
	.ap3-wrap { width: calc(100% - 32px); }
	.ap3-cards__grid, .ap3-links__grid, .ap3-svc__grid, .ap3-why__grid, .ap3-cities__grid, .ap3-form__row, .ap3-foot__grid { grid-template-columns: 1fr; }
	.ap3-fam { grid-template-columns: repeat(2, 1fr); gap: 12px; }
	.ap3-tiles { grid-template-columns: repeat(2, 1fr); }
	.ap3-cta-row .ap3-btn { flex: 1 1 100%; }
	.ap3-near__box { padding: 22px; }
	.ap3-float { right: 12px; bottom: 12px; }
}

@media (prefers-reduced-motion: reduce) {
	body.ap3 *, body.ap3 *::before, body.ap3 *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
	.ap3-js .ap3-reveal { opacity: 1; transform: none; }
}

/* ---------- Small layout fixes ---------- */
.ap3-near + .ap3-links { padding-top: 8px; }
.ap3-booking__side .ap3-h2 { font-size: clamp(1.5rem, 2.2vw, 1.9rem); }
.ap3-booking__side .ap3-steps__list p { font-size: .95rem; }
body.ap3-t-appointment .ap3-float__book, body.ap3-t-contact .ap3-float__book { display: none; }
.ap3-form__badge .ap3-ico { color: #fff; }
/* =========================================================================
   v1.1 Professional motion: blueprint schematics, airflow field, status panel
   ========================================================================= */
.ap3-hero { background: radial-gradient(900px 520px at 78% 30%, rgba(43, 123, 243, .28), transparent 65%), linear-gradient(180deg, #071A33, #04101F); border-bottom: 1px solid rgba(125, 180, 255, .14); padding-bottom: clamp(56px, 7vw, 96px); }
.ap3-hero--heating, .ap3-hero--fireplace, .ap3-hero--boiler { background: radial-gradient(900px 520px at 78% 30%, rgba(245, 158, 11, .12), transparent 65%), radial-gradient(700px 500px at 60% 0%, rgba(43, 123, 243, .22), transparent 65%), linear-gradient(180deg, #071A33, #04101F); }
.ap3-hero--air, .ap3-hero--rebate { background: radial-gradient(900px 520px at 78% 30%, rgba(34, 197, 94, .12), transparent 65%), radial-gradient(700px 500px at 60% 0%, rgba(43, 123, 243, .22), transparent 65%), linear-gradient(180deg, #071A33, #04101F); }
.ap3-hero--home { padding-bottom: clamp(64px, 8vw, 112px); }
.ap3-hero__bg::before { background-size: 40px 40px; background-image: linear-gradient(rgba(140, 190, 255, .05) 1px, transparent 1px), linear-gradient(90deg, rgba(140, 190, 255, .05) 1px, transparent 1px); }
.ap3-flowfield { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .9; mask-image: linear-gradient(90deg, rgba(0,0,0,.35), #000 45%); }
.ap3-eyebrow { font-family: "JetBrains Mono", ui-monospace, monospace; font-size: .74rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; border-radius: 6px; padding: 8px 12px; background: rgba(125, 180, 255, .08); box-shadow: inset 0 0 0 1px rgba(125, 180, 255, .22); color: #BFD7F7; }
.ap3-h1 { margin-bottom: 22px; }
.ap3-h1 .w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .08em; margin-bottom: -.08em; }
.ap3-h1 .w > span { display: inline-block; transform: translateY(105%); animation: ap3-wordup .95s cubic-bezier(.16, 1, .3, 1) forwards; animation-delay: calc(.12s + var(--i) * 55ms); }
@keyframes ap3-wordup { to { transform: none; } }
.ap3-js .ap3-hero .ap3-h1 { animation: none; }

.ap3-hero__art { position: relative; animation: ap3-in 1.1s .25s var(--ease) both; }
.ap3-hero__frame { position: relative; border-radius: 18px; background: linear-gradient(180deg, rgba(14, 40, 80, .55), rgba(6, 20, 42, .55)); box-shadow: inset 0 0 0 1px rgba(125, 180, 255, .16), 0 40px 80px -40px rgba(0, 0, 0, .8); padding: 14px; backdrop-filter: blur(4px); }
.ap3-hero__corner { position: absolute; width: 14px; height: 14px; border: 0 solid #5B9BFF; }
.ap3-hero__corner:nth-child(1) { top: -1px; left: -1px; border-top-width: 2px; border-left-width: 2px; border-top-left-radius: 18px; }
.ap3-hero__corner:nth-child(2) { top: -1px; right: -1px; border-top-width: 2px; border-right-width: 2px; border-top-right-radius: 18px; }
.ap3-hero__corner:nth-child(3) { bottom: -1px; left: -1px; border-bottom-width: 2px; border-left-width: 2px; border-bottom-left-radius: 18px; }
.ap3-hero__corner:nth-child(4) { bottom: -1px; right: -1px; border-bottom-width: 2px; border-right-width: 2px; border-bottom-right-radius: 18px; }
.ap3-hero__tag { position: absolute; top: 14px; left: 18px; z-index: 2; font: 600 .66rem/1 "JetBrains Mono", ui-monospace, monospace; letter-spacing: .16em; color: #7FA8DA; }
.ap3-hero__art .ap3-scene { display: block; width: 100%; height: auto; }

.ap3-hud { position: absolute; right: -18px; bottom: -26px; z-index: 3; width: 228px; padding: 14px 16px 12px; border-radius: 14px; background: rgba(8, 24, 48, .82); box-shadow: inset 0 0 0 1px rgba(125, 180, 255, .22), 0 24px 48px -20px rgba(0, 0, 0, .7); backdrop-filter: blur(10px); font-family: "JetBrains Mono", ui-monospace, monospace; color: #CFE0F7; animation: ap3-in .9s .9s var(--ease) both; }
.ap3-hud__top { display: flex; align-items: center; gap: 8px; font-size: .64rem; letter-spacing: .16em; text-transform: uppercase; color: #8FB3E6; padding-bottom: 10px; margin-bottom: 8px; border-bottom: 1px solid rgba(125, 180, 255, .14); }
.ap3-hud__top .ap3-live { width: 7px; height: 7px; }
.ap3-hud__spark { margin-left: auto; width: 56px; height: 14px; }
.ap3-hud__spark svg { width: 100%; height: 100%; display: block; }
.ap3-hud__spark path { fill: none; stroke: #4ADE80; stroke-width: 1.6; stroke-dasharray: 120; stroke-dashoffset: 120; animation: ap3-draw 2.4s 1.2s ease forwards; }
.ap3-hud ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.ap3-hud li { display: grid; grid-template-columns: 1fr auto 34px; align-items: baseline; gap: 6px; font-size: .74rem; }
.ap3-hud li span { color: #8FB3E6; }
.ap3-hud li b { color: #fff; font-weight: 600; font-size: .9rem; font-variant-numeric: tabular-nums; text-align: right; transition: color .4s; }
.ap3-hud li b.is-tick { color: #A7F3D0; }
.ap3-hud li small { color: #6F93C4; font-size: .66rem; }

/* Blueprint schematics */
.bp { overflow: visible; }
.bp .bp-line { fill: none; stroke: #8EC1FF; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
.bp .bp-line--dim { stroke: rgba(142, 193, 255, .38); stroke-width: 1.1; }
.bp .bp-body { fill: rgba(56, 140, 255, .055); }
.bp .bp-dim { fill: none; stroke: rgba(142, 193, 255, .3); stroke-width: 1; stroke-dasharray: 2 4; }
.bp .bp-fin { stroke: rgba(142, 193, 255, .45); stroke-width: 1; }
.bp .bp-hatch path { stroke: rgba(142, 193, 255, .3); stroke-width: 1; }
.bp .bp-hub { fill: #0B2346; stroke: #8EC1FF; stroke-width: 1.2; }
.bp .bp-blade { fill: rgba(142, 193, 255, .2); stroke: #8EC1FF; stroke-width: 1; }
.bp .bp-pipe { fill: none; stroke: rgba(142, 193, 255, .12); stroke-linecap: round; stroke-linejoin: round; }
.bp .bp-flow { fill: none; stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: .1 13.9; animation: bp-flow var(--sp, 1s) linear infinite; }
.bp .bp-flow--hot { stroke: #FBBF24; filter: drop-shadow(0 0 3px rgba(251, 191, 36, .7)); }
.bp .bp-flow--warm { stroke: #FCD34D; opacity: .75; }
.bp .bp-flow--cold { stroke: #67E8F9; filter: drop-shadow(0 0 3px rgba(103, 232, 249, .6)); }
.bp .bp-flow--clean { stroke: #86EFAC; }
.bp .bp-flow--dirty { stroke: #94A3B8; stroke-dasharray: .1 19.9; stroke-width: 3.4; }
.bp .bp-flow--exhaust { stroke: rgba(203, 213, 225, .55); stroke-dasharray: .1 15.9; }
.bp .bp-flow--elec { stroke: #FDE68A; stroke-dasharray: 6 26; }
.bp .bp-flow--drain { stroke: #7DD3FC; opacity: .7; stroke-dasharray: .1 17.9; }
@keyframes bp-flow { to { stroke-dashoffset: -14; } }
.bp .bp-flow--dirty { animation-name: bp-flow20; }
.bp .bp-flow--exhaust { animation-name: bp-flow16; }
.bp .bp-flow--elec { animation-name: bp-flow32; }
.bp .bp-flow--drain { animation-name: bp-flow18; }
@keyframes bp-flow20 { to { stroke-dashoffset: -20; } }
@keyframes bp-flow16 { to { stroke-dashoffset: -16; } }
@keyframes bp-flow32 { to { stroke-dashoffset: -32; } }
@keyframes bp-flow18 { to { stroke-dashoffset: -18; } }

.bp .bp-draw { stroke-dasharray: 1; stroke-dashoffset: 1; animation: bp-draw 1.6s cubic-bezier(.65, 0, .35, 1) forwards; animation-delay: calc(.2s + var(--dl, 0) * 1s); }
@keyframes bp-draw { to { stroke-dashoffset: 0; } }
.bp .bp-label { opacity: 0; animation: bp-fade .7s ease forwards; animation-delay: calc(1.3s + var(--d, 0) * .14s); }
.bp .bp-label circle { fill: #5B9BFF; }
.bp .bp-label path { fill: none; stroke: rgba(142, 193, 255, .55); stroke-width: 1; }
.bp .bp-label text, .bp .bp-text, .bp .bp-mode-text { font: 600 10px "JetBrains Mono", ui-monospace, monospace; letter-spacing: .12em; fill: #A9C9F2; }
.bp .bp-mode-text { font-size: 11px; fill: #E2EEFF; }
.bp .bp-read { font: 600 11px "JetBrains Mono", ui-monospace, monospace; fill: #FDE68A; letter-spacing: .08em; }
@keyframes bp-fade { to { opacity: 1; } }
.bp--nolabels .bp-label, .bp--nolabels .bp-text, .bp--nolabels .bp-mode-text { display: none; }

.bp .bp-spin { animation: ap3-rot 2.4s linear infinite; }
.bp .bp-spin--fast { animation-duration: .9s; }
.bp .bp-flame { fill: url(#ap3flame); mix-blend-mode: screen; opacity: .95; animation: bp-flick .32s ease-in-out infinite alternate; animation-delay: calc(var(--fd) * -1); }
@keyframes bp-flick { from { transform: scale(.96, .9); opacity: .78; } to { transform: scale(1.02, 1.06); opacity: .95; } }
.bp .bp-hx { fill: none; stroke: #F59E0B; stroke-width: 3; opacity: .25; filter: blur(2px); animation: bp-heat 4s ease-in-out infinite; }
@keyframes bp-heat { 50% { opacity: .6; } }
.bp .bp-breathe { animation: bp-breathe 6s ease-in-out infinite; }
@keyframes bp-breathe { 50% { opacity: .55; } }
.bp .bp-led { fill: #4ADE80; animation: ap3-blink-soft 2.4s ease-in-out infinite; }
@keyframes ap3-blink-soft { 50% { opacity: .35; } }
.bp .bp-anode { stroke: rgba(142, 193, 255, .55); stroke-width: 2; stroke-dasharray: 4 3; fill: none; }
.bp .bp-glass { stroke: rgba(255, 255, 255, .08); stroke-width: 14; stroke-linecap: round; }
.bp .bp-pilot { fill: #60A5FA; animation: ap3-blink-soft 1.8s ease-in-out infinite; }
.bp .bp-uv { animation: bp-breathe 3s ease-in-out infinite; }
.bp .bp-uv-tube { fill: #C4B5FD; }
.bp .bp-strat { animation: bp-breathe 7s ease-in-out infinite; }
.bp .bp-needle { stroke: #FDE68A; stroke-width: 1.6; stroke-linecap: round; animation: bp-needle 5s ease-in-out infinite; }
@keyframes bp-needle { 0%, 100% { transform: rotate(-12deg); } 50% { transform: rotate(14deg); } }
.bp .bp-toggle { fill: #22C55E; opacity: .85; animation: ap3-blink-soft 3s ease-in-out infinite; animation-delay: var(--d); }
.bp .bp-meter-bg { fill: rgba(142, 193, 255, .14); }
.bp .bp-meter { fill: #FDE68A; transform-box: view-box; animation: bp-meter 3.2s ease-in-out infinite alternate; animation-delay: var(--d); }
@keyframes bp-meter { from { transform: scaleX(.25); } to { transform: scaleX(.85); } }
.bp .bp-cam { animation: bp-cam 6s ease-in-out infinite; }
@keyframes bp-cam { 0% { transform: translateX(-10px); } 50% { transform: translateX(26px); } 100% { transform: translateX(-10px); } }
.bp .bp-bar-old { fill: rgba(142, 193, 255, .2); }
.bp .bp-bar { transform-box: view-box; transform: scaleY(0); animation: bp-grow 1.2s cubic-bezier(.16, 1, .3, 1) forwards; animation-delay: calc(.8s + var(--d)); }
@keyframes bp-grow { to { transform: scaleY(1); } }
.bp .bp-trend { stroke: #4ADE80; stroke-width: 2; }
.bp .bp-mode { animation: bp-mode 12s ease-in-out infinite; }
.bp .bp-mode--cool { animation-delay: -6s; }
@keyframes bp-mode { 0%, 48% { opacity: 1; } 50%, 98% { opacity: 0; } 100% { opacity: 1; } }

/* Small schematics in the service grid: drawn already, animate only on hover */
.ap3-fam__art { background: linear-gradient(180deg, #0A2347, #04101F); padding: 4px; }
.ap3-fam__art .bp-draw { animation: none; stroke-dashoffset: 0; }
.ap3-fam__art .bp-label { animation: none; opacity: 1; }
.ap3-fam__item:not(:hover) .bp * { animation-play-state: paused !important; }

/* Calmer, more precise interactions */
.ap3-card:hover .ap3-card__ico { transform: none; }
.ap3-card__ico { border-radius: 14px; }
.ap3-cta__ring .ap3-ico { animation: none; }
.ap3-why__glow { animation: none; }
.ap3-js .ap3-reveal { transform: translateY(16px); transition-duration: .9s; }
.ap3-btn--green::after { animation-duration: 7s; }

@media (max-width: 960px) {
	.ap3-hud { position: relative; right: auto; bottom: auto; width: auto; margin: 14px 0 0; }
}
@media (prefers-reduced-motion: reduce) {
	.ap3-flowfield { display: none; }
	.bp .bp-draw { stroke-dashoffset: 0; }
	.bp .bp-label { opacity: 1; }
	.ap3-h1 .w > span { transform: none; }
}
/* Status panel as an instrument bar under the schematic */
.ap3-hud { position: relative; right: auto; bottom: auto; width: auto; margin-top: 12px; display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 18px; padding: 12px 16px; }
.ap3-hud__top { padding: 0 16px 0 0; margin: 0; border-bottom: 0; border-right: 1px solid rgba(125, 180, 255, .16); flex-direction: column; align-items: flex-start; gap: 6px; }
.ap3-hud__top .ap3-live { position: absolute; left: 16px; top: 15px; }
.ap3-hud__top { padding-left: 16px; }
.ap3-hud__top { position: relative; padding-left: 16px; } .ap3-hud__top .ap3-live { left: 0; top: 3px; }
.ap3-hud__spark { margin: 0; }
.ap3-hud ul { grid-template-columns: repeat(3, 1fr); gap: 14px; }
.ap3-hud li { grid-template-columns: auto auto; grid-template-rows: auto auto; column-gap: 4px; row-gap: 2px; justify-content: start; }
.ap3-hud li span { grid-column: 1 / -1; font-size: .62rem; letter-spacing: .1em; text-transform: uppercase; }
.ap3-hud li b { text-align: left; font-size: 1.05rem; }
.ap3-hud li small { align-self: end; padding-bottom: 2px; }
@media (max-width: 640px) {
	.ap3-hud { grid-template-columns: 1fr; gap: 10px; }
	.ap3-hud__top { border-right: 0; flex-direction: row; align-items: center; }
	.ap3-hud__spark { margin-left: auto; }
	.ap3-hud li b { font-size: .92rem; }
}
/* Accessible contrast for white text on green (WCAG AA) */
.ap3-btn--green { --bg: linear-gradient(135deg, #15803D, #166534); }
.ap3-float__book { background: linear-gradient(135deg, #15803D, #166534); }
.ap3-pill--urgent input:checked + span { color: #0B1B33; }

/* =========================================================================
   v1.2 Lower sections in the same technical language as the hero
   ========================================================================= */
.ap3-page { counter-reset: ap3sec; }

/* Section labels: numbered, monospaced, with a rule */
.ap3-kicker { counter-increment: ap3sec; background: none; padding: 0; border-radius: 0; gap: 10px; font-family: "JetBrains Mono", ui-monospace, monospace; font-size: .72rem; letter-spacing: .18em; color: var(--b600); }
.ap3-kicker::before { content: counter(ap3sec, decimal-leading-zero); color: var(--muted); font-weight: 500; }
.ap3-kicker::after { content: ""; width: 44px; height: 1px; background: currentColor; opacity: .45; order: 3; }
.ap3-kicker .ap3-ico { display: none; }
.ap3-kicker--light { background: none; box-shadow: none; color: #8FC0FF; }
.ap3-kicker--light::before { color: #6F93C4; }
.ap3-near__box .ap3-kicker, .ap3-booking__side .ap3-kicker { background: none; }

/* Faint engineering grid behind light sections */
.ap3-cards, .ap3-local, .ap3-svc, .ap3-booking, .ap3-contact { background-color: #F6F9FE; background-image: linear-gradient(rgba(15, 95, 217, .045) 1px, transparent 1px), linear-gradient(90deg, rgba(15, 95, 217, .045) 1px, transparent 1px); background-size: 32px 32px; }

/* Intro panel: a thermostat-style device instead of a playful dial */
.ap3-dial { background: linear-gradient(170deg, #0C2A52, #061833); border: 1px solid rgba(125, 180, 255, .2); color: #CFE0F7; border-radius: 22px; padding: 22px 24px 24px; box-shadow: 0 30px 60px -30px rgba(6, 24, 51, .65); }
.ap3-dial__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 18px; font: 600 .66rem/1 "JetBrains Mono", ui-monospace, monospace; letter-spacing: .16em; text-transform: uppercase; color: #8FB3E6; }
.ap3-dial__head span { display: inline-flex; align-items: center; gap: 8px; }
.ap3-dial__head .ap3-live { width: 7px; height: 7px; }
.ap3-dial__track { stroke: rgba(125, 180, 255, .14); stroke-width: 8; }
.ap3-dial__arc { stroke: url(#none); stroke: #5B9BFF; stroke-width: 8; filter: drop-shadow(0 0 6px rgba(91, 155, 255, .6)); }
.ap3-dial__tick { stroke: rgba(160, 200, 255, .35); }
.ap3-dial__val b { color: #fff; font-family: "JetBrains Mono", ui-monospace, monospace; font-weight: 600; font-size: 3rem; letter-spacing: -.02em; }
.ap3-dial__val small { color: #8FC0FF; top: 64px; right: 44px; }
.ap3-dial__val span { color: #8FB3E6; font-family: "JetBrains Mono", ui-monospace, monospace; font-size: .66rem; }
.ap3-dial__list { border-top: 1px solid rgba(125, 180, 255, .14); padding-top: 16px; }
.ap3-dial__list li { color: #E2EEFF; font-weight: 500; font-size: .92rem; }
.ap3-dial__list .ap3-ico { color: #4ADE80; }

/* Cards: specification sheets */
.ap3-card { border-radius: 14px; border-color: #D6E3F5; box-shadow: none; padding: 28px 26px 26px; background: #fff; }
.ap3-card::before { height: 2px; background: var(--b600); }
.ap3-card::after { content: ""; position: absolute; right: 0; bottom: 0; width: 18px; height: 18px; border-right: 2px solid transparent; border-bottom: 2px solid transparent; border-bottom-right-radius: 14px; transition: border-color .4s; }
.ap3-card:hover { transform: translateY(-4px); box-shadow: 0 24px 48px -28px rgba(6, 24, 51, .45); border-color: #B9D0F0; }
.ap3-card:hover::after { border-color: var(--b500); }
.ap3-card__ico, .ap3-card:nth-child(3n + 2) .ap3-card__ico, .ap3-card:nth-child(3n + 3) .ap3-card__ico { width: 48px; height: 48px; border-radius: 12px; background: #EEF4FD; color: var(--b600); box-shadow: inset 0 0 0 1px #D3E2F7; margin-bottom: 22px; transition: background .35s, color .35s; }
.ap3-card__ico .ap3-ico { width: 24px; height: 24px; stroke-width: 1.6; }
.ap3-card:hover .ap3-card__ico { background: var(--b600); color: #fff; box-shadow: none; }
.ap3-card__n { font-family: "JetBrains Mono", ui-monospace, monospace; font-weight: 500; font-size: .74rem; letter-spacing: .1em; color: #9DB2CF; }
.ap3-card h3 { font-size: 1.12rem; }

/* Icon strokes draw in as each block appears */
.ap3-js .ap3-reveal .ap3-card__ico .ap3-ico, .ap3-js .ap3-reveal .ap3-why__ico .ap3-ico { stroke-dasharray: 80; stroke-dashoffset: 80; transition: stroke-dashoffset 1.4s cubic-bezier(.65, 0, .35, 1) .25s; }
.ap3-js .ap3-reveal.is-in .ap3-card__ico .ap3-ico, .ap3-js .ap3-reveal.is-in .ap3-why__ico .ap3-ico { stroke-dashoffset: 0; }

/* Checklist and steps */
.ap3-checklist { background: #fff; border: 1px solid #D6E3F5; border-radius: 16px; }
.ap3-tick circle { fill: #F0FDF4; stroke: #16A34A; stroke-width: 1.4; }
.ap3-steps__n { font-family: "JetBrains Mono", ui-monospace, monospace; font-weight: 600; font-size: .9rem; border-width: 1.5px; }
.ap3-steps__rail { width: 2px; left: 26px; }

/* Why: blueprint panel */
.ap3-why { background: radial-gradient(800px 400px at 85% 0%, rgba(43, 123, 243, .25), transparent 65%), linear-gradient(180deg, #071A33, #04101F); }
.ap3-why::before { content: ""; position: absolute; inset: 0; z-index: -1; background-image: linear-gradient(rgba(140, 190, 255, .05) 1px, transparent 1px), linear-gradient(90deg, rgba(140, 190, 255, .05) 1px, transparent 1px); background-size: 40px 40px; }
.ap3-why__glow { display: none; }
.ap3-why__card { border-radius: 14px; background: rgba(12, 36, 72, .55); border-color: rgba(125, 180, 255, .16); }
.ap3-why__card:hover { transform: translateY(-4px); background: rgba(16, 46, 92, .65); border-color: rgba(125, 180, 255, .32); }
.ap3-why__ico { border-radius: 12px; background: rgba(91, 155, 255, .1); color: #8FC0FF; box-shadow: inset 0 0 0 1px rgba(125, 180, 255, .25); }

/* Links, cities, service lists */
.ap3-link, .ap3-city, .ap3-svc__card, .ap3-fam__item { border-radius: 14px; box-shadow: none; border-color: #D6E3F5; }
.ap3-link:hover, .ap3-city:hover, .ap3-fam__item:hover { box-shadow: 0 24px 48px -28px rgba(6, 24, 51, .45); }
.ap3-link__ico, .ap3-city__pin { border-radius: 10px; background: #EEF4FD; color: var(--b600); }
.ap3-city__pin { width: 40px; height: 40px; }
.ap3-near__box { border-radius: 16px; background: #fff; border-color: #D6E3F5; }
.ap3-near__chips a { border-radius: 8px; font-size: .92rem; }
.ap3-tags li { border-radius: 8px; }

/* Ribbon: a quiet status strip */
.ap3-ribbon { background: #fff; padding: 14px 0; }
.ap3-ribbon__track li { font-family: "JetBrains Mono", ui-monospace, monospace; font-size: .74rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: #3D5170; }
.ap3-ribbon__track li::after { content: ""; width: 5px; height: 5px; border-radius: 50%; background: #B9CDEA; margin-left: 34px; }
.ap3-ribbon__track { gap: 34px; animation-duration: 70s; }
.ap3-ribbon__track .ap3-ico { width: 18px; height: 18px; }

/* FAQ */
.ap3-qa { border-radius: 12px; }
.ap3-qa__pm { border-radius: 8px; }

/* Call to action: airflow canvas + grid */
.ap3-cta { background: radial-gradient(900px 420px at 15% 100%, rgba(43, 123, 243, .35), transparent 65%), linear-gradient(180deg, #082048, #04101F); border-top: 1px solid rgba(125, 180, 255, .14); }
.ap3-cta__bg { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.ap3-cta__bg::before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(rgba(140, 190, 255, .05) 1px, transparent 1px), linear-gradient(90deg, rgba(140, 190, 255, .05) 1px, transparent 1px); background-size: 40px 40px; }
.ap3-cta__bg .ap3-flowfield { mask-image: linear-gradient(90deg, #000 30%, rgba(0, 0, 0, .25)); }
.ap3-cta__ring { border-radius: 14px; }
.ap3-cta__ring::before { border-radius: 18px; }
.ap3-form { border-radius: 18px; }
.ap3-form--quick { box-shadow: 0 40px 80px -40px rgba(0, 0, 0, .8); }

/* Buttons: precise, less bubbly */
.ap3-btn { border-radius: 12px; }
.ap3-btn--green::after { display: none; }
.ap3-float a { border-radius: 14px; }
/* =========================================================================
   Elementor Pro forms inside the v3 form card
   ========================================================================= */
.ap3-eform .elementor-section, .ap3-eform .elementor-container, .ap3-eform .elementor-column, .ap3-eform .elementor-widget-wrap { padding: 0 !important; margin: 0 !important; max-width: none !important; }
.ap3-eform .elementor-widget-form { margin: 0 !important; }
.ap3-eform .elementor-form-fields-wrapper { display: flex; flex-wrap: wrap; margin: 0 -7px; }
.ap3-eform .elementor-field-group { padding: 0 7px; margin-bottom: 14px; align-items: flex-start; }
.ap3-eform .elementor-field-label { display: block; font: 600 .9rem/1.3 var(--font-b); color: var(--ink); margin-bottom: 7px; padding: 0; }
.ap3-eform .elementor-mark-required .elementor-field-label::after, .ap3-eform .elementor-mark-required .elementor-field-label:after { color: var(--b600) !important; }
.ap3-eform .elementor-field-textual, .ap3-eform select.elementor-field, .ap3-eform textarea.elementor-field, .ap3-eform input.elementor-field { width: 100%; min-height: 52px; padding: 13px 16px; border-radius: 12px !important; border: 1.5px solid var(--line) !important; background: var(--mist) !important; color: var(--ink) !important; font: 400 1rem/1.4 var(--font-b) !important; box-shadow: none; transition: border-color .25s, background .25s, box-shadow .25s; }
.ap3-eform .elementor-field-textual:focus, .ap3-eform .elementor-field:focus { outline: 0; border-color: var(--b500) !important; background: #fff !important; box-shadow: 0 0 0 4px rgba(43, 123, 243, .15); }
.ap3-eform .elementor-select-wrapper::before { color: var(--b600); }
.ap3-eform textarea.elementor-field { min-height: 96px; }

/* Step headings (HTML fields) */
.ap3-eform .elementor-field-type-html { margin: 6px 0 12px; }
.ap3-ef-step { display: flex; align-items: center; gap: 10px; font: 700 1.04rem var(--font-h); color: var(--ink); }
.ap3-ef-step i { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 8px; background: var(--ice); color: var(--b600); font: 600 .85rem "JetBrains Mono", ui-monospace, monospace; font-style: normal; }

/* Service: icon tiles */
.ap3-eform--full .elementor-field-group-service .elementor-field-label, .ap3-eform--full .elementor-field-group-visit_type .elementor-field-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.ap3-eform .elementor-field-group-service .elementor-field-subgroup { display: grid !important; grid-template-columns: repeat(5, 1fr); gap: 10px; width: 100%; }
.ap3-eform .elementor-field-group-service .elementor-field-option { margin: 0 !important; position: relative; }
.ap3-eform .elementor-field-subgroup input[type=radio] { position: absolute; opacity: 0; pointer-events: none; }
.ap3-eform .elementor-field-group-service .elementor-field-option label { display: grid; justify-items: center; gap: 8px; height: 100%; padding: 16px 8px 14px; border-radius: 12px; border: 1.5px solid var(--line); background: var(--mist); text-align: center; font: 600 .84rem/1.25 var(--font-b); color: var(--ink); cursor: pointer; transition: border-color .25s, background .25s, transform .25s var(--ease), box-shadow .25s; }
.ap3-eform .elementor-field-group-service .elementor-field-option label::before { content: ""; width: 30px; height: 30px; background: var(--b600); -webkit-mask-size: contain; mask-size: contain; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; transition: background .25s, transform .35s var(--ease); }
.ap3-eform .elementor-field-group-service .elementor-field-option label:hover { border-color: var(--b400); transform: translateY(-2px); }
.ap3-eform .elementor-field-group-service input:checked + label { border-color: var(--b600); background: #fff; box-shadow: 0 0 0 3px rgba(43, 123, 243, .18), var(--shadow); }
.ap3-eform .elementor-field-group-service input:checked + label::before { background: var(--g600); transform: scale(1.12); }
.ap3-eform .elementor-field-subgroup input:focus-visible + label { outline: 3px solid var(--sky); outline-offset: 2px; }

/* Visit type: pills */
.ap3-eform .elementor-field-group-visit_type .elementor-field-subgroup { display: flex !important; flex-wrap: wrap; gap: 10px; }
.ap3-eform .elementor-field-group-visit_type .elementor-field-option { margin: 0 !important; position: relative; }
.ap3-eform .elementor-field-group-visit_type label { display: inline-flex; align-items: center; padding: 11px 16px; border-radius: 10px; border: 1.5px solid var(--line); background: var(--mist); font: 600 .9rem var(--font-b); color: var(--ink); cursor: pointer; transition: all .25s var(--ease); }
.ap3-eform .elementor-field-group-visit_type input:checked + label { background: var(--b600); border-color: var(--b600); color: #fff; }
.ap3-eform .elementor-field-group-visit_type .elementor-field-option:nth-child(4) input:checked + label { background: var(--amber); border-color: var(--amber); color: var(--ink); }

/* Submit and messages (no red) */
.ap3-eform .elementor-field-type-submit { margin-top: 6px; margin-bottom: 0; }
.ap3-eform .elementor-button[type=submit] { width: 100%; min-height: 58px; border: 0; border-radius: 12px; background: linear-gradient(135deg, #15803D, #166534) !important; color: #fff !important; font: 600 1.05rem var(--font-b); box-shadow: 0 10px 24px -8px rgba(22, 163, 74, .6); transition: transform .3s var(--ease); }
.ap3-eform .elementor-button[type=submit]:hover { transform: translateY(-2px); }
.ap3-eform .elementor-message { margin-top: 14px; padding: 12px 16px; border-radius: 12px; font: 500 .93rem var(--font-b); color: var(--ink) !important; }
.ap3-eform .elementor-message::before { display: none !important; }
.ap3-eform .elementor-message-success { background: #F0FDF4; border: 1px solid #86EFAC; }
.ap3-eform .elementor-message-danger, .ap3-eform .elementor-message.elementor-help-inline { background: #FFF7E6 !important; border: 1px solid #FCD34D; color: var(--ink) !important; }
.ap3-eform .elementor-error .elementor-field { border-color: var(--amber) !important; background: #FFFBEB !important; box-shadow: 0 0 0 4px rgba(245, 158, 11, .16); }
.ap3-eform .elementor-field-group .elementor-message.elementor-help-inline { margin-top: 6px; padding: 6px 10px; font-size: .84rem; }
.ap3-eform .ap3-form__done { border-radius: inherit; }

.ap3-eform--quick .elementor-field-type-submit { margin-top: 2px; }

@media (max-width: 1100px) { .ap3-eform .elementor-field-group-service .elementor-field-subgroup { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 640px) {
	.ap3-eform .elementor-field-group { width: 100% !important; }
	.ap3-eform .elementor-field-group-service .elementor-field-subgroup { grid-template-columns: repeat(2, 1fr); }
}
/* Elementor form spacing */
.ap3-eform .elementor-form-fields-wrapper { margin: 0 -7px !important; }
.ap3-eform .elementor-field-group { padding: 0 7px !important; margin-bottom: 16px !important; }
.ap3-eform .elementor-field-type-html { margin: 12px 0 12px !important; }
.ap3-eform .elementor-field-group-service, .ap3-eform .elementor-field-group-visit_type { margin-bottom: 20px !important; }

.ap3-eform--quick .ap3-form__head { display: grid; gap: 2px; }
