:root{--c-168c49:#168C49;--c-181b1e-rgb:24 27 30;--c-1f7a45:#1F7A45;--c-23272b:#23272B;--c-2563eb:#2563EB;--c-25a65a-rgb:37 166 90;--c-25a65a:rgb(var(--c-25a65a-rgb));--c-29aae1:#29AAE1;--c-2f9e62:#2F9E62;--c-3b82f6-rgb:59 130 246;--c-3b82f6:rgb(var(--c-3b82f6-rgb));--c-4ade80:#4ADE80;--c-767e86:#767E86;--c-8e5d14:#8E5D14;--c-9ba3ab:#9BA3AB;--c-b3352b:#B3352B;--c-b4bac0:#B4BAC0;--c-c93e48:#C93E48;--c-cdd2d7:#CDD2D7;--c-d42027-rgb:212 32 39;--c-df4f58:#DF4F58;--c-e4f8eb:#E4F8EB;--c-e75a62-rgb:231 90 98;--c-e8f0ff:#E8F0FF;--c-e9f6ee:#E9F6EE;--c-eceef1:#ECEEF1;--c-edeef0:#EDEEF0;--c-edf7f1:#EDF7F1;--c-eff1f4:#EFF1F4;--c-f0616a:#F0616A;--c-f0fcfd:#F0FCFD;--c-f1fcf5:#F1FCF5;--c-f25757-rgb:242 87 87;--c-f4f5f7:#F4F5F7;--c-f4f8ff:#F4F8FF;--c-f6f7f9:#F6F7F9;--c-f7f3f3:#F7F3F3;--c-f8a6aa-rgb:248 166 170;--c-f8a6aa:rgb(var(--c-f8a6aa-rgb));--c-f8eeee:#F8EEEE;--c-fcecea:#FCECEA;--c-fdecec:#FDECEC;--c-fef4e4:#FEF4E4;--c-ffb5b8:#FFB5B8;--c-ffe0e0-rgb:255 224 224;--c-fff4f4-rgb:255 244 244;--c-fff6f6:#FFF6F6;--c-fff7f7:#FFF7F7;--sh-1a3e58:0 12px 26px rgb(var(--c-d42027-rgb)/.18);--sh-1b4c4b:0 4px 12px rgb(var(--c-d42027-rgb)/.24);--sh-1dcae3:0 12px 24px rgb(var(--c-25a65a-rgb)/.16);--sh-2eeafa:0 1px 2px rgb(var(--c-181b1e-rgb)/.05);--sh-357ce8:0 3px 10px rgb(var(--c-d42027-rgb)/.28);--sh-531b0f:0 0 0 4px rgb(var(--c-d42027-rgb)/.11);--sh-766d0c:0 0 0 6px rgb(var(--c-f8a6aa-rgb)/.2),0 10px 22px rgb(var(--c-d42027-rgb)/.15);--sh-7dc321:0 0 0 5px rgb(var(--c-f8a6aa-rgb)/.12),0 8px 18px rgb(var(--c-d42027-rgb)/.1);--sh-85cb74:0 1px 0 var(--line),0 6px 22px rgb(var(--dark-rgb)/.08);--sh-8aaa34:0 12px 24px rgb(var(--ai-rgb)/.16);--sh-94e3b5:-4px 4px 16px rgb(var(--c-d42027-rgb)/.28);--sh-9c75dc:0 3px 10px rgb(var(--c-d42027-rgb)/.24);--sh-a9a55a:0 12px 24px rgb(var(--c-3b82f6-rgb)/.16);--sh-aad8e0:0 6px 14px rgb(var(--c-d42027-rgb)/.34);--sh-af932a:0 2px 8px rgb(var(--c-181b1e-rgb)/.1),0 22px 60px rgb(var(--c-181b1e-rgb)/.24);--sh-bd6cd5:0 6px 18px rgb(var(--c-d42027-rgb)/.36);--sh-c02e7f:0 4px 10px rgb(var(--c-d42027-rgb)/.22);--sh-c7093f:0 6px 16px rgb(var(--c-d42027-rgb)/.36);--sh-d384f2:0 0 0 4px rgb(var(--c-d42027-rgb)/.14);--sh-eac988:0 12px 24px rgb(var(--c-d42027-rgb)/.16);--sh-fe192a:0 -2px 18px rgb(var(--dark-rgb)/.1);--r-blob:56% 44% 53% 47% / 47% 56% 44% 53%;--container:1160px;--lh-heading:1.15;--ease:cubic-bezier(.16,1,.3,1)}

/* =====================================================
   MEDQUEST — AI-Powered Diagnostics
   Brand palette taken from the real logo: grey ink + MQ red.
   Hero = the real marketing banners. Logo = the real file.
   Typography: Plus Jakarta Sans (headings) + Inter (text),
   restrained enterprise scale — no oversized display type.
   Every image embedded; zero external asset requests.
   ===================================================== */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
/* Literals, not var(--red): this sheet's red is #D42027 and each of the
   four sheets names its own. See the note in template-home.html. */
::selection{background:rgb(var(--c-d42027-rgb)/.16);color:var(--dark)}
body{font-family:var(--font-body);color:var(--ink);background:var(--surface);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul{list-style:none}
button{font-family:var(--font-body)}
:focus-visible{outline:3px solid var(--action);outline-offset:3px;border-radius:var(--r-sm)}

/* ---- Type scale: deliberately restrained ---- */
h1,h2,h3,h4{font-family:var(--font-display);line-height:1.22;letter-spacing:-.021em;color:var(--dark);font-weight:800}
h3{font-weight:700;line-height:1.4}
h4{font-weight:700}
p{font-size:.97rem}
.lede{color:var(--muted);font-size:1rem;max-width:60ch;line-height:1.66}
.container{max-width:var(--container);margin:0 auto;padding:0 24px}
section{padding:76px 0}
.section-head{max-width:660px;margin-bottom:36px}
.section-head p{margin-top:.55rem}
/* This sheet already had the language the other two were brought to: a
   resting shadow, a 2px lift, a deeper shadow on hover. Only the pressed
   state was missing. .btn-line's hover went to ink-deep, the same weak
   border darken the homepage's secondary had, and goes to brand with it.
   NOTE: these four selectors match no element on any of the 52 pages -
   the twelve pages on this sheet use .bp-btn. Corrected anyway so the
   rule is right if it is ever used, and so the sheet does not teach a
   reader the wrong grammar. */

/* ---------- Utility bar ---------- */
.util{background:var(--dark);color:var(--c-b4bac0);font-size:.76rem}
.util-inner{max-width:var(--container);margin:0 auto;padding:.45rem 24px;display:flex;align-items:center;gap:1.2rem}
.util .c{display:inline-flex;align-items:center;gap:.4rem;letter-spacing:.02em}
.util .c i{width:5px;height:5px;border-radius:var(--r-pill);background:var(--action);display:inline-block}
.util .right{margin-left:auto;display:flex;gap:1.1rem;align-items:center}
.util a:hover{color:var(--surface)}

/* ---------- Nav ---------- */
.nav{position:sticky;top:0;z-index:100;background:rgb(var(--surface-rgb)/.94);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);transition:box-shadow .25s}
.nav.scrolled{box-shadow:var(--sh-sm)}
.nav-inner{max-width:var(--container);margin:0 auto;padding:.62rem 24px;display:flex;align-items:center;gap:1.8rem}
.nav-logo img{height:36px;width:auto}
.nav-links{display:flex;gap:1.45rem;margin-left:auto}
.nav-links a,.nav-phone{font-family:var(--font-display);position:relative;isolation:isolate;letter-spacing:-.005em;transition:color .2s ease,transform .2s ease}
.nav-links a{font-weight:600;font-size:.88rem;color:var(--muted)}
.nav-links a::before,.nav-phone::before{content:"";position:absolute;z-index:-1;inset:-.5rem -.72rem;border-radius:var(--r-blob);background:radial-gradient(circle at 28% 35%,rgb(var(--c-fff4f4-rgb)/.96) 0 23%,transparent 49%),radial-gradient(circle at 76% 65%,rgb(var(--c-ffe0e0-rgb)/.9) 0 30%,transparent 63%),rgb(var(--c-f25757-rgb)/.2);filter:blur(2.5px);opacity:0;transform:scale(.7) rotate(-4deg);transition:opacity .2s ease,transform .24s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.nav-links a:hover,.nav-links a:focus-visible,.nav-phone:hover,.nav-phone:focus-visible{color:var(--action-hover);transform:translateY(-1px);outline:none}
.nav-links a:hover::before,.nav-links a:focus-visible::before,.nav-phone:hover::before,.nav-phone:focus-visible::before{opacity:1;transform:scale(1.08) rotate(2deg)}
.nav-cta{display:flex;align-items:center;gap:.85rem}
.nav-phone{display:inline-flex;font-weight:700;font-size:.85rem;color:var(--dark)}
.nav-toggle{display:none;background:none;border:0;cursor:pointer;padding:.35rem;margin-left:auto}
.nav-toggle span{display:block;width:22px;height:2.4px;background:var(--dark);margin:5px 0;border-radius:var(--r-sm)}
.mobile-menu{display:none;position:fixed;top:52px;left:0;right:0;background:var(--surface);z-index:99;padding:1.2rem 24px 1.6rem;box-shadow:var(--sh-md);border-bottom:1px solid var(--line)}
.mobile-menu.open{display:block}
.mobile-menu a{display:block;padding:.72rem 0;font-family:var(--font-display);font-weight:700;font-size:.95rem;border-bottom:1px solid var(--line)}
.mobile-menu .btn{margin-top:1rem;width:100%}

/* ---------- HERO: real banner slider ---------- */
.hero{background:linear-gradient(180deg,var(--surface),var(--c-f6f7f9));padding:22px 0 0;position:relative}
.slider{max-width:1280px;margin:0 auto;padding:0 24px;position:relative}
.slider-frame{position:relative;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-lg);border:1px solid var(--line);background:var(--c-edeef0)}
.slider-strip{display:flex;transition:transform .6s cubic-bezier(.65,0,.25,1)}
.slide{flex:0 0 100%;position:relative}
.slide img{width:100%;height:auto;display:block}
.video-slider .slider-frame{background:var(--c-f7f3f3)}
.hero-video-slide{height:clamp(420px,42vw,560px);overflow:hidden;background:var(--c-f8eeee)}
.hero-video{width:100%;height:100%;display:block;object-fit:cover;object-position:center;filter:saturate(.78) brightness(1.15) contrast(.9)}
.hero-video-slide::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgb(var(--surface-rgb)/.64) 0%,rgb(var(--surface-rgb)/.38) 42%,rgb(var(--surface-rgb)/.2) 100%),linear-gradient(180deg,rgb(var(--surface-rgb)/.13),rgb(var(--surface-rgb)/.3))}
.video-slider .slider-arrow,.video-slider .slider-dots{display:none}
.slider-arrow{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:var(--r-pill);border:1px solid var(--line);background:rgb(var(--surface-rgb)/.94);color:var(--dark);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--sh-md);transition:background .15s,color .15s,transform .15s;z-index:5}
.slider-arrow:hover{background:var(--action);color:var(--surface);border-color:var(--action);transform:translateY(-50%) scale(1.06)}
.slider-arrow.prev{left:16px}
.slider-arrow.next{right:16px}
.slider-dots{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);display:flex;gap:.45rem;z-index:5}
.slider-dots button{width:30px;height:4px;border-radius:var(--r-pill);border:0;background:rgb(var(--ink-rgb)/.22);cursor:pointer;padding:0;overflow:hidden;position:relative}
.slider-dots button.active{background:rgb(var(--ink-rgb)/.16)}
.slider-dots button.active::after{content:"";position:absolute;inset:0;background:var(--action);transform-origin:left;animation:dotfill 6.5s linear forwards}
@keyframes dotfill{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* ---------- Video search panel ---------- */
.aibar-wrap{max-width:960px;position:absolute;left:50%;bottom:24px;width:100%;margin:0;padding:0 24px;z-index:20;transform:translateX(-50%)}
.aibar{padding:1.35rem;background:transparent;border:0;border-radius:0;box-shadow:none;text-shadow:none;display:flex;flex-direction:column}
.aibar-top{order:-1;display:flex;align-items:center;justify-content:flex-start;gap:.8rem;flex-wrap:wrap;margin:0 0 .85rem}
.aibar-top .aibar-h{font-size:1.22rem;letter-spacing:-.018em}
.aibar-top .tagline{font-size:.87rem;color:var(--muted)}
.hero-book{margin:0;white-space:nowrap;align-self:stretch}
.ai-flag{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--font-display);font-size:var(--fs-min);font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ai);background:var(--ai-tint);border-radius:var(--r-pill);padding:.28rem .7rem}
.cmd{position:relative;display:flex;align-items:center;gap:.7rem}
.cmd-box{flex:1;min-width:0;display:flex;align-items:center;gap:.6rem;background:rgb(var(--surface-rgb)/.18);border:2px solid rgb(var(--c-e75a62-rgb)/.5);border-radius:var(--r-pill);padding:.36rem .5rem .36rem 1.05rem;box-shadow:var(--sh-7dc321);transition:border-color .18s,box-shadow .18s,background .18s,transform .18s}
.cmd-box:focus-within{border-color:var(--c-df4f58);background:rgb(var(--surface-rgb)/.3);box-shadow:var(--sh-766d0c);transform:translateY(-1px)}
.cmd-box .ai-ic{color:var(--c-c93e48);flex-shrink:0;display:flex}
.cmd-box input{flex:1;border:0;font-family:var(--font-body);font-size:.97rem;color:var(--ink);background:none;min-width:0;padding:.5rem 0}
.cmd-box input:focus{outline:none}
.cmd-box input::placeholder{color:var(--muted)}
.cmd-box .go{background:linear-gradient(135deg,var(--c-f8a6aa),var(--c-ffb5b8));color:var(--surface);border:0;border-radius:var(--r-pill);width:42px;height:42px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:var(--sh-c02e7f);transition:transform .15s,box-shadow .15s}
.cmd-box .go:hover,.cmd-box .go:focus-visible{transform:scale(1.08);box-shadow:var(--sh-aad8e0);outline:none}
.cmd-results{position:absolute;left:0;right:0;top:calc(100% + 8px);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-lg);padding:.9rem;display:none;z-index:50;max-height:400px;overflow-y:auto}
.cmd-results.show{display:block;animation:fadeUp .28s ease}
.hero-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:.85rem;margin-top:1rem}
.thinking{display:flex;align-items:center;gap:.65rem;color:var(--muted);font-size:.88rem;padding:.35rem .25rem}
.spinner{width:17px;height:17px;border:2.4px solid var(--line);border-top-color:var(--ai);border-radius:var(--r-pill);animation:spin .8s linear infinite;flex-shrink:0}
@keyframes spin{to{transform:rotate(360deg)}}
.airesp{font-size:.92rem;color:var(--ink);padding:.25rem .3rem .45rem;line-height:1.62}
.airesp .src{font-family:var(--font-display);font-size:var(--fs-min);font-weight:700;letter-spacing:.12em;color:var(--muted);text-transform:uppercase;display:block;margin-bottom:.45rem}
.test-hit{display:flex;align-items:center;gap:.85rem;padding:.7rem .75rem;border:1px solid var(--line);border-radius:var(--r-md);margin-top:.5rem;transition:border-color .15s,background .15s;cursor:pointer}
.test-hit:hover{border-color:var(--action);background:var(--action-tint)}
.test-hit .tic{width:36px;height:36px;border-radius:var(--r-sm);background:var(--action-tint);color:var(--action);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.test-hit b{font-family:var(--font-display);font-size:.9rem;display:block;font-weight:700}
.test-hit span{font-size:.79rem;color:var(--muted)}
.test-hit .book{margin-left:auto;font-family:var(--font-display);font-size:.78rem;font-weight:700;color:var(--action);flex-shrink:0}
.ai-disc{font-size:var(--fs-min);color:var(--muted);border-top:1px dashed var(--c-cdd2d7);margin-top:.7rem;padding-top:.6rem}

/* ---------- Action tiles ---------- */
.tiles{padding:52px 0 0}
.tiles-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.9rem}
.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:1.4rem 1.35rem;cursor:pointer;transition:transform .2s,box-shadow .2s,border-color .2s,background .2s;display:flex;flex-direction:column;gap:.4rem;text-align:left}
.tile:hover,.tile:focus-visible{transform:translateY(-4px);box-shadow:var(--sh-md);outline:none}
.tile:nth-child(1):hover,.tile:nth-child(1):focus-visible{border-color:var(--action);background:var(--c-fff7f7);box-shadow:var(--sh-eac988)}
.tile:nth-child(2):hover,.tile:nth-child(2):focus-visible{border-color:var(--ai);background:var(--c-f0fcfd);box-shadow:var(--sh-8aaa34)}
.tile:nth-child(3):hover,.tile:nth-child(3):focus-visible{border-color:var(--c-3b82f6);background:var(--c-f4f8ff);box-shadow:var(--sh-a9a55a)}
.tile:nth-child(4):hover,.tile:nth-child(4):focus-visible{border-color:var(--c-25a65a);background:var(--c-f1fcf5);box-shadow:var(--sh-1dcae3)}
.tile .ic{width:42px;height:42px;border-radius:var(--r-md);background:var(--action-tint);color:var(--action);display:flex;align-items:center;justify-content:center;margin-bottom:.35rem}
.tile.alt .ic{background:var(--ai-tint);color:var(--ai)}
.tile b{font-family:var(--font-display);font-size:.96rem;font-weight:800;letter-spacing:-.012em}
.tile span{font-size:.83rem;color:var(--muted);line-height:1.5}
.tile .go{margin-top:auto;font-family:var(--font-display);font-weight:700;font-size:.8rem;color:var(--action);padding-top:.5rem}
.tile.alt .go{color:var(--ai)}
.tile:nth-child(3):hover .ic,.tile:nth-child(3):focus-visible .ic{color:var(--c-2563eb);background:var(--c-e8f0ff)}
.tile:nth-child(3):hover .go,.tile:nth-child(3):focus-visible .go{color:var(--c-2563eb)}
.tile:nth-child(4):hover .ic,.tile:nth-child(4):focus-visible .ic{color:var(--c-168c49);background:var(--c-e4f8eb)}
.tile:nth-child(4):hover .go,.tile:nth-child(4):focus-visible .go{color:var(--c-168c49)}

