/* Deep Clean website · design KADAR (Orvelo, 01.10.2026). Minimal, rounded, photographic. Light only.
   One typeface (Manrope), one accent (logo aqua #14B2D2).
   Radius system: frames --R (44 desktop / 26 phone), cards --Rc (28 / 22), buttons and chips 999px,
   inner radii concentric (outer minus padding). */

:root {
  --bg: #F6F5F1; --white: #FFFFFF; --stone: #EAE8E1; --ink: #101518; --muted: #5D666B; --aqua: #14B2D2;
  --line: rgba(16, 21, 24, .1);
  --shadow: 0 1px 2px rgba(16, 21, 24, .05), 0 14px 34px -16px rgba(16, 21, 24, .2);
  --R: 44px; --Rc: 28px; --Rs: 18px; --g: 24px; --max: 1440px; --hdr: 92px;
  --spring: cubic-bezier(.16, 1, .3, 1); --bounce: cubic-bezier(.34, 1.42, .52, 1); --io: cubic-bezier(.76, 0, .24, 1);
}
@media (max-width: 1100px) { :root { --R: 36px; } }
@media (max-width: 760px) { :root { --R: 26px; --Rc: 22px; --Rs: 14px; --g: 16px; --hdr: 80px; } }

*, *::before, *::after { box-sizing: border-box; }
html { background: var(--bg); -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
  margin: 0; background: var(--bg); color: var(--ink);
  font: 400 17px/1.6 Manrope, system-ui, -apple-system, 'Segoe UI', sans-serif;
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility;
}
img, video { display: block; max-width: 100%; }
a { color: inherit; }
button { font: inherit; color: inherit; }
p, h1, h2, h3, figure, blockquote { margin: 0; }
.sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.wrap { width: min(100% - 2 * var(--g), var(--max)); margin-inline: auto; }
.nw { white-space: nowrap; }
.ic { width: 20px; height: 20px; flex: none; }
::selection { background: rgba(20, 178, 210, .24); }
:focus-visible { outline: 2.5px solid var(--aqua); outline-offset: 3px; }
section[id] { scroll-margin-top: var(--hdr); }
.i18n-js { display: none; }

