/* =========================================================================
   Medi Clinic — landing pages
   Brand: purple #6F53A6, gold #C7A455, FiraGO (medi.ge primary typeface).
   ========================================================================= */

/* The typeface, the brand tokens and the reset live in base.css, which every
   template links alongside this file. Not @import-ed from here: an @import
   cannot start downloading until this file has arrived, which would put the
   font two round trips behind the text it is meant to render. Two <link>s
   fetch both at once. */

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 20px}

/* ---- medically reviewed by ----
   A YMYL page has to say who stands behind it. Sits just under the H1 area of
   the FAQ, where a reader looking for authority actually looks. */
.reviewed{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 22px;
  font-size:13.5px;color:var(--muted)}
.reviewed b{color:var(--ink);font-weight:600}
.reviewed .reviewed-ic{width:22px;height:22px;flex:0 0 22px;border-radius:50%;background:var(--purple);
  color:#fff;display:grid;place-items:center;font-size:12px}
.wrap-narrow{max-width:980px}
.section{padding:76px 0}
.section-soft{background:var(--purple-soft)}
.section-title{font-size:clamp(24px,3.4vw,36px);line-height:1.2;letter-spacing:-.01em;margin:8px 0 12px}
.eyebrow{color:var(--purple);font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:12px}
.eyebrow-gold{color:var(--gold)}
/* Wide enough that a two-line heading does not sit beside a block of empty
   page. Narrow measures read better, but not at the cost of a hole in the
   layout. */
.lead{color:var(--muted);max-width:940px;font-size:16px}
.section-title{max-width:940px}
.lead-light{color:#C9BFD8}
.grid{display:grid;gap:20px;margin-top:32px}
.cards-4{grid-template-columns:repeat(4,1fr)}
.cards-3{grid-template-columns:repeat(3,1fr)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;
  font-weight:600;border-radius:999px;padding:13px 24px;font-size:15px;line-height:1.2;
  transition:background .18s,transform .18s,filter .18s;text-align:center}
.btn-sm{padding:9px 16px;font-size:13.5px}
.btn-block{width:100%;padding:15px}
.btn-primary{background:var(--purple);color:#fff}
.btn-primary:hover{background:var(--purple-dark);transform:translateY(-1px)}
.btn-gold{background:var(--gold);color:#231a05}
.btn-gold:hover{filter:brightness(1.06);transform:translateY(-1px)}
.btn-ghost{background:transparent;color:var(--purple);border:1.5px solid var(--purple)}
.btn-ghost:hover{background:var(--purple-soft)}
.btn-ghost-light{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.6)}
.btn-ghost-light:hover{background:rgba(255,255,255,.14)}

/* ---------- header ----------
   Two rows: a thin utility bar (phone, hours, language) and the main bar
   (logo, six links, one CTA). Cramming all of that into a single row was what
   made the old header hard to scan. */
.site-head{position:sticky;top:0;z-index:60;transition:transform .28s ease}
/* Scrolling down slides the whole header away to give the content the screen;
   scrolling up — or moving the pointer to the top edge — brings it back. */
.site-head.head-hidden{transform:translateY(-100%)}
.topbar{background:var(--dark);color:#C9BFD8;font-size:12.5px}
.topbar-in{display:flex;align-items:center;gap:22px;height:38px}
.topbar-phone{display:inline-flex;align-items:center;gap:7px;font-weight:600;color:#fff}
.topbar-phone:hover{color:var(--gold)}
.topbar-hours{color:#9C8FB3}
.topbar-lang{margin-left:auto;font-weight:600;color:#fff;border-bottom:1px dotted rgba(255,255,255,.45);padding-bottom:1px}
.topbar-lang:hover{color:var(--gold);border-color:var(--gold)}

.ic-phone,.ic-pin{width:14px;height:14px;flex:none;background:currentColor;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}
.ic-phone{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.2.4 2.4.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1A17 17 0 0 1 3 4c0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.3.2 2.5.6 3.6.1.4 0 .8-.2 1l-2.3 2.2z'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.2.4 2.4.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1A17 17 0 0 1 3 4c0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.3.2 2.5.6 3.6.1.4 0 .8-.2 1l-2.3 2.2z'/%3E%3C/svg%3E")}
.ic-pin{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.25 7 13 7 13s7-7.75 7-13a7 7 0 0 0-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.25 7 13 7 13s7-7.75 7-13a7 7 0 0 0-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E")}

.mainbar{background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.mainbar-in{display:flex;align-items:center;gap:28px;height:68px}
.logo img{height:40px;width:auto}
.nav-links{display:flex;gap:26px;margin-left:auto;font-size:14.5px;font-weight:500}
.nav-links a{position:relative;padding:6px 0;white-space:nowrap;color:var(--ink)}
.nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--gold);
  transform:scaleX(0);transform-origin:left;transition:transform .2s}
.nav-links a:hover{color:var(--purple)}
.nav-links a:hover::after{transform:scaleX(1)}
.nav-cta{flex:none}
.burger{display:none;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer;padding:8px;margin-left:auto}
.burger span{width:24px;height:2px;background:var(--purple);border-radius:2px}

/* mobile drawer */
.drawer{position:fixed;inset:0;z-index:120;background:#fff;display:flex;flex-direction:column;
  animation:drawerIn .2s ease-out}
@keyframes drawerIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--line)}
.drawer-title{font-weight:700;font-size:16px}
.drawer-close{background:none;border:0;font-size:22px;cursor:pointer;color:var(--muted);padding:6px 10px;line-height:1}
.drawer-nav{display:flex;flex-direction:column;overflow-y:auto;flex:1}
.drawer-nav a{padding:17px 20px;border-bottom:1px solid var(--line);font-size:16.5px;font-weight:500}
.drawer-nav a:active{background:var(--purple-soft)}
.drawer-foot{padding:20px;border-top:1px solid var(--line);display:grid;gap:14px;justify-items:center}
.drawer-foot .btn{width:100%}
.drawer-phone{font-weight:700;color:var(--purple);font-size:17px}
.drawer-lang{font-size:14px;color:var(--muted);text-decoration:underline}

/* ---------- hero ---------- */
.hero{position:relative;color:#fff;overflow:hidden;
  background:radial-gradient(120% 120% at 80% 10%,rgba(199,164,85,.30),transparent 45%),
             linear-gradient(135deg,var(--purple),var(--purple-dark))}
.hero-bg{position:absolute;inset:0;z-index:0}
.hero-img{width:100%;height:100%;object-fit:cover;opacity:.28}
.hero-inner{position:relative;z-index:1;padding:96px 20px 76px}
.hero h1{font-size:clamp(28px,5vw,48px);line-height:1.14;max-width:860px;letter-spacing:-.015em}
.hero-sub{margin:18px 0 30px;font-size:17px;color:#EADFF6;max-width:660px}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap}
.hero-price{margin:-12px 0 26px;font-size:17px;color:#EADFF6}
.hero-price b{color:var(--gold);font-size:24px;font-weight:800}
.hero-price-note{display:block;margin-top:4px;font-size:14px;color:#fff;opacity:.85}
.promises{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:52px}
.promise{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.17);border-radius:14px;
  padding:18px;font-size:13.5px;line-height:1.5;color:#EFE7FA}
.promise b{display:block;color:#fff;font-size:14.5px;margin-bottom:6px}

/* ---------- cards ---------- */
.card,.zone,.why-card,.quote{background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column}
.card-media img{width:100%;height:170px;object-fit:cover}
.card-body,.zone-body{padding:20px;display:flex;flex-direction:column;gap:9px;flex:1}
.card h3,.zone h3{font-size:17px;line-height:1.35}
.card p{font-size:14px;color:var(--muted);flex:1}
.link{color:var(--purple);font-weight:700;font-size:13.5px}
.link:hover{text-decoration:underline}

/* ---------- zones (tabs) ----------
   One group at a time with a single call to action. Without JavaScript every
   panel stays visible, which reads as a plain list rather than a broken page. */
.zones{margin-top:32px}
.ztabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}
.ztab{border:1.5px solid var(--line);background:#fff;color:var(--muted);padding:11px 20px;border-radius:999px;
  font-size:14px;font-weight:600;cursor:pointer;transition:.15s;font-family:inherit}
.ztab:hover{border-color:var(--purple);color:var(--purple)}
.ztab.active{background:var(--purple);color:#fff;border-color:var(--purple)}
.zpanel{display:grid;grid-template-columns:minmax(0,340px) 1fr;gap:30px;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);margin-bottom:14px}
.zpanel-media img{width:100%;height:100%;min-height:230px;object-fit:cover}
.zpanel-body{padding:26px 28px 26px 0;display:flex;flex-direction:column;gap:16px}
.zpanel-title{font-size:20px}
/* align-items keeps each chip the height of its own text: as a stretched flex
   child the pills grew to the full row height and rendered as circles. */
.zchips{display:flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;gap:9px;flex:1}
.zchips li{background:var(--purple-soft);color:var(--purple-dark);font-size:14px;font-weight:500;
  padding:9px 18px;border-radius:999px;line-height:1.35}
.zpanel-cta{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}

/* ---------- why Medi ----------
   The icons were emoji, which every platform draws at a different size and
   weight — six of them in a row read as six unrelated marks. They are inline
   SVG on a shared grid now, in a consistent badge. */
.why-card{padding:26px;gap:10px;box-shadow:none;background:#fff;border-color:var(--line)}
.why-ic{width:46px;height:46px;border-radius:13px;background:var(--purple-soft);color:var(--purple);
  display:flex;align-items:center;justify-content:center;flex:none;margin-bottom:4px}
.why-ic svg{width:23px;height:23px}
.why-card h3{font-size:16.5px;line-height:1.35}
.why-card p{font-size:14px;color:var(--muted)}

/* ---------- doctors ---------- */
.doc-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}
.doc-filter{margin-top:26px}
.doc-empty{margin-top:24px;color:var(--muted);font-size:14.5px}
.doc-arrows{display:flex;gap:8px;flex:none}
.darrow{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--purple);background:#fff;
  color:var(--purple);font-size:22px;cursor:pointer;transition:.15s;line-height:1;font-family:inherit}
.darrow:hover{background:var(--purple);color:#fff}
.darrow[disabled]{opacity:.35;cursor:default}
.darrow[disabled]:hover{background:#fff;color:var(--purple)}
/* The snap is switched on after load (see site.js), not declared here: a snap
   container that already exists at the first layout makes Chrome settle the
   largest contentful paint before it has recorded a candidate, and the page
   then reports no LCP at all. scroll-padding matches the inline padding so the
   first card's snap position is offset 0 and nothing moves when it engages. */
.doc-rail{display:flex;gap:20px;overflow-x:auto;scroll-behavior:smooth;scroll-padding-inline:4px;
  padding:32px 4px 16px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.doc-rail.is-snap{scroll-snap-type:x mandatory}
.doc-rail.is-snap .dcard{scroll-snap-align:start}
.dcard{flex:0 0 300px;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column}
.dphoto{height:330px;background:var(--purple-soft);overflow:hidden}
.dphoto img{width:100%;height:100%;object-fit:cover;object-position:top center}
.dbody{padding:18px 20px 20px;display:flex;flex-direction:column;gap:7px;flex:1}
.dbody h3{font-size:18px}
.dspec{color:var(--purple);font-weight:700;font-size:13.5px}
.dexp{color:var(--muted);font-size:12.5px}
.dabout{font-size:13.5px;border-left:3px solid var(--gold);padding-left:12px;font-style:italic;color:var(--ink)}
.dclinic{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--muted);margin-top:2px}
.dcta{display:flex;align-items:center;gap:14px;margin-top:auto;padding-top:12px;flex-wrap:wrap}

/* ---------- clinics + map ---------- */
.chips-light .chip{border-color:var(--line);background:#fff;color:var(--muted)}
.chips-light .chip:hover{border-color:var(--purple);color:var(--purple)}
.chips-light .chip.active{background:var(--purple);color:#fff;border-color:var(--purple)}
.city-filter{margin-top:26px}
.clinics-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:26px;margin-top:24px;align-items:start}
.clinic-map{height:520px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);
  background:var(--purple-soft);position:sticky;top:130px}
.map-fallback{padding:24px;font-size:14px;color:var(--muted)}
.clinic-list{max-height:520px;overflow-y:auto;display:grid;gap:10px;padding-right:6px;
  scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.clinic{display:flex;align-items:center;justify-content:space-between;gap:16px;background:#fff;
  border:1px solid var(--line);border-radius:12px;padding:15px 17px;transition:.15s;scroll-margin-top:8px}
.clinic:hover{border-color:var(--purple)}
.clinic.on{border-color:var(--purple);box-shadow:0 0 0 3px rgba(111,83,166,.14)}
.clinic-main{border-left:4px solid var(--gold)}
.clinic h3{font-size:15.5px;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.clinic-badge{background:var(--gold);color:#231a05;font-size:10px;font-weight:800;letter-spacing:.05em;
  text-transform:uppercase;padding:3px 9px;border-radius:999px}
.clinic-addr{font-size:13.5px;color:var(--muted);margin-top:3px}
.clinic-phone{font-size:13px;color:var(--purple);font-weight:600}
.clinic .btn{flex:none}

/* map pin — the clinic mark rather than Leaflet's default blue teardrop */
.medi-pin{background:none;border:0}
.medi-pin svg{display:block;filter:drop-shadow(0 3px 5px rgba(0,0,0,.35))}
.leaflet-popup-content-wrapper{border-radius:12px}
.leaflet-popup-content{margin:14px 16px;font-family:inherit;font-size:13.5px;line-height:1.5}
.leaflet-popup-content b{display:block;font-size:14.5px;margin-bottom:3px;color:var(--ink)}
.leaflet-popup-content span{color:var(--muted)}
.leaflet-popup-content a{display:inline-block;margin-top:9px;color:var(--purple);font-weight:700;text-decoration:underline}
.leaflet-container{font-family:inherit}

/* ---------- privacy dialog ---------- */
/* A closed <dialog> is hidden by a user-agent `display:none` that any author
   `display` beats — so declaring display:flex unconditionally left the policy
   sitting in the page flow under the footer. Only style the open state. */
.policy{display:none}
/* margin:auto is how the browser centres a modal dialog inside its inset:0 box.
   The `*{margin:0}` reset at the top of this file wipes that out, so it has to
   be put back explicitly or the dialog pins itself to the top-left corner. */
.policy[open]{border:0;border-radius:16px;padding:0;margin:auto;width:min(560px,92vw);max-height:78vh;
  box-shadow:0 24px 60px rgba(0,0,0,.32);display:flex;flex-direction:column;overflow:hidden;color:var(--ink)}
.policy::backdrop{background:rgba(36,28,46,.6);backdrop-filter:blur(2px)}
.policy-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;
  padding:18px 20px 14px;border-bottom:1px solid var(--line);flex:none}
.policy-head h2{font-size:17px;line-height:1.3}
.policy-close{background:var(--purple-soft);border:0;width:32px;height:32px;border-radius:50%;
  cursor:pointer;font-size:16px;color:var(--purple);flex:none;line-height:1;transition:.15s}
.policy-close:hover{background:var(--purple);color:#fff}
.policy-body{overflow-y:auto;padding:18px 20px;flex:1;overscroll-behavior:contain}
.policy-body .doc-updated{margin-top:0;font-size:12.5px}
.policy-body .doc-intro{margin-top:14px;font-size:14px;padding-bottom:4px}
.policy-body .doc-block{margin-top:18px}
.policy-body .doc-block h3{font-size:14.5px;margin-bottom:6px}
.policy-body .doc-block p{color:var(--muted);font-size:13.5px}
.policy-body .checks{margin-top:10px;gap:8px}
.policy-body .checks li{font-size:13px;color:var(--muted);padding-left:24px}
.policy-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  padding:13px 20px;border-top:1px solid var(--line);background:#FCFBFE;flex:none}
.policy-foot .link{font-size:12.5px}

/* ---------- privacy / document page ---------- */
.doc h1{font-size:clamp(26px,4vw,36px);line-height:1.2}
.doc-updated{color:var(--muted);font-size:13.5px;margin-top:8px}
.doc-intro{margin-top:20px;font-size:16px;color:var(--ink);padding-bottom:8px;border-bottom:1px solid var(--line)}
.doc-block{margin-top:32px}
.doc-block h2{font-size:19px;margin-bottom:10px}
.doc-block p{color:var(--muted);font-size:15px}
.doc-block .checks{margin-top:14px}
.doc-block .checks li{font-size:14.5px;color:var(--muted)}
.doc-back{margin-top:44px}
/* Privacy page header: the other languages and the way back, on the right. */
.doc-tools{margin-left:auto;display:flex;align-items:center;gap:14px}
.doc-lang{font-size:13px;font-weight:600;color:var(--muted);letter-spacing:.02em}
.doc-lang:hover{color:var(--purple)}
@media(max-width:640px){.doc-back-top{display:none}}

/* ---------- steps ---------- */
.steps{margin-top:34px;display:grid;gap:14px}
.step{display:flex;gap:18px;align-items:flex-start;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:20px 22px}
.step-n{flex:none;width:38px;height:38px;border-radius:50%;background:var(--purple);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px}
.step h3{font-size:16.5px;margin-bottom:4px}
.step p{font-size:14px;color:var(--muted)}

/* ---------- technology ---------- */
.tech{background:var(--dark);color:#fff;padding:76px 0}
.tech .section-title{color:#fff}
/* stretch, not start: the image column was shorter than the list beside it and
   left a block of empty dark space under it. */
.tech-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:36px;align-items:stretch;margin-top:36px}
.tech-media{border-radius:var(--radius);overflow:hidden;background:rgba(255,255,255,.05);
  border:1px solid rgba(255,255,255,.12);min-height:240px}
.tech-media img{width:100%;height:100%;min-height:240px;object-fit:cover}
.tech-items{display:grid;gap:16px}
.tech-item{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:18px 20px}
.tech-item h3{font-size:15.5px;margin-bottom:5px}
.tech-item p{font-size:13.5px;color:#B9ADC9}
.tech-note{margin:28px 0 22px;padding:16px 20px;border-left:3px solid var(--gold);
  background:rgba(199,164,85,.08);font-size:14px;color:#E0D6EE;border-radius:0 12px 12px 0}

/* ---------- results ---------- */
.case{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.case-single{background:var(--purple-soft)}
.case-single img{width:100%;aspect-ratio:1;object-fit:cover}

/* before / after wipe --------------------------------------------------
   The "after" photo sits on top of the "before" one and is clipped at the
   handle; a transparent range input over the whole area drives both. Using a
   real input rather than pointer maths means touch and the arrow keys work
   without any extra code. */
.ba-media{position:relative;aspect-ratio:1;overflow:hidden;background:var(--purple-soft);
  user-select:none;-webkit-user-select:none;touch-action:pan-y}
.ba-layer{position:absolute;inset:0}
.ba-layer img{width:100%;height:100%;object-fit:cover;pointer-events:none}
.ba-after{clip-path:inset(0 0 0 var(--ba-pos,50%))}
.ba-tag{position:absolute;top:12px;left:12px;z-index:3;background:rgba(30,15,40,.72);color:#fff;
  font-size:10.5px;font-weight:800;letter-spacing:.05em;padding:5px 11px;border-radius:999px;
  backdrop-filter:blur(3px);pointer-events:none}
.ba-tag-gold{background:var(--gold);color:#231a05;left:auto;right:12px}
.ba-handle{position:absolute;top:0;bottom:0;left:var(--ba-pos,50%);width:3px;background:var(--gold);
  transform:translateX(-50%);z-index:4;pointer-events:none;box-shadow:0 0 0 1px rgba(0,0,0,.15)}
.ba-handle::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:38px;height:38px;border-radius:50%;background:var(--gold);
  box-shadow:0 3px 10px rgba(0,0,0,.3);
  -webkit-mask-image:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23231a05' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6 4 12l5 6M15 6l5 6-5 6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:center;background-size:20px}
.ba-range{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;
  cursor:ew-resize;z-index:5;-webkit-appearance:none;appearance:none;background:transparent;
  touch-action:pan-y}
.ba-range::-webkit-slider-thumb{-webkit-appearance:none;width:46px;height:100%;cursor:ew-resize}
.ba-range::-moz-range-thumb{width:46px;height:100%;border:0;background:transparent;cursor:ew-resize}
.ba-range:focus-visible{opacity:1;outline:3px solid var(--gold);outline-offset:-3px}
.ba-hint{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);z-index:3;
  background:rgba(30,15,40,.7);color:#fff;font-size:11px;font-weight:600;padding:5px 12px;
  border-radius:999px;pointer-events:none;transition:opacity .25s;backdrop-filter:blur(3px)}
.case-body{padding:16px 18px}
.case-meta{font-size:13.5px;color:var(--muted)}
.case-meta b{color:var(--ink)}
.case-note{margin-top:6px;font-size:12px;color:var(--muted);font-style:italic}
.disclaimer{margin-top:26px;margin-bottom:28px;font-size:13px;color:var(--muted);max-width:940px}

/* ---------- prep / aftercare ---------- */
/* subgrid keeps the eyebrow, heading, image and list of both columns on the
   same rows; without it a two-line heading pushed that column's image down. */
.care-grid{display:grid;grid-template-columns:1fr 1fr;gap:44px;grid-template-rows:auto auto auto auto}
.care-col{display:grid;grid-row:span 4;grid-template-rows:subgrid;gap:0;align-content:start}
@supports not (grid-template-rows:subgrid){
  .care-col{display:block}
  .care-title{min-height:2.4em}
}
.care-title{font-size:clamp(20px,2.6vw,26px);align-self:start}
.care-media{border-radius:14px;overflow:hidden;margin:8px 0 18px}
.care-media img{width:100%;height:180px;object-fit:cover}
.checks{display:grid;gap:11px;margin-top:16px}
.checks li{position:relative;padding-left:30px;font-size:14.5px;color:var(--ink)}
.checks li::before{content:"✓";position:absolute;left:0;top:0;color:var(--gold);font-weight:800}
.checks-light li{color:#EFE7FA;font-size:14.5px}

/* ---------- prices ---------- */
.pricing{background:var(--dark);color:#fff;padding:76px 0}
.pricing .section-title{color:#fff}
.price-filters{margin:30px 0 6px;display:flex;flex-wrap:wrap;align-items:center;gap:14px 40px}
.price-filter{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.price-filter-end{margin-left:auto}
.clinic-label{font-size:13.5px;color:#B9ADC9}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1.5px solid rgba(255,255,255,.22);background:rgba(255,255,255,.05);color:#D9CFE6;
  padding:8px 16px;border-radius:999px;font-size:13px;font-weight:600;cursor:pointer;transition:.15s}
.chip:hover{border-color:var(--gold);color:#fff}
.chip.active{background:var(--gold);color:#231a05;border-color:var(--gold)}

/* Forty procedures in one column was a wall of text, so each body area is a
   collapsible panel. */
.price-group{margin-top:14px;border:1px solid rgba(255,255,255,.12);border-radius:14px;
  background:rgba(255,255,255,.03);overflow:hidden}
.price-group-title{display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none;
  padding:17px 20px;font-size:15px;color:var(--gold);text-transform:uppercase;
  letter-spacing:.06em;font-weight:700;transition:background .15s}
.price-group-title::-webkit-details-marker{display:none}
.price-group-title:hover{background:rgba(255,255,255,.05)}
.price-group-title::after{content:"";width:9px;height:9px;margin-left:auto;flex:none;
  border-right:2px solid currentColor;border-bottom:2px solid currentColor;
  transform:rotate(45deg) translate(-2px,-2px);transition:transform .2s}
.price-group[open] .price-group-title::after{transform:rotate(-135deg) translate(-2px,-2px)}
.price-count{background:rgba(255,255,255,.1);color:#D9CFE6;font-size:11.5px;font-weight:700;
  padding:3px 10px;border-radius:999px;letter-spacing:0}
.price-list{display:grid;padding:0 20px 6px}
.price-row{display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;gap:14px;
  padding:15px 2px;border-bottom:1px solid rgba(255,255,255,.09)}
.price-row:last-child{border-bottom:0}
.price-name{font-size:15px;font-weight:500;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.price-sex{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  padding:3px 9px;border-radius:999px;white-space:nowrap}
.price-sex-f{background:rgba(199,164,85,.18);color:var(--gold)}
.price-sex-m{background:rgba(255,255,255,.12);color:#C9BFD8}
.price-dots{border-bottom:1px dotted rgba(255,255,255,.22);transform:translateY(-4px)}
.price-value{font-size:15px;font-weight:700;color:var(--gold);white-space:nowrap}
.price-note{margin:30px 0 24px;font-size:13.5px;color:#B9ADC9;max-width:760px}

/* ---------- reviews ---------- */
.quote{padding:0}
.quote .stars{padding:20px 20px 0;color:var(--gold);font-size:15px;letter-spacing:2px;line-height:1}
.quote blockquote{padding:12px 20px 8px;font-size:14.5px;font-style:italic;border-left:4px solid var(--gold);margin:12px 0 0}
.quote figcaption{padding:8px 24px 20px;font-size:13px;color:var(--muted)}
.quote figcaption b{color:var(--purple)}
.quote figcaption a{color:var(--purple);text-decoration:underline;margin-left:8px}
.quote figcaption a.review-source{color:var(--muted);text-decoration:none}
.quote figcaption a.review-source::before{content:"";display:inline-block;width:6px;height:6px;margin-right:5px;border-radius:50%;background:var(--gold);vertical-align:middle}

/* ---------- FAQ ---------- */
.faq details{background:#fff;border:1px solid var(--line);border-radius:12px;padding:0 20px;margin-bottom:10px}
.faq summary{cursor:pointer;padding:17px 0;font-weight:600;list-style:none;display:flex;
  justify-content:space-between;align-items:center;gap:14px;font-size:15.5px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--gold);font-size:24px;font-weight:700;line-height:1;flex:none}
.faq details[open] summary::after{content:"–"}
.faq .faq-a{padding:0 0 18px;color:var(--muted);font-size:14.5px}

/* ---------- booking ---------- */
.final{background:linear-gradient(135deg,var(--purple-dark),var(--purple));color:#fff;padding:76px 0}
.final-grid{display:grid;grid-template-columns:1fr 440px;gap:44px;align-items:start}
.final h2{font-size:clamp(24px,3.6vw,36px);line-height:1.2;margin:8px 0 12px}
.final-copy>p{color:#E7DAF7;max-width:460px}

.msg-block{margin-top:34px;padding-top:28px;border-top:1px solid rgba(255,255,255,.2)}
.msg-title{font-weight:700;font-size:16px}
.msg-sub{font-size:13px;color:#D9CBEE;margin-top:4px}
.msg-buttons{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.msg{display:inline-flex;align-items:center;gap:9px;padding:11px 18px;border-radius:999px;
  font-weight:600;font-size:14px;color:#fff;transition:transform .15s,filter .15s}
.msg:hover{transform:translateY(-1px);filter:brightness(1.08)}
.msg-ic{width:18px;height:18px;flex:none;background:currentColor;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}
.msg-whatsapp{background:#25D366;color:#0b3d1e}
.msg-whatsapp .msg-ic{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17.47 14.38c-.3-.15-1.75-.86-2.02-.96-.27-.1-.47-.15-.67.15-.2.3-.77.96-.94 1.16-.17.2-.35.22-.64.08-.3-.15-1.25-.46-2.38-1.47-.88-.78-1.47-1.75-1.64-2.05-.17-.3-.02-.46.13-.6.13-.14.3-.35.45-.52.15-.17.2-.3.3-.5.1-.2.05-.37-.02-.52-.08-.15-.67-1.6-.92-2.2-.24-.58-.49-.5-.67-.5h-.57c-.2 0-.52.07-.79.37s-1.04 1.01-1.04 2.47 1.06 2.86 1.21 3.06c.15.2 2.1 3.2 5.08 4.49.71.3 1.26.49 1.7.63.71.23 1.36.2 1.87.12.57-.08 1.75-.71 2-1.4.25-.69.25-1.28.17-1.4-.07-.13-.27-.2-.57-.35z'/%3E%3Cpath d='M12.04 2C6.58 2 2.13 6.45 2.13 11.91c0 1.75.46 3.45 1.32 4.95L2 22l5.25-1.38a9.86 9.86 0 0 0 4.79 1.22h.01c5.46 0 9.91-4.45 9.91-9.91C21.96 6.45 17.5 2 12.04 2zm0 18.15h-.01c-1.48 0-2.93-.4-4.2-1.15l-.3-.18-3.12.82.83-3.04-.2-.31a8.2 8.2 0 0 1-1.26-4.38c0-4.54 3.7-8.23 8.25-8.23 2.2 0 4.27.86 5.83 2.41a8.19 8.19 0 0 1 2.41 5.83c0 4.54-3.7 8.23-8.24 8.23z'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17.47 14.38c-.3-.15-1.75-.86-2.02-.96-.27-.1-.47-.15-.67.15-.2.3-.77.96-.94 1.16-.17.2-.35.22-.64.08-.3-.15-1.25-.46-2.38-1.47-.88-.78-1.47-1.75-1.64-2.05-.17-.3-.02-.46.13-.6.13-.14.3-.35.45-.52.15-.17.2-.3.3-.5.1-.2.05-.37-.02-.52-.08-.15-.67-1.6-.92-2.2-.24-.58-.49-.5-.67-.5h-.57c-.2 0-.52.07-.79.37s-1.04 1.01-1.04 2.47 1.06 2.86 1.21 3.06c.15.2 2.1 3.2 5.08 4.49.71.3 1.26.49 1.7.63.71.23 1.36.2 1.87.12.57-.08 1.75-.71 2-1.4.25-.69.25-1.28.17-1.4-.07-.13-.27-.2-.57-.35z'/%3E%3Cpath d='M12.04 2C6.58 2 2.13 6.45 2.13 11.91c0 1.75.46 3.45 1.32 4.95L2 22l5.25-1.38a9.86 9.86 0 0 0 4.79 1.22h.01c5.46 0 9.91-4.45 9.91-9.91C21.96 6.45 17.5 2 12.04 2zm0 18.15h-.01c-1.48 0-2.93-.4-4.2-1.15l-.3-.18-3.12.82.83-3.04-.2-.31a8.2 8.2 0 0 1-1.26-4.38c0-4.54 3.7-8.23 8.25-8.23 2.2 0 4.27.86 5.83 2.41a8.19 8.19 0 0 1 2.41 5.83c0 4.54-3.7 8.23-8.24 8.23z'/%3E%3C/svg%3E")}
.msg-telegram{background:#29A9EB;color:#04283d}
.msg-telegram .msg-ic{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M21.94 4.3 18.9 19.1c-.23 1.02-.84 1.27-1.7.79l-4.7-3.46-2.27 2.18c-.25.25-.46.46-.94.46l.34-4.78 8.7-7.86c.38-.34-.08-.53-.59-.19L6.98 13.02l-4.63-1.45c-1.01-.31-1.03-1 .21-1.48l18.1-6.98c.84-.31 1.57.19 1.28 1.19z'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M21.94 4.3 18.9 19.1c-.23 1.02-.84 1.27-1.7.79l-4.7-3.46-2.27 2.18c-.25.25-.46.46-.94.46l.34-4.78 8.7-7.86c.38-.34-.08-.53-.59-.19L6.98 13.02l-4.63-1.45c-1.01-.31-1.03-1 .21-1.48l18.1-6.98c.84-.31 1.57.19 1.28 1.19z'/%3E%3C/svg%3E")}
.msg-messenger{background:#0084FF;color:#00203d}
.msg-messenger .msg-ic{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2C6.24 2 2 6.22 2 11.92c0 3.05 1.3 5.7 3.44 7.5.18.15.29.37.3.61l.06 1.96c.02.62.66 1.03 1.23.78l2.19-.96c.18-.08.38-.1.57-.05 1.03.28 2.13.44 3.21.44 5.76 0 10-4.22 10-9.92S17.76 2 12 2zm6 7.46-2.94 4.66c-.47.74-1.47.93-2.18.4l-2.34-1.75a.6.6 0 0 0-.72 0l-3.16 2.4c-.42.32-.97-.18-.69-.63l2.94-4.66c.47-.74 1.47-.93 2.18-.4l2.34 1.75a.6.6 0 0 0 .72 0l3.16-2.4c.42-.32.97.18.69.63z'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2C6.24 2 2 6.22 2 11.92c0 3.05 1.3 5.7 3.44 7.5.18.15.29.37.3.61l.06 1.96c.02.62.66 1.03 1.23.78l2.19-.96c.18-.08.38-.1.57-.05 1.03.28 2.13.44 3.21.44 5.76 0 10-4.22 10-9.92S17.76 2 12 2zm6 7.46-2.94 4.66c-.47.74-1.47.93-2.18.4l-2.34-1.75a.6.6 0 0 0-.72 0l-3.16 2.4c-.42.32-.97-.18-.69-.63l2.94-4.66c.47-.74 1.47-.93 2.18-.4l2.34 1.75a.6.6 0 0 0 .72 0l3.16-2.4c.42-.32.97.18.69.63z'/%3E%3C/svg%3E")}
.msg-phone{background:var(--purple);color:#fff}
.msg-phone .msg-ic{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.2.4 2.4.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1A17 17 0 0 1 3 4c0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.3.2 2.5.6 3.6.1.4 0 .8-.2 1l-2.3 2.2z'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.2.4 2.4.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1A17 17 0 0 1 3 4c0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.3.2 2.5.6 3.6.1.4 0 .8-.2 1l-2.3 2.2z'/%3E%3C/svg%3E")}

/* ---------- form ---------- */
.form-card{background:#fff;color:var(--ink);border-radius:var(--radius);padding:28px;
  box-shadow:0 20px 50px rgba(0,0,0,.25)}
.form-card h3{font-size:20px;margin-bottom:4px}
.form-sub{color:var(--muted);font-size:13.5px;margin-bottom:18px}
.field{margin-bottom:14px}
.field label{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px}
.field .req{color:#c0392b}
.field input,.field select{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:10px;
  font-size:14.5px;font-family:inherit;background:#fff;color:var(--ink)}
.field input:focus,.field select:focus{outline:2px solid var(--purple);outline-offset:0;border-color:var(--purple)}
.field input[aria-invalid="true"]{border-color:#c0392b}
.err{color:#c0392b;font-size:12.5px;margin-top:5px}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:12.5px;color:var(--muted);margin:10px 0 18px}
.consent input{margin-top:3px;flex:none;width:16px;height:16px;accent-color:var(--purple)}
.consent a{color:var(--purple);text-decoration:underline}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.form-live{text-align:center;padding:22px 8px}
.form-live .check{width:56px;height:56px;border-radius:50%;background:var(--purple);color:var(--gold);
  font-size:28px;display:flex;align-items:center;justify-content:center;margin:0 auto 14px}
.form-live h3{font-size:19px;margin-bottom:8px}
.form-live p{font-size:14.5px;color:var(--muted)}

/* ---------- footer ---------- */
footer{background:var(--dark);color:#C9C0D6;font-size:14px}
footer .foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1.2fr 1fr;gap:32px;padding:52px 20px 32px}
footer h3{color:#fff;font-size:14.5px;margin-bottom:14px}
footer a:hover{color:var(--gold)}
.foot-logo{display:block;margin-bottom:18px}
.foot-logo img{height:40px;width:auto;max-width:200px;object-fit:contain;object-position:left center}
.foot-about{font-size:13.5px;line-height:1.6;max-width:320px}
.foot-links,.foot-contact{display:grid;gap:9px;font-size:13.5px}
.foot-links+.foot-links{margin-top:14px}
.foot-contact li{line-height:1.5}
footer .btn-ghost{color:#C9C0D6;border-color:rgba(255,255,255,.28);margin-top:16px}
footer .btn-ghost:hover{background:rgba(255,255,255,.08);color:#fff}
.foot-clinics{display:grid;gap:8px;max-height:230px;overflow-y:auto;padding-right:6px;
  scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}
.foot-clinics a{display:block;font-size:12.5px;line-height:1.35}
.foot-clinics b{display:block;color:#E6DFEF;font-weight:600}
.foot-clinics span{color:#8B7EA0}
.foot-clinics a:hover b,.foot-clinics a:hover span{color:var(--gold)}
.foot-all{display:inline-block;margin-top:12px;font-size:12.5px;font-weight:700;color:var(--gold)}
.foot-all:hover{text-decoration:underline}

/* Footer branch list as a dropdown on phones. Rendered open, so on desktop it
   is a plain column: the summary just looks like the other <h3> headings, its
   chevron hidden. site.js collapses it under 640px, where the summary turns
   into a tap target. */
.foot-col-clinics{min-width:0}
.foot-col-title{list-style:none;display:flex;align-items:center;cursor:default;
  color:#fff;font-size:14.5px;font-weight:600;margin-bottom:14px}
.foot-col-title::-webkit-details-marker{display:none}
.foot-col-title::after{content:"";width:8px;height:8px;margin-left:auto;flex:none;
  border-right:2px solid currentColor;border-bottom:2px solid currentColor;
  transform:rotate(45deg);transition:transform .2s;opacity:0}
.foot-social{margin-top:26px}
.foot-social-title{color:#fff;font-size:14.5px;font-weight:600;margin-bottom:12px}
.foot-social ul{display:flex;flex-wrap:wrap;gap:10px}
.soc{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);color:#C9C0D6;
  transition:transform .15s,background .15s,color .15s,border-color .15s}
.soc:hover{transform:translateY(-2px);color:#fff}
.soc-instagram:hover{background:linear-gradient(45deg,#F58529,#DD2A7B,#8134AF);border-color:transparent}
.soc-facebook:hover{background:#1877F2;border-color:transparent}
.soc-youtube:hover{background:#FF0000;border-color:transparent}
.soc-tiktok:hover{background:#010101;border-color:#fff}
.soc-linkedin:hover{background:#0A66C2;border-color:transparent}

.foot-msg{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.foot-msg .msg{padding:8px 14px;font-size:12.5px}
.foot-bottom{border-top:1px solid rgba(255,255,255,.12);padding:22px 20px 34px;font-size:12.5px;color:#8B7EA0}
.foot-disclaimer{margin-top:8px;max-width:820px;line-height:1.5}

/* ---------- floating dock ---------- */
.dock{position:fixed;right:18px;bottom:18px;z-index:80;display:flex;flex-direction:column;align-items:flex-end;gap:10px}
.dock-toggle{width:56px;height:56px;border-radius:50%;border:0;cursor:pointer;background:var(--purple);
  color:#fff;font-size:24px;box-shadow:0 8px 24px rgba(0,0,0,.28);transition:transform .18s,background .18s}
.dock-toggle:hover{background:var(--purple-dark);transform:scale(1.05)}
.dock-list{display:grid;gap:8px;order:-1}
.dock-list .msg{box-shadow:0 6px 18px rgba(0,0,0,.22)}

/* ---------- sticky booking button (phones only) ----------
   Sits left of the dock's round button, same height and baseline, so the two
   never overlap; the dock's list opens upwards, above both. */
.sticky-cta{display:none}

/* ---------- cookie bar ---------- */
.cookie{position:fixed;left:18px;bottom:18px;right:18px;max-width:520px;z-index:90;background:#fff;
  border:1px solid var(--line);border-radius:14px;box-shadow:0 16px 40px rgba(0,0,0,.22);
  padding:18px 20px;display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.cookie p{font-size:13.5px;color:var(--muted);flex:1 1 100%}

/* ---------- responsive ---------- */
@media(max-width:1100px){
  .clinics-grid{grid-template-columns:1fr}
  .clinic-map{position:static;height:400px}
  .clinic-list{max-height:none}
}
@media(max-width:1000px){
  .cards-4{grid-template-columns:repeat(2,1fr)}
  .promises{grid-template-columns:repeat(2,1fr)}
  .final-grid{grid-template-columns:1fr}
  .tech-grid{grid-template-columns:1fr}
  footer .foot-grid{grid-template-columns:1fr 1fr}
  .zpanel{grid-template-columns:1fr}
  .zpanel-media img{min-height:200px;max-height:240px}
  .zpanel-body{padding:24px}
}
@media(max-width:900px){
  .nav-links,.nav-cta{display:none}
  .burger{display:flex}
  .topbar-hours{display:none}
  .cards-3{grid-template-columns:repeat(2,1fr)}
  /* One column: the subgrid pairing has nothing left to align, and keeping it
     would stretch each column across four shared rows. */
  .care-grid{grid-template-columns:1fr;gap:48px;grid-template-rows:none}
  .care-col{display:block;grid-row:auto}
  .care-title{min-height:0}
  .doc-head{align-items:flex-start}
  /* Filters stack, so the gender group must not be pushed to the far edge. */
  .price-filter-end{margin-left:0}
}
@media(max-width:640px){
  .section{padding:52px 0}
  .hero-inner{padding:64px 20px 56px}
  .cards-4,.cards-3,.promises{grid-template-columns:1fr}
  footer .foot-grid{grid-template-columns:1fr;gap:28px}
  .price-row{grid-template-columns:1fr auto;gap:4px 12px}
  .price-dots{display:none}
  .price-name{grid-column:1/-1}
  .price-value{grid-column:1/-1;justify-self:start;color:var(--gold)}
  .hero-actions .btn,.btn-block{width:100%}
  .dock{right:12px;bottom:12px}
  .ztab{flex:1 1 auto;padding:11px 14px;font-size:13px}
  .dcard{flex-basis:80%}
  .clinic{flex-direction:column;align-items:flex-start;gap:12px}
  .clinic .btn{width:100%}
  .clinic-map{height:320px}
  .doc-arrows{display:none}

  /* Filters: each group on its own line, label above its chips, so nothing
     has to squeeze onto a shared row. */
  .price-filters{gap:16px}
  .price-filter{flex:1 1 100%;flex-direction:column;align-items:flex-start;gap:8px}
  .chips{gap:7px}
  .chip,.ztab{font-size:12.5px;padding:9px 14px}

  .price-group{margin-top:10px}
  .price-group-title{padding:15px 16px;font-size:13.5px;letter-spacing:.04em}
  .price-list{padding:0 16px 4px}
  .price-name{font-size:14.5px;gap:7px}
  .price-value{font-size:15px}

  .zpanel-body{padding:20px}
  .zpanel-cta{flex-direction:column;align-items:stretch}
  .zpanel-cta .btn{width:100%}
  .zchips li{font-size:13.5px;padding:8px 14px}

  .steps .step{flex-direction:column;gap:12px;padding:18px}
  .why-card{padding:20px}
  .care-media img{height:150px}
  .foot-clinics{max-height:none;margin-top:2px}
  .soc{width:44px;height:44px}

  /* Footer branches: the summary becomes the dropdown control. */
  .foot-col-title{cursor:pointer;margin:0;padding:14px 0;min-height:52px}
  .foot-col-title::after{opacity:1}
  .foot-col-clinics[open] .foot-col-title{margin-bottom:12px}
  .foot-col-clinics[open] .foot-col-title::after{transform:rotate(-135deg)}

  /* A modal on a phone should use the screen, not float in the middle of it. */
  .policy[open]{width:100vw;max-width:100vw;max-height:100dvh;height:100dvh;border-radius:0;margin:0}
  .policy-head{padding:16px 18px 14px}
  .policy-head h2{font-size:17px}
  .policy-body{padding:18px}
  .policy-foot{padding:14px 18px}

  .cookie{left:10px;right:10px;bottom:10px;padding:16px}
  .dock-toggle{width:52px;height:52px}
  .sticky-cta{display:flex;align-items:center;justify-content:center;position:fixed;z-index:79;
    left:12px;right:76px;bottom:12px;height:52px;padding:0 18px;border-radius:999px;
    background:var(--gold);color:#231a05;font-weight:700;font-size:15px;text-align:center;
    box-shadow:0 8px 24px rgba(0,0,0,.28);transition:transform .22s,opacity .22s}
  .sticky-cta.is-off{transform:translateY(90px);opacity:0;pointer-events:none}
  /* Room for the button, so it never covers the last lines of the footer. */
  footer{padding-bottom:76px}

  /* "After a course of sessions" is a long label; on a narrow card the two
     tags ran into each other, so cap them and trim the overflow. */
  .ba-tag{font-size:10px;padding:4px 9px;max-width:44%;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ba-handle::after{width:34px;height:34px;background-size:18px}

  /* Touch targets: 44px is the smallest a finger reliably hits. */
  .burger{padding:12px 10px}
  .btn-sm{padding:12px 18px;font-size:14px}
  .chip,.ztab{min-height:40px}
  .price-group-title{min-height:52px}
  .consent input{width:20px;height:20px}
  .drawer-close{padding:10px 14px;font-size:24px}
  .policy-close{width:42px;height:42px}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition:none!important;animation:none!important}
}

@media print{
  .nav,.dock,.cookie,.hero-actions,.msg-buttons,.form-card,.burger{display:none!important}
  body{color:#000}
  .pricing,.tech,.final,footer{background:#fff!important;color:#000!important}
}