/* ---------- Trust strip ---------- */
.trust{padding:44px 0 0}
.trust-row{display:flex;align-items:center;gap:1.6rem;flex-wrap:wrap;justify-content:center;border:1px solid var(--line);border-radius:var(--r-md);background:var(--c-f6f7f9);padding:1.1rem 1.4rem}
.trust-row .badge{display:flex;align-items:center;gap:.7rem}
.trust-row .badge img{height:44px;width:auto;object-fit:contain;background:var(--surface);border-radius:var(--r-sm);padding:.25rem .35rem;border:1px solid var(--line)}
.trust-row .badge b{font-family:var(--font-display);font-size:.85rem;display:block;font-weight:700}
.trust-row .badge span{font-size:var(--fs-min);color:var(--muted)}
.trust-row .sep{width:1px;height:34px;background:var(--c-cdd2d7)}

/* ---------- AI services ---------- */
.ai-sec{background:var(--dark);color:var(--on-dark-muted);margin-top:76px;position:relative;overflow:hidden}
.ai-sec::before{content:"";position:absolute;inset:0;background:
  radial-gradient(620px 420px at 88% 8%,rgb(var(--ai-rgb)/.24),transparent 62%),
  radial-gradient(620px 440px at 6% 92%,rgb(var(--c-d42027-rgb)/.16),transparent 60%)}
.ai-sec .eyebrow{color:var(--ai-on-dark)}
.ai-sec .eyebrow::before{background:var(--ai-on-dark)}
.ai-sec h2{color:var(--surface)}
.ai-sec .lede{color:var(--c-9ba3ab)}
.ai-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:1rem;position:relative}
.ai-card{background:rgb(var(--surface-rgb)/.055);border:1px solid rgb(var(--surface-rgb)/.13);border-radius:var(--r-md);padding:1.5rem 1.4rem;display:flex;flex-direction:column;gap:.5rem;transition:transform .2s,border-color .2s,background .2s}
.ai-card:hover{transform:translateY(-4px);border-color:var(--ai-on-dark);background:rgb(var(--surface-rgb)/.085)}
.ai-card .ic{width:42px;height:42px;border-radius:var(--r-md);background:rgb(var(--ai-on-dark-rgb)/.14);color:var(--ai-on-dark);display:flex;align-items:center;justify-content:center;margin-bottom:.25rem}
.ai-card h3{color:var(--surface)}
.ai-card p{font-size:.88rem;color:var(--c-9ba3ab);flex:1}
.ai-card .mini{align-self:flex-start;font-family:var(--font-display);font-weight:700;font-size:.82rem;color:var(--surface);background:none;border:1.5px solid rgb(var(--surface-rgb)/.28);border-radius:var(--r-sm);padding:.5rem 1.05rem;cursor:pointer;transition:border-color .15s,background .15s;margin-top:.3rem}
.ai-card .mini:hover{border-color:var(--ai-on-dark);background:rgb(var(--ai-on-dark-rgb)/.12)}
.ai-note{position:relative;margin-top:1.8rem;font-size:var(--fs-min);color:var(--c-767e86);font-family:var(--font-body);letter-spacing:.02em}

/* ---------- Tests ---------- */
.tests-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));gap:.9rem}
.tcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:1.2rem 1.3rem;display:flex;align-items:center;gap:.9rem;transition:transform .2s,border-color .2s,box-shadow .2s;cursor:pointer}
.tcard:hover{transform:translateY(-4px);border-color:var(--action);box-shadow:var(--sh-sm)}
.tcard .tic{width:40px;height:40px;border-radius:var(--r-md);background:var(--action-tint);color:var(--action);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tcard b{font-family:var(--font-display);font-size:.92rem;display:block;font-weight:700}
.tcard span{font-size:.79rem;color:var(--muted)}
.tcard .go{margin-left:auto;font-family:var(--font-display);font-size:.76rem;font-weight:700;color:var(--action);flex-shrink:0}

/* ---------- Offer ---------- */
.offer{background:var(--c-f6f7f9);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.offer-card{display:grid;grid-template-columns:1.3fr 1fr;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-md);border:1px solid var(--line);background:var(--surface)}
.offer-img img{width:100%;height:100%;object-fit:cover}
.offer-body{padding:2.1rem 2rem;display:flex;flex-direction:column;justify-content:center;background:var(--dark);color:var(--on-dark-muted)}
.offer-body .eyebrow{color:var(--on-dark-accent)}
.offer-body .eyebrow::before{background:var(--on-dark-accent)}
.offer-body h2{color:var(--surface)}
.offer-body p{margin:.6rem 0 1.3rem;color:var(--c-9ba3ab);font-size:.93rem}
.offer-body .row{display:flex;gap:.75rem;flex-wrap:wrap}
.offer-body .note{font-size:.76rem;color:var(--c-767e86);margin-top:.9rem;font-family:var(--font-body)}

/* ---------- How ---------- */
.how-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.9rem}
.step{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:1.4rem 1.35rem}
.step .n{font-family:var(--font-display);font-size:var(--fs-min);font-weight:700;letter-spacing:.12em;color:var(--surface);background:var(--action);border-radius:var(--r-sm);padding:.24rem .6rem;display:inline-block;margin-bottom:.7rem}
.step b{font-family:var(--font-display);display:block;font-weight:800;margin-bottom:.2rem;font-size:.98rem}
.step span{font-size:.87rem;color:var(--muted)}

/* ---------- Facility strip ---------- */
.facility{background:var(--c-f6f7f9);border-top:1px solid var(--line)}
.fac-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.9rem}
.fac-grid figure{border-radius:var(--r-md);overflow:hidden;border:1px solid var(--line);box-shadow:var(--sh-sm)}
.fac-grid img{width:100%;height:220px;object-fit:cover;transition:transform .5s}
.fac-grid figure:hover img{transform:scale(1.05)}

/* ---------- Stats ---------- */
.stats{padding:56px 0}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:var(--surface);box-shadow:var(--sh-sm)}
.stat{padding:1.5rem 1.4rem;border-right:1px solid var(--line)}
.stat:last-child{border-right:0}
.stat .big{font-family:var(--font-display);font-size:1.85rem;font-weight:800;letter-spacing:-.03em;line-height:1.15;color:var(--dark)}
.stat .big .r{color:var(--action)}
.stat .lbl{font-size:.76rem;color:var(--muted);margin-top:.28rem}

/* ---------- Footer ---------- */
footer{background:var(--dark);color:var(--c-9ba3ab);padding:56px 0 0}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:2.2rem;padding-bottom:2.4rem}
.foot-brand .logo-card{background:var(--surface);border-radius:var(--r-md);padding:.6rem .85rem;display:inline-block}
.foot-brand .logo-card img{height:28px;width:auto}
.foot-brand p{font-size:.89rem;max-width:36ch;margin-top:.95rem}
.socials{display:flex;gap:.6rem;margin-top:1.1rem;flex-wrap:wrap}
.socials a{width:35px;height:35px;border-radius:var(--r-sm);background:rgb(var(--surface-rgb)/.07);border:1px solid rgb(var(--surface-rgb)/.13);display:flex;align-items:center;justify-content:center;color:var(--surface);transition:background .15s,transform .15s}
.socials a:hover{background:var(--action);transform:translateY(-2px)}
footer h4{color:var(--surface);margin-bottom:.9rem}
.foot-links li{margin-bottom:.5rem}
.foot-links a{font-size:.87rem;transition:color .15s}
.foot-links a:hover{color:var(--surface)}
.foot-bottom{border-top:1px solid rgb(var(--surface-rgb)/.13);padding:1.2rem 0;display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;font-size:.79rem}
.foot-bottom .m{font-size:var(--fs-min);color:var(--c-767e86);letter-spacing:.05em}