/* ---------------------------------------------------------------- type */
.dsp { font-weight: 800; letter-spacing: -.052em; line-height: .94; }
.h2 { font-weight: 800; font-size: clamp(38px, 5.1vw, 84px); letter-spacing: -.048em; line-height: 1; text-wrap: balance; }
.h3 { font-weight: 700; font-size: clamp(22px, 1.9vw, 29px); letter-spacing: -.028em; line-height: 1.18; text-wrap: balance; }
.p { color: var(--muted); font-size: 17px; line-height: 1.6; max-width: 52ch; }
.lbl { font-size: 12.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.cap-s { font-size: 14px; color: var(--muted); margin-top: 12px; line-height: 1.4; }
.head2 { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(20px, 4vw, 64px); align-items: end; }

/* ---------------------------------------------------------------- buttons, chips, tags */
.pill {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px; height: 56px; padding: 0 24px 0 20px;
  border: 0; border-radius: 999px; cursor: pointer; text-decoration: none; white-space: nowrap;
  font-weight: 700; font-size: 16px; letter-spacing: -.01em;
  transition: background-color .25s, box-shadow .3s, color .25s;
}
.pill--aqua { background: var(--aqua); color: var(--ink); }
.pill--aqua:hover { background: #2BC1DE; }
.pill--white { background: var(--white); color: var(--ink); box-shadow: var(--shadow); }
.pill--white:hover { box-shadow: 0 1px 2px rgba(16, 21, 24, .06), 0 20px 40px -18px rgba(16, 21, 24, .3); }
.pill--soft { background: var(--stone); color: var(--ink); }
.chips { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0; padding: 0; }
.chip {
  display: inline-flex; align-items: center; min-height: 38px; padding: 7px 16px; border-radius: 999px;
  background: var(--white); font-size: 15px; font-weight: 500; line-height: 1.3;
}
.tag {
  position: absolute; z-index: 4; display: inline-flex; align-items: center; height: 30px; padding: 0 13px;
  border-radius: 999px; background: rgba(255, 255, 255, .95); color: var(--ink); pointer-events: none; white-space: nowrap;
  font-size: 11.5px; font-weight: 800; letter-spacing: .12em; transition: opacity .35s;
}
.tag--post { background: var(--aqua); }

/* ---------------------------------------------------------------- island header */
.isl { position: fixed; top: 14px; left: 50%; transform: translateX(-50%); z-index: 900; max-width: calc(100vw - 16px); }
.isl-bar {
  display: flex; align-items: center; height: 62px; padding: 0 7px 0 20px; border-radius: 999px; background: var(--white);
  box-shadow: 0 1px 1px rgba(16, 21, 24, .04), 0 16px 40px -16px rgba(16, 21, 24, .24);
  transition: height .6s var(--bounce), padding .6s var(--bounce);
}
.isl-logo { position: relative; display: block; flex: none; height: 40px; width: 128px; transition: width .7s var(--bounce); }
.isl-logo svg { position: absolute; left: 0; top: 50%; transform: translateY(-50%); transition: opacity .35s; }
.lg-full { height: 23px; width: 128px; }
.lg-mark { height: 30px; width: 30px; opacity: 0; }
.isl-navwrap { width: var(--nw, 600px); margin-left: 14px; overflow: hidden; flex: none; transition: width .75s var(--bounce), margin .6s var(--bounce), opacity .4s; }
.isl-nav { display: flex; gap: 2px; width: max-content; }
.isl-nav a, .isl-dd {
  display: flex; align-items: center; gap: 4px; padding: 10px 14px; border: 0; border-radius: 999px; background: none; cursor: pointer;
  text-decoration: none; white-space: nowrap; font-size: 15px; font-weight: 600; letter-spacing: -.01em; transition: background-color .25s;
}
.isl-dd { padding-right: 10px; }
.isl-chev { width: 16px; height: 16px; transition: transform .45s var(--spring); }
.isl-dd[aria-expanded="true"] .isl-chev { transform: rotate(180deg); }
.isl-nav a:hover, .isl-dd:hover, .isl-dd[aria-expanded="true"] { background: var(--stone); }
.isl-nav a[aria-current="page"], .isl-dd.is-cur { box-shadow: inset 0 0 0 1.5px var(--ink); }
.isl-lang { position: relative; display: flex; flex: none; padding: 3px; margin-left: 10px; border-radius: 999px; background: var(--stone); }
.isl-thumb {
  position: absolute; left: 0; top: 3px; bottom: 3px; width: var(--tw, 36px); transform: translateX(var(--tx, 3px));
  border-radius: 999px; background: var(--white); box-shadow: 0 1px 3px rgba(16, 21, 24, .16);
  transition: transform .5s var(--bounce), width .5s var(--bounce);
}
.isl-lang a {
  position: relative; z-index: 1; display: grid; place-items: center; height: 34px; min-width: 38px; padding: 0 9px; border-radius: 999px;
  text-decoration: none; font-size: 12.5px; font-weight: 800; letter-spacing: .04em; color: var(--muted); transition: color .3s;
}
.isl-lang a:hover { color: var(--ink); }
.isl-lang a[aria-current="true"] { color: var(--ink); }
.isl-call { display: grid; place-items: center; flex: none; width: 48px; height: 48px; margin-left: 8px; border-radius: 50%; background: var(--aqua); color: var(--ink); }
.isl-menu {
  display: grid; place-content: center; gap: 5px; flex: none; width: 0; height: 48px; margin-left: 0; padding: 0; border: 0;
  border-radius: 50%; background: var(--stone); opacity: 0; overflow: hidden; cursor: pointer;
  transition: width .6s var(--bounce), margin .6s var(--bounce), opacity .3s;
}
.isl-menu span { display: block; width: 16px; height: 2px; border-radius: 2px; background: var(--ink); transition: transform .4s var(--spring); }
.isl-menu[aria-expanded="true"] span:first-child { transform: translateY(3.5px) rotate(45deg); }
.isl-menu[aria-expanded="true"] span:last-child { transform: translateY(-3.5px) rotate(-45deg); }
.isl.is-c .isl-bar { height: 58px; padding-left: 13px; }
.isl.is-c .isl-logo { width: 32px; }
.isl.is-c .lg-full { opacity: 0; }
.isl.is-c .lg-mark { opacity: 1; }
.isl.is-c .isl-navwrap { width: 0; margin-left: 0; opacity: 0; }
.isl.is-c .isl-menu { width: 46px; height: 46px; margin-left: 6px; opacity: 1; }
.isl.is-c .isl-call { width: 46px; height: 46px; }
.isl-sheet {
  position: absolute; top: calc(100% + 10px); left: 50%; width: min(calc(100vw - 20px), 420px); padding: 12px;
  border-radius: 30px; background: var(--white); box-shadow: 0 30px 60px -24px rgba(16, 21, 24, .35);
  opacity: 0; transform: translate(-50%, -12px) scale(.96); transform-origin: 50% 0;
  transition: opacity .3s, transform .55s var(--bounce);
}
.isl-sheet.open { opacity: 1; transform: translate(-50%, 0) scale(1); }
.isl-sheet[hidden] { display: none; }
.isl-sheet nav { display: grid; }
.isl-sheet { max-height: calc(100svh - 96px); overflow-y: auto; overscroll-behavior: contain; }
.isl-sheet nav > a { padding: 10px 16px; border-radius: 18px; text-decoration: none; font-size: 22px; font-weight: 700; letter-spacing: -.025em; }
.isl-sheet nav a:hover { background: var(--bg); }
.isl-sheet nav a[aria-current="page"] { background: var(--stone); }
.sh-svc { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; margin: 0 0 6px; padding: 0 12px 6px; }
.sh-svc a { display: inline-flex; align-items: center; min-height: 36px; padding: 6px 14px; border-radius: 999px; background: var(--bg); text-decoration: none; font-size: 14.5px; font-weight: 600; }
.isl-sheet-cta { display: flex; flex-wrap: wrap; gap: 8px; padding: 10px 4px 4px; }
.isl-sheet-cta .pill { height: 50px; flex: 1 1 auto; }
@media (max-width: 999px) { .isl-navwrap { display: none; } }
@media (max-width: 380px) {
  .isl-bar, .isl.is-c .isl-bar { height: 54px; padding: 0 5px 0 11px; }
  .isl-lang a { min-width: 33px; padding: 0 6px; height: 32px; }
  .isl.is-c .isl-call, .isl.is-c .isl-menu { width: 42px; height: 42px; }
  .isl.is-c .isl-menu { margin-left: 4px; }
  .isl-call { margin-left: 6px; }
}

/* ---------------------------------------------------------------- cursor label */
.cur { position: fixed; left: 0; top: 0; z-index: 950; width: 0; height: 0; pointer-events: none; }
.cur-t {
  position: absolute; left: 16px; top: 16px; display: grid; place-items: center; width: 78px; height: 78px; border-radius: 50%;
  background: var(--aqua); color: var(--ink); font-size: 13px; font-weight: 800; letter-spacing: .01em; text-align: center; line-height: 1.1;
  transform: scale(0); transition: transform .45s var(--bounce);
}
.cur.on .cur-t { transform: scale(1); }
@media (hover: none), (pointer: coarse) { .cur { display: none; } }

/* ---------------------------------------------------------------- reveals */
.js .rv { opacity: 0; transform: translateY(26px); transition: opacity .9s var(--spring), transform 1.15s var(--spring); }
.js .rv.in { opacity: 1; transform: none; }

/* ---------------------------------------------------------------- 1. KADAR */
.kadar { position: relative; }
.k-hero { min-height: 100svh; display: flex; flex-direction: column; padding-top: calc(var(--hdr) + 14px); }
.k-copy { position: relative; z-index: 2; width: min(100% - 2 * var(--g), 1440px); margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1fr) minmax(270px, 372px); column-gap: clamp(28px, 4vw, 64px); align-items: end; }
.k-eye { grid-column: 1 / -1; margin-bottom: 16px; }
.k-row { display: contents; }
.k-h1 { grid-column: 1; font-size: min(8.2vw, 15svh, 150px); }
.ln { display: block; overflow: hidden; padding: .16em .05em .12em; margin: -.16em -.05em -.12em; }
.ln-i { display: inline-block; white-space: nowrap; }
.k-side { grid-column: 2; padding-bottom: .5em; }
.k-lead { font-size: 16.5px; line-height: 1.55; color: var(--muted); margin-bottom: 20px; }
.k-cta { display: flex; flex-wrap: wrap; gap: 10px; }
.k-note { font-size: 13.5px; color: var(--muted); margin-top: 14px; }
.k-spot { position: relative; flex: 1 1 auto; width: min(100% - 2 * var(--g), 1440px); min-height: 300px; margin: clamp(22px, 2.6vw, 34px) auto var(--g); }
.k-frame { position: absolute; inset: 0; z-index: 3; border-radius: var(--R); overflow: hidden; background: var(--stone); }
.k-mask { position: absolute; inset: 0; border-radius: inherit; overflow: hidden; }
.kf-in { position: absolute; inset: 0; }
.kf-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: var(--op, 50% 50%); opacity: 0; transform: scale(1.09); transition: opacity 1.7s ease, transform 7.5s linear; }
.kf-img.is-on { opacity: 1; transform: none; }
.kf-cap { position: absolute; right: 16px; bottom: 16px; z-index: 2; display: grid; }
.kf-t {
  grid-area: 1 / 1; justify-self: end; align-self: end; padding: 9px 16px; border-radius: 999px; background: rgba(255, 255, 255, .95);
  font-size: 13.5px; font-weight: 600; line-height: 1.3; opacity: 0; transform: translateY(8px); transition: opacity .3s, transform .5s var(--spring);
}
.kf-t.is-on { opacity: 1; transform: none; transition: opacity .5s .38s, transform .8s .38s var(--spring); }
.k-grid {
  display: grid; grid-template-columns: 1fr 1.34fr 1fr; grid-template-rows: 1fr 1.2fr 1fr; gap: 14px;
  height: calc(100svh - var(--hdr) - 8px - var(--g)); min-height: 560px; margin: 0 var(--g) var(--g);
}
.kt { position: relative; margin: 0; border-radius: var(--Rc); overflow: hidden; background: var(--stone); }
.kt img { width: 100%; height: 100%; object-fit: cover; }
/* motion: the frame opens, the headline rises */
.mo .k-mask { animation: kopen 1.55s var(--io) .2s both; }
.mo .k-mask.opened { animation: none; }
@keyframes kopen { from { clip-path: inset(38% 33% 38% 33% round 96px); } to { clip-path: inset(0 0 0 0 round var(--R)); } }
.mo .kf-in { animation: kzoom 2.5s var(--spring) .2s both; }
@keyframes kzoom { from { transform: scale(1.36); } to { transform: none; } }
.mo .ln-i { animation: lnup 1.35s var(--spring) .1s both; }
.mo .ln + .ln .ln-i { animation-delay: .19s; }
@keyframes lnup { from { transform: translateY(112%); } to { transform: none; } }
.mo .k-eye, .mo .k-side { animation: fadeup 1.1s var(--spring) .5s both; }
@keyframes fadeup { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
/* zoom mode (set by main.js): the hero is a pinned stage, the frame travels into the grid */
.zm .kadar { height: 100svh; min-height: 620px; overflow: hidden; }
.zm .k-hero { position: absolute; inset: 0; min-height: 0; }
.zm .k-spot { position: static; }
.zm .k-frame { inset: auto; left: 0; top: 0; width: 0; height: 0; will-change: left, top, width, height; }
.zm .k-grid { position: absolute; left: var(--g); right: var(--g); top: calc(var(--hdr) + 8px); bottom: var(--g); height: auto; min-height: 0; margin: 0; z-index: 1; }
.zm .kt { will-change: transform, opacity; opacity: 0; }
.zm .kt-slot { opacity: 1; background: none; }
.zm .kt-slot img { visibility: hidden; }
@media (max-width: 999px) {
  .k-copy { grid-template-columns: minmax(0, 1fr); }
  .k-h1 { grid-column: 1; }
  .k-side { grid-column: 1; max-width: 560px; margin-top: 22px; padding-bottom: 0; }
}
@media (max-width: 699px) {
  .k-hero { padding-top: calc(var(--hdr) + 10px); }
  .k-eye { font-size: 11.5px; margin-bottom: 12px; }
  .k-h1 { font-size: 12.3vw; }
  .ln-i { white-space: normal; }
  .k-side { margin-top: 16px; }
  .k-lead { font-size: 15.5px; margin-bottom: 16px; }
  .k-cta .pill { height: 52px; padding: 0 20px 0 17px; font-size: 15.5px; }
  .k-note { font-size: 12.5px; margin-top: 10px; }
  .k-spot { margin-top: 18px; min-height: 250px; }
  .kf-cap { right: 10px; bottom: 10px; }
  .kf-img { object-position: var(--opm, var(--op, 50% 50%)); }
  .kf-t { font-size: 12.5px; padding: 8px 13px; }
  .k-grid { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1.28fr 1fr 1fr; gap: 10px; grid-template-areas: "a b" "s s" "c d" "e f"; }
  .kt1 { grid-area: a; } .kt2 { grid-area: b; } .kt-slot { grid-area: s; } .kt3 { grid-area: c; } .kt4 { grid-area: d; } .kt5 { grid-area: e; } .kt6 { grid-area: f; }
  .kt7, .kt8 { display: none; }
}

/* ---------------------------------------------------------------- 2. statement */
.stmt { padding: clamp(96px, 12vw, 176px) 0 clamp(70px, 8vw, 120px); }
.stmt-l { margin-bottom: clamp(20px, 2.4vw, 32px); }
.stmt-t { max-width: 1180px; font-weight: 600; font-size: clamp(29px, 3.9vw, 60px); line-height: 1.16; letter-spacing: -.034em; text-wrap: pretty; }
.ipill {
  position: relative; top: -.06em; display: inline-block; vertical-align: middle; width: 2.7em; height: 1.1em; margin: 0 .06em;
  border-radius: 999px; overflow: hidden; background: var(--stone);
}
.ipill img, .ipill video { width: 100%; height: 100%; object-fit: cover; }
.ipill video { object-position: 50% 84%; }
.facts { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; margin: clamp(34px, 4vw, 56px) 0 0; padding: 0; }
.facts .chip { min-height: 44px; padding: 8px 20px; font-weight: 600; box-shadow: 0 1px 2px rgba(16, 21, 24, .04); }

/* ---------------------------------------------------------------- 3. water */
.water { padding: clamp(30px, 4vw, 60px) 0 clamp(60px, 7vw, 100px); }
.water-in { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(32px, 6vw, 110px); align-items: center; }
.w-media { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .64fr); gap: 14px; align-items: end; }
.w-f { position: relative; overflow: hidden; background: var(--stone); }
.w-f1 { aspect-ratio: 4 / 5; border-radius: var(--R); }
.w-f2 { aspect-ratio: 1 / 1; border-radius: var(--Rc); }
.w-v { width: 100%; height: 100%; object-fit: cover; }
.w-f1 .w-v { object-position: 50% 0%; }
.w-f2 .w-v { object-position: 50% 100%; }
.w-small { margin-bottom: 18%; }
.w-copy .h2 { font-size: clamp(36px, 4.4vw, 70px); }
.w-p { margin-top: clamp(22px, 2.4vw, 32px); font-size: clamp(17px, 1.3vw, 19px); line-height: 1.62; color: var(--muted); max-width: 46ch; }
.w-p2 { margin-top: 14px; font-size: clamp(17px, 1.3vw, 19px); font-weight: 700; max-width: 46ch; }
.w-q { margin: clamp(28px, 3vw, 40px) 0 0; padding: 0; }
.w-q p { font-size: clamp(22px, 2vw, 30px); font-weight: 600; letter-spacing: -.024em; line-height: 1.3; }
.w-rm { margin-top: clamp(28px, 3vw, 40px); }
.w-rm .lbl { margin-bottom: 12px; }
.w-res { margin-top: 14px; font-weight: 600; font-size: 15.5px; }