/* ---------- Dialogs ---------- */
dialog{border:0;border-radius:var(--r-lg);box-shadow:var(--sh-lg);padding:0;max-width:460px;width:calc(100% - 36px);background:var(--surface);color:var(--ink)}
dialog::backdrop{background:rgb(var(--dark-rgb)/.55);backdrop-filter:blur(4px)}
.dlg-head{background:var(--dark);color:var(--surface);padding:1.25rem 1.6rem;display:flex;align-items:flex-start;gap:.9rem}
.dlg-head .ic{width:40px;height:40px;border-radius:var(--r-md);background:rgb(var(--c-d42027-rgb)/.2);color:var(--on-dark-accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dlg-head h3{color:var(--surface);}
.dlg-head p{font-size:.79rem;color:var(--c-9ba3ab);margin-top:.1rem}
.dlg-close{margin-left:auto;background:rgb(var(--surface-rgb)/.13);border:0;color:var(--surface);width:30px;height:30px;border-radius:var(--r-sm);cursor:pointer;flex-shrink:0}
.dlg-close:hover{background:var(--action)}
.dlg-body{padding:1.5rem 1.6rem 1.7rem}
.field{margin-bottom:.95rem}
.field label{font-family:var(--font-display);font-size:.83rem;font-weight:700;display:block;margin-bottom:.35rem}
.field input,.field select,.field textarea{width:100%;border:1.5px solid var(--c-cdd2d7);border-radius:var(--r-sm);padding:.75rem .95rem;font-family:var(--font-body);font-size:.93rem;background:var(--c-f6f7f9);transition:border-color .15s,box-shadow .15s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--action);box-shadow:var(--sh-531b0f);background:var(--surface)}
.field textarea{min-height:104px;resize:vertical}
.dlg-ok{display:none;background:var(--c-edf7f1);border:1px solid var(--c-2f9e62);border-radius:var(--r-sm);padding:.8rem 1rem;font-size:.88rem;margin-top:.9rem}
.dlg-ok.show{display:block;animation:fadeUp .32s ease}
.dlg-hint{font-family:var(--font-body);font-size:var(--fs-min);color:var(--muted);margin-top:1rem;border-top:1px dashed var(--c-cdd2d7);padding-top:.8rem}
.airesp-box{background:var(--c-f6f7f9);border:1px solid var(--line);border-radius:var(--r-md);padding:.95rem 1.05rem;font-size:.89rem;line-height:1.66;margin-top:.9rem;display:none;max-height:270px;overflow-y:auto;white-space:pre-wrap}
.airesp-box.show{display:block;animation:fadeUp .3s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}

/* ---------- FABs + assistant ---------- */
.fab-stack{position:fixed;right:20px;bottom:20px;z-index:200;display:flex;flex-direction:column;gap:.7rem;align-items:flex-end}
.fab{width:54px;display:flex}
.fab-wa{background:var(--whatsapp);color:var(--surface)}
.fab-bot{background:var(--ai);color:var(--surface);position:relative}
.fab-bot .ping{position:absolute;top:2px;right:2px;width:11px;height:11px;border-radius:var(--r-pill);background:var(--action);border:2px solid var(--surface);animation:blink 2s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}
.chat{position:fixed;right:20px;bottom:86px;z-index:210;width:372px;max-width:calc(100vw - 34px);background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-lg);border:1px solid var(--line);display:none;flex-direction:column;overflow:hidden;max-height:min(580px,calc(100vh - 116px))}
.chat.open{display:flex;animation:chatUp .3s ease}
@keyframes chatUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.chat-head{background:var(--dark);color:var(--surface);padding:.95rem 1.1rem;display:flex;align-items:center;gap:.75rem}
.chat-head .bot-av{width:38px;height:38px;border-radius:var(--r-md);background:var(--ai);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.chat-head b{font-family:var(--font-display);font-size:.94rem;display:block;font-weight:800}
.chat-head small{font-size:var(--fs-min);color:var(--c-9ba3ab);display:flex;align-items:center;gap:.35rem;letter-spacing:.06em}
.chat-head small i{width:6px;height:6px;border-radius:var(--r-pill);background:var(--c-4ade80);display:inline-block}
.chat-head button{margin-left:auto;background:rgb(var(--surface-rgb)/.13);border:0;color:var(--surface);width:29px;height:29px;border-radius:var(--r-sm);cursor:pointer}
.chat-body{padding:1rem;overflow-y:auto;display:flex;flex-direction:column;gap:.6rem;flex:1;background:var(--c-f6f7f9);min-height:170px}
.msg{max-width:86%;padding:.65rem .95rem;border-radius:var(--r-md);font-size:.87rem;line-height:1.55;animation:fadeUp .3s ease;white-space:pre-wrap;word-wrap:break-word}
.msg.bot{background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:var(--r-sm);align-self:flex-start}
.msg.user{background:var(--dark);color:var(--surface);border-bottom-right-radius:var(--r-sm);align-self:flex-end}
.quick{display:flex;flex-wrap:wrap;gap:.45rem;padding:.55rem 1rem .8rem;background:var(--c-f6f7f9);border-top:1px solid var(--line)}
.quick button{font-family:var(--font-display);font-size:.75rem;font-weight:600;background:var(--surface);border:1px solid var(--c-cdd2d7);border-radius:var(--r-pill);padding:.38rem .85rem;cursor:pointer;color:var(--muted);transition:border-color .15s,color .15s}
.quick button:hover{border-color:var(--ai);color:var(--ai)}
.chat-input{display:flex;gap:.55rem;padding:.75rem .95rem;border-top:1px solid var(--line);background:var(--surface)}
.chat-input input{flex:1;border:1.5px solid var(--c-cdd2d7);border-radius:var(--r-pill);padding:.6rem 1.05rem;font-family:var(--font-body);font-size:.88rem;background:var(--c-f6f7f9);min-width:0}
.chat-input input:focus{outline:none;border-color:var(--ai);background:var(--surface)}
.chat-input button{width:40px;height:40px;border-radius:var(--r-pill);border:0;background:var(--ai);color:var(--surface);cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:transform .15s}
.chat-input button:hover{transform:scale(1.06)}
.typing{display:inline-flex;gap:4px;padding:.75rem .95rem}
.typing i{width:6px;height:6px;border-radius:var(--r-pill);background:var(--muted);animation:ty .9s infinite}
.typing i:nth-child(2){animation-delay:.15s}
.typing i:nth-child(3){animation-delay:.3s}
@keyframes ty{0%,100%{opacity:.3;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}

/* ---------- Reveal ---------- */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .65s,transform .65s}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition:none!important;animation:none!important}
  .reveal{opacity:1;transform:none}
  /* transition:none does not reach transform - a :hover translate is a
     static state and still snaps. These four have lifted 2px for every
     reduced-motion visitor since this sheet was written; the presses
     added below are covered at the same time. */
  }

/* ---------- Responsive ---------- */
@media (max-width:768px){
  .tiles-grid,.stats-grid{grid-template-columns:1fr 1fr}
  .stat{border-bottom:1px solid var(--line)}
  .how-grid,.fac-grid{grid-template-columns:1fr}
  .offer-card{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr 1fr}
  .aibar-wrap{bottom:20px;margin:0;transform:translateX(-50%)}
}
@media (max-width:620px){
  section{padding:52px 0}
  .util .hide-m{display:none}
  .nav-links,.nav-phone{display:none}
  .nav-toggle{display:block}
  .slider{padding:0 12px}
  .hero-video-slide{height:600px}
  .aibar-wrap{bottom:14px;margin:0;padding:0 12px;transform:translateX(-50%)}
  .aibar{padding:1.1rem}
  .aibar-top{gap:.55rem;margin:0 0 .75rem}
  .aibar-top .aibar-h{font-size:1rem}
  .hero-book{margin:0;padding:.65rem .9rem}
  .hero-actions{grid-template-columns:1fr 1fr;gap:.65rem}
    .slider-arrow{width:34px;height:34px}
  .slider-arrow.prev{left:8px}
  .slider-arrow.next{right:8px}
  .tiles-grid{grid-template-columns:1fr}
  .stats-grid{grid-template-columns:1fr}
  .stat{border-right:0}
  .foot-grid{grid-template-columns:1fr}
  .chat{right:10px;left:10px;width:auto}
  .trust-row .sep{display:none}
  .fac-grid img{height:190px}
}
/* =====================================================
   ENTERPRISE POLISH + MOTION LAYER
   Signature: the pulse trace. Everything else stays quiet.
   Motion budget: 20px travel, 800ms, no bounce, no overshoot.
   ===================================================== */

/* ---------- Rhythm: one consistent section beat ---------- */
section{padding:clamp(26px,3.2vw,38px) 0}
.ai-sec{margin-top:0}
.section-head{margin-bottom:44px}
.stats{padding:72px 0}
.trust{padding:52px 0 0}

/* ---------- Scroll progress ---------- */
.scrollbar{position:fixed;top:0;left:0;right:0;height:3px;z-index:400;
  background:linear-gradient(90deg,var(--action),var(--c-f0616a));
  transform:scaleX(0);transform-origin:0 50%;pointer-events:none}

/* ---------- Nav condense + logo wipe ---------- */
.nav-inner{transition:padding .35s var(--ease)}
.nav.scrolled .nav-inner{padding-top:.4rem;padding-bottom:.4rem}
.nav-logo img{transition:height .35s var(--ease);animation:logoWipe 1s var(--ease) both}
.nav.scrolled .nav-logo img{height:30px}
@keyframes logoWipe{from{clip-path:inset(0 100% 0 0);opacity:0}to{clip-path:inset(0 0 0 0);opacity:1}}

/* ---------- Reveal: longer travel, softer easing ---------- */
.reveal{opacity:0;transform:translateY(22px);
  transition:opacity .85s var(--ease),transform .85s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* ---------- Hero: legibility + entrance ---------- */
.hero-video-slide::after{background:
  linear-gradient(90deg,rgb(var(--surface-rgb)/.74) 0%,rgb(var(--surface-rgb)/.48) 46%,rgb(var(--surface-rgb)/.26) 100%),
  linear-gradient(0deg,rgb(var(--surface-rgb)/.6) 0%,rgb(var(--surface-rgb)/.04) 52%)}
.cmd-box{background:rgb(var(--surface-rgb)/.74);backdrop-filter:blur(14px) saturate(1.25)}
.cmd-box:focus-within{background:rgb(var(--surface-rgb)/.9)}

.aibar>*{opacity:0;transform:translateY(20px);
  transition:opacity .9s var(--ease),transform .9s var(--ease)}
.aibar.go>*{opacity:1;transform:none}
.aibar.go .aibar-top{transition-delay:.15s}
.aibar.go .cmd{transition-delay:.32s}
.aibar.go .hero-actions{transition-delay:.62s}

/* tilt tiles */

/* ---------- SIGNATURE: pulse rule ---------- */
.pulse-rule{max-width:var(--container);margin:0 auto;padding:0 24px}
.pulse-rule svg{width:100%;height:52px;display:block;overflow:visible}
.pulse-rule .trace{fill:none;stroke:var(--line);stroke-width:1.5;
  stroke-linecap:round;stroke-linejoin:round}
.pulse-rule .live{fill:none;stroke:var(--action);stroke-width:2.2;
  stroke-linecap:round;stroke-linejoin:round;
  stroke-dashoffset:var(--len,2000);stroke-dasharray:var(--len,2000);
  transition:stroke-dashoffset 2.1s var(--ease)}
.pulse-rule.in .live{stroke-dashoffset:0}
.pulse-rule .blip{fill:var(--action);opacity:0;transition:opacity .5s 1.6s}
.pulse-rule.in .blip{opacity:1}

/* ---------- AI services: drifting grid + gradient edge ---------- */
.ai-sec::after{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgb(var(--surface-rgb)/.05) 1px,transparent 1px),
    linear-gradient(90deg,rgb(var(--surface-rgb)/.05) 1px,transparent 1px);
  background-size:58px 58px;animation:drift 26s linear infinite;
  -webkit-mask-image:radial-gradient(72% 62% at 50% 42%,#000,transparent);
  mask-image:radial-gradient(72% 62% at 50% 42%,#000,transparent)}
@keyframes drift{to{background-position:58px 58px}}
.ai-sec .container{position:relative;z-index:2}
.ai-card{position:relative;transition:transform .35s var(--ease),
  border-color .3s,background .3s}
.ai-card::before{content:"";position:absolute;inset:0;border-radius:inherit;
  padding:1px;pointer-events:none;opacity:0;transition:opacity .4s;
  background:linear-gradient(135deg,var(--ai-on-dark),transparent 42%,transparent 58%,rgb(var(--c-d42027-rgb)/.8));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude}
.ai-card:hover::before{opacity:1}
.ai-card .ic{transition:transform .4s var(--ease),background .3s}
.ai-card:hover .ic{transform:translateY(-3px) scale(1.07);background:rgb(var(--ai-on-dark-rgb)/.22)}

/* compliance bar replaces the old dev note */
.compliance{position:relative;z-index:2;margin-top:2.2rem;padding-top:1.1rem;
  border-top:1px solid rgb(var(--surface-rgb)/.12);display:flex;flex-wrap:wrap;
  gap:.6rem 2rem;font-family:var(--font-display);font-size:var(--fs-min);font-weight:600;
  letter-spacing:.13em;text-transform:uppercase;color:var(--c-767e86)}
.compliance span{display:inline-flex;align-items:center;gap:.5rem}
.compliance span::before{content:"";width:5px;height:5px;border-radius:var(--r-pill);
  background:var(--ai-on-dark);flex-shrink:0}

/* ---------- Tests ---------- */
.tcard{position:relative;overflow:hidden}
.tcard::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:var(--action);transform:scaleY(0);transform-origin:bottom;
  transition:transform .35s var(--ease)}
.tcard:hover::after{transform:scaleY(1);transform-origin:top}
.tcard .tic{transition:transform .4s var(--ease)}
.tcard:hover .tic{transform:rotate(-9deg) scale(1.07)}
.tcard .go{transition:transform .3s var(--ease)}
.tcard:hover .go{transform:translateX(5px)}

/* ---------- Offer: banner stacked full-width so nothing is cropped ---------- */
.offer-card{overflow:hidden;grid-template-columns:1fr}
.offer-img{position:relative;overflow:hidden;background:var(--c-29aae1);line-height:0}
.offer-img img{width:100%;height:auto;object-fit:contain;transition:transform 1.3s var(--ease)}
.offer-card:hover .offer-img img{transform:scale(1.02)}
.offer-img::after{content:"";position:absolute;top:-20%;bottom:-20%;width:36%;
  left:-55%;pointer-events:none;transform:skewX(-14deg);
  background:linear-gradient(90deg,transparent,rgb(var(--surface-rgb)/.35),transparent);
  animation:sheen 9s ease-in-out 2.5s infinite}
@keyframes sheen{0%{left:-55%}18%{left:130%}100%{left:130%}}
.offer-body{padding:2.2rem 2.4rem 2.4rem}
.offer-body p{max-width:64ch}
.offer-card.reveal .offer-img{opacity:0;transform:translateY(20px);
  transition:opacity .95s var(--ease) .1s,transform .95s var(--ease) .1s}
.offer-card.reveal .offer-body{opacity:0;transform:translateY(20px);
  transition:opacity .95s var(--ease) .26s,transform .95s var(--ease) .26s}
.offer-card.reveal.in .offer-img,.offer-card.reveal.in .offer-body{opacity:1;transform:none}
.offer-body .note{font-family:var(--font-display);font-size:var(--fs-min);font-weight:600;
  letter-spacing:.13em;text-transform:uppercase}

/* ---------- How it works: drawn progress rail ---------- */
.how-rail{position:relative;height:2px;background:var(--line);
  border-radius:var(--r-sm);margin:0 16.66% 30px}
.how-rail::after{content:"";position:absolute;inset:0;border-radius:var(--r-sm);
  background:linear-gradient(90deg,var(--action),var(--c-f0616a));
  transform:scaleX(0);transform-origin:left;transition:transform 1.7s var(--ease)}
.how-rail.drawn::after{transform:scaleX(1)}
.how-rail i{position:absolute;top:50%;width:12px;height:12px;border-radius:var(--r-pill);
  background:var(--surface);border:2px solid var(--c-cdd2d7);
  transform:translate(-50%,-50%) scale(.4);opacity:0;
  transition:opacity .5s var(--ease),transform .5s var(--ease),border-color .5s}
.how-rail i:nth-child(1){left:0}
.how-rail i:nth-child(2){left:50%}
.how-rail i:nth-child(3){left:100%}
.how-rail.drawn i{opacity:1;transform:translate(-50%,-50%) scale(1);border-color:var(--action)}
.how-rail.drawn i:nth-child(1){transition-delay:.15s}
.how-rail.drawn i:nth-child(2){transition-delay:.8s}
.how-rail.drawn i:nth-child(3){transition-delay:1.45s}
.step{transition:transform .3s var(--ease),box-shadow .3s,border-color .3s}
.step:hover{transform:translateY(-4px);border-color:var(--c-cdd2d7);box-shadow:var(--sh-md)}

/* ---------- Facility: parallax + captions ---------- */
.fac-grid figure{position:relative}
.fac-grid img{height:250px;transform:scale(1.08);will-change:transform}
.fac-grid figcaption{position:absolute;left:0;right:0;bottom:0;
  padding:1.8rem 1.1rem .95rem;color:var(--surface);font-family:var(--font-display);
  font-weight:700;font-size:.87rem;letter-spacing:-.01em;pointer-events:none;
  background:linear-gradient(0deg,rgb(var(--c-181b1e-rgb)/.86),transparent);
  opacity:0;transform:translateY(14px);
  transition:opacity .45s var(--ease),transform .45s var(--ease)}
.fac-grid figure:hover figcaption{opacity:1;transform:none}

/* ---------- Stats: underline wipe ---------- */
.stat .big{position:relative;padding-bottom:.55rem}
.stat .big::after{content:"";position:absolute;left:0;bottom:0;width:32px;height:3px;
  border-radius:var(--r-sm);background:var(--action);transform:scaleX(0);transform-origin:left;
  transition:transform .9s var(--ease) .45s}
.stats-grid.in .stat .big::after{transform:scaleX(1)}

/* ---------- FABs ---------- */
.fab-wa{position:relative}
.fab-wa::before,.fab-wa::after{content:"";position:absolute;inset:0;border-radius:var(--r-pill);
  border:2px solid rgb(var(--whatsapp-rgb)/.5);pointer-events:none;
  animation:ripple 3s var(--ease) infinite}
.fab-wa::after{animation-delay:1.5s}
@keyframes ripple{0%{transform:scale(1);opacity:.75}70%,100%{transform:scale(1.8);opacity:0}}
.fab-bot svg{animation:slowspin 11s linear infinite}
@keyframes slowspin{to{transform:rotate(360deg)}}

/* ---------- Skeleton shimmer while the AI thinks ---------- */
.thinking{flex-wrap:wrap}
.thinking::after{content:"";flex:1 0 100%;height:46px;border-radius:var(--r-sm);margin-top:.6rem;
  background:linear-gradient(90deg,var(--c-eff1f4) 25%,var(--surface) 50%,var(--c-eff1f4) 75%);
  background-size:280% 100%;animation:shimmer 1.4s linear infinite}
@keyframes shimmer{to{background-position:-280% 0}}

/* caret while text types in */
.typing-on::after{content:"";display:inline-block;width:2px;height:1em;
  background:var(--ai);margin-left:3px;vertical-align:-2px;
  animation:blink 1s steps(1) infinite}

/* ---------- Report explainer: animated reference ranges ---------- */
.rng{display:none;margin-top:1rem}
.rng.show{display:block}
.rng-title{font-family:var(--font-display);font-size:var(--fs-min);font-weight:700;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted);margin-bottom:.6rem}
.rng-item{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  padding:.8rem .95rem;margin-bottom:.55rem;opacity:0;transform:translateY(10px);
  transition:opacity .5s var(--ease),transform .5s var(--ease)}
.rng-item.in{opacity:1;transform:none}
.rng-head{display:flex;align-items:baseline;gap:.6rem}
.rng-head b{font-family:var(--font-display);font-size:.87rem;font-weight:700}
.rng-head .v{font-family:var(--font-display);font-size:.95rem;font-weight:800;margin-left:auto}
.rng-tag{font-family:var(--font-display);font-size:var(--fs-min);font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;border-radius:var(--r-pill);padding:.18rem .55rem}
.rng-tag.ok{background:var(--c-e9f6ee);color:var(--c-1f7a45)}
.rng-tag.lo{background:var(--c-fef4e4);color:var(--c-8e5d14)}
.rng-tag.hi{background:var(--c-fcecea);color:var(--c-b3352b)}
.rng-track{position:relative;height:8px;border-radius:var(--r-pill);margin:.7rem 0 .35rem}
.rng-mark{position:absolute;top:-4px;left:0;width:4px;height:16px;border-radius:var(--r-sm);
  background:var(--dark);box-shadow:var(--halo);
  transition:left 1.2s var(--ease) .25s}
.rng-scale{display:flex;justify-content:space-between;font-size:var(--fs-min);color:var(--muted)}
.rng-note{font-size:var(--fs-min);color:var(--muted);margin-top:.5rem}

/* ---------- Grids: fixed tracks, no orphan cards ---------- */
@media (min-width:769px){
  .ai-grid{grid-template-columns:repeat(4,1fr)}
  .tests-grid{grid-template-columns:repeat(3,1fr)}
}
@media (min-width:621px) and (max-width:768px){
  .ai-grid,.tests-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:620px){
  .ai-grid,.tests-grid{grid-template-columns:1fr}
}

/* ---------- Responsive ---------- */
@media (max-width:768px){
  .how-rail{display:none}
  .pulse-rule svg{height:40px}
}
@media (max-width:620px){
  .stats{padding:48px 0}
  .pulse-rule svg{height:32px}
  .compliance{gap:.5rem 1.1rem;font-size:var(--fs-min)}
  .fac-grid img{height:210px}
}

/* ---------- Reduced motion: everything resolves to its end state ---------- */
@media (prefers-reduced-motion:reduce){
  .aibar>*,.rng-item{opacity:1!important;transform:none!important}
  .offer-card.reveal .offer-img,.offer-card.reveal .offer-body{opacity:1;transform:none}
  .pulse-rule .live{stroke-dashoffset:0}
  .pulse-rule .blip,.thinking::after,.typing-on::after{display:none}
  .how-rail::after{transform:scaleX(1)}
  .how-rail i{opacity:1;transform:translate(-50%,-50%) scale(1)}
  .stat .big::after,.scrollbar{transform:scaleX(1)}
  .scrollbar{display:none}
  .fac-grid img{transform:none}
}

/* =====================================================
   PASS 2 — verified ticks, centred dialogs, locations
   ===================================================== */

/* ---------- Accreditation ticks ---------- */
.trust-row .badge{position:relative;padding-right:.2rem}
.vtick{width:23px;height:23px;flex-shrink:0;margin-left:.1rem;display:block}
.vtick svg{width:100%;height:100%;display:block;overflow:visible}
.vt-ring{fill:none;stroke:var(--c-2f9e62);stroke-width:2;stroke-dasharray:63;
  stroke-dashoffset:63;transform:rotate(-90deg);transform-origin:50% 50%;
  transition:stroke-dashoffset .75s var(--ease)}
.vt-check{fill:none;stroke:var(--c-2f9e62);stroke-width:2.7;stroke-linecap:round;
  stroke-linejoin:round;stroke-dasharray:22;stroke-dashoffset:22;
  transition:stroke-dashoffset .4s var(--ease)}
.vt-disc{fill:var(--c-2f9e62);opacity:0;transform:scale(.2);transform-origin:50% 50%;
  transition:opacity .35s var(--ease),transform .35s var(--ease)}

.trust-row.in .vt-ring{stroke-dashoffset:0}
.trust-row.in .vt-check{stroke-dashoffset:0}
.trust-row.in .badge:nth-of-type(1) .vt-ring{transition-delay:.15s}
.trust-row.in .badge:nth-of-type(2) .vt-ring{transition-delay:.35s}
.trust-row.in .badge:nth-of-type(3) .vt-ring{transition-delay:.55s}
.trust-row.in .badge:nth-of-type(4) .vt-ring{transition-delay:.75s}
.trust-row.in .badge:nth-of-type(1) .vt-check{transition-delay:.72s}
.trust-row.in .badge:nth-of-type(2) .vt-check{transition-delay:.92s}
.trust-row.in .badge:nth-of-type(3) .vt-check{transition-delay:1.12s}
.trust-row.in .badge:nth-of-type(4) .vt-check{transition-delay:1.32s}
.trust-row.in .vtick{animation:tickPop .45s var(--ease) both}
.trust-row.in .badge:nth-of-type(1) .vtick{animation-delay:.78s}
.trust-row.in .badge:nth-of-type(2) .vtick{animation-delay:.98s}
.trust-row.in .badge:nth-of-type(3) .vtick{animation-delay:1.18s}
.trust-row.in .badge:nth-of-type(4) .vtick{animation-delay:1.38s}
@keyframes tickPop{0%{transform:scale(1)}45%{transform:scale(1.26)}100%{transform:scale(1)}}
.trust-row .badge img{transition:transform .4s var(--ease)}
.trust-row .badge:hover img{transform:scale(1.06)}

/* ---------- Dialogs: locked to centre, scale in ---------- */
dialog{position:fixed;top:50%;left:50%;margin:0;
  transform:translate(-50%,-50%);max-height:88vh;overflow-y:auto;
  overscroll-behavior:contain}
dialog[open]{animation:dlgIn .32s var(--ease) both}
@keyframes dlgIn{
  from{opacity:0;transform:translate(-50%,-50%) scale(.94)}
  to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
dialog::backdrop{animation:bdIn .32s ease both}
@keyframes bdIn{from{opacity:0}to{opacity:1}}
.dlg-head{position:sticky;top:0;z-index:2}

/* ---------- Locations ---------- */
.loc-sec{background:var(--c-f6f7f9);border-top:1px solid var(--line);
  border-bottom:1px solid var(--line)}
.loc-head-row{display:flex;align-items:flex-end;justify-content:space-between;
  gap:1.5rem;flex-wrap:wrap;margin-bottom:28px}
.loc-head-row .section-head{margin-bottom:0}

.loc-tabs{display:flex;gap:.4rem;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-pill);padding:.28rem}
.loc-tabs button{font-family:var(--font-display);font-size:.83rem;font-weight:700;
  border:0;background:none;color:var(--muted);padding:.5rem 1.15rem;
  border-radius:var(--r-pill);cursor:pointer;white-space:nowrap;
  transition:background .25s var(--ease),color .25s var(--ease)}
.loc-tabs button:hover{color:var(--dark)}
.loc-tabs button.on{background:var(--action);color:var(--surface);
  box-shadow:var(--sh-9c75dc)}

.loc-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
  gap:1rem;align-items:start}