/* ---------------------------------------------------------------- 4. loupe */
.lp { padding: clamp(90px, 10vw, 150px) 0 clamp(60px, 7vw, 110px); }
.lp-head { margin-bottom: clamp(30px, 3.6vw, 52px); }
.lp-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 356px); gap: clamp(22px, 3vw, 48px); align-items: start; }
.lp-frame {
  position: relative; aspect-ratio: 5 / 4; max-height: 82svh; width: 100%; border-radius: var(--R); overflow: hidden; background: var(--stone);
  touch-action: pan-y; user-select: none; -webkit-user-select: none;
}
@media (hover: hover) and (pointer: fine) { .lp-frame.is-busy { cursor: none; } }
.lp-layer { position: absolute; inset: 0; transition: opacity .25s; }
.lp-img { width: 100%; height: 100%; object-fit: cover; }
.lp-post { clip-path: circle(0 at 50% 50%); }
.lp-frame.swap .lp-layer, .lp-frame.swap .lp-ring { opacity: 0; }
.lp-ring {
  position: absolute; left: 0; top: 0; z-index: 3; width: 0; height: 0; border-radius: 50%; border: 3px solid var(--aqua);
  box-shadow: 0 14px 34px -12px rgba(16, 21, 24, .45); touch-action: none; cursor: grab; transition: opacity .25s, border-color .35s;
}
.lp-ring:focus-visible { outline: 3px solid var(--ink); outline-offset: 3px; }
.lp-tag-post { left: 50%; top: -15px; transform: translateX(-50%); }
.lp-tag-pre, .lp-tag-full { left: 16px; top: 16px; }
.lp-tag-full { opacity: 0; }
.lp-frame.is-full .lp-tag-pre, .lp-frame.is-full .lp-tag-post { opacity: 0; }
.lp-frame.is-full .lp-tag-full { opacity: 1; }
.lp-frame.is-full .lp-ring { border-color: transparent; box-shadow: none; }
.lp-side { display: flex; flex-direction: column; gap: 24px; padding-top: 4px; }
.lp-info .p { margin-top: 10px; }
.lp-info[hidden] { display: none; }
.lp-thumbs { display: flex; flex-wrap: wrap; gap: 10px; }
.lp-th {
  width: 62px; height: 62px; padding: 0; border: 0; border-radius: 50%; overflow: hidden; cursor: pointer; background: var(--stone);
  box-shadow: 0 0 0 0 var(--bg), 0 0 0 0 var(--aqua); transition: box-shadow .4s var(--spring), transform .45s var(--bounce);
}
.lp-th:hover { transform: scale(1.06); }
.lp-th img { width: 100%; height: 100%; object-fit: cover; }
.lp-th.is-on { box-shadow: 0 0 0 3px var(--bg), 0 0 0 6px var(--aqua); }
.lp-full { align-self: flex-start; }
.lp-full-b { display: none; }
.lp-full[aria-pressed="true"] .lp-full-a { display: none; }
.lp-full[aria-pressed="true"] .lp-full-b { display: inline; }

/* ---------------------------------------------------------------- shared before/after comparer */
.cmp { --p: 50; position: relative; overflow: hidden; touch-action: pan-y; user-select: none; -webkit-user-select: none; cursor: ew-resize; }
.cmp-l { position: absolute; inset: 0; }
.cmp-l img { width: 100%; height: 100%; object-fit: cover; }
.cmp-pre { clip-path: inset(0 calc(100% - var(--p) * 1%) 0 0); }
.cmp-h { position: absolute; top: 0; bottom: 0; left: calc(var(--p) * 1%); z-index: 3; width: 48px; margin-left: -24px; display: grid; place-items: center; outline: none; transition: opacity .35s; }
.cmp-h::before { content: ''; position: absolute; top: 0; bottom: 0; left: 50%; width: 2px; margin-left: -1px; background: var(--white); }
.cmp-k {
  position: relative; width: 46px; height: 46px; border-radius: 50%; background: var(--white) center / 22px no-repeat;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23101518' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 7l-5 5 5 5M15 7l5 5-5 5'/%3E%3C/svg%3E");
  box-shadow: 0 8px 22px -8px rgba(16, 21, 24, .45); transition: transform .4s var(--bounce);
}
.cmp.is-drag .cmp-k { transform: scale(1.12); }
.cmp-h:focus-visible .cmp-k { outline: 2.5px solid var(--aqua); outline-offset: 3px; }
.cmp-tp { left: 14px; top: 14px; }
.cmp-tq { right: 14px; top: 14px; }