.loc-list{display:flex;flex-direction:column;gap:.7rem;
  max-height:530px;overflow-y:auto;padding-right:.35rem}
.loc-list::-webkit-scrollbar{width:6px}
.loc-list::-webkit-scrollbar-thumb{background:var(--c-cdd2d7);border-radius:var(--r-pill)}

.loc-card{position:relative;flex:0 0 auto;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-md);padding:1.1rem 1.2rem;cursor:pointer;overflow:hidden;
  opacity:0;transform:translateY(16px);
  transition:opacity .6s var(--ease),transform .35s var(--ease),
    border-color .25s,box-shadow .25s}
.loc-card.in{opacity:1;transform:none}
.loc-card::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:var(--action);transform:scaleY(0);transform-origin:bottom;
  transition:transform .35s var(--ease)}
.loc-card:hover{border-color:var(--c-cdd2d7);box-shadow:var(--sh-sm)}
.loc-card.on{border-color:var(--action);box-shadow:var(--sh-md)}
.loc-card.on::after{transform:scaleY(1);transform-origin:top}

.loc-name{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap}
.loc-name b{font-family:var(--font-display);font-size:1rem;font-weight:800;
  letter-spacing:-.015em}
.loc-pin{width:26px;height:26px;border-radius:var(--r-sm);background:var(--action-tint);
  color:var(--action);display:flex;align-items:center;justify-content:center;
  flex-shrink:0;transition:transform .4s var(--ease)}
.loc-pin svg{width:15px;height:15px}
.loc-card.on .loc-pin{background:var(--action);color:var(--surface);
  animation:pinDrop .55s var(--ease)}
@keyframes pinDrop{0%{transform:translateY(-7px) scale(.85)}
  55%{transform:translateY(2px) scale(1.1)}100%{transform:none}}
.loc-hours{margin-left:auto;font-family:var(--font-display);font-size:var(--fs-min);
  font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ai);background:var(--ai-tint);border-radius:var(--r-pill);
  padding:.22rem .6rem;white-space:nowrap}
.loc-addr{font-size:.85rem;color:var(--muted);line-height:1.6;
  margin:.55rem 0 .85rem}
.loc-actions{display:flex;gap:.5rem;flex-wrap:wrap}

.loc-map{position:relative;border-radius:var(--r-md);overflow:hidden;
  border:1px solid var(--line);background:var(--c-eff1f4);height:530px;
  box-shadow:var(--sh-sm)}
.loc-map iframe{width:100%;height:100%;border:0;display:block;
  opacity:0;transition:opacity .5s var(--ease);filter:saturate(.92)}
.loc-map iframe.ready{opacity:1}
.loc-note{font-size:.75rem;color:var(--muted);margin-top:1rem}

@media (max-width:768px){
  .loc-grid{grid-template-columns:1fr}
  .loc-list{max-height:none;overflow:visible;padding-right:0}
  .loc-map{height:340px;order:-1}
  .loc-head-row{margin-bottom:22px}
}
@media (max-width:620px){
  .loc-tabs{width:100%;justify-content:center}
  .loc-hours{margin-left:0}
}

@media (prefers-reduced-motion:reduce){
  .loc-card{opacity:1;transform:none}
  .loc-map iframe{opacity:1}
  .vt-ring,.vt-check{stroke-dashoffset:0}
  dialog[open]{animation:none}
}

/* ---------- Trust row fits one line with the ticks added ---------- */
@media (min-width:769px){
  .trust-row{gap:1rem;justify-content:space-between;padding:1.05rem 1.2rem}
  .trust-row .badge{gap:.55rem}
  .trust-row .badge img{height:40px}
}

/* dialog hint is user-facing copy now, not a code note */
.dlg-hint{font-family:var(--font-body);font-size:.78rem;line-height:1.6;
  border-top:1px solid var(--line);color:var(--muted)}

/* =====================================================
   OFFER PROMO — replaces the raster banner
   Pure CSS/SVG. No image, so nothing crops and nothing
   goes off-brand. Motif: concentric scan rings.
   ===================================================== */
.offer-card{grid-template-columns:1.02fr 1fr;align-items:stretch}

.offer-promo{position:relative;overflow:hidden;isolation:isolate;
  min-height:340px;display:flex;align-items:center;
  padding:2.4rem 2.2rem;
  background:
    radial-gradient(120% 90% at 12% 12%, var(--surface) 0%, var(--c-fff6f6) 44%, var(--c-fdecec) 100%)}

/* soft brand wash */
.offer-promo::before{content:"";position:absolute;inset:0;z-index:-2;
  background:
    radial-gradient(58% 66% at 82% 46%, rgb(var(--ai-rgb)/.13), transparent 70%),
    radial-gradient(58% 66% at 8% 96%, rgb(var(--c-d42027-rgb)/.13), transparent 70%)}