/* ---------------------------------------------------------------- 5. capsule rail */
.caps { padding: clamp(60px, 7vw, 110px) 0 clamp(100px, 12vw, 180px); }
.caps-head { margin-bottom: clamp(30px, 3.6vw, 52px); }
.caps-q p, .svc-q { font-size: clamp(19px, 1.6vw, 24px); font-weight: 600; letter-spacing: -.02em; line-height: 1.38; max-width: 40ch; }
.caps-q { margin: 0; padding: 0; }
.cap-rail { --n: 7; --cw: 104px; --gap: 12px; display: flex; gap: var(--gap); height: clamp(500px, 68svh, 660px); }
.cap {
  position: relative; flex: 0 0 var(--cw); border-radius: calc(var(--cw) / 2); overflow: hidden; background: var(--stone);
  transition: flex-basis 1s var(--spring), border-radius 1s var(--spring), height 1s var(--spring);
}
.cap.is-on { flex-basis: calc(100% - (var(--n) - 1) * (var(--cw) + var(--gap))); border-radius: var(--R); }
.cap-media { position: absolute; inset: 0; }
.cap-media > .cmp { position: absolute; inset: 0; }
.cap:not(.is-on) .cmp-h, .cap:not(.is-on) .tag { opacity: 0; pointer-events: none; }
.cap:not(.is-on) .cmp { cursor: pointer; }
.cap-open {
  position: absolute; inset: 0; z-index: 5; display: flex; align-items: flex-end; justify-content: center; padding: 0 0 18px;
  border: 0; background: none; cursor: pointer; border-radius: inherit;
}
.cap.is-on .cap-open { display: none; }
.cap-lab { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.cap-plus { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 50%; background: var(--white); box-shadow: 0 8px 20px -8px rgba(16, 21, 24, .4); transition: transform .45s var(--bounce); }
.cap-open:hover .cap-plus { transform: scale(1.1) rotate(90deg); }
.cap-txt {
  position: absolute; left: 14px; bottom: 14px; z-index: 4; width: min(430px, calc(100% - 28px)); padding: 18px 22px 20px;
  border-radius: calc(var(--R) - 14px); background: rgba(255, 255, 255, .97); pointer-events: none;
  opacity: 0; transform: translateY(14px); transition: opacity .35s, transform .6s var(--spring);
}
.cap.is-on .cap-txt { opacity: 1; transform: none; transition-delay: .4s; }
.cap-t { font-weight: 800; font-size: 19px; letter-spacing: -.025em; line-height: 1.2; }
.cap-l { margin-top: 6px; font-size: 15px; line-height: 1.5; color: var(--muted); }
@media (max-width: 1200px) { .cap-rail { --cw: 76px; } }
@media (max-width: 899px) {
  .cap-rail { flex-direction: column; height: auto; }
  .cap { flex: none; height: 84px; border-radius: 42px; }
  .cap.is-on { height: min(620px, 80svh); border-radius: var(--R); }
  .cap-open { align-items: center; justify-content: space-between; padding: 0 12px 0 14px; }
  .cap-lab {
    position: static; width: auto; height: auto; clip: auto; overflow: visible; white-space: normal;
    max-width: calc(100% - 64px); padding: 8px 14px; border-radius: 999px; background: rgba(255, 255, 255, .95);
    font-size: 14px; font-weight: 700; line-height: 1.25; text-align: left;
  }
  .cap-plus { width: 44px; height: 44px; }
  .cap-txt { left: 10px; bottom: 10px; width: calc(100% - 20px); border-radius: calc(var(--R) - 10px); padding: 15px 18px 17px; }
  .cap-t { font-size: 17px; }
  .cap-l { font-size: 14px; }
}

/* ---------------------------------------------------------------- 6. services, stacking cards */
.svc { padding: clamp(40px, 5vw, 70px) 0 clamp(50px, 6vw, 90px); }
.svc-head { margin-bottom: clamp(34px, 4vw, 60px); }
.svc-q { color: var(--muted); font-weight: 500; }
.svc-stack { --hold: clamp(28px, 24vh, 240px); display: grid; gap: var(--hold); }
.svc-card { position: sticky; top: calc(var(--hdr) + var(--i) * 18px); min-height: min(calc(100svh - var(--hdr) - 96px), 780px); }
.svc-card.nost { position: relative; top: auto; }
.svc-in {
  position: relative; height: 100%; min-height: inherit; display: grid; grid-template-columns: minmax(0, 1.22fr) minmax(0, 1fr); gap: 14px;
  padding: 14px; border-radius: var(--R); background: var(--white); box-shadow: 0 34px 70px -46px rgba(16, 21, 24, .4); transform-origin: 50% 0;
}
.svc-ph { position: relative; min-height: 320px; border-radius: calc(var(--R) - 14px); overflow: hidden; background: var(--stone); }
.svc-ph img { position: absolute; inset: -7% 0; width: 100%; height: 114%; object-fit: cover; }
.svc-tx { display: flex; flex-direction: column; min-width: 0; padding: clamp(14px, 2.4vw, 40px) clamp(10px, 1.8vw, 30px) clamp(6px, 1vw, 16px); }
.svc-t { font-weight: 800; font-size: clamp(34px, 3.7vw, 62px); letter-spacing: -.048em; line-height: 1; margin-bottom: 16px; }
.svc-p { font-size: clamp(16px, 1.2vw, 18px); color: var(--muted); line-height: 1.55; margin-bottom: 22px; max-width: 46ch; }
.chips--s .chip { min-height: 34px; padding: 6px 14px; background: var(--bg); font-size: 14px; }
.svc-n { margin-top: 18px; font-size: 14.5px; font-weight: 700; line-height: 1.45; }
.svc-mini { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; flex: 1 1 auto; min-height: 130px; margin-top: 22px; max-height: 260px; }
.mini { position: relative; border-radius: var(--Rs); overflow: hidden; background: var(--stone); }
.mini img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.svc-veil { position: absolute; inset: 0; z-index: 5; border-radius: inherit; background: var(--bg); opacity: 0; pointer-events: none; }
@media (max-width: 899px) {
  .svc-stack { --strip: 64px; }
  .svc-card { top: calc(var(--hdr) + var(--i) * var(--strip)); min-height: 0; }
  .svc-in { grid-template-columns: minmax(0, 1fr); gap: 0; padding: 10px; }
  .svc-tx { display: contents; }
  .svc-t {
    order: -1; display: flex; align-items: center; height: calc(var(--strip) - 10px); margin: 0; padding: 0 10px;
    font-size: clamp(25px, 6.6vw, 44px); line-height: 1; white-space: nowrap;
  }
  .svc-ph { min-height: 0; aspect-ratio: 16 / 10; margin-top: 4px; border-radius: calc(var(--R) - 10px); }
  .svc-p { margin: 16px 10px 16px; }
  .chips--s { gap: 6px; margin: 0 10px; }
  .chips--s .chip { min-height: 30px; padding: 5px 12px; font-size: 13px; }
  .svc-n { margin: 14px 10px 0; font-size: 13.5px; }
  .svc-in { padding-bottom: 18px; }
  .svc-mini { display: none; }
}
@media (max-width: 560px) { .svc-stack { --strip: 48px; } .svc-ph { aspect-ratio: 16 / 9; } }

/* ---------------------------------------------------------------- 7. marquees */
.mq { padding: clamp(30px, 4vw, 60px) 0 clamp(60px, 7vw, 100px); overflow: hidden; }
.mq-row { overflow: hidden; }
.mq-track { display: flex; gap: 14px; width: max-content; will-change: transform; }
.mt { flex: none; height: clamp(190px, 23vw, 330px); margin: 0; border-radius: var(--Rc); overflow: hidden; background: var(--stone); }
.mt img { width: auto; height: 100%; object-fit: cover; }
.mq-q { margin: clamp(26px, 3.6vw, 52px) auto; text-align: center; font-weight: 800; font-size: clamp(30px, 4.8vw, 78px); letter-spacing: -.048em; line-height: 1.02; text-wrap: balance; }
.mq-static { overflow-x: auto; scrollbar-width: thin; }

/* ---------------------------------------------------------------- 8. cars */
.auto { padding: clamp(90px, 10vw, 150px) 0 clamp(40px, 5vw, 70px); }
.auto-head { margin-bottom: clamp(30px, 3.6vw, 52px); }
.auto-lead { font-size: clamp(18px, 1.45vw, 22px); font-weight: 500; line-height: 1.5; max-width: 40ch; margin-bottom: 22px; }
.auto-bento {
  display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 14px;
  grid-template-rows: clamp(270px, 25vw, 380px) clamp(270px, 25vw, 380px) clamp(230px, 21vw, 320px);
}
.ab { position: relative; margin: 0; min-width: 0; border-radius: var(--Rc); overflow: hidden; background: var(--stone); }
.ab-f { position: absolute; inset: 0; overflow: hidden; }
.ab-f img { position: absolute; inset: -7% 0; width: 100%; height: 114%; object-fit: cover; }
.ab-cmp { grid-column: 1 / 7; grid-row: 1 / 3; border-radius: var(--R); }
.ab-cmpf { position: absolute; inset: 0; }
.ab-cmp figcaption { position: absolute; left: 14px; bottom: 14px; z-index: 4; margin: 0; max-width: calc(100% - 28px); padding: 9px 16px; border-radius: 999px; background: var(--white); color: var(--ink); font-size: 13.5px; font-weight: 600; pointer-events: none; }
.ab-1 { grid-column: 7 / 10; grid-row: 1; }
.ab-2 { grid-column: 10 / 13; grid-row: 1; }
.ab-jazz { grid-column: 7 / 13; grid-row: 2; display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 12px; padding: 12px; background: var(--white); }
.ab-jf { position: relative; margin: 0; border-radius: calc(var(--Rc) - 12px); overflow: hidden; }
.ab-jf img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ab-jf .tag { left: 10px; top: 10px; }
.ab-jq { display: flex; flex-direction: column; justify-content: flex-end; gap: 16px; padding: 12px 12px 10px 6px; }
.ab-jq blockquote { margin: 0; }
.ab-jq blockquote p { font-size: clamp(20px, 1.9vw, 30px); font-weight: 600; letter-spacing: -.024em; line-height: 1.3; }
.ab-3 { grid-column: 1 / 5; grid-row: 3; }
.ab-4 { grid-column: 5 / 9; grid-row: 3; }
.ab-5 { grid-column: 9 / 13; grid-row: 3; }
@media (max-width: 899px) {
  .auto-bento { grid-template-columns: 1fr 1fr; grid-template-rows: none; grid-auto-rows: auto; gap: 10px; }
  .ab-cmp { grid-column: 1 / -1; grid-row: auto; aspect-ratio: 3 / 3.6; }
  .ab-1, .ab-2, .ab-3, .ab-4 { grid-column: auto; grid-row: auto; aspect-ratio: 3 / 4; }
  .ab-jazz { grid-column: 1 / -1; grid-row: auto; grid-template-columns: 1fr; padding: 10px; }
  .ab-jf { aspect-ratio: 4 / 3; border-radius: calc(var(--Rc) - 10px); }
  .ab-jq { padding: 6px 8px 10px; }
  .ab-5 { grid-column: 1 / -1; grid-row: auto; aspect-ratio: 4 / 3; }
}

/* ---------------------------------------------------------------- 9. reels shelf */
.reels { padding: clamp(70px, 8vw, 116px) 0 clamp(60px, 7vw, 110px); overflow: hidden; }
.reels-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: clamp(18px, 2vw, 28px); }
.reels-head .p { margin-top: 14px; }
.reels-nav { display: flex; gap: 10px; flex: none; }
.rb { display: grid; place-items: center; width: 56px; height: 56px; border: 0; border-radius: 50%; background: var(--white); box-shadow: var(--shadow); cursor: pointer; transition: transform .4s var(--bounce); }
.rb:hover { transform: scale(1.07); }
.rb-prev .ic { transform: scaleX(-1); }
.rl-track {
  --rw: clamp(228px, 21vw, 300px); display: flex; gap: clamp(6px, 1vw, 14px); overflow-x: auto; overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory; padding: 26px calc(50% - var(--rw) / 2) 18px; scrollbar-width: none;
}
.rl-track::-webkit-scrollbar { display: none; }
.rl { flex: none; width: var(--rw); margin: 0; scroll-snap-align: center; cursor: pointer; }
.rl-f {
  position: relative; aspect-ratio: 9 / 16; border-radius: var(--R); overflow: hidden; background: var(--stone);
  transform: scale(.82); transform-origin: 50% 55%; transition: transform .9s var(--spring), box-shadow .9s var(--spring);
}
.rl.is-c .rl-f { transform: none; box-shadow: 0 44px 80px -46px rgba(16, 21, 24, .55); }
.rl-v { width: 100%; height: 100%; object-fit: cover; }
.rl figcaption { text-align: center; opacity: 0; transform: translateY(-6px); transition: opacity .5s, transform .7s var(--spring); }
.rl.is-c figcaption { opacity: 1; transform: none; }
.reels-ig { text-align: center; margin-top: 18px; }
.lnk { display: inline-flex; align-items: center; gap: 10px; color: var(--ink); font-weight: 700; text-decoration: none; }
.lnk:hover span { text-decoration: underline; text-underline-offset: 4px; }

/* ---------------------------------------------------------------- 10. steps */
.steps { padding: clamp(70px, 8vw, 130px) 0 clamp(80px, 9vw, 130px); }
.steps-head { margin-bottom: clamp(34px, 4vw, 58px); }
.steps-lead { font-size: clamp(22px, 2vw, 31px); font-weight: 600; letter-spacing: -.024em; line-height: 1.3; max-width: 26ch; }
.steps-row { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px; list-style: none; margin: 0 auto; padding: 0; }
.st-pill {
  display: flex; align-items: center; gap: 11px; min-height: 62px; padding: 7px 16px 7px 7px; border-radius: 999px;
  background: var(--white); box-shadow: 0 1px 2px rgba(16, 21, 24, .04);
}
.st-n { display: grid; place-items: center; flex: none; width: 48px; height: 48px; border-radius: 50%; background: var(--stone); font-weight: 800; font-size: 17px; }
.st-t { font-weight: 700; font-size: 15px; letter-spacing: -.01em; line-height: 1.22; }
.st-p { margin: 14px 8px 0; font-size: 15px; line-height: 1.52; color: var(--muted); }
.js .st.rv { transform: translateY(22px) scale(.94); }
.js .st.rv.in { transform: none; }
.st:nth-child(2) { transition-delay: .07s; } .st:nth-child(3) { transition-delay: .14s; } .st:nth-child(4) { transition-delay: .21s; }
.st:nth-child(5) { transition-delay: .28s; } .st:nth-child(6) { transition-delay: .35s; }
.steps-ph { display: grid; grid-template-columns: 1.28fr 1fr 1fr; gap: 14px; height: clamp(300px, 34vw, 520px); margin-top: clamp(40px, 5vw, 72px); }
.sp { position: relative; margin: 0; border-radius: var(--Rc); overflow: hidden; background: var(--stone); }
.sp1 { border-radius: var(--R); }
.sp-f { position: absolute; inset: 0; overflow: hidden; }
.sp-f img { position: absolute; inset: -7% 0; width: 100%; height: 114%; object-fit: cover; }
@media (max-width: 1200px) { .steps-row { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 26px; } }
@media (max-width: 699px) {
  .steps-row { grid-template-columns: minmax(0, 1fr); row-gap: 18px; }
  .st-p { margin: 10px 6px 0; }
  .steps-ph { grid-template-columns: 1fr 1fr; grid-template-rows: auto auto; height: auto; gap: 10px; }
  .sp1 { grid-column: 1 / -1; aspect-ratio: 4 / 4.2; }
  .sp2, .sp3 { aspect-ratio: 3 / 4; }
}

/* ---------------------------------------------------------------- 11. prices */
.price, .rev { padding: clamp(10px, 2vw, 30px) 12px; }
.band { max-width: 1640px; margin: 0 auto; padding: clamp(60px, 7vw, 116px) 0; border-radius: clamp(30px, 4vw, 60px); background: var(--stone); }
.price-in { width: min(100% - 2 * var(--g), 1392px); margin: 0 auto; display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(28px, 5vw, 90px); align-items: start; }
.price-l { position: sticky; top: calc(var(--hdr) + 16px); }
.price-l .p { margin-top: 18px; }
.tog { position: relative; display: inline-flex; margin: 28px 0 26px; padding: 5px; border-radius: 999px; background: var(--white); }
.tog-th { position: absolute; left: 0; top: 5px; bottom: 5px; width: var(--tw, 120px); transform: translateX(var(--tx, 5px)); border-radius: 999px; background: var(--aqua); transition: transform .55s var(--bounce), width .55s var(--bounce); }
.tog button { position: relative; z-index: 1; height: 48px; padding: 0 24px; border: 0; border-radius: 999px; background: none; cursor: pointer; font-weight: 700; font-size: 15.5px; }
.price-ph { position: relative; aspect-ratio: 4 / 3.3; border-radius: var(--R); overflow: hidden; background: var(--white); }
.pp { position: absolute; inset: 0; opacity: 0; transform: scale(1.06); transition: opacity .7s, transform 1.3s var(--spring); }
.pp.is-on { opacity: 1; transform: none; }
.pp img { width: 100%; height: 100%; object-fit: cover; }
.pn { padding: clamp(10px, 1.2vw, 16px) clamp(18px, 2.4vw, 36px) clamp(14px, 1.6vw, 22px); border-radius: var(--R); background: var(--white); }
.pn[hidden] { display: none; }
.plist { list-style: none; margin: 0; padding: 0; }
.plist li { display: flex; justify-content: space-between; align-items: baseline; gap: 18px; padding: 16px 0; border-bottom: 1px solid var(--line); font-size: clamp(16px, 1.3vw, 19px); font-weight: 600; letter-spacing: -.01em; }
.plist li:last-child { border-bottom: 0; }
.pv { flex: none; font-weight: 500; white-space: nowrap; }
.plist--s { margin-top: 4px; }
.pnotes { list-style: none; margin: 4px 0 0; padding: 16px 0 4px; border-top: 1px solid var(--line); font-size: 14.5px; line-height: 1.5; color: var(--muted); }
.pnotes li { position: relative; padding: 4px 0 4px 20px; }
.pnotes li::before { content: ''; position: absolute; left: 3px; top: 13px; width: 6px; height: 6px; border-radius: 50%; background: var(--muted); }
.pk { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; padding: 8px 0 16px; }
.pk-c { padding: clamp(18px, 2vw, 28px); border-radius: calc(var(--R) - 18px); background: var(--bg); }
.pk-c--g { background: var(--stone); }
.pk-n { font-weight: 800; font-size: clamp(30px, 2.8vw, 44px); letter-spacing: -.045em; line-height: 1; }
.pk-v { margin: 8px 0 16px; font-weight: 700; color: var(--muted); }
.pk-l { list-style: none; margin: 0; padding: 0; font-size: 15px; line-height: 1.42; }
.pk-l li { position: relative; padding: 8px 0 8px 26px; border-top: 1px solid var(--line); }
.pk-l li::before { content: ''; position: absolute; left: 3px; top: 14px; width: 11px; height: 6px; border-left: 2px solid var(--ink); border-bottom: 2px solid var(--ink); transform: rotate(-45deg); }
@media (max-width: 899px) {
  .price-in { grid-template-columns: minmax(0, 1fr); }
  .price-l { position: static; }
  .price-ph { aspect-ratio: 16 / 10; }
}
@media (max-width: 560px) {
  .pk { grid-template-columns: minmax(0, 1fr); }
  .plist li { font-size: 15.5px; padding: 14px 0; gap: 12px; }
  .pv { font-size: 14.5px; }
}

/* ---------------------------------------------------------------- 12. myths */
.myth { padding: clamp(90px, 11vw, 160px) 0; }
.myth-in { display: grid; grid-template-columns: minmax(0, .86fr) minmax(0, 1.14fr); gap: clamp(28px, 5vw, 90px); align-items: start; }
.myth-l { position: sticky; top: calc(var(--hdr) + 16px); }
.myth-l .p { margin: 18px 0 28px; }
.myth-ph { position: relative; aspect-ratio: 4 / 4.3; border-radius: var(--R); overflow: hidden; background: var(--stone); }
.myth-ph img { position: absolute; inset: -7% 0; width: 100%; height: 114%; object-fit: cover; }
.myth-ph .tag { left: 16px; top: 16px; }
.myth-list { display: grid; gap: 12px; list-style: none; margin: 0; padding: 0; }
.mc { padding: clamp(22px, 2.4vw, 34px); border-radius: var(--Rc); background: var(--white); }
.mc-q { margin-bottom: 16px; font-size: clamp(20px, 1.8vw, 27px); font-weight: 700; letter-spacing: -.026em; line-height: 1.25; }
.vd { display: inline-flex; align-items: center; height: 32px; padding: 0 14px; border-radius: 999px; font-size: 13px; font-weight: 800; letter-spacing: .02em; }
.vd--no { background: var(--ink); color: var(--white); }
.vd--half { box-shadow: inset 0 0 0 2px var(--ink); }
.mc-a { margin-top: 14px; font-size: 16.5px; line-height: 1.6; color: var(--muted); max-width: 62ch; }
@media (max-width: 899px) {
  .myth-in { grid-template-columns: minmax(0, 1fr); }
  .myth-l { position: static; }
  .myth-ph { aspect-ratio: 16 / 11; }
}