/* hairline grid, echoes the AI section */
.offer-promo::after{content:"";position:absolute;inset:0;z-index:-2;pointer-events:none;
  background-image:
    linear-gradient(rgb(var(--c-d42027-rgb)/.055) 1px,transparent 1px),
    linear-gradient(90deg,rgb(var(--c-d42027-rgb)/.055) 1px,transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(72% 74% at 68% 50%,#000,transparent);
  mask-image:radial-gradient(72% 74% at 68% 50%,#000,transparent)}

/* ---------- scan rings ---------- */
.promo-rings{position:absolute;left:56%;top:50%;width:400px;height:400px;
  transform:translateY(-50%);z-index:-1;pointer-events:none}
.promo-rings i{position:absolute;left:50%;top:50%;width:100%;height:100%;
  margin:-50% 0 0 -50%;border-radius:var(--r-pill);
  border:1.6px solid rgb(var(--c-d42027-rgb)/.42);
  transform:scale(.18);opacity:0;
  animation:scanPulse 5.2s cubic-bezier(.22,.61,.36,1) infinite}
.promo-rings i:nth-child(2){animation-delay:1.3s}
.promo-rings i:nth-child(3){animation-delay:2.6s}
.promo-rings i:nth-child(4){animation-delay:3.9s}
@keyframes scanPulse{
  0%{transform:scale(.18);opacity:0}
  14%{opacity:1}
  100%{transform:scale(1);opacity:0}}

/* static gantry ring for structure */
.promo-rings b{position:absolute;left:50%;top:50%;width:56%;height:56%;
  margin:-28% 0 0 -28%;border-radius:var(--r-pill);
  border:1.6px dashed rgb(var(--c-d42027-rgb)/.34);
  animation:gantry 34s linear infinite}
@keyframes gantry{to{transform:rotate(360deg)}}

/* ---------- content ---------- */
.promo-body{position:relative;max-width:34ch}
.promo-eyebrow{font-family:var(--font-display);font-size:var(--fs-min);font-weight:700;
  letter-spacing:.15em;text-transform:uppercase;color:var(--action);
  display:inline-flex;align-items:center;gap:.5rem;margin-bottom:.75rem}
.promo-eyebrow::before{content:"";width:6px;height:6px;border-radius:var(--r-pill);
  background:var(--action);animation:blink 2.4s ease-in-out infinite}

.promo-title{font-family:var(--font-display);font-weight:800;line-height:1.06;
  letter-spacing:-.03em;color:var(--dark);
  font-size:clamp(1.85rem,3.4vw,2.6rem);margin-bottom:.7rem}
.promo-title em{display:block;font-style:normal;color:var(--action)}

.promo-sub{font-size:.93rem;color:var(--muted);line-height:1.62;
  margin-bottom:1.5rem}

.promo-call{position:relative;display:inline-flex;align-items:center;gap:.85rem;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  padding:.7rem 1.35rem .7rem .75rem;box-shadow:var(--sh-sm);
  transition:transform .25s var(--ease),box-shadow .25s,border-color .25s}
.promo-call:hover{transform:translateY(-3px);border-color:var(--action);
  box-shadow:var(--sh-1a3e58)}
.promo-call-ic{position:relative;width:42px;height:42px;border-radius:var(--r-md);
  background:var(--action);color:var(--surface);flex-shrink:0;
  display:flex;align-items:center;justify-content:center}
.promo-call-ic::after{content:"";position:absolute;inset:0;border-radius:var(--r-md);
  border:2px solid rgb(var(--c-d42027-rgb)/.5);
  animation:ripple 2.6s var(--ease) infinite}
.promo-call small{display:block;font-size:var(--fs-min);font-weight:700;
  font-family:var(--font-display);letter-spacing:.11em;text-transform:uppercase;
  color:var(--muted);margin-bottom:.1rem}
.promo-call b{display:block;font-family:var(--font-display);font-size:1.18rem;
  font-weight:800;letter-spacing:-.02em;color:var(--dark);
  font-variant-numeric:tabular-nums}
.promo-call:hover b{color:var(--action)}

/* ---------- entrance ---------- */
.offer-card.reveal .promo-body>*{opacity:0;transform:translateY(16px);
  transition:opacity .8s var(--ease),transform .8s var(--ease)}
.offer-card.reveal.in .promo-body>*{opacity:1;transform:none}
.offer-card.reveal.in .promo-eyebrow{transition-delay:.12s}
.offer-card.reveal.in .promo-title{transition-delay:.24s}
.offer-card.reveal.in .promo-sub{transition-delay:.36s}
.offer-card.reveal.in .promo-call{transition-delay:.48s}

@media (max-width:768px){
  .offer-card{grid-template-columns:1fr}
  .offer-promo{min-height:0;padding:2rem 1.6rem 2.2rem}
  .promo-rings{width:300px;height:300px;left:58%;opacity:.75}
  .promo-body{max-width:none}
}
@media (prefers-reduced-motion:reduce){
  .promo-rings{display:none}
  .offer-card.reveal .promo-body>*{opacity:1;transform:none}
}

/* =====================================================
   SERVICE CAROUSEL
   ===================================================== */
.svc-sec{background:var(--c-f6f7f9);border-top:1px solid var(--line);
  border-bottom:1px solid var(--line)}
.svc-frame{position:relative;border-radius:var(--r-lg);overflow:hidden;
  background:var(--surface);border:1px solid var(--line);box-shadow:var(--sh-md)}
.svc-track{display:flex;transition:transform .72s cubic-bezier(.65,0,.25,1)}

.svc-slide{flex:0 0 100%;min-width:0;display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.12fr);align-items:center;
  min-height:420px}

/* ---------- copy ---------- */
.svc-copy{padding:3rem 1rem 3rem 3rem;position:relative;z-index:2}
.svc-eyebrow{font-family:var(--font-display);font-size:var(--fs-min);font-weight:700;
  letter-spacing:.15em;text-transform:uppercase;color:var(--action);
  display:inline-flex;align-items:center;gap:.55rem;margin-bottom:.85rem}
.svc-eyebrow::before{content:"";width:22px;height:2px;border-radius:var(--r-sm);
  background:var(--action)}
.svc-title{font-family:var(--font-display);font-weight:800;line-height:1.1;
  letter-spacing:-.03em;color:var(--dark);
  font-size:clamp(1.6rem,2.9vw,2.3rem);margin-bottom:.2rem}
.svc-title em{display:block;font-style:normal;color:var(--action)}
.svc-title{max-width:16ch}
.svc-sub{font-size:.95rem;color:var(--muted);line-height:1.66;
  max-width:44ch;margin:.85rem 0 1.6rem}


/* copy animates in per slide, so each one lands rather than just appearing */
.svc-slide .svc-copy>*{opacity:0;transform:translateY(18px)}
.svc-slide.on .svc-copy>*{opacity:1;transform:none;
  transition:opacity .7s var(--ease),transform .7s var(--ease)}
.svc-slide.on .svc-eyebrow{transition-delay:.18s}
.svc-slide.on .svc-title{transition-delay:.28s}
.svc-slide.on .svc-sub{transition-delay:.38s}

/* ---------- art ---------- */
.svc-art{position:relative;height:100%;min-height:420px;overflow:hidden;
  display:flex;align-items:center;justify-content:center}
.svc-art img{width:100%;height:100%;object-fit:cover;object-position:center;
  transform:scale(1.06) translateX(14px);opacity:0;
  transition:transform 1.1s var(--ease),opacity .8s var(--ease)}
.svc-slide.on .svc-art img{transform:scale(1) translateX(0);opacity:1;
  transition-delay:.1s}
/* feather the art into the copy so the two halves read as one panel */
.svc-art::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(90deg,var(--surface) 0%,rgb(var(--surface-rgb)/.72) 12%,transparent 42%)}

/* narrower artwork sits inside the panel rather than being cropped */
.svc-art.fit-contain{background:linear-gradient(135deg,var(--c-f4f5f7),var(--c-eceef1))}
.svc-art.fit-contain img{object-fit:contain;padding:1.6rem 2rem}
.svc-art.fit-contain::before{background:linear-gradient(90deg,var(--surface) 0%,rgb(var(--surface-rgb)/.55) 14%,transparent 40%)}
@media (max-width:768px){.svc-art.fit-contain img{padding:.9rem 1.2rem}}

/* ---------- controls ---------- */
.svc-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:5;
  width:42px;height:42px;border-radius:var(--r-pill);border:1px solid var(--line);
  background:rgb(var(--surface-rgb)/.94);color:var(--dark);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  box-shadow:var(--sh-md);
  transition:background .18s,color .18s,transform .18s var(--ease),border-color .18s}
.svc-arrow:hover{background:var(--action);color:var(--surface);border-color:var(--action);
  transform:translateY(-50%) scale(1.07)}
.svc-arrow.prev{left:14px}
.svc-arrow.next{right:14px}

.svc-dots{position:absolute;left:3rem;bottom:1.6rem;z-index:5;
  display:flex;gap:.4rem}
.svc-dots button{width:32px;height:4px;border-radius:var(--r-pill);border:0;padding:0;
  background:var(--c-cdd2d7);cursor:pointer;position:relative;overflow:hidden;
  transition:background .2s}
.svc-dots button:hover{background:var(--muted)}
.svc-dots button.on{background:rgb(var(--c-d42027-rgb)/.2)}
.svc-dots button.on::after{content:"";position:absolute;inset:0;
  background:var(--action);transform-origin:left;
  animation:svcFill 6.2s linear forwards}
@keyframes svcFill{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* ---------- responsive ---------- */
@media (max-width:768px){
  .svc-slide{grid-template-columns:1fr;min-height:0}
  .svc-art{order:-1;min-height:0;height:210px}
  .svc-art::before{background:linear-gradient(0deg,var(--surface) 0%,rgb(var(--surface-rgb)/.6) 14%,transparent 46%)}
  .svc-art img{transform:scale(1.04) translateY(10px)}
  .svc-slide.on .svc-art img{transform:scale(1) translateY(0)}
  .svc-copy{padding:1.4rem 1.5rem 3.4rem}
  .svc-sub{max-width:none}
  .svc-dots{left:1.5rem;bottom:1.3rem}
  /* arrows ride on the artwork so they never sit over the headline */
  .svc-arrow{width:34px;height:34px;top:105px;transform:none}
  .svc-arrow:hover{transform:none}
  .svc-arrow.prev{left:8px}
  .svc-arrow.next{right:8px}
}
@media (max-width:620px){
  .svc-art{height:180px}
  .svc-arrow{top:90px}
  .svc-title{max-width:none}
  }

@media (prefers-reduced-motion:reduce){
  .svc-track{transition:none}
  .svc-slide .svc-copy>*{opacity:1;transform:none}
  .svc-art img{opacity:1;transform:none}
  .svc-dots button.on::after{animation:none;transform:scaleX(1)}
}

/* =====================================================
   TRUST STRIP — rotating slots
   Height is pinned so the page never reflows mid-rotation.
   ===================================================== */
.trust-row.trust-rot{display:grid;
  grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;
  align-items:center;gap:0;padding:0;justify-content:stretch}
.trust-rot .sep{width:1px;height:38px;background:var(--c-cdd2d7);
  justify-self:center;flex:none}

.trust-rot .badge{position:relative;overflow:hidden;
  height:76px;padding:0;min-width:0}

.tr-inner{position:absolute;inset:0;display:flex;align-items:center;
  gap:.65rem;padding:0 .95rem;
  transition:transform .62s var(--ease),opacity .5s var(--ease)}
.tr-inner.enter{transform:translateY(64%);opacity:0}
.tr-inner.leave{transform:translateY(-64%);opacity:0}

/* artwork slot keeps one footprint whether it holds a logo or an icon */
.tr-art{min-width:44px;max-width:66px;height:44px;flex-shrink:0;display:flex;
  align-items:center;justify-content:center}
.tr-art img{height:42px;width:auto;max-width:66px;object-fit:contain;
  background:var(--surface);border-radius:var(--r-sm);padding:.22rem .3rem;
  border:1px solid var(--line)}
.tr-ic{width:40px;height:40px;border-radius:var(--r-md);flex-shrink:0;
  background:var(--action-tint);color:var(--action);
  display:flex;align-items:center;justify-content:center}
.tr-ic svg{width:19px;height:19px}

.tr-txt{min-width:0}
.tr-txt b{font-family:var(--font-display);font-size:.85rem;font-weight:700;
  display:block;line-height:1.3;color:var(--dark);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tr-txt span{font-size:var(--fs-min);color:var(--muted);display:block;
  line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* the tick draws on every slot as it lands */
.trust-rot .vtick{margin-left:auto}
.trust-rot .vt-ring{stroke-dashoffset:0;transition:none}
.trust-rot .vt-check{stroke-dashoffset:0;transition:none}
.trust-rot .tr-inner.enter .vt-ring{stroke-dashoffset:63}
.trust-rot .tr-inner.enter .vt-check{stroke-dashoffset:22}
.trust-rot .tr-inner:not(.enter):not(.leave) .vt-ring{
  transition:stroke-dashoffset .7s var(--ease) .18s}
.trust-rot .tr-inner:not(.enter):not(.leave) .vt-check{
  transition:stroke-dashoffset .4s var(--ease) .7s}

/* the original staggered first-load ticks still apply */
.trust-row.trust-rot.in .badge:nth-of-type(1) .vt-ring{transition-delay:.15s}
.trust-row.trust-rot.in .badge:nth-of-type(2) .vt-ring{transition-delay:.35s}
.trust-row.trust-rot.in .badge:nth-of-type(3) .vt-ring{transition-delay:.55s}
.trust-row.trust-rot.in .badge:nth-of-type(4) .vt-ring{transition-delay:.75s}

@media (max-width:768px){
  .trust-row.trust-rot{grid-template-columns:1fr auto 1fr}
  .trust-rot .badge:nth-of-type(n+3){display:none}
  .trust-rot .sep:nth-of-type(n+2){display:none}
}
@media (max-width:620px){
  .trust-row.trust-rot{grid-template-columns:1fr}
  .trust-rot .sep{display:none}
  .trust-rot .badge:nth-of-type(n+2){display:none}
  .trust-rot .badge{height:68px}
}

@media (prefers-reduced-motion:reduce){
  .tr-inner{transition:none}
  .tr-inner.enter,.tr-inner.leave{opacity:1;transform:none}
}

/* pinned slot reads as fixed, not mid-rotation */
.trust-rot .badge.pinned{background:linear-gradient(90deg,rgb(var(--c-d42027-rgb)/.045),transparent 70%)}

/* =====================================================
   DEPARTMENTS + SVG SLIDE ARTWORK
   ===================================================== */

/* ---------- drawn artwork inside a carousel slide ---------- */
.svc-art.art-svg{background:linear-gradient(135deg,var(--c-fff7f7),var(--c-fdecec));
  padding:1.5rem 1.8rem}
.svc-art.art-svg svg{width:100%;height:100%;display:block}
.svc-art.art-svg::before{background:linear-gradient(90deg,var(--surface) 0%,rgb(var(--surface-rgb)/.6) 14%,transparent 42%)}

.art-trace{stroke-dasharray:1400;stroke-dashoffset:1400}
.svc-slide.on .art-trace{transition:stroke-dashoffset 2.4s var(--ease) .2s;
  stroke-dashoffset:0}
.art-heart{stroke-dasharray:640;stroke-dashoffset:640}
.svc-slide.on .art-heart{transition:stroke-dashoffset 2s var(--ease) .5s;
  stroke-dashoffset:0}
.art-blip{opacity:0}
.svc-slide.on .art-blip{opacity:1;transition:opacity .5s 2.2s}

/* ---------- departments ---------- */
.dept-sec{background:var(--surface)}
.dept-grid{display:flex;flex-direction:column;gap:2.4rem}

.dept-title{display:flex;align-items:center;gap:.7rem;margin-bottom:1rem;
  font-family:var(--font-display);font-size:.78rem;font-weight:700;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted)}
.dept-title span{flex-shrink:0}
.dept-title i{font-style:normal;font-size:var(--fs-min);color:var(--action);
  background:var(--action-tint);border-radius:var(--r-pill);padding:.14rem .52rem;
  font-variant-numeric:tabular-nums}
.dept-title::after{content:"";flex:1;height:1px;background:var(--line)}

.dept-items{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.8rem}

.dept-card{display:flex;align-items:center;gap:.8rem;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  padding:1rem 1.05rem;min-width:0;position:relative;overflow:hidden;
  opacity:0;transform:translateY(16px);
  transition:opacity .7s var(--ease),transform .7s var(--ease),
    border-color .25s,box-shadow .25s}
.dept-group.in .dept-card{opacity:1;transform:none}
.dept-card::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:var(--action);transform:scaleY(0);transform-origin:bottom;
  transition:transform .3s var(--ease)}
.dept-card:hover{border-color:var(--c-cdd2d7);box-shadow:var(--sh-sm)}
.dept-card:hover::after{transform:scaleY(1);transform-origin:top}

.dept-ic{width:40px;height:40px;border-radius:var(--r-md);flex-shrink:0;
  background:var(--c-f6f7f9);color:var(--action);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;
  transition:background .3s,color .3s,transform .35s var(--ease)}
.dept-ic svg{width:20px;height:20px}
.dept-card:hover .dept-ic{background:var(--action);color:var(--surface);border-color:var(--action);
  transform:translateY(-2px)}

.dept-card b{font-family:var(--font-display);font-size:.9rem;font-weight:700;display:block;
  line-height:1.3;color:var(--dark)}
.dept-card span{font-size:.76rem;color:var(--muted);display:block;line-height:1.4;
  margin-top:.1rem}

.dept-note{margin-top:2rem;padding-top:1.1rem;border-top:1px solid var(--line);
  font-size:.8rem;color:var(--muted)}

@media (max-width:768px){ .dept-items{grid-template-columns:repeat(3,minmax(0,1fr))} }
@media (max-width:620px){  .dept-items{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:620px){
  .dept-items{grid-template-columns:1fr}
  .dept-grid{gap:1.8rem}
}

@media (prefers-reduced-motion:reduce){
  .dept-card{opacity:1;transform:none}
  .art-trace,.art-heart{stroke-dashoffset:0}
  .art-blip{display:none}
}

/* =====================================================
   PASS 8 — hero, nav, glass, responsive
   ===================================================== */

/* ---------- 1. Hero height, down ~12% ---------- */
.hero{padding:16px 0 0}
.hero-video-slide{height:clamp(370px,36vw,492px)}

/* ---------- 8. Video scrim: darker, graded toward the panel ---------- */
/* The panel is frosted glass now, so its text no longer sits on the footage
   and the video does not need a heavy wash to stay readable. Filters removed;
   the scrim only darkens the strip the panel overlaps. */
.hero-video{filter:none}
.hero-video-slide::after{background:
  linear-gradient(180deg,transparent 0%,transparent 42%,rgb(var(--c-181b1e-rgb)/.34) 100%)}

/* ---------- 5. The panel becomes real frosted glass ---------- */
.aibar-wrap{bottom:18px}
.aibar{background:rgb(var(--surface-rgb)/.8);
  -webkit-backdrop-filter:blur(22px) saturate(1.5);
  backdrop-filter:blur(22px) saturate(1.5);
  border:1px solid rgb(var(--surface-rgb)/.85);
  border-radius:var(--r-lg);
  box-shadow:var(--sh-af932a);
  padding:1.15rem 1.3rem 1.25rem}
.aibar-top .aibar-h{font-size:1.16rem}

/* controls sit on glass now, so they can be plainer and higher contrast */
.cmd-box{background:var(--surface);border-color:rgb(var(--c-d42027-rgb)/.42);
  -webkit-backdrop-filter:none;backdrop-filter:none;
  box-shadow:var(--sh-2eeafa)}
.cmd-box:focus-within{background:var(--surface);border-color:var(--action);
  box-shadow:var(--sh-d384f2)}

/* ---------- 2. Search CTA attached to the bar ---------- */
.cmd-box{padding:.3rem .3rem .3rem 1.05rem}
.cmd-box .go{width:auto;height:42px;border-radius:var(--r-pill);padding:0 1.25rem;
  gap:.45rem;background:var(--action);
  font-family:var(--font-display);font-weight:700;font-size:.88rem;letter-spacing:-.01em;
  box-shadow:var(--sh-357ce8)}
.cmd-box .go::before{content:"Search"}
.cmd-box .go:hover,.cmd-box .go:focus-visible{background:var(--action-hover);
  transform:none;box-shadow:var(--sh-c7093f)}
.cmd-box .go svg{transition:transform .25s var(--ease)}
.cmd-box .go:hover svg{transform:translateX(3px)}
/* the standalone Book Now is gone; the first action tile carries it */
.hero-book{display:none}

/* ---------- 4. Verified stat line ---------- */
.hero-stats{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem 1.4rem;
  margin-top:.95rem;padding-top:.85rem;
  border-top:1px solid rgb(var(--c-181b1e-rgb)/.1)}
.hero-stat{display:inline-flex;align-items:baseline;gap:.4rem;min-width:0}
.hero-stat b{font-family:var(--font-display);font-weight:800;font-size:.98rem;
  letter-spacing:-.02em;color:var(--dark);font-variant-numeric:tabular-nums}
.hero-stat span{font-size:var(--fs-min);color:var(--muted);white-space:nowrap}
.hero-stat i{font-style:normal;color:var(--action)}
.hero-stats .div{width:1px;height:16px;background:rgb(var(--c-181b1e-rgb)/.14)}

/* ---------- 6. Navigation ---------- */
.nav-links{gap:1.7rem}
/* the old blob hover is replaced with a wiping underline */
.nav-links a::before,.nav-phone::before{display:none}
.nav-links a{padding-bottom:2px}
.nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:-3px;
  height:2px;border-radius:var(--r-sm);background:var(--action);
  transform:scaleX(0);transform-origin:right;
  transition:transform .34s var(--ease)}
.nav-links a:hover::after,.nav-links a:focus-visible::after{
  transform:scaleX(1);transform-origin:left}
.nav-links a:hover,.nav-links a:focus-visible{color:var(--dark);transform:none}
.nav-links a.active{color:var(--dark);font-weight:700}
.nav-links a.active::after{transform:scaleX(1);transform-origin:left}
.nav.scrolled{box-shadow:var(--sh-85cb74)}
.nav-phone:hover{transform:none;color:var(--action-hover)}

/* ---------- Responsive: verified at 320 / 375 / 390 / 414 / 768 / 1024 / 1280 / 1440 / 1920 ---------- */
@media (min-width:1241px){
  .hero-video-slide{height:520px}
}
@media (max-width:768px){
  .aibar{padding:1.05rem 1.1rem 1.15rem}
  .hero-stats{gap:.35rem 1rem}
  .hero-stat span{font-size:var(--fs-min)}
}
@media (max-width:768px){
  .hero-video-slide{height:auto;min-height:0}
  .hero-video{position:absolute;inset:0}
  /* below tablet the panel sits under the video rather than over it,
     so nothing has to fight the footage for contrast */
  .slider.video-slider{padding:0 16px}
  .hero-video-slide{height:210px}
  /* relative, not static: z-index is ignored on static elements and the
     positioned video slide was painting over the panel's headline. */
  .aibar-wrap{position:relative;z-index:20;transform:none;max-width:none;
    left:auto;bottom:auto;padding:0 16px;margin-top:-42px}
  .aibar{background:var(--surface);border-color:var(--line);
    -webkit-backdrop-filter:none;backdrop-filter:none;
    box-shadow:var(--sh-md)}
  .aibar-top .aibar-h{font-size:1.05rem}
}
@media (max-width:620px){
  .cmd-box{padding:.28rem .28rem .28rem .85rem}
  .cmd-box .go{padding:0 .9rem;height:38px;font-size:.83rem}
  .hero-stats{gap:.3rem .9rem;margin-top:.8rem;padding-top:.75rem}
  .hero-stats .div{display:none}
}
@media (max-width:400px){
  .aibar{padding:.9rem .95rem 1rem}
  .aibar-top .aibar-h{font-size:.98rem}
  .cmd-box .go::before{content:""}
  .cmd-box .go{padding:0;width:38px;justify-content:center}
    .hero-stat b{font-size:.9rem}
  .hero-stat span{font-size:var(--fs-min)}
}

@media (prefers-reduced-motion:reduce){
  .nav-links a::after{transition:none}
}

/* ---------- Touch targets: nothing interactive under 32px ---------- */
.util .right a,.util .c{padding:.42rem 0;display:inline-flex;align-items:center}
.util-inner{padding:.15rem 24px}
.nav-logo{display:inline-flex;align-items:center;padding:.3rem 0}
.dlg-close{width:34px;height:34px}
.chat-head button{width:34px;height:34px}
.foot-links a{display:inline-block;padding:.36rem 0}
.foot-links li{margin-bottom:.28rem}
.socials a{width:38px;height:38px}
/* The dot reads as 4px but the element itself is 32px, so the hit area is
   real rather than a pseudo-element the accessibility tree can't measure. */
.svc-dots button{height:32px;padding:14px 0;background-clip:content-box;
  border-radius:var(--r-pill)}
.svc-dots button.on::after{top:14px;bottom:14px;border-radius:var(--r-pill)}
.svc-dots{bottom:1.2rem;gap:.3rem}
.slider-dots button{height:32px;padding:14px 0;background-clip:content-box}
.slider-dots button.active::after{top:14px;bottom:14px}
.loc-tabs button{min-height:36px}

/* ---------- Trust strip: 4 slots need more than 1024px ---------- */
@media (max-width:768px) and (min-width:621px){
  .trust-row.trust-rot{grid-template-columns:1fr auto 1fr}
  .trust-rot .badge:nth-of-type(n+3){display:none}
  .trust-rot .sep:nth-of-type(n+2){display:none}
}

/* nav links reach a 32px hit box without changing how they look */
.nav-links a{padding-top:5px;padding-bottom:6px}
.nav-links a::after{bottom:0}
.nav-phone{padding:7px 0}

/* utility bar wraps instead of pushing past the viewport */
.util-inner{flex-wrap:wrap;row-gap:0}
.util .right{gap:.9rem}
@media (max-width:620px){
  .util-inner{justify-content:center;gap:.9rem;padding-left:14px;padding-right:14px}
  .util .right{margin-left:0}
  .util .c{font-size:var(--fs-min)}
}

/* Seven nav items plus a phone number: flex was shrinking them until the
   labels broke across two lines. */
.nav-links a,.nav-phone{white-space:nowrap;flex-shrink:0}
.nav-links{flex-wrap:nowrap}
@media (max-width:1240px) and (min-width:621px){
  .nav-links{gap:1.15rem}
  .nav-links a{font-size:.84rem}
  .nav-inner{gap:1.1rem}
  .nav-phone{font-size:.82rem}
}

/* The touch-target padding above uses inline-flex, which was overriding
   the small-screen hide on the secondary utility items. Restore it. */
@media (max-width:620px){
  .util .hide-m{display:none}
}

@media (max-width:768px){ .nav-plain{display:none} }

/* A three-letter nav link is narrower than the 32px touch minimum, and the
   extra item pushed the row into overflow at tablet width. */
.nav-links a.nav-extra{padding-left:4px;padding-right:4px;min-width:34px;
  text-align:center}
@media (max-width:768px){ .nav-links a.nav-extra{display:none} }

/* Price filter pills and Book buttons were under the 32px touch minimum. */
.pl-filters button{min-height:34px;padding:.5rem 1rem}

/* Footer legal links were 20px tall — below the 32px touch minimum. */
.foot-bottom a{display:inline-flex;align-items:center;min-height:34px}

/* The catalogue link sits in a note paragraph; give it a real touch target. */
.pl-note a{display:inline-flex;align-items:center;min-height:36px}

/* The extra nav items squeezed the logo to 31px wide at 1024. flex-shrink:0
   fixed that but broke mobile, where the logo must adapt - so instead the
   optional nav items drop out earlier and the logo keeps its room. */
@media (max-width:768px){ .nav-links a.nav-extra{display:none} }

/* link through to the full searchable price list */
.pl-all{font:700 .86rem var(--font-display);color:var(--action);display:inline-flex;
  align-items:center;min-height:34px}

/* =====================================================
   ACTION RAIL + QUICK BAR
   ===================================================== */

/* ---------- Desktop rail ---------- */
.act-rail{position:fixed;right:0;top:50%;transform:translateY(-50%);
  z-index:200;display:flex;flex-direction:column;align-items:flex-end;
  gap:.55rem;padding-right:0}

.act-tab{writing-mode:vertical-rl;transform:rotate(180deg);
  background:var(--action);color:var(--surface);border:0;cursor:pointer;
  font-family:var(--font-display);font-weight:700;font-size:.82rem;letter-spacing:.02em;
  padding:1.15rem .68rem;border-radius:var(--r-md) 0 0 var(--r-md);margin-right:0;
  box-shadow:var(--sh-94e3b5);
  transition:background .2s,padding .25s var(--ease)}
.act-tab:hover{background:var(--action-hover);padding-right:.9rem}

.act-whatsapp{background:var(--whatsapp);color:var(--surface)}
.act-chat{background:var(--ai);color:var(--surface)}
.act-call:hover{background:var(--action);color:var(--surface)}

.act-tip{position:absolute;right:calc(100% + 10px);top:50%;
  transform:translateY(-50%) translateX(6px);
  background:var(--dark);color:var(--surface);font-family:var(--font-display);
  font-size:.75rem;font-weight:600;white-space:nowrap;
  padding:.32rem .6rem;border-radius:var(--r-sm);pointer-events:none;
  opacity:0;transition:opacity .2s,transform .2s var(--ease)}

/* the original FAB stack is kept in the DOM so its listeners survive,
   but the rail replaces it visually */
.fab-stack{display:none}

/* ---------- Mobile quick bar ---------- */
.quick-bar{display:none}

@media (max-width:768px){
  .act-rail{display:none}

  .quick-bar{display:grid;grid-template-columns:repeat(5,1fr);
    position:fixed;left:0;right:0;bottom:0;z-index:210;
    background:rgb(var(--surface-rgb)/.94);
    -webkit-backdrop-filter:blur(18px) saturate(1.4);
    backdrop-filter:blur(18px) saturate(1.4);
    border-top:1px solid var(--line);
    box-shadow:var(--sh-fe192a);
    padding-bottom:env(safe-area-inset-bottom)}

  .qb-item{background:none;border:0;cursor:pointer;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:.2rem;padding:.5rem .2rem .45rem;min-height:58px;color:var(--muted);
    transition:color .2s}
  .qb-item:active{color:var(--action)}
  .qb-ic{display:flex;align-items:center;justify-content:center}
  .qb-lbl{font-family:var(--font-display);font-size:var(--fs-min);font-weight:700;
    letter-spacing:.02em;white-space:nowrap}

  /* centre item lifts out of the bar, the way the reference does */
  .qb-center{position:relative}
  .qb-center .qb-ic{position:absolute;top:-22px;
    width:56px;height:56px;border-radius:var(--r-pill);
    background:var(--action);color:var(--surface);
    border:4px solid var(--surface);
    box-shadow:var(--sh-bd6cd5)}
  .qb-center .qb-lbl{margin-top:2.35rem;color:var(--action)}
  .qb-center::after{content:"";position:absolute;top:-24px;right:6px;
    width:9px;height:9px;border-radius:var(--r-pill);background:var(--ai);
    border:2px solid var(--surface);animation:blink 2.4s ease-in-out infinite}

  /* WhatsApp stays reachable, floating clear of the bar */
  .fab-stack{display:flex;bottom:calc(74px + env(safe-area-inset-bottom));right:14px}
  .fab-stack .fab-bot{display:none}   /* the bar's centre button covers this */

  /* nothing at the end of the page hides behind the bar */
  body.has-quick-bar{padding-bottom:66px}
  .chat{bottom:calc(80px + env(safe-area-inset-bottom))}
}

@media (max-width:400px){
  .qb-lbl{font-size:var(--fs-min)}
  .qb-center .qb-ic{width:52px;height:52px;top:-20px}
  .qb-center .qb-lbl{margin-top:2.1rem}
}

@media (prefers-reduced-motion:reduce){
  .act-tab,.act-tip{transition:none}
  .qb-center::after{animation:none}
}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* FAQ accordion + FAQPage JSON-LD, both from the same config array */
.faq-sec{background:var(--surface)}
.faq-list{max-width:820px}
.faq-item{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);
  margin-bottom:.6rem;overflow:hidden;transition:border-color .2s,box-shadow .2s}
.faq-item[open]{border-color:var(--c-cdd2d7);box-shadow:var(--sh-sm)}
.faq-item summary{list-style:none;cursor:pointer;display:flex;align-items:center;
  gap:.8rem;padding:1rem 1.2rem;font:700 .95rem var(--font-display);color:var(--dark)}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"+";margin-left:auto;font:700 1.1rem var(--font-display);
  color:var(--action);transition:transform .25s var(--ease)}
.faq-item[open] summary::after{transform:rotate(45deg)}
.faq-item p{padding:0 1.2rem 1.1rem;font-size:.88rem;color:var(--muted);
  line-height:1.65;margin:0}


/* reports + feedback */
.rep-note{font-size:.85rem;color:var(--muted);margin-bottom:1rem;line-height:1.6}
.rep-opt{display:block;border:1px solid var(--line);border-radius:var(--r-md);
  padding:.95rem 1.1rem;margin-bottom:.6rem;cursor:pointer;
  transition:border-color .2s,box-shadow .2s,transform .2s}
.rep-opt:hover{border-color:var(--action);box-shadow:var(--sh-sm);
  transform:translateY(-1px)}
.rep-opt b{font:700 .92rem var(--font-display);color:var(--dark);display:block}
.rep-opt span{font-size:.78rem;color:var(--muted);line-height:1.5;display:block;
  margin-top:.15rem}
.rep-hint{font-size:.78rem;color:var(--muted);border-top:1px solid var(--line);
  padding-top:.9rem;margin-top:1rem;line-height:1.6}
.fb-actions{display:flex;gap:.6rem;margin-top:1rem;flex-wrap:wrap}
.fb-review{margin-top:1.2rem;border-top:1px solid var(--line);padding-top:1rem}
.fb-review b{font:700 .88rem var(--font-display);color:var(--dark);display:block}
.fb-review span{font-size:.78rem;color:var(--muted);display:block;margin:.2rem 0 .5rem}
.fb-review a{font:700 .85rem var(--font-display);color:var(--action)}
textarea.dlg-input{resize:vertical;font-family:var(--font-body)}