/* ---------------------------------------------------------------- 13. reviews */
.rev-head, .rev-flow { width: min(100% - 2 * var(--g), 1392px); margin-inline: auto; }
.rev-head { margin-bottom: clamp(34px, 4vw, 58px); }
.rev-flow { columns: 3 300px; column-gap: 14px; }
.bub, .rev-ph { break-inside: avoid; margin: 0 0 14px; }
.bub { padding: 24px 26px 20px; border-radius: var(--Rc) var(--Rc) var(--Rc) 8px; background: var(--white); }
.bub blockquote { margin: 0; padding: 0; }
.bub blockquote p { font-size: clamp(17px, 1.32vw, 20px); font-weight: 500; line-height: 1.52; letter-spacing: -.01em; }
.bub figcaption { margin-top: 14px; font-size: 12.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.rev-ph { border-radius: var(--Rc); overflow: hidden; background: var(--white); }
.rev-ph img { width: 100%; height: auto; aspect-ratio: 4 / 3.4; object-fit: cover; }

/* ---------------------------------------------------------------- 14. contact */
.contact { padding: clamp(90px, 11vw, 160px) 0 clamp(40px, 5vw, 70px); }
.ct-panel { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr); gap: clamp(28px, 5vw, 80px); padding: clamp(24px, 4.4vw, 70px); border-radius: clamp(32px, 4vw, 60px); background: var(--white); }
.ct-h { font-size: clamp(34px, 4vw, 64px); }
.ct-phone { display: inline-block; margin: clamp(24px, 3vw, 40px) 0 clamp(22px, 3vw, 36px); font-weight: 800; font-size: clamp(36px, 5.4vw, 96px); letter-spacing: -.05em; line-height: 1; text-decoration: none; }
.ct-phone:hover { color: #0E8FAA; }
.ct-btns { display: flex; flex-wrap: wrap; gap: clamp(14px, 2vw, 26px); }
.rbtn { display: flex; flex-direction: column; align-items: center; gap: 10px; text-decoration: none; font-size: 13.5px; font-weight: 700; }
.rbtn-c { display: grid; place-items: center; width: clamp(58px, 5vw, 72px); height: clamp(58px, 5vw, 72px); border-radius: 50%; background: var(--bg); transition: background-color .25s; }
.rbtn:hover .rbtn-c { background: var(--stone); }
.rbtn--aqua .rbtn-c, .rbtn--aqua:hover .rbtn-c { background: var(--aqua); }
.rbtn .ic { width: 24px; height: 24px; }
.ct-meta { display: grid; gap: 10px; margin: clamp(28px, 3vw, 44px) 0 0; padding: 0; list-style: none; font-size: 15.5px; color: var(--muted); }
.ct-form { display: grid; gap: 16px; align-content: start; min-width: 0; padding: clamp(20px, 2.6vw, 36px); border-radius: var(--Rc); background: var(--bg); }
.ct-ft { margin-bottom: 2px; font-weight: 800; font-size: clamp(22px, 1.8vw, 28px); letter-spacing: -.03em; }
.fld { display: grid; gap: 7px; min-width: 0; margin: 0; padding: 0; border: 0; }
.fld label, .fld legend { padding: 0; font-size: 13.5px; font-weight: 700; }
.fld legend { margin-bottom: 7px; }
.fld input, .fld textarea {
  width: 100%; height: 54px; padding: 0 22px; border: 0; border-radius: 999px; background: var(--white); color: var(--ink);
  font: inherit; font-size: 16px; box-shadow: inset 0 0 0 1px var(--line); transition: box-shadow .25s;
}
.fld textarea { height: auto; min-height: 112px; padding: 16px 22px; border-radius: 24px; resize: vertical; }
.fld input:focus, .fld textarea:focus { outline: none; box-shadow: inset 0 0 0 2px var(--aqua); }
.ck { display: flex; flex-wrap: wrap; gap: 8px; }
.ckc { position: relative; }
.ckc input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.ckc span {
  display: inline-flex; align-items: center; min-height: 40px; padding: 6px 16px; border-radius: 999px; background: var(--white);
  font-size: 14.5px; font-weight: 600; line-height: 1.25; cursor: pointer; box-shadow: inset 0 0 0 1px var(--line); transition: background-color .2s, box-shadow .2s;
}
.ckc input:checked + span { background: var(--aqua); box-shadow: none; }
.ckc input:focus-visible + span { outline: 2.5px solid var(--aqua); outline-offset: 2px; }
.ct-send { justify-self: start; margin-top: 4px; }
.ct-done { padding: 16px 20px; border-radius: 20px; background: var(--white); font-weight: 600; line-height: 1.5; opacity: 0; transform: translateY(8px); transition: opacity .4s, transform .6s var(--spring); }
.ct-done.show { opacity: 1; transform: none; }
.ct-done[hidden] { display: none; }
@media (max-width: 899px) { .ct-panel { grid-template-columns: minmax(0, 1fr); } }

/* ---------------------------------------------------------------- shared two-column heads, phones */
.lp-head, .caps-head, .svc-head, .auto-head, .steps-head, .rev-head { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(20px, 4vw, 64px); align-items: end; }
@media (max-width: 899px) {
  .lp-head, .caps-head, .svc-head, .auto-head, .steps-head, .rev-head { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .water-in, .lp-body { grid-template-columns: minmax(0, 1fr); }
  .w-media { order: 2; }
  .lp-frame { aspect-ratio: 4 / 4.4; }
  .lp-side { gap: 18px; }
  .lp-thumbs { flex-wrap: nowrap; overflow-x: auto; padding: 8px 6px; margin: -8px -6px; scrollbar-width: none; }
  .lp-thumbs::-webkit-scrollbar { display: none; }
  .lp-th { flex: none; width: 58px; height: 58px; }
}
@media (max-width: 560px) {
  .p { font-size: 16px; }
  .reels-head { flex-direction: column; align-items: flex-start; }
  .reels-nav { display: none; }
  .rev-flow { columns: 1; }
  .ct-btns { gap: 12px; justify-content: space-between; }
  .rbtn { font-size: 12.5px; }
  .ct-btns { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
  .rbtn { min-width: 0; text-align: center; }
  .rbtn-c { width: 56px; height: 56px; }
}
@media (max-width: 400px) {
  .k-cta { flex-wrap: nowrap; gap: 8px; }
  .k-cta .pill { flex: 1 1 auto; min-width: 0; height: 50px; padding: 0 14px 0 12px; gap: 8px; font-size: 14.5px; }
  .k-cta .pill .ic { width: 18px; height: 18px; }
}
@media (max-width: 340px) { .k-cta { flex-wrap: wrap; } .k-cta .pill { flex: 0 1 auto; } }

/* ================================================================ WEBSITE COMPONENTS (01.10.2026) */
.skip { position: fixed; left: 12px; top: -80px; z-index: 1000; padding: 12px 18px; border-radius: 999px; background: var(--ink); color: var(--white); font-weight: 700; text-decoration: none; transition: top .3s var(--spring); }
.skip:focus { top: 12px; }

/* ---------------------------------------------------------------- services dropdown under the island */
.isl-drop {
  position: absolute; top: calc(100% + 10px); left: 50%; width: min(calc(100vw - 24px), 900px); padding: 12px;
  border-radius: 36px; background: var(--white); box-shadow: 0 34px 70px -30px rgba(16, 21, 24, .38);
  opacity: 0; transform: translate(-50%, -14px) scale(.97); transform-origin: 50% 0; transition: opacity .28s, transform .6s var(--bounce);
}
.isl-drop.open { opacity: 1; transform: translate(-50%, 0) scale(1); }
.isl-drop[hidden] { display: none; }
.dd-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; list-style: none; margin: 0; padding: 0; }
.dd-card { display: flex; align-items: center; gap: 14px; padding: 8px 14px 8px 8px; border-radius: 26px; text-decoration: none; transition: background-color .25s; }
.dd-card:hover, .dd-card[aria-current="page"] { background: var(--bg); }
.dd-ph { position: relative; flex: none; width: 74px; height: 74px; border-radius: 20px; overflow: hidden; background: var(--stone); }
.dd-ph img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--spring); }
.dd-card:hover .dd-ph img { transform: scale(1.08); }
.dd-tx { display: grid; gap: 3px; min-width: 0; }
.dd-n { font-weight: 800; font-size: 16.5px; letter-spacing: -.02em; line-height: 1.2; }
.dd-d { font-size: 13.5px; color: var(--muted); line-height: 1.35; }
.dd-foot { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; padding: 8px 4px 2px; border-top: 1px solid var(--line); }
.dd-l { display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 16px 0 18px; border-radius: 999px; text-decoration: none; font-weight: 700; font-size: 14.5px; transition: background-color .25s; }
.dd-l .ic { width: 16px; height: 16px; }
.dd-l:hover, .dd-l[aria-current="page"] { background: var(--bg); }

/* ---------------------------------------------------------------- page hero (inner pages) */
.ph { position: relative; padding-top: calc(var(--hdr) + clamp(18px, 3vw, 44px)); }
.bc { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; list-style: none; margin: 0 0 clamp(18px, 2.4vw, 30px); padding: 0; font-size: 13.5px; font-weight: 600; }
.bc li { display: flex; align-items: center; gap: 6px; color: var(--muted); }
.bc li + li::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: rgba(16, 21, 24, .28); }
.bc a { display: inline-flex; align-items: center; min-height: 32px; padding: 4px 13px; border-radius: 999px; background: var(--white); text-decoration: none; color: var(--ink); transition: background-color .25s; }
.bc a:hover { background: var(--stone); }
.ph-copy { display: grid; grid-template-columns: minmax(0, 1fr) minmax(270px, 400px); column-gap: clamp(28px, 5vw, 90px); align-items: end; }
.ph-eye { grid-column: 1 / -1; margin-bottom: 14px; }
.ph-h1 { font-weight: 800; font-size: clamp(46px, 7.4vw, 128px); letter-spacing: -.055em; line-height: .95; text-wrap: balance; }
.ph-h1 .ln-i { white-space: normal; }
.ph-side { padding-bottom: .4em; }
.ph-lead { font-size: clamp(16.5px, 1.25vw, 19px); line-height: 1.55; color: var(--muted); margin-bottom: 20px; }
.ph-cta { display: flex; flex-wrap: wrap; gap: 10px; }
/* width is explicit: with aspect-ratio + a page-set height the browser would derive the width from the ratio */
.ph-frame { position: relative; width: 100%; margin-top: clamp(26px, 3.4vw, 48px); height: clamp(340px, 62svh, 720px); border-radius: var(--R); overflow: hidden; background: var(--stone); }
.ph-mask { position: absolute; inset: 0; border-radius: inherit; overflow: hidden; }
.ph-mask > img, .ph-mask > video, .ph-in, .ph-in > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ph-cap { position: absolute; right: 16px; bottom: 16px; z-index: 2; max-width: calc(100% - 32px); padding: 9px 16px; border-radius: 999px; background: rgba(255, 255, 255, .95); font-size: 13.5px; font-weight: 600; line-height: 1.3; }
.mo .ph-mask { animation: kopen 1.5s var(--io) .15s both; }
.mo .ph-mask.opened { animation: none; }
.mo .ph-mask > img, .mo .ph-in { animation: kzoom 2.4s var(--spring) .15s both; }
.mo .ph-h1 .ln-i { animation: lnup 1.3s var(--spring) .05s both; }
.mo .ph-h1 .ln + .ln .ln-i { animation-delay: .17s; }
.mo .ph-eye, .mo .ph-side, .mo .bc { animation: fadeup 1.1s var(--spring) .4s both; }
@media (max-width: 400px) {
  .ph-cta { flex-wrap: nowrap; gap: 8px; }
  .ph-cta .pill { flex: 1 1 auto; min-width: 0; height: 50px; padding: 0 14px 0 12px; gap: 8px; font-size: 14.5px; }
  .ph-cta .pill .ic { width: 18px; height: 18px; }
}
@media (max-width: 340px) { .ph-cta { flex-wrap: wrap; } .ph-cta .pill { flex: 0 1 auto; } }
/* 1000 to 1199: the headline column sits beside the side column; long words (Озонирование.) must not clip in .ln */
@media (min-width: 1000px) and (max-width: 1199px) { .ph-h1 { font-size: 6.2vw; } }
@media (max-width: 999px) { .ph-copy { grid-template-columns: minmax(0, 1fr); } .ph-side { margin-top: 20px; max-width: 600px; padding-bottom: 0; } }
@media (max-width: 699px) { .ph-h1 { font-size: clamp(40px, 12.4vw, 64px); } .ph-frame { height: auto; aspect-ratio: 4 / 4.4; } .ph-cap { right: 10px; bottom: 10px; font-size: 12.5px; } }

/* ---------------------------------------------------------------- section heads, links, generic blocks */
.sec { padding: clamp(70px, 9vw, 140px) 0; }
.sec--t { padding-top: clamp(40px, 5vw, 80px); }
.sh { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(18px, 4vw, 64px); align-items: end; margin-bottom: clamp(30px, 3.6vw, 54px); }
.sh-p { color: var(--muted); font-size: clamp(16.5px, 1.2vw, 18.5px); line-height: 1.6; max-width: 46ch; }
.sh-q { font-size: clamp(19px, 1.6vw, 24px); font-weight: 600; letter-spacing: -.02em; line-height: 1.38; max-width: 40ch; }
@media (max-width: 899px) { .sh { grid-template-columns: minmax(0, 1fr); gap: 14px; } }
.more { display: inline-flex; align-items: center; gap: 10px; height: 52px; padding: 0 20px 0 22px; border-radius: 999px; background: var(--white); box-shadow: var(--shadow); text-decoration: none; font-weight: 700; font-size: 15.5px; white-space: nowrap; transition: box-shadow .3s; }
.more:hover { box-shadow: 0 1px 2px rgba(16, 21, 24, .06), 0 20px 40px -18px rgba(16, 21, 24, .3); }
.more .ic { width: 18px; height: 18px; transition: transform .45s var(--spring); }
.more:hover .ic { transform: translateX(3px); }
.more-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: clamp(26px, 3vw, 40px); }
.more { max-width: 100%; height: auto; min-height: 52px; padding-top: 12px; padding-bottom: 12px; white-space: normal; line-height: 1.3; text-align: left; }
.prose { max-width: 62ch; color: var(--muted); font-size: clamp(16.5px, 1.2vw, 18.5px); line-height: 1.65; }
.prose p + p { margin-top: 1em; }
.prose strong { color: var(--ink); font-weight: 700; }
.tile { position: relative; margin: 0; border-radius: var(--Rc); overflow: hidden; background: var(--stone); }
.tile > img { width: 100%; height: 100%; object-fit: cover; }
.tile .px { position: absolute; inset: 0; overflow: hidden; }
.tile .px > img { position: absolute; inset: -7% 0; width: 100%; height: 114%; object-fit: cover; }
.tile figcaption { position: absolute; left: 12px; bottom: 12px; z-index: 2; max-width: calc(100% - 24px); margin: 0; padding: 8px 14px; border-radius: 999px; background: rgba(255, 255, 255, .95); font-size: 13px; font-weight: 600; line-height: 1.3; pointer-events: none; }

/* ---------------------------------------------------------------- owner video (click to play, with sound) */
.ov { position: relative; aspect-ratio: 9 / 16; border-radius: var(--R); overflow: hidden; background: var(--stone); }
.ov-v { width: 100%; height: 100%; object-fit: cover; }
.ov-play { position: absolute; left: 50%; top: 50%; display: grid; place-items: center; width: 92px; height: 92px; margin: -46px 0 0 -46px; border: 0; border-radius: 50%; background: var(--aqua); cursor: pointer; box-shadow: 0 20px 40px -16px rgba(16, 21, 24, .5); transition: transform .5s var(--bounce), opacity .3s; }
.ov-play:hover { transform: scale(1.08); }
.ov-tri { width: 0; height: 0; margin-left: 6px; border-style: solid; border-width: 14px 0 14px 22px; border-color: transparent transparent transparent var(--ink); }
.ov.is-on .ov-play { opacity: 0; pointer-events: none; }

/* ---------------------------------------------------------------- closing call panel */
.cta { padding: clamp(60px, 8vw, 120px) 0 clamp(30px, 4vw, 60px); }
.cta-panel { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(14px, 2vw, 24px); padding: 14px; border-radius: clamp(32px, 4vw, 56px); background: var(--white); }
.cta-ph { position: relative; min-height: 360px; margin: 0; border-radius: calc(clamp(32px, 4vw, 56px) - 14px); overflow: hidden; background: var(--stone); }
.cta-ph img { position: absolute; inset: -7% 0; width: 100%; height: 114%; object-fit: cover; }
.cta-tx { padding: clamp(20px, 3.4vw, 56px) clamp(14px, 3vw, 50px) clamp(20px, 3vw, 44px); min-width: 0; }
.cta-h { font-size: clamp(32px, 3.6vw, 58px); }
.cta-facts { margin-top: clamp(22px, 2.6vw, 34px); font-size: 14.5px; font-weight: 600; color: var(--muted); }
.cta-more { margin-top: 22px; }
@media (max-width: 899px) { .cta-panel { grid-template-columns: minmax(0, 1fr); } .cta-ph { min-height: 0; aspect-ratio: 16 / 10; } }