.nav-plain{background:none;border:0;cursor:pointer;font:600 .9rem var(--font-display);
  color:var(--muted);padding:5px 0 6px;position:relative;white-space:nowrap}
.nav-plain::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;
  border-radius:var(--r-sm);background:var(--action);transform:scaleX(0);transform-origin:right;
  transition:transform .34s var(--ease)}
.nav-plain:hover{color:var(--dark)}
.nav-plain:hover::after{transform:scaleX(1);transform-origin:left}
.foot-plain{background:none;border:0;cursor:pointer;font:inherit;color:inherit;
  padding:.36rem 0;display:inline-block}
.foot-plain:hover{color:var(--surface)}


/* action chips: every AI answer ends in a next step, not a dead end */
.msg-chips{display:flex;flex-wrap:wrap;gap:.4rem;margin:.15rem 0 .5rem;
  padding-right:1.5rem;animation:chipIn .4s var(--ease) both}
@keyframes chipIn{from{opacity:0;transform:translateY(6px)}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.msg-chips{animation:none}}


.pl-sec{background:var(--c-f6f7f9)}
.pl-head{display:flex;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}
.pl-zone{margin-left:auto;display:flex;align-items:center;gap:.5rem;
  font:600 .82rem var(--font-display);color:var(--muted)}
.pl-zone select{font:700 .84rem var(--font-display);color:var(--dark);background:var(--surface);
  border:1.5px solid var(--c-cdd2d7);border-radius:var(--r-sm);padding:.5rem .8rem;cursor:pointer}
.pl-filters{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem}
.pl-filters button{font:700 .76rem var(--font-display);border:1.5px solid var(--line);background:var(--surface);
  color:var(--muted);border-radius:var(--r-pill);padding:.42rem .9rem;cursor:pointer;
  transition:border-color .18s,color .18s,background .18s}
.pl-filters button[aria-pressed="true"]{border-color:var(--action);color:var(--action);
  background:var(--action-tint)}
.pl-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem}
.pl-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  padding:1rem 1.1rem;display:flex;flex-direction:column;
  transition:border-color .2s,box-shadow .2s,transform .2s}
.pl-card:hover{border-color:var(--action);box-shadow:var(--sh-sm);transform:translateY(-2px)}
.pl-card b{font:700 .92rem var(--font-display);color:var(--dark)}
.pl-card span{font-size:.75rem;color:var(--muted);line-height:1.45;margin:.2rem 0 .7rem}
.pl-amt{font:800 1.22rem var(--font-display);color:var(--dark);font-variant-numeric:tabular-nums;
  margin-top:auto}
.pl-amt em{font-style:normal;font-size:var(--fs-min);font-weight:600;color:var(--muted);
  display:block;margin-top:.1rem}
.pl-amt.na{font-size:.9rem;color:var(--muted);font-weight:700}
.pl-note{font-size:.75rem;color:var(--muted);margin-top:1rem;line-height:1.6}
@media(max-width:768px){.pl-grid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.pl-grid{grid-template-columns:1fr}.pl-zone{margin-left:0;width:100%}}


body{background:var(--c-f6f7f9)}
.bp-top{position:sticky;top:0;z-index:50;background:rgb(var(--surface-rgb)/.92);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line)}
.bp-top-in{max-width:1160px;margin:0 auto;padding:.7rem 24px;
  display:flex;align-items:center;gap:1.2rem}
.bp-top-in a{font:700 .85rem var(--font-display);color:var(--muted);white-space:nowrap;
  display:inline-flex;align-items:center;min-height:34px}
@media (max-width:620px){
  .bp-top-in a:not(:first-child):not(.ph){display:none}
  .bp-top-in{gap:.6rem}
  .bp-top-in .ph{font-size:.78rem}
}
@media (max-width:400px){
  .bp-top-in a:first-child{font-size:.78rem}
}
.bp-top-in a:hover{color:var(--action)}
.bp-top-in .ph{margin-left:auto;color:var(--dark)}
.bp-wrap{max-width:1160px;margin:0 auto;padding:2rem 24px 3rem}
.bp-crumb{font-size:.78rem;color:var(--muted);margin-bottom:1.2rem}
.bp-crumb a{color:var(--action);font-weight:600;display:inline-flex;
  align-items:center;min-height:44px}
.bp-head{display:grid;grid-template-columns:1.15fr 1fr;gap:1rem;margin-bottom:1rem}
.bp-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:2rem 2.2rem;box-shadow:var(--sh-sm)}
.bp-eyebrow{font-family:var(--font-display);
  color:var(--action);display:block;margin-bottom:.6rem}
.bp-h1{font-weight:800;line-height:1.12;font-family:var(--font-display);letter-spacing:-.03em;
  color:var(--dark);margin-bottom:.75rem}
.bp-h1 em{font-style:normal;color:var(--action)}
.bp-addr{font-size:.92rem;color:var(--muted);line-height:1.65;max-width:46ch}
.bp-meta{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.1rem}
.bp-rating{margin:.5rem 0 0;font:600 14px var(--font-body);color:var(--ink)}
.bp-rating a{display:inline-flex;align-items:center;min-height:44px;color:var(--action)}
.bp-pill{display:inline-flex;align-items:center;gap:.4rem;
  font:700 var(--fs-min) var(--font-display);color:var(--ink);background:var(--ai-tint);
  border-radius:var(--r-pill);padding:.35rem .8rem}
/* --ink, matching .bp-pill above. --red on --red-soft measured 4.59: it
   passes axe, whose floor is 4.50, so it would never have appeared in an
   audit report. It carried the NABL accreditation number. Decided
   here because refusing 4.56 and 4.65 elsewhere and then keeping 4.59 would
   be the same judgement reached two different ways. The pill keeps its red
   ground, so it still reads as the red one. */
.bp-pill.red{color:var(--ink);background:var(--action-tint)}
.bp-accr{margin:0 0 1rem}.bp-accr a{text-decoration:none;min-height:32px;line-height:1.3}
.bp-accr a:hover{text-decoration:underline;text-underline-offset:3px}
.bp-ctas{display:flex;gap:.6rem;margin-top:1.5rem;flex-wrap:wrap}
/* ONE LINE OR ONE STACK (Phase 4e): under 600px the three buttons stack at
   full width together instead of wrapping 2 + 1 at uneven widths */
.bp-ctas>*{flex:1 1 calc((600px - 100%) * 999)}
/* A HERO CARD'S ACTIONS TAKE THE RIGHT-HAND COLUMN from 1025 (Phase 4e):
   copy and buttons both sat left, and 45-56% of a 1112px card was empty. */
@media(min-width:1025px){
  .bp-wrap>.bp-card{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:48px}
  .bp-wrap>.bp-card>*{grid-column:1}
  .bp-wrap>.bp-card>.bp-ctas{grid-column:2;grid-row:1/span 9;align-self:center;
    flex-direction:column;margin-top:0}
  .bp-wrap>.bp-card>.bp-ctas>*{flex:none}
}
.bp-btn{display:inline-block}
.bp-map{border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);
  min-height:320px;background:var(--c-eff1f4)}
.bp-map iframe{width:100%;height:100%;border:0;min-height:320px}
.bp-sec{margin-top:1.2rem}
.bp-sec-title{line-height:var(--lh-heading);font-family:var(--font-display);
  color:var(--muted);display:flex;align-items:center;gap:.7rem;margin-bottom:.9rem}
.bp-sec-title::after{content:"";flex:1;height:1px;background:var(--line)}
.bp-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:.7rem}
.bp-mod{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  padding:.9rem 1rem}
.bp-mod b{font:700 .88rem var(--font-display);display:block;color:var(--dark)}
.bp-mod span{font-size:var(--fs-min);color:var(--muted);line-height:1.4}
.bp-note{font-size:.75rem;color:var(--muted);margin-top:1.2rem;line-height:1.6}
.bp-inline{color:var(--action);font-weight:600;display:inline-flex;align-items:center;
  min-height:34px}
.bp-foot{border-top:1px solid var(--line);background:var(--surface);margin-top:2.5rem}
.bp-foot-in{max-width:1160px;margin:0 auto;padding:1.4rem 24px;
  display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;align-items:center;
  font-size:.78rem;color:var(--muted)}
.bp-foot-in a{color:var(--action);font-weight:600;display:inline-flex;
  align-items:center;min-height:34px}
.bp-specs{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem}
.bp-spec{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  padding:.9rem 1rem}
.bp-spec b{font:700 .88rem var(--font-display);color:var(--dark);display:block}
.bp-spec span{font-size:.78rem;color:var(--muted);display:block;margin-top:.1rem}
/* .70, not .62. At .62 the composited text of a card that says a service
   is NOT AVAILABLE AT THIS CENTRE measured 4.45 - the fade was making the
   sentence that prevents a wasted journey the hardest one to read. The off
   signal does not live only in the opacity: the card says so in words, and
   the fade reinforces that rather than carrying it. .70 still reads as
   dimmed beside its bright siblings and takes the words to 5.55. */
.bp-spec.off{opacity:.70}
/* --ink-deep, matching .bp-spec b above. This said var(--steel) to mute the
   text of a card that is already faded to .70 - muting twice - and the
   composite measured 3.08, the worst reading on the site. It had also just
   become a no-op: --steel now holds --slate's value, which is exactly what
   .bp-spec span already sets, so the rule was overriding a colour with
   itself. The fade carries the off state; the colour does not need to help.
   5.58 composited. */
.bp-spec.off span{color:var(--dark)}
.bp-spec i{font-style:normal;font-size:var(--fs-min);color:var(--ink);
  background:var(--ai-tint);border-radius:var(--r-pill);padding:.12rem .5rem;
  display:inline-block;margin-top:.35rem}
.mri-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.8rem}
/* THE PRICE SITS BESIDE THE TITLE (Phase 4e): a short description left
   the card 44% empty at the right. It wraps under the title, still at the
   right, when the two do not fit on one line. */
.mri-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  padding:1.1rem 1.15rem;transition:border-color .2s,box-shadow .2s,transform .2s;
  display:flex;flex-wrap:wrap;align-items:baseline;align-content:flex-start;column-gap:10px}
.mri-card:hover{border-color:var(--action);box-shadow:var(--sh-sm);
  transform:translateY(-2px)}
.mri-card b{font:700 .95rem/var(--lh-heading) var(--font-display);color:var(--dark);flex:1 1 auto}
.mri-card span{font-size:.78rem;color:var(--muted);line-height:1.5;flex:1 1 100%;order:2;
  margin-top:.25rem}
.mri-card em{font-style:normal;font-size:var(--fs-min);color:var(--action);font-weight:700;
  margin-left:auto;order:1;white-space:nowrap}
.doc-list{display:grid;grid-template-columns:repeat(2,1fr);gap:.8rem}
.doc-item{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  padding:1.15rem 1.25rem}
.doc-item b{font:700 .95rem/var(--lh-heading) var(--font-display);color:var(--dark);display:block;
  margin-bottom:.3rem}
.doc-item span{font-size:.84rem;color:var(--muted);line-height:1.6}
@media (max-width:768px){.mri-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:768px){
  .bp-specs{grid-template-columns:1fr}
  .doc-list{grid-template-columns:1fr}
  .bp-head{grid-template-columns:1fr}
  .bp-grid{grid-template-columns:repeat(2,1fr)}
  .bp-top-in{gap:.8rem;overflow-x:auto}
}
@media (max-width:620px){.bp-grid{grid-template-columns:1fr}}
/* 44px TARGETS (Phase 4d) */
.bp-crumb a{min-width:44px;justify-content:center}
.bp-inline{min-height:44px}
/* 1b9dbf3's outlined legacy button, restored 2026-11-02 */
.btn.bp-btn.btn-primary,.btn.bp-btn.btn-primary:hover{box-shadow:var(--sh-1b4c4b)}
.bp-btn.btn-secondary{background:var(--surface);border-color:var(--c-cdd2d7);color:var(--c-23272b)}
.bp-btn.btn-secondary:hover{background:var(--surface);border-color:var(--c-23272b);color:var(--c-23272b)}