/* ---------------------------------------------------------------- next service card */
.nxt { padding: 0 0 clamp(30px, 4vw, 60px); }
.nxt-a { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 20px; min-height: clamp(220px, 26vw, 360px); padding: clamp(14px, 2vw, 24px); border-radius: var(--R); overflow: hidden; background: var(--stone); color: var(--ink); text-decoration: none; isolation: isolate; }
.nxt-ph { position: absolute; inset: 0; z-index: -1; }
.nxt-ph img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s var(--spring); }
.nxt-a:hover .nxt-ph img { transform: scale(1.05); }
.nxt-card { display: grid; gap: 6px; padding: 18px 22px 20px; border-radius: calc(var(--R) - 14px); background: rgba(255, 255, 255, .96); max-width: 520px; }
.nxt-l { font-size: 12.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.nxt-t { font-weight: 800; font-size: clamp(28px, 3vw, 46px); letter-spacing: -.045em; line-height: 1; }
.nxt-d { font-size: 15px; color: var(--muted); }
.nxt-go { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; background: var(--aqua); transition: transform .5s var(--bounce); }
.nxt-a:hover .nxt-go { transform: scale(1.1) rotate(-8deg); }

/* ---------------------------------------------------------------- footer */
.ft { padding: clamp(40px, 5vw, 70px) 0 clamp(26px, 3vw, 40px); }
.ft-in { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, .8fr) minmax(0, 1fr) minmax(0, 1.2fr); gap: 28px; padding-top: clamp(30px, 3.4vw, 50px); border-top: 1px solid var(--line); }
.ft-logo img { width: auto; height: 32px; }
.ft-area { margin-top: 14px; font-weight: 700; font-size: 15px; }
.ft-note { margin-top: 4px; font-size: 14.5px; color: var(--muted); max-width: 32ch; }
.ft-lang { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 18px; }
.ft-lang a { display: inline-flex; align-items: center; min-height: 36px; padding: 6px 14px; border-radius: 999px; background: var(--white); text-decoration: none; font-size: 14px; font-weight: 600; }
.ft-lang a[aria-current="true"] { box-shadow: inset 0 0 0 1.5px var(--ink); }
.ft-col { display: grid; align-content: start; gap: 7px; min-width: 0; }
.ft-h { margin-bottom: 6px; font-size: 12.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.ft-col a { width: fit-content; max-width: 100%; text-decoration: none; font-weight: 600; font-size: 15px; }
.ft-col a:hover { text-decoration: underline; text-underline-offset: 4px; }
.ft-col .ft-tel { font-weight: 800; font-size: 19px; letter-spacing: -.02em; }
.ft-bot { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; margin-top: clamp(30px, 4vw, 54px); font-size: 13.5px; color: var(--muted); }
@media (max-width: 999px) { .ft-in { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .ft-a { grid-column: 1 / -1; } }
@media (max-width: 480px) { .ft-in { row-gap: 30px; } .ft-col:last-child { grid-column: 1 / -1; } .ft-bot { flex-direction: column; gap: 4px; } }

/* ---------------------------------------------------------------- contact panel additions */
.ct-meta li { display: flex; align-items: center; gap: 10px; }
.ct-meta li > .ic { color: var(--ink); }
.ct-fl { margin: -8px 0 4px; font-size: 14.5px; line-height: 1.5; color: var(--muted); }
.ct-acts { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 4px; }
.ct-err { padding: 12px 18px; border-radius: 18px; background: #FDECEC; color: #8A1C1C; font-weight: 600; font-size: 14.5px; line-height: 1.45; }
.ct-err[hidden] { display: none; }
.fld input[aria-invalid="true"] { box-shadow: inset 0 0 0 2px #D64545; }
.ct-priv { font-size: 13px; color: var(--muted); line-height: 1.45; }
.fld--est { position: relative; padding: 14px 52px 14px 18px; border-radius: 22px; background: var(--white); box-shadow: inset 0 0 0 2px var(--aqua); }
.fld--est[hidden] { display: none; }
.est-l { font-size: 12.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.est-t { margin-top: 4px; font-size: 14.5px; font-weight: 600; line-height: 1.45; white-space: pre-line; }
.est-x { position: absolute; right: 10px; top: 10px; display: grid; place-items: center; width: 34px; height: 34px; padding: 0; border: 0; border-radius: 50%; background: var(--bg); cursor: pointer; }
.est-x .ic { width: 16px; height: 16px; }
@media (max-width: 420px) { .ct-acts .pill { flex: 1 1 100%; } }

/* ---------------------------------------------------------------- home: links into the full site */
.lp-more { align-self: flex-start; }
.auto-btns { display: flex; flex-wrap: wrap; gap: 10px; }
.svc-go { align-self: flex-start; margin-top: 20px; }
.price-more { margin-top: 14px; }
.rev-more { width: min(100% - 2 * var(--g), 1392px); margin: clamp(20px, 2.4vw, 30px) auto 0; }
@media (max-width: 899px) { .svc-go { margin: 16px 10px 0; } }

/* ---------------------------------------------------------------- floating contact capsule (bottom right) */
.fab {
  position: fixed; right: max(14px, env(safe-area-inset-right)); bottom: max(14px, env(safe-area-inset-bottom)); z-index: 880;
  display: flex; align-items: center; gap: 6px; padding: 6px; border-radius: 999px; background: var(--white);
  box-shadow: 0 1px 1px rgba(16, 21, 24, .05), 0 18px 44px -16px rgba(16, 21, 24, .32);
  opacity: 0; transform: translateY(24px) scale(.9); transform-origin: 100% 100%; pointer-events: none;
  transition: opacity .45s, transform .8s var(--bounce);
}
.fab.on { opacity: 1; transform: none; pointer-events: auto; }
.fab.on.off { opacity: 0; transform: translateY(24px) scale(.9); pointer-events: none; }
.fab-b {
  position: relative; display: grid; place-items: center; flex: none; width: 48px; height: 48px; padding: 0; border: 0; border-radius: 50%;
  background: var(--bg); color: var(--ink); cursor: pointer; text-decoration: none; transition: background-color .25s, transform .45s var(--bounce);
}
.fab-ck { width: 42px; height: 42px; }
.fab-ck .ic { width: 19px; height: 19px; }
.fab-b:hover { background: var(--stone); transform: scale(1.06); }
.fab-call {
  position: relative; display: inline-flex; align-items: center; gap: 9px; height: 48px; padding: 0 20px 0 6px; border-radius: 999px;
  background: var(--aqua); color: var(--ink); text-decoration: none; font-weight: 800; font-size: 15px; letter-spacing: -.01em; white-space: nowrap;
  transition: background-color .25s;
}
.fab-call:hover { background: #2BC1DE; }
.fab-ci { position: relative; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: rgba(255, 255, 255, .5); }
.fab-ci .ic { width: 18px; height: 18px; }
.mo .fab.on .fab-ci::after {
  content: ""; position: absolute; inset: 0; border-radius: 50%; box-shadow: 0 0 0 0 rgba(255, 255, 255, .85);
  animation: fabping 5.5s var(--spring) 2.2s infinite;
}
@keyframes fabping { 0% { box-shadow: 0 0 0 0 rgba(255, 255, 255, .85); } 18% { box-shadow: 0 0 0 12px rgba(255, 255, 255, 0); } 100% { box-shadow: 0 0 0 12px rgba(255, 255, 255, 0); } }
.fab-l--m { display: none; }
@media (hover: hover) and (pointer: fine) {
  .fab-b::after {
    content: attr(data-tip); position: absolute; right: -6px; bottom: calc(100% + 14px); padding: 9px 14px; border-radius: 999px;
    background: var(--white); box-shadow: 0 12px 30px -12px rgba(16, 21, 24, .35); color: var(--ink); font-size: 13.5px; font-weight: 700;
    white-space: nowrap; opacity: 0; transform: translateY(6px); pointer-events: none; transition: opacity .25s, transform .45s var(--spring);
  }
  .fab-b:hover::after, .fab-b:focus-visible::after { opacity: 1; transform: none; }
}
@media (max-width: 699px) {
  .fab { gap: 5px; padding: 5px; }
  .fab-b { width: 46px; height: 46px; }
  .fab-ck { width: 40px; height: 40px; }
  .fab-call { height: 46px; padding-right: 16px; font-size: 14.5px; }
  .fab-l--d { display: none; }
  .fab-l--m { display: inline; }
}
@media print { .fab, .cc { display: none !important; } }

/* ---------------------------------------------------------------- cookie consent card (bottom left; class cc, .ck is the form checkbox group) */
.cc {
  position: fixed; left: max(14px, env(safe-area-inset-left)); bottom: max(14px, env(safe-area-inset-bottom)); z-index: 890;
  width: min(476px, calc(100vw - 28px)); max-height: calc(100svh - 110px); overflow-y: auto; overscroll-behavior: contain;
  padding: 22px 22px 18px; border-radius: 30px; background: var(--white);
  box-shadow: 0 1px 1px rgba(16, 21, 24, .05), 0 30px 70px -26px rgba(16, 21, 24, .42);
  opacity: 0; transform: translateY(26px) scale(.96); transform-origin: 0 100%; transition: opacity .35s, transform .7s var(--bounce);
}
.cc.show { opacity: 1; transform: none; }
.cc[hidden] { display: none; }
.cc-h { display: flex; align-items: center; gap: 10px; font-weight: 800; font-size: 18px; letter-spacing: -.02em; }
.cc-h .ic { width: 22px; height: 22px; }
.cc-p { margin-top: 10px; font-size: 14.5px; line-height: 1.55; color: var(--muted); }
.cc-p a { color: var(--ink); font-weight: 600; text-underline-offset: 3px; }
.cc-set { display: grid; margin: 14px 0 2px; }
.cc-set[hidden] { display: none; }
.cc-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 0; border-top: 1px solid var(--line); }
.cc-n { font-weight: 700; font-size: 15px; }
.cc-d { margin-top: 2px; font-size: 13.5px; line-height: 1.45; color: var(--muted); }
.sw { position: relative; flex: none; width: 52px; height: 30px; padding: 0; border: 0; border-radius: 999px; background: var(--stone); cursor: pointer; transition: background-color .3s; }
.sw span { position: absolute; left: 3px; top: 3px; width: 24px; height: 24px; border-radius: 50%; background: var(--white); box-shadow: 0 2px 6px rgba(16, 21, 24, .22); transition: transform .5s var(--bounce); }
.sw[aria-checked="true"] { background: var(--aqua); }
.sw[aria-checked="true"] span { transform: translateX(22px); }
.sw[aria-disabled="true"] { opacity: .55; cursor: default; }
.cc-acts { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 16px; }
.cc-acts .pill { height: 46px; padding: 0 18px; font-size: 15px; }
.cc-acts .pill[hidden], .cc-lnk[hidden] { display: none; }
.cc-lnk { height: 46px; padding: 0 10px; border: 0; background: none; cursor: pointer; font-weight: 700; font-size: 15px; text-decoration: underline; text-underline-offset: 4px; text-decoration-color: rgba(16, 21, 24, .3); }
.cc-ok { display: flex; align-items: center; gap: 8px; margin-top: 12px; font-weight: 700; font-size: 14.5px; }
.cc-ok[hidden] { display: none; }
@media (max-width: 699px) {
  .cc { left: 10px; right: 10px; bottom: max(10px, env(safe-area-inset-bottom)); width: auto; padding: 20px 18px 16px; border-radius: 26px; }
  .cc-acts .pill { flex: 1 1 auto; }
}

/* footer legal row */
.ft-legal { display: flex; flex-wrap: wrap; gap: 6px 16px; }
.ft-legal a, .ft-ck { padding: 0; border: 0; background: none; color: inherit; font: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(16, 21, 24, .25); }
.ft-legal a:hover, .ft-ck:hover { color: var(--ink); }
/* photo captions sit bottom LEFT so the floating capsule never covers them */
.kf-cap { right: auto; left: 16px; }
.kf-t { justify-self: start; }
.ph-cap { right: auto; left: 16px; }
@media (max-width: 699px) { .kf-cap, .ph-cap { left: 10px; right: auto; top: 10px; bottom: auto; } .kf-t { align-self: start; } }
/* a before/after frame keeps its PRE / POSLE tags on top: there the caption stays at the bottom */
@media (max-width: 699px) { .ph-frame:has(.cmp) .ph-cap { top: auto; bottom: 10px; max-width: calc(100% - 20px); } }
/* keep the last lines of the page clear of the capsule */
.ft { padding-bottom: calc(clamp(26px, 3vw, 40px) + 70px); }

/* ---------------------------------------------------------------- reduced motion: everything static and visible */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; transition-delay: 0s !important; scroll-behavior: auto !important; }
  .js .rv { opacity: 1; transform: none; }
}
