

/* Start:/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/product.css?179418528817176*/
/* T-012: scoped pilot. Sizes below are design proposals, not measured Figma product tokens. */
.do-product-page { margin:0; color:var(--do-text); background:var(--do-surface); font-family:var(--do-font); }
.do-product, .do-product * { box-sizing:border-box; }
.do-product { --do-product-muted:#656565; font-size:15px; line-height:1.65; }
.do-product button, .do-product a { -webkit-tap-highlight-color:transparent; }
.do-product button { font:inherit; cursor:pointer; }
.do-product a { color:inherit; text-underline-offset:4px; }
.do-product :focus-visible, .do-product__skip:focus-visible { outline:3px solid var(--do-brand); outline-offset:4px; }
.do-product__skip { position:absolute; top:-80px; left:24px; padding:12px; z-index:100; background:white; }
.do-product__skip:focus { top:8px; }
.do-product__container { width:min(var(--do-content-width),calc(100% - 48px)); margin-inline:auto; }
.do-product h1, .do-product h2, .do-product h3, .do-product p, .do-product figure, .do-product dl { margin:0; }
.do-product h1 { font-size:42px; font-weight:800; line-height:1.12; letter-spacing:-1.4px; margin:0 0 20px; }
.do-product h2 { font-size:32px; font-weight:800; line-height:1.2; letter-spacing:-.65px; margin-bottom:24px; }
.do-product h3 { font-size:17px; line-height:1.4; margin-bottom:12px; }
.do-product__breadcrumbs { display:flex; flex-wrap:wrap; gap:12px; padding:28px 0; font-size:12px; color:var(--do-product-muted); }
.do-product__breadcrumbs a { text-decoration:none; }
.do-product__hero {
  display:grid;
  grid-template-columns:minmax(0,1.18fr) minmax(0,1fr);
  grid-template-areas:"media top" "media bottom";
  gap:32px 48px;
  padding-bottom:56px;
  align-items:start;
}
.do-product__offer-top { grid-area:top; }
/* T-018: у новых товаров названия длиннее («Стоматологическая установка Intego»), и на
   планшете одно слово шире колонки карточки выталкивало всю страницу (775px при 768px).
   На страницах CJ-Optik/ExamVision названия короче — правило там ничего не меняет. */
.do-product__offer-top h1 { overflow-wrap:break-word; }
.do-product__offer-bottom { grid-area:bottom; }
.do-product__media-column { grid-area:media; align-self:stretch; min-width:0; }
.do-product__gallery { position:sticky; top:24px; }
.do-product__stage { position:relative; }
.do-product__image-button { display:block; position:relative; width:100%; border:1px solid var(--do-border); border-radius:24px; padding:16px; background:white; overflow:hidden; }
.do-product__main-image { display:block; width:100%; height:clamp(260px,calc(100dvh - 280px),470px); object-fit:contain; }
.do-product__enlarge-label { position:absolute; bottom:14px; right:18px; font-size:11px; background:white; padding:4px 8px; color:var(--do-product-muted); }
/* T-014 (F-005): explicit prev/next controls on the main stage image (not just thumbs/lightbox);
   disabled — not wrapped — at the first/last photo. Counter moved onto the image's own corner. */
/* T-015 (F-006): removed the permanent border ring — definition now comes from the
   drop-shadow only; :focus-visible (global rule, brand-color, 3px) still shows clearly. */
.do-product__stage-arrow { position:absolute; top:50%; z-index:2; display:flex; width:40px; height:40px; align-items:center; justify-content:center; transform:translateY(-50%); background:white; border:0; border-radius:999px; font-size:20px; line-height:1; box-shadow:0 4px 10px rgb(0 0 0 / 12%); }
.do-product__stage-arrow:hover:not(:disabled) { background:var(--do-surface-subtle); }
.do-product__stage-arrow:disabled { opacity:.35; cursor:default; }
.do-product__stage-arrow--prev { left:28px; }
.do-product__stage-arrow--next { right:28px; }
.do-product__stage-counter { position:absolute; left:28px; bottom:28px; z-index:2; padding:4px 10px; background:rgb(255 255 255 / 92%); border:1px solid var(--do-border); border-radius:999px; font-size:11px; color:var(--do-product-muted); }
.do-product__thumbs { display:flex; gap:10px; margin-top:12px; }
.do-product__thumb { width:110px; padding:5px; background:white; border:1px solid var(--do-border); border-radius:12px; color:var(--do-product-muted); }
.do-product__thumb[aria-pressed="true"] { border:2px solid var(--do-brand); padding:4px; color:var(--do-text); }
.do-product__thumb img { display:block; width:100%; height:64px; object-fit:contain; }
.do-product__brandline { display:flex; align-items:center; flex-wrap:wrap; gap:14px; margin:20px 0 0; font-size:12px; }
.do-product__brandline>a:first-child { font-size:15px; font-weight:700; }
.do-product__brandline span { color:var(--do-product-muted); }
.do-product__review-link { margin-left:auto; }
.do-product__eyebrow { text-transform:uppercase; font-size:11px; letter-spacing:1.4px; font-weight:600; color:var(--do-brand); margin-bottom:12px!important; }
/* T-015 (F-006): evidence-based spacing pass — unified the offer-top rhythm to a
   consistent 20px between h1/price/description/brandline/purchase (was 16/20/mixed
   padding-margin); cart-status kept intentionally tighter (12px, was 10px) since it is a
   direct confirmation of the purchase row above it, not a new block. Before/after
   measurements: ../../DentOptics/feedback/screenshots/T-015/MEASUREMENTS.md. */
.do-product__intro { color:var(--do-product-muted); margin-top:20px!important; }
.do-product__price-row { display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.do-product__price { font-size:28px; font-weight:800; letter-spacing:-.4px; }
.do-product__availability { display:inline-flex; align-items:center; gap:8px; padding:6px 14px; border-radius:999px; font-size:12px; font-weight:600; background:var(--do-surface-subtle); color:var(--do-product-muted); }
.do-product__availability--in-stock { background:#eaf7ee; color:#1f7a3d; }
.do-product__availability-dot { width:8px; height:8px; border-radius:50%; background:currentColor; flex-shrink:0; }
.do-product__availability-dot--pulse { animation:do-product-pulse 2s ease-in-out infinite; }
@keyframes do-product-pulse { 0%,100% { opacity:1; box-shadow:0 0 0 0 rgb(31 122 61 / 40%); } 50% { opacity:.85; box-shadow:0 0 0 5px rgb(31 122 61 / 0%); } }
.do-product__purchase { padding:24px; background:var(--do-surface-subtle); border-radius:24px; margin-top:20px; display:flex; flex-wrap:wrap; align-items:center; gap:12px; }
.do-product__qty { display:inline-flex; align-items:center; gap:0; border:1px solid var(--do-border); border-radius:999px; overflow:hidden; background:white; }
.do-product__qty button { width:40px; height:44px; background:transparent; border:0; font-size:16px; }
.do-product__qty button:hover { background:var(--do-surface-subtle); }
.do-product__qty-value { width:40px; height:44px; border:0; border-inline:1px solid var(--do-border); text-align:center; font:inherit; font-weight:700; background:transparent; }
.do-product__cta, .do-product__secondary, .do-product__buy { display:flex; align-items:center; justify-content:center; text-align:center; min-height:48px; padding:12px 22px; font-size:12px; line-height:1.5; font-weight:700; border:1px solid transparent; border-radius:999px; text-decoration:none; }
.do-product .do-product__cta { background:var(--do-brand); color:white; width:100%; font-size:12px; font-weight:700; }
.do-product__cta:hover { background:#9e0d20; }
.do-product__secondary { border-color:var(--do-text); background:transparent; }
.do-product__secondary:hover { background:var(--do-surface-subtle); }
/* T-014 (F-005): real, active, brand-colored CTA — the color IS var(--do-brand), the same
   #ba0f26 taken from the project's own design tokens/header (DentOptics' brand red, not a
   CJ-Optik-specific accent — this page sells on dentoptics.ru, not on a CJ-Optik microsite). */
.do-product__buy { background:var(--do-brand); color:white; flex:1 1 auto; }
.do-product__buy:hover { background:#9e0d20; }
.do-product__buy:active { background:#7d0a1a; }
.do-product__purchase .do-product__consult { width:100%; margin-top:0; }
.do-product__cart-status { min-height:16px; margin-top:12px!important; font-size:12px; color:#1f7a3d; }
/* T-026: compact contact actions, one row, no permanent frames or shadows. */
.do-product__messengers { display:flex; gap:10px; margin-top:20px; }
/* Keep the global :focus-visible outline for keyboard navigation. */
.do-product__msg-tile { display:flex; flex:1 1 0; flex-direction:column; align-items:center; justify-content:center; gap:4px; min-height:56px; padding:8px 4px; border:0; border-radius:8px; box-shadow:none; color:var(--do-text); text-decoration:none; }
.do-product__msg-tile:hover { background:var(--do-surface-subtle); }
.do-product__msg-tile svg { width:22px; height:22px; flex-shrink:0; }
.do-product__msg-tile img { display:block; width:24px; height:24px; flex-shrink:0; }
.do-product__msg-tile-label { font-size:10px; font-weight:600; text-align:center; line-height:1.2; }
.do-product__conditions { margin-top:16px; }
.do-product__conditions details { border-top:1px solid var(--do-border); }
.do-product__conditions summary { cursor:pointer; padding:17px 0; font-weight:600; font-size:13px; }
.do-product__conditions details p { padding:0 0 18px; font-size:13px; color:var(--do-product-muted); }
.do-product__nav { position:sticky; top:0; z-index:10; background:white; border-block:1px solid var(--do-border); }
.do-product__nav-inner { display:flex; gap:32px; overflow:auto; scrollbar-width:thin; }
.do-product__nav a { flex-shrink:0; padding:20px 0 18px; font-size:12px; font-weight:600; text-decoration:none; border-bottom:2px solid transparent; }
.do-product__nav a[aria-current] { color:var(--do-brand); border-color:var(--do-brand); }
.do-product__section { padding:72px 0; border-bottom:1px solid var(--do-border); scroll-margin-top:90px; }
.do-product__story { position:relative; isolation:isolate; overflow:hidden; display:grid; grid-template-columns:1fr 1fr; gap:72px; align-items:center; }
.do-product__story::before { content:''; position:absolute; z-index:-1; right:-120px; top:-170px; width:690px; height:690px; background:url('/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/../assets/home-hero/dentsply-red-shape.svg') center/contain no-repeat; opacity:.12; pointer-events:none; }
.do-product__story p:not(.do-product__eyebrow) { color:var(--do-product-muted); max-width:490px; }
.do-product__story figure img { width:100%; height:310px; object-fit:contain; display:block; mix-blend-mode:multiply; }
.do-product figcaption { font-size:11px; line-height:1.6; color:var(--do-product-muted); margin-top:16px; }
.do-product__text-link { display:inline-block; color:var(--do-brand)!important; font-weight:600; font-size:13px; margin-top:24px; text-decoration:underline; text-underline-offset:5px; background:none; border:0; padding:0; }
/* T-014 (F-005): compact card grid — a genuine restyle of specs, not the T-013 stacked
   full-width row list (kept the underlying <dt>/<dd> pairs, changed the container/layout). */
.do-product__specs-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; max-width:940px; }
.do-product__spec-card { padding:16px 18px; background:var(--do-surface-subtle); border-radius:16px; }
.do-product__spec-card dt { margin:0; color:var(--do-product-muted); font-size:11px; text-transform:uppercase; letter-spacing:.6px; }
.do-product__spec-card dd { margin:6px 0 0; font-weight:600; overflow-wrap:anywhere; }
.do-product__muted { color:var(--do-product-muted); font-size:12px; margin-top:20px!important; max-width:830px; }
.do-product__reviews { display:flex; align-items:center; justify-content:space-between; gap:60px; }
.do-product__reviews p { max-width:640px; color:var(--do-product-muted); }
.do-product__reviews>a { flex-shrink:0; }
/* T-014: compact standalone card row (icon + text + arrow), not the T-013 stacked block. */
.do-product__docs { margin-top:24px; }
.do-product__docs #docs-title { margin-bottom:10px!important; }
.do-product__doc { display:flex; align-items:center; gap:14px; padding:14px 18px; background:var(--do-surface-subtle); border-radius:16px; text-decoration:none; }
.do-product__doc:hover { background:#eee; }
.do-product__doc-icon { width:22px; height:22px; flex-shrink:0; color:var(--do-brand); }
.do-product__doc-text { display:flex; flex-direction:column; gap:2px; min-width:0; }
.do-product__doc-title { font-weight:700; font-size:13px; }
.do-product__doc-desc { font-size:12px; color:var(--do-product-muted); }
.do-product__doc-arrow { margin-left:auto; flex-shrink:0; color:var(--do-product-muted); }
.do-product__configuration { display:grid; grid-template-columns:repeat(3,1fr); gap:40px; }
.do-product__configuration p { color:var(--do-product-muted); }
.do-product__manufacturer { display:grid; grid-template-columns:1fr 2fr; gap:72px; align-items:center; border-bottom:0; }
.do-product__manufacturer-logo { display:flex; align-items:center; justify-content:center; background:var(--do-surface-subtle); border-radius:24px; min-height:200px; }
.do-product__manufacturer-logo img { width:220px; height:auto; object-fit:contain; max-width:80%; }
.do-product__manufacturer p { max-width:580px; }
.do-product__preview-note { padding:20px 24px; text-align:center; font-size:12px; background:var(--do-surface-subtle); color:var(--do-product-muted); }
.do-product__dialog, .do-product__lightbox { color:var(--do-text); font-family:var(--do-font); border:0; border-radius:24px; padding:32px; width:min(520px,calc(100% - 32px)); max-height:calc(100dvh - 32px); overflow:auto; }
.do-product dialog::backdrop { background:rgb(26 26 24 / 60%); }
.do-product__close { display:block; margin:0 0 24px auto; background:transparent; border:0; text-decoration:underline; padding:8px; min-height:40px; }
.do-product__dialog .do-product__cta { margin-top:24px; }
.do-product__dialog .do-product__secondary { margin-top:12px; }
.do-product__lightbox { width:min(1100px,calc(100% - 32px)); }
.do-product__lightbox>img { width:100%; height:calc(100dvh - 240px); min-height:120px; object-fit:contain; display:block; }
.do-product__lightbox-controls { display:flex; align-items:center; justify-content:space-between; gap:16px; padding-top:20px; font-size:12px; }
.do-product__lightbox-controls button { display:grid; place-items:center; width:44px; height:44px; padding:0; border:1px solid var(--do-border); background:white; border-radius:50%; font-size:30px; line-height:1; }
.do-product__lightbox-controls button:disabled { opacity:.4; cursor:default; }
@media (max-height:650px) { .do-product__gallery { position:static; } }
@media (max-width:1050px) { .do-product__hero { gap:28px; } .do-product h1 { font-size:34px; } .do-product__story { gap:32px; } }
/* Название/цена/статус/описание/бренд и отзывы/покупка (offer-top) идут до галереи,
   мессенджеры/условия (offer-bottom) — после. Не Figma-макет товара. */
@media (max-width:760px) {
 .do-product__container { width:calc(100% - 32px); }
 .do-product__hero {
   grid-template-columns:minmax(0,1fr);
   grid-template-areas:"top" "media" "bottom";
   gap:28px;
 }
 /* 2026-09-19: grid items default to min-width:auto, so a long unbroken word in the h1
    ("Стоматологический") refused to shrink below its own min-content width, overflowing
    the mobile column by ~12px even though the track itself was minmax(0,1fr) — found while
    checking 360px. */
 .do-product__offer-top, .do-product__media-column, .do-product__offer-bottom { min-width:0; }
 .do-product h1 { overflow-wrap:break-word; }
 .do-product__story, .do-product__manufacturer { grid-template-columns:1fr; gap:28px; }
 .do-product__gallery { position:static; }
 .do-product__main-image { height:320px; }
 .do-product__hero { padding-bottom:40px; }
 .do-product h1 { font-size:34px; }
 .do-product h2 { font-size:27px; }
 .do-product__price { font-size:24px; }
 .do-product__stage-arrow { width:34px; height:34px; font-size:17px; }
 .do-product__stage-arrow--prev { left:12px; }
 .do-product__stage-arrow--next { right:12px; }
 .do-product__stage-counter { left:12px; bottom:12px; }
 /* 2026-09-19: pre-existing overflow found while checking 390/360 — 6 fixed-110px thumbs
    (660px+) never wrapped or scrolled inside a ~328px mobile container, forcing horizontal
    page scroll. Only affects Advanced (only product with >1 photo). */
 .do-product__thumbs { overflow-x:auto; scrollbar-width:thin; padding-bottom:4px; }
 .do-product__thumb { flex-shrink:0; }
 .do-product__messengers { gap:8px; }
 .do-product__msg-tile { padding:8px 2px; }
 .do-product__nav-inner { gap:24px; }
 .do-product__section { padding:44px 0; }
 .do-product__specs-grid { grid-template-columns:1fr; }
 .do-product__reviews { align-items:start; flex-direction:column; gap:20px; }
 .do-product__configuration { grid-template-columns:1fr; gap:24px; }
 .do-product__purchase .do-product__buy, .do-product__purchase .do-product__consult { flex:1 1 100%; }
 .do-product__dialog { padding:22px; }
 .do-product__lightbox { padding:16px; }
 .do-product__lightbox-controls { gap:8px; font-size:10px; }
}

/* End */


/* Start:/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/story.css?179418528877992*/
/* Product Story chapters — shared across all 5 CJ-Optik microscope pages.
   Source: Figma aXFGbCtkDCUl6YzGHawqPo, canvas "CJ-Optik — Product Stories" (5600:44)
   and "LAB - Product story A - Figma AI" (5536:2, Flexion Advanced hybrid C, node 5550:2277).
   Each chapter can be light or dark per model — set via data-theme on the section,
   matching the exact per-model choice made in the Figma file (not a global toggle). */
.do-story { --do-story-radius-12:12px; display:block; scroll-margin-top:90px; }
.do-story [data-theme="dark"] { --do-story-surface:#171615; --do-story-text:#ffffff; --do-story-muted:#c2c1bf; --do-story-border:#504e4b; --do-story-accent:#ba0f26; }
.do-story [data-theme="light"] { --do-story-surface:#ffffff; --do-story-text:#2c2b2a; --do-story-muted:#686765; --do-story-border:#e5e4e2; --do-story-accent:#ba0f26; }

/* Chapter 1 — narrative hero (idea of the model). Always on a dark or light hero image bed. */
.do-story__hero { position:relative; isolation:isolate; overflow:hidden; display:flex; align-items:center; min-height:560px; padding:72px 0; background:var(--do-story-surface); color:var(--do-story-text); }
.do-story__hero-o { position:absolute; right:-80px; top:50%; transform:translateY(-50%); width:660px; height:654px; pointer-events:none; }
.do-story__hero-photo { position:absolute; inset:0; z-index:-1; }
.do-story__hero-photo img { position:absolute; right:0; top:-90px; width:57%; max-width:820px; height:auto; object-fit:contain; }
.do-story__hero[data-theme="dark"] .do-story__hero-photo::after { content:''; position:absolute; inset:0; background:linear-gradient(90deg,var(--do-story-surface) 0%,var(--do-story-surface) 42%,transparent 62%); }
.do-story__hero[data-theme="light"] .do-story__hero-photo::after { content:''; position:absolute; inset:0; background:linear-gradient(90deg,#ffffff 0%,#ffffff 42%,transparent 62%); }
.do-story__hero-text { position:relative; max-width:560px; display:flex; flex-direction:column; gap:20px; }
.do-story__hero-eyebrow { display:flex; align-items:center; gap:12px; font-size:11px; font-weight:600; letter-spacing:1.5px; text-transform:uppercase; opacity:.7; }
.do-story__hero-eyebrow::before { content:''; width:28px; height:2px; background:var(--do-story-accent); flex-shrink:0; }
.do-story__hero-title { font-size:56px; font-weight:800; line-height:1.12; margin:0; }
.do-story__hero-title .do-story__hero-dot { display:inline-block; width:9px; height:9px; margin-left:10px; border-radius:3px; background:var(--do-story-accent); vertical-align:middle; }
.do-story__hero-rule { width:48px; height:1px; background:currentColor; opacity:.15; }
.do-story__hero-body { font-size:16px; line-height:1.7; opacity:.75; max-width:420px; margin:0; }

/* Chapter 2 — detailed feature grid */
.do-story__features { background:#f8f9fa; padding:56px 0; }
.do-story__features-head { margin-bottom:40px; }
.do-story__grid { display:grid; grid-template-columns:repeat(3,1fr); gap:40px 24px; }
.do-story__feature { display:flex; flex-direction:column; gap:16px; }
.do-story__feature-photo { width:140px; height:140px; border-radius:70px; overflow:hidden; border:4px solid #fff; box-shadow:0 8px 24px rgb(0 0 0 / 10%); }
.do-story__feature-photo img { width:100%; height:100%; object-fit:cover; display:block; }
.do-story__feature-title { font-size:15px; font-weight:700; color:#2c2b2a; margin:0; }
.do-story__feature-desc { font-size:13px; line-height:1.55; color:#6c6b6a; margin:4px 0 0; max-width:220px; }

/* Chapter — reviews (generic gallery shared by 4 models, or model-specific for Advanced) */
.do-story__reviews { padding:56px 0; background:var(--do-story-surface); color:var(--do-story-text); }
.do-story__reviews > .do-product__container:first-child { display:flex; gap:48px; align-items:center; }
.do-story__reviews-head { flex-shrink:0; width:360px; display:flex; flex-direction:column; gap:16px; }
.do-story__reviews-kicker { font-size:13px; font-weight:700; letter-spacing:.65px; color:var(--do-story-accent); text-transform:uppercase; margin:0; }
.do-story__reviews-title { font-size:36px; font-weight:800; margin:0; }
.do-story__reviews-note { font-size:16px; color:var(--do-story-muted); margin:0; }
.do-story__reviews-gallery { flex:1 1 auto; min-width:0; }
.do-story__reviews-row { display:flex; gap:24px; overflow-x:auto; scrollbar-width:thin; }
/* ExamVision: the cards scroll inside the strip all the way to the viewport edge,
   while the heading and controls keep their places in the content grid. */
@media (min-width:761px) {
  .do-story__reviews--viewport-edge .do-story__reviews-row {
    width:calc(100% + max(24px, (100vw - var(--do-content-width)) / 2));
  }
}
.do-story__review-card { flex-shrink:0; width:340px; text-decoration:none; color:inherit; }
.do-story__review-photo { position:relative; width:100%; aspect-ratio:340/476; border-radius:12px; overflow:hidden; background:#1a1a1a; }
.do-story__review-photo img { width:100%; height:100%; object-fit:cover; display:block; }
.do-story__review-play { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:56px; height:56px; border-radius:50%; background:rgb(255 255 255 / 92%); display:flex; align-items:center; justify-content:center; }
.do-story__review-play::after { content:''; border-style:solid; border-width:9px 0 9px 15px; border-color:transparent transparent transparent #171615; margin-left:3px; }
.do-story__review-name { font-size:20px; font-weight:700; margin:14px 0 4px; }
.do-story__review-role { font-size:14px; color:var(--do-story-muted); margin:0; }

/* Chapter — technical specifications, per-model theme */
.do-story__specs { padding:72px 0; position:relative; isolation:isolate; overflow:hidden; background:var(--do-story-surface); color:var(--do-story-text); }
.do-story__specs-watermark { position:absolute; right:-450px; top:-300px; width:1000px; height:1000px; opacity:.5; pointer-events:none; z-index:-1; }
.do-story__specs-head { margin-bottom:40px; }
.do-story__specs-cols { display:grid; grid-template-columns:1fr 1fr; gap:64px; }
.do-story__specs-group + .do-story__specs-group { margin-top:32px; }
.do-story__specs-group-title { font-size:16px; font-weight:700; text-transform:uppercase; color:var(--do-story-accent); margin:0 0 12px; }
.do-story__specs-row { display:flex; justify-content:space-between; gap:16px; padding:12px 0; border-bottom:1px solid var(--do-story-border); font-size:14px; }
.do-story__specs-row dt { color:var(--do-story-muted); font-weight:400; margin:0; }
.do-story__specs-row dd { font-weight:700; text-align:right; margin:0; }

/* Chapter — eyebrow/heading shared by features/specs/reviews/documents/manufacturer */
.do-story__kicker { font-size:14px; font-weight:700; text-transform:uppercase; color:var(--do-story-accent); margin:0 0 16px; }
.do-story__heading { font-size:42px; font-weight:800; line-height:1.2; margin:0; color:var(--do-story-text); }

/* Chapter — documents, per-model theme (defaults dark) */
.do-story__docs { padding:110px 0; position:relative; isolation:isolate; overflow:hidden; background:var(--do-story-surface); color:var(--do-story-text); }
.do-story__docs-o { position:absolute; right:-350px; top:-260px; width:1100px; height:1100px; opacity:.5; pointer-events:none; z-index:-1; }
.do-story__docs-head { margin-bottom:56px; }
.do-story__doc-row { display:flex; align-items:center; gap:16px; padding:16px 0; border-bottom:1px solid var(--do-story-border); }
.do-story__doc-row:last-child { border-bottom:0; }
.do-story__doc-icon { flex-shrink:0; width:44px; height:52px; border-radius:6px; background:#ba0f26; color:#fff; display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:800; }
.do-story__doc-text { flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:3px; }
.do-story__doc-title { font-size:16px; font-weight:700; margin:0; }
.do-story__doc-meta { font-size:13px; color:var(--do-story-muted); margin:0; }
.do-story__doc-btn { flex-shrink:0; display:flex; align-items:center; min-height:44px; padding:12px 20px; border:1.5px solid currentColor; border-radius:8px; font-size:14px; font-weight:700; text-decoration:none; color:inherit; }

/* Chapter 5 — manufacturer, always light */
.do-story__manufacturer { padding:64px 0; display:flex; flex-direction:column; align-items:center; gap:32px; background:#fff; color:#2c2b2a; }
.do-story__manufacturer-head { align-self:flex-start; display:flex; flex-direction:column; gap:12px; }
.do-story__manufacturer-panorama { width:100%; height:240px; border-radius:0; overflow:hidden; }
.do-story__manufacturer-panorama img { width:100%; height:100%; object-fit:cover; display:block; }
.do-story__manufacturer-caption { font-size:13px; color:#6c6b6a; align-self:flex-start; }
.do-story__manufacturer-row { display:flex; gap:48px; align-items:flex-start; width:100%; }
.do-story__manufacturer-photos { display:flex; gap:16px; flex-shrink:0; }
.do-story__manufacturer-photos img { border-radius:12px; border:1px solid #e5e6e8; object-fit:cover; display:block; }
.do-story__manufacturer-photos img:first-child { width:360px; height:250px; }
.do-story__manufacturer-photos img:last-child { width:280px; height:200px; }
.do-story__manufacturer-copy { flex:1 1 auto; display:flex; flex-direction:column; gap:24px; }
.do-story__manufacturer-copy > p { font-size:16px; line-height:1.6; color:#6c6b6a; margin:0; }
.do-story__manufacturer-facts { display:flex; flex-direction:column; gap:16px; }
.do-story__manufacturer-fact { display:flex; align-items:center; gap:16px; font-size:14px; font-weight:700; }
.do-story__manufacturer-fact::before { content:''; width:8px; height:8px; border-radius:4px; background:#ba0f26; flex-shrink:0; }
.do-story__manufacturer-cta-row { display:flex; align-items:center; gap:24px; }
.do-story__manufacturer-logo { display:flex; align-items:center; justify-content:center; width:140px; height:80px; background:#f8f9fa; border:1px solid #e5e6e8; border-radius:8px; }
.do-story__manufacturer-logo img { width:120px; height:60px; object-fit:contain; }
.do-story__manufacturer-btn { display:inline-flex; align-items:center; gap:8px; padding:12px 28px; background:#ba0f26; color:#fff; border-radius:4px; font-size:14px; font-weight:600; text-decoration:none; }

/* Mobile feature gallery pagination (Chapter 2, ≤760px): a 3-per-page vertical list with
   prev/next, matching the Figma "StoryFeaturesGallery" component — not the desktop 6-up grid. */
.do-story__feature-list { display:none; }
.do-story__feature-page { display:flex; flex-direction:column; gap:16px; }
.do-story__feature-page[hidden] { display:none; }
.do-story__feature-list .do-story__feature { flex-direction:row; align-items:center; gap:12px; }
.do-story__feature-list .do-story__feature-photo { width:64px; height:64px; border-radius:32px; border-width:0; flex-shrink:0; }
.do-story__feature-list .do-story__feature-desc { max-width:none; }
.do-story__feature-nav { display:flex; align-items:center; justify-content:space-between; padding-top:8px; }
.do-story__feature-nav button { width:44px; height:44px; border-radius:22px; border:0; background:transparent; font-size:22px; color:#d1d1d1; }
.do-story__feature-nav button.is-active { background:#f0f0ed; color:#2c2b2a; }
.do-story__feature-nav button:disabled { opacity:.4; }
.do-story__feature-page-label { font-size:14px; font-weight:600; color:#686765; }
.do-story__dots { display:none; gap:8px; justify-content:center; padding-top:20px; }
.do-story__dots span { width:8px; height:8px; border-radius:50%; background:#e5e4e2; }
.do-story__dots span.is-active { background:#ba0f26; }

@media (max-width:1050px) {
  .do-story__grid { grid-template-columns:repeat(2,1fr); }
  .do-story__specs-cols { gap:40px; }
}
@media (max-width:760px) {
  .do-story__hero { min-height:520px; padding:80px 24px 48px; align-items:flex-end; }
  .do-story__hero-o { display:none; }
  .do-story__hero-photo img { top:0; right:-50px; width:82%; opacity:.35; }
  .do-story__hero-text { max-width:none; }
  .do-story__hero-title { font-size:40px; line-height:48px; }
  .do-story__hero-rule { display:none; }
  .do-story__features, .do-story__reviews, .do-story__specs, .do-story__docs, .do-story__manufacturer { padding-inline:0; }
  .do-story__features > .do-product__container, .do-story__specs > .do-product__container, .do-story__docs > .do-product__container, .do-story__manufacturer > .do-product__container { width:calc(100% - 48px); }
  .do-story__reviews > .do-product__container:first-child { flex-direction:column; align-items:stretch; gap:24px; width:calc(100% - 48px); }
  .do-story__reviews-head { width:auto; }
  .do-story__reviews-title, .do-story__heading { font-size:32px; line-height:38px; }
  .do-story__reviews-row { padding-bottom:4px; margin:0 -24px; padding-inline:24px; }
  .do-story__review-card { width:78vw; max-width:302px; }
  .do-story__dots { display:flex; }
  .do-story__grid { display:none; }
  .do-story__feature-list { display:flex; flex-direction:column; gap:16px; }
  .do-story__specs-cols { grid-template-columns:1fr; gap:24px; }
  .do-story__specs-watermark, .do-story__docs-o { opacity:.3; }
  .do-story__manufacturer-row { flex-direction:column; gap:24px; }
  .do-story__manufacturer-photos { width:100%; flex-direction:column; }
  .do-story__manufacturer-photos img:first-child, .do-story__manufacturer-photos img:last-child { width:100%; height:auto; aspect-ratio:16/10; padding-left:0; }
  .do-story__manufacturer-cta-row { flex-direction:column; align-items:stretch; }
  .do-story__manufacturer-btn { justify-content:center; }
}

/* ==========================================================================
   ExamVision loupes (T-017, 2026-09-20) — all rules below are scoped to
   `.do-ev-*` classes so they cannot affect the CJ-Optik `.do-story__*` rules
   above. Reuses `.do-product__container` for the centered max-width column
   and `.do-story__reviews*`/`.do-story__review-*`/`.do-story__dots` for the
   reviews carousel shell (identical structure — see story-examvision.mjs).
   Source: Figma page "ExamVision — Product Stories" (5694:229). ========== */
.do-ev-kicker { font-size:14px; font-weight:700; letter-spacing:.7px; text-transform:uppercase; color:#666; margin:0 0 12px; }
.do-ev-heading { font-size:42px; font-weight:800; line-height:1.2; color:#1f1f1f; margin:0; }
.do-ev-heading--sm { font-size:28px; }
.do-ev-section-head { margin-bottom:24px; }
.do-ev-text-link { color:#ba0f26; font-weight:600; font-size:14px; text-decoration:none; display:inline-flex; align-items:center; gap:8px; }
.do-ev-text-link:hover { text-decoration:underline; }
.do-ev-cta { display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:12px 28px; background:#ba0f26; color:#fff; border-radius:6px; font-weight:700; font-size:14px; text-decoration:none; }
.do-ev-cta:hover { background:#9e0d20; }

/* Hero — three variants per model: full-light (HD/Reflekt/Advanced), full-dark
   (Essential), split dark-left/light-right (Kompakt, no decorative O). */
.do-ev-hero { position:relative; isolation:isolate; overflow:hidden; min-height:720px; }
.do-ev-hero--full { display:flex; align-items:center; }
.do-ev-hero--light { background:#f8f8f7; }
.do-ev-hero--dark { background:#1f1f1f; }
.do-ev-hero-o { position:absolute; right:60px; top:15px; width:660px; height:auto; z-index:-1; opacity:.9; }
.do-ev-hero-photo-img { position:absolute; right:0; top:0; height:100%; width:62%; object-fit:contain; object-position:center; z-index:-1; }
.do-ev-hero-text { position:relative; max-width:600px; padding:180px 40px 80px 80px; display:flex; flex-direction:column; gap:20px; }
.do-ev-hero-eyebrow { display:flex; align-items:center; gap:10px; font-size:11px; font-weight:600; letter-spacing:1.1px; color:#ba0f26; margin:0; }
.do-ev-hero-eyebrow::before { content:''; width:28px; height:2px; background:#ba0f26; flex-shrink:0; }
.do-ev-hero--dark .do-ev-hero-eyebrow { color:#ba0f26; }
.do-ev-hero-title { font-size:52px; font-weight:800; line-height:1.18; margin:0; color:#1f1f1f; }
.do-ev-hero--dark .do-ev-hero-title { color:#fff; }
.do-ev-hero-sublead { font-size:20px; color:#666; margin:0; }
.do-ev-hero--dark .do-ev-hero-sublead { color:#bfbfbf; }
.do-ev-hero-rule { width:48px; height:1px; background:rgba(31,31,31,.15); }
.do-ev-hero--dark .do-ev-hero-rule { background:rgba(255,255,255,.15); }
.do-ev-hero-body { font-size:15px; line-height:1.6; color:#666; margin:0; max-width:420px; }
.do-ev-hero--dark .do-ev-hero-body { color:#bfbfbf; }
/* Split (Kompakt): fixed 600px dark text panel + light photo panel — the source of the
   "black edge" fix in REVISION-02.md was the photo's own matched background (#f7f7f7),
   not this two-panel layout, which already had no seam. */
.do-ev-hero--split { display:flex; }
.do-ev-hero-panel { width:600px; flex-shrink:0; padding:180px 40px 80px 80px; display:flex; flex-direction:column; gap:20px; }
.do-ev-hero-panel--dark { background:#16100e; }
.do-ev-hero-title--onDark { font-size:52px; font-weight:800; line-height:1.18; color:#fff; margin:0; }
.do-ev-hero-rule--onDark { width:48px; height:1px; background:rgba(255,255,255,.2); }
.do-ev-hero-body--onDark { font-size:15px; line-height:1.6; color:rgba(255,255,255,.75); margin:0; max-width:420px; }
.do-ev-hero-photo--light { flex:1 1 auto; background:#f7f7f7; display:flex; align-items:center; justify-content:center; }
.do-ev-hero-photo--light img { width:100%; height:100%; object-fit:contain; }

/* Features — 3 items, small circles, no border ring (distinct from CJ's 6-up bordered grid). */
.do-ev-features { background:#f8f9fa; padding:80px 0; }
.do-ev-feature-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:40px; }
.do-ev-feature { display:flex; flex-direction:column; gap:16px; }
.do-ev-feature-photo { width:120px; height:120px; border-radius:60px; overflow:hidden; }
.do-ev-feature-photo img { width:100%; height:100%; object-fit:cover; display:block; }
.do-ev-feature-title { font-size:16px; font-weight:700; color:#1f1f1f; margin:0; }
.do-ev-feature-desc { font-size:13px; line-height:1.55; color:#666; margin:4px 0 0; }

/* Gallery/Video — composition varies per product (bento / stacked / video), not one template. */
.do-ev-gallery { background:#fff; padding:64px 0; }
.do-ev-gallery-row { display:flex; gap:48px; align-items:center; }
.do-ev-gallery-text { flex:1 1 0; min-width:0; }
.do-ev-gallery-note { font-size:15px; line-height:1.6; color:#666; margin:0; }
.do-ev-photo-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.do-ev-photo-grid__item { display:block; aspect-ratio:4/3; min-width:0; overflow:hidden; border-radius:12px; background:var(--do-surface-subtle,#f5f5f5); }
.do-ev-photo-grid__item img { display:block; width:100%; height:100%; object-fit:contain; }
@media (max-width:760px) {
  .do-ev-photo-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
}
.do-ev-bento { display:flex; gap:16px; }
.do-ev-bento-big { flex:1 1 0; height:420px; border-radius:8px; overflow:hidden; }
.do-ev-bento-big img { width:100%; height:100%; object-fit:cover; display:block; }
.do-ev-bento-side { flex:1 1 0; display:flex; flex-direction:column; gap:16px; }
.do-ev-bento-side img { width:100%; height:202px; border-radius:8px; object-fit:cover; display:block; }
.do-ev-gallery-stack { flex:1 1 0; display:flex; flex-direction:column; gap:12px; }
.do-ev-gallery-stack img { width:100%; height:260px; border-radius:8px; object-fit:cover; display:block; }
.do-ev-video-poster { position:relative; display:block; flex:1 1 0; height:400px; border-radius:8px; overflow:hidden; text-decoration:none; }
.do-ev-video-poster img { width:100%; height:100%; object-fit:cover; display:block; }
.do-ev-video-play { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:20px; color:#fff; background:rgba(0,0,0,.15); }
.do-ev-video-play::before { content:''; position:absolute; width:56px; height:56px; border-radius:50%; background:#ba0f26; z-index:-1; }

/* Reviews demo cards (see story-examvision.mjs renderReviewsDemo) — same shell as CJ's
   .do-story__reviews, only the card content becomes a plain placeholder box. */
.do-ev-review-photo--demo { background:#1a1a1a; display:flex; align-items:center; justify-content:center; }

/* Manufacturer — 2 large photos + copy + brand O (distinct from CJ's panorama+logo layout). */
.do-ev-manufacturer { background:#fff; padding:80px 0; }
.do-ev-manufacturer-photos { display:flex; gap:16px; margin-bottom:24px; }
.do-ev-manufacturer-photos img { flex:1 1 0; height:300px; border-radius:8px; object-fit:cover; display:block; }
.do-ev-manufacturer-row { display:flex; gap:64px; align-items:flex-start; }
.do-ev-manufacturer-copy { flex:1 1 0; display:flex; flex-direction:column; align-items:flex-start; gap:16px; }
.do-ev-manufacturer-copy > p { font-size:16px; line-height:1.6; color:#333; margin:0; }
.do-ev-brand-o { width:160px; height:auto; flex-shrink:0; }

@media (max-width:1050px) {
  .do-ev-feature-grid { grid-template-columns:1fr; gap:24px; }
  .do-ev-feature { flex-direction:row; align-items:center; }
  .do-ev-hero-photo-img { width:75%; opacity:.5; }
}
@media (max-width:760px) {
  .do-ev-hero { min-height:0; }
  .do-ev-hero--full { flex-direction:column; align-items:stretch; }
  .do-ev-hero-o { display:none; }
  .do-ev-hero-photo-img { position:static; width:100%; height:320px; object-fit:contain; opacity:1; order:2; }
  .do-ev-hero-text { padding:48px 24px 32px; max-width:none; order:1; gap:16px; }
  .do-ev-hero-title { font-size:30px; }
  .do-ev-hero-sublead { font-size:16px; }
  .do-ev-hero-body { font-size:14px; max-width:none; }
  .do-ev-hero--split { flex-direction:column; }
  .do-ev-hero-panel { width:auto; padding:48px 24px 32px; order:1; }
  .do-ev-hero-title--onDark { font-size:30px; }
  .do-ev-hero-photo--light { order:2; height:320px; }
  .do-ev-features, .do-ev-gallery, .do-ev-manufacturer { padding:40px 0; }
  .do-ev-features > .do-product__container, .do-ev-gallery > .do-product__container, .do-ev-manufacturer > .do-product__container { width:calc(100% - 48px); }
  .do-ev-heading { font-size:26px; }
  .do-ev-feature-grid { gap:20px; }
  .do-ev-feature { display:grid; grid-template-columns:64px minmax(0,1fr); gap:16px; align-items:start; }
  .do-ev-feature-photo { width:64px; height:64px; aspect-ratio:1; border-radius:50%; background:var(--do-surface,#fff); outline:1px solid #e5e4e2; }
  .do-ev-feature > :last-child { min-width:0; }
  .do-ev-gallery-row { flex-direction:column; align-items:stretch; gap:16px; }
  .do-ev-bento { flex-direction:column; }
  .do-ev-bento-big, .do-ev-bento-side img { height:260px; }
  .do-ev-gallery-stack { flex-direction:row; overflow-x:auto; }
  .do-ev-gallery-stack img { width:80vw; max-width:310px; height:260px; flex-shrink:0; }
  .do-ev-video-poster { height:200px; }
  .do-ev-manufacturer-photos { flex-direction:column; }
  .do-ev-manufacturer-photos img { height:200px; }
  .do-ev-manufacturer-row { flex-direction:column; gap:20px; }
  .do-ev-brand-o { display:none; }
}

/* ==========================================================================
   Волна T-018 — Xenosys / ILLUCO / Dentsply Sirona (20.09.2026).
   Все правила ниже ограничены классами `.do-wv-*` и не могут повлиять на
   `.do-story__*` (CJ-Optik) и `.do-ev-*` (ExamVision). Главы «Характеристики»
   и «Отзывы» намеренно переиспользуют `.do-story__*` — это тот же компонент
   Figma, дублировать его стили не нужно.
   Опорные фреймы: Looks 2500 desktop 5851:5216 / mobile 5851:5217,
   IHL-2000 5842:471, Primescan AC 5865:197, Galilean 3.0 5811:1168.
   ========================================================================== */
.do-wv-hero { position:relative; isolation:isolate; overflow:hidden; background:var(--do-story-surface); color:var(--do-story-text); }
/* Фирменная O в hero этих макетов — тот же вектор, что в Figma (Vector 852×848,
   #BA0F26, сплошной), а не бледный watermark CJ-Optik: см. IHL-2000 5845:479,
   Looks 2500 5861:5665, Galilean 3.0 5812:6289. Обрезается границей секции. */
.do-wv-hero__o { position:absolute; left:-435px; top:625px; width:853px; height:848px; pointer-events:none; z-index:-1; }
/* Колонки повторяют макет 1440: текст от 80px, фото — правые 720px до края фрейма.
   Последняя строка «. photo» пустая и тянется (1fr), чтобы фото занимало всю высоту
   секции (740px), а текст оставался прижат к верху. */
.do-wv-hero__inner { position:relative; width:min(1440px,100%); margin-inline:auto; min-height:740px; display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,720px); column-gap:0; row-gap:28px;
  grid-template-areas:"eyebrow photo" "title photo" "desc photo" "fact photo" "cond photo" ". photo";
  grid-template-rows:auto auto auto auto auto 1fr;
  padding:92px 0 72px 80px; }
.do-wv-hero__eyebrow { grid-area:eyebrow; margin:0; font-size:14px; color:var(--do-story-accent); }
.do-wv-hero__title { grid-area:title; margin:0; max-width:600px; font-size:68px; line-height:76px; font-weight:800; letter-spacing:-1.5px; color:var(--do-story-text); overflow-wrap:break-word; }
.do-wv-hero__desc { grid-area:desc; margin:0; max-width:510px; font-size:16px; line-height:1.6; color:var(--do-story-muted); }
.do-wv-hero__fact { grid-area:fact; margin:0; max-width:560px; font-size:20px; font-weight:700; color:var(--do-story-text); }
.do-wv-hero__condition { grid-area:cond; margin:0; max-width:540px; font-size:14px; color:var(--do-story-muted); }
/* Строки, которые есть только в мобильном фрейме Figma (например «Прямые бинокулярные
   лупы» у Looks 2500, узел 5853:5220): в desktop-hero их нет, поэтому показываем их
   только на мобильной ширине, а не выбрасываем и не добавляем на десктоп. */
.do-wv-hero__line--mobile { display:none; }
/* Фото hero занимает правую половину секции во всю её высоту (в макетах — 720–800×740,
   прижато к правому краю фрейма), поэтому оно выведено из потока сетки: иначе колонка
   равнялась бы высоте текста (653px вместо 740px). */
.do-wv-hero__photo { grid-area:photo; align-self:stretch; margin:-92px 0 -72px; min-width:0; }
.do-wv-hero__photo { position:relative; }
/* R01 (проверка Rini T-028): картинка с HTML-атрибутами height и height:100% раздувала строку
   сетки до собственной высоты (hero 960px у 15 Rini и до 1174px у Xenosys при макете 740px).
   В потоке изображение не участвует: контейнер занимает высоту секции, а фото вписывается в него
   целиком (contain) — без подрезки и без overflow:hidden на секции. */
.do-wv-hero__photo img { display:block; position:absolute; inset:0; width:100%; height:100%; object-fit:contain; object-position:center; }
.do-wv-hero__photo-caption { position:absolute; left:90px; right:80px; bottom:44px; margin:0; font-size:14px; color:var(--do-story-muted); }
.do-wv-hero__photo[data-fit="cover"] img, .do-wv-story__photo[data-fit="cover"] img { object-fit:cover; }
.do-wv-story__photo[data-fit="contain"] img { object-fit:contain; background:var(--do-story-surface); }

.do-wv-story { background:var(--do-story-surface); color:var(--do-story-text); }
.do-wv-story__inner { width:min(1440px,100%); margin-inline:auto; }
/* Половина ширины, а не фиксированные 720px: в макете 1440 это те же 720, но на планшете
   фиксированная колонка выталкивала текст за экран (768/1024 — горизонтальный скролл). */
/* Порядок в разметке — мобильный (заголовок, фото, метрика, текст, подпись — фрейм
   5822:6435); на десктопе grid-области возвращают композицию макета 1440: фото слева
   во всю высоту, справа кикер, заголовок, текст, метрика, подпись. */
.do-wv-story[data-variant="photo"] .do-wv-story__inner { display:grid; grid-template-columns:minmax(0,50%) minmax(0,1fr); align-items:stretch; min-height:650px;
  grid-template-areas:"photo kicker" "photo title" "photo desc" "photo metric" "photo fact" "photo caption"; align-content:center; }
.do-wv-story[data-variant="photo"] .do-wv-story__photo { align-self:stretch; }
.do-wv-story[data-variant="photo"] .do-wv-story__kicker { grid-area:kicker; padding:80px 80px 0; }
.do-wv-story[data-variant="photo"] .do-wv-story__title { grid-area:title; padding:24px 80px 0; }
.do-wv-story[data-variant="photo"] .do-wv-story__desc { grid-area:desc; padding:24px 80px 0; }
.do-wv-story[data-variant="photo"] .do-wv-story__metric { grid-area:metric; padding:24px 80px 0; }
.do-wv-story[data-variant="photo"] .do-wv-story__fact { grid-area:fact; padding:24px 80px 0; }
.do-wv-story[data-variant="photo"] .do-wv-story__captions { grid-area:caption; padding:24px 80px 80px; display:flex; flex-direction:column; gap:8px; }
.do-wv-story[data-variant="photo"] .do-wv-story__photo { grid-area:photo; min-width:0; }
/* Зеркальная композиция: фото справа (например Looks A 5813:200). */
.do-wv-story[data-variant="photo"][data-photo="right"] .do-wv-story__inner { grid-template-columns:minmax(0,1fr) minmax(0,50%);
  grid-template-areas:"kicker photo" "title photo" "desc photo" "metric photo" "fact photo" "caption photo"; }
/* Врезка: вырезанный товар на белом показывается целиком и с полями, а не во всю высоту. */
.do-wv-story[data-variant="photo"][data-photo-style="inset"] .do-wv-story__photo { display:flex; align-items:center; padding:80px; }
.do-wv-story[data-variant="photo"][data-photo-style="inset"] .do-wv-story__photo img { min-height:0; max-height:440px; object-fit:contain; }
.do-wv-story[data-variant="photo"] .do-wv-story__photo img { display:block; width:100%; height:100%; min-height:650px; object-fit:cover; }

.do-wv-story[data-variant="metric"] .do-wv-story__inner { display:grid; grid-template-columns:minmax(0,640px) minmax(0,1fr); column-gap:80px; row-gap:24px; align-content:center; min-height:610px; padding:80px;
  grid-template-areas:"kicker metric" "title metric" "desc metric" "fact metric" "caption metric"; }
.do-wv-story[data-variant="metric"] .do-wv-story__kicker { grid-area:kicker; }
.do-wv-story[data-variant="metric"] .do-wv-story__title { grid-area:title; }
.do-wv-story[data-variant="metric"] .do-wv-story__desc { grid-area:desc; }
.do-wv-story[data-variant="metric"] .do-wv-story__fact { grid-area:fact; }
.do-wv-story[data-variant="metric"] .do-wv-story__captions { grid-area:caption; display:flex; flex-direction:column; gap:8px; }
.do-wv-story[data-variant="metric"] .do-wv-story__metric--lg { grid-area:metric; align-self:center; }
.do-wv-story__copy { display:flex; flex-direction:column; gap:24px; max-width:640px; min-width:0; }
/* Зеркала HAHNENKRATT (T-027) и кресла Rini (T-027/T-028): в их макетах заголовок hero
   набран 60/68 в колонке 570px (5997:17589, 6025:3103, 6048:921), а не 68/76 как в волне
   T-018 (5845:482) — иначе трёхстрочный заголовок Carl Spring R7 ломается на четыре. */
@media (min-width:1051px) {
  .do-wv-hero[data-batch="mirrors"] .do-wv-hero__title,
  .do-wv-hero[data-batch="rini"] .do-wv-hero__title { font-size:60px; line-height:68px; max-width:570px; }
}
.do-wv-story__kicker { margin:0; font-size:14px; text-transform:uppercase; color:var(--do-story-accent); }
.do-wv-story__title { margin:0; font-size:42px; line-height:1.2; font-weight:800; color:var(--do-story-text); overflow-wrap:break-word; }
.do-wv-story__desc { margin:0; max-width:560px; font-size:16px; line-height:1.6; color:var(--do-story-muted); }
.do-wv-story__metric { margin:0; font-size:68px; line-height:76px; font-weight:800; letter-spacing:-1.5px; color:var(--do-story-text); }
.do-wv-story__metric--lg { font-size:110px; line-height:1.1; overflow-wrap:break-word; }
/* Кресла Rini (T-028): ударная строка длиннее, в макете стоит одной строкой — кегль
   уменьшается ровно настолько, чтобы она помещалась в колонку. */
.do-wv-story[data-batch="rini"] .do-wv-story__metric { font-size:clamp(34px,4.1vw,68px); line-height:1.15; }
/* Метрика из длинного слова («4 индикатора», «2 регулятора») в 110px не помещается
   в свою колонку и выталкивает страницу — в макете такие подписи тоже набраны мельче. */
.do-wv-story__metric--long { font-size:68px; line-height:1.15; }
.do-wv-story__caption { margin:0; font-size:14px; line-height:1.4; color:var(--do-story-muted); }
/* Строка-перечисление в презентационном блоке (Card title 20px, как в макете). */
.do-wv-story__fact { margin:0; font-size:20px; line-height:1.4; font-weight:700; color:var(--do-story-text); white-space:pre-line; }

/* Строка документа, ведущая на официальную веб-страницу, а не на PDF (FACTORY.md). */
.do-story__doc-icon--web { background:#2c2b2a; }
/* В компоненте Story/Specifications тёмного варианта заголовки групп и eyebrow белые,
   а не акцентные (Figma 5591:146 против светлого 5591:145); в главе «Документы» обеих
   волн eyebrow приглушённый. У страниц CJ-Optik и ExamVision правила не меняются —
   они действуют только при модификаторе --wave. */
.do-story__specs--wave[data-theme="dark"] .do-story__kicker,
.do-story__specs--wave[data-theme="dark"] .do-story__specs-group-title { color:var(--do-story-text); }
.do-story__docs--wave .do-story__kicker { color:var(--do-story-muted); }
/* Карусель отзывов: без min-width:0 флекс-дорожка не сжимается и на 768px даёт
   горизонтальный скролл всей страницы. Правило ограничено модификатором --wave,
   чтобы не менять уже сданные страницы CJ-Optik (там этот же дефект зафиксирован
   в отчёте отдельно). */
.do-story__reviews--wave .do-story__reviews-row { min-width:0; }
.do-story__reviews--wave .do-story__reviews-gallery { flex:0 1 560px; width:min(100%,560px); }
.do-story__reviews-nav { display:grid; grid-template-columns:44px 1fr 44px; align-items:center; gap:16px; padding-top:20px; }
.do-story__reviews-nav[hidden] { display:none!important; }
.do-story__reviews-nav .do-story__dots { display:flex; align-items:center; padding-top:0; }
.do-product .do-story__reviews-btn { position:relative; width:44px; height:44px; padding:0; border:1px solid #c9c7c4; border-radius:50%; background:var(--do-story-surface); color:var(--do-story-text); font-size:0; cursor:pointer; }
.do-story__reviews-btn::after { content:""; position:absolute; top:50%; left:50%; width:10px; height:10px; border-right:2.5px solid currentColor; border-bottom:2.5px solid currentColor; }
.do-story__reviews-btn[data-do-reviews-prev]::after { transform:translate(-35%,-50%) rotate(135deg); }
.do-story__reviews-btn[data-do-reviews-next]::after { transform:translate(-65%,-50%) rotate(-45deg); }
.do-story__reviews-btn:hover:not(:disabled) { border-color:var(--do-story-accent); color:var(--do-story-accent); }
.do-story__reviews-btn:focus-visible { outline:3px solid var(--do-story-accent); outline-offset:3px; }
.do-story__reviews-btn:disabled { opacity:.55; cursor:default; }
@media (max-width:760px) {
  .do-story__reviews--wave .do-story__reviews-gallery { flex:1 1 auto; width:100%; }
  .do-story__reviews--wave .do-story__reviews-row { width:calc(100% + 48px); margin-inline:-24px; }
}
@media (max-width:1100px) {
  .do-story__reviews--wave > .do-product__container:first-child { flex-direction:column; align-items:stretch; gap:24px; }
  .do-story__reviews--wave .do-story__reviews-head { width:auto; }
}

/* Блок производителя в макетах волны всегда светлый (проверено на Looks 2500 5861:678,
   IHL-2000 5848:673, Primescan AC 5869:1012), поэтому токены заданы локально. */
.do-wv-maker { --do-story-surface:#ffffff; --do-story-text:#2c2b2a; --do-story-muted:#686765; --do-story-accent:#ba0f26;
  background:var(--do-story-surface); color:var(--do-story-text); display:grid; grid-template-columns:minmax(0,1fr); width:100%; }
.do-wv-maker__photo { min-width:0; }
.do-wv-maker__photo img { display:block; width:100%; height:100%; max-height:410px; object-fit:cover; border-radius:12px; }
.do-wv-maker__copy { display:flex; flex-direction:column; gap:24px; min-width:0; }
/* T-027: официальный знак Xenosys — 220×61, пропорции исходника, отступ 24px задаёт
   колонка .do-wv-maker__copy. */
.do-wv-maker__logo { display:block; width:auto; max-width:min(100%,220px); height:61px; object-fit:contain; }
.do-wv-maker__eyebrow { margin:0; font-size:14px; color:var(--do-story-accent); }
.do-wv-maker__title { margin:0; font-size:42px; line-height:1.2; font-weight:800; overflow-wrap:break-word; }
.do-wv-maker__body { display:flex; flex-direction:column; gap:16px; }
.do-wv-maker__body p { margin:0; font-size:16px; line-height:1.6; color:var(--do-story-muted); }
/* Подпись кнопки белая: правило .do-product a { color:inherit } перебивало цвет и текст
   выводился тёмным на красном (замечено при сверке логотипов T-027). */
.do-product .do-wv-maker__cta { align-self:flex-start; display:inline-flex; align-items:center; min-height:56px; padding:16px 24px; border-radius:12px; background:var(--do-story-accent); color:#fff; font-size:16px; line-height:1.6; text-decoration:none; }
.do-wv-maker__cta:focus-visible { outline:3px solid #2c2b2a; outline-offset:2px; }

@media (min-width:761px) {
  .do-wv-maker { width:min(1440px,100%); margin-inline:auto; grid-template-columns:minmax(0,600px) minmax(0,1fr); column-gap:80px; align-items:start; padding:90px 80px; min-height:590px; }
  /* У ILLUCO блок производителя выше и с более крупным фото (640×480, секция 650):
     Figma 5848:673 / 5817:262 против 600×410 и 590 у Xenosys и Dentsply Sirona. */
  .do-wv-maker[data-brand="illuco"] { grid-template-columns:minmax(0,640px) minmax(0,1fr); padding:80px; min-height:650px; }
  .do-wv-maker[data-brand="illuco"] .do-wv-maker__photo img { max-height:480px; }
}

/* Типографика глав задаётся в макетах (42px заголовки, 68px hero и метрика). На странице
   товара действует более «сильное» правило .do-product h2 { font-size:32px }, поэтому
   правила волны подняты по специфичности. Страницы CJ-Optik и ExamVision не затрагиваются:
   селекторы включают только .do-wv-* и модификаторы --wave. */
.do-product .do-wv-hero__title { font-size:68px; line-height:76px; letter-spacing:-1.5px; margin-bottom:0; }
.do-product .do-wv-story__title,
.do-product .do-wv-maker__title,
.do-product .do-story__specs--wave .do-story__heading,
.do-product .do-story__docs--wave .do-story__heading,
.do-product .do-story__reviews--wave .do-story__reviews-title { font-size:42px; line-height:1.2; letter-spacing:0; margin-bottom:0; }
@media (max-width:1050px) {
  .do-product .do-wv-hero__title { font-size:52px; line-height:60px; }
}
@media (max-width:760px) {
  .do-product .do-wv-hero__title { font-size:36px; line-height:42px; letter-spacing:-.5px; }
  .do-product .do-wv-story__title,
  .do-product .do-wv-maker__title { font-size:28px; }
  .do-product .do-story__specs--wave .do-story__heading,
  .do-product .do-story__docs--wave .do-story__heading { font-size:26px; }
  .do-product .do-story__reviews--wave .do-story__reviews-title { font-size:24px; }
}
/* R02 (проверка Rini T-028): размеры заголовков планшета вынесены в собственный диапазон.
   Раньше они лежали в блоке max-width:1100px, который стоит после max-width:760px при той же
   специфичности, и на телефоне давали 44px у hero (макет и правило ≤760 — 36px/42px) и 32px у
   заголовков «Характеристики»/«Документы» (правило ≤760 — 26px). Планшетные значения прежние. */
@media (min-width:761px) and (max-width:1100px) {
  .do-product .do-wv-hero__title { font-size:44px; line-height:52px; }
  /* Планшет: заголовки глав уменьшены — при 42px длинные слова («дистанцию») не
     помещались в колонку 377px и давали горизонтальный скролл на 768px. */
  .do-product .do-wv-story__title, .do-product .do-wv-maker__title,
  .do-product .do-story__specs--wave .do-story__heading,
  .do-product .do-story__docs--wave .do-story__heading,
  .do-product .do-story__reviews--wave .do-story__reviews-title { font-size:32px; }
}
@media (max-width:1100px) {
  /* На планшете блок производителя складывается в одну колонку: при двух колонках
     кнопка бренда не помещалась и появлялся горизонтальный скролл (768px). */
  /* Фотография hero занимает 45% ширины, а не фиксированные 720px: иначе текстовая
     колонка сжимается почти до нуля и заголовок печатается по букве в строку (768px). */
  .do-wv-hero__inner { grid-template-columns:minmax(0,1fr) minmax(0,45%); }
  .do-wv-maker, .do-wv-maker[data-brand="illuco"] { grid-template-columns:minmax(0,1fr); gap:32px; padding:56px 40px; min-height:0; }
  .do-wv-maker__photo img { max-height:360px; }
  .do-wv-story[data-variant="photo"] .do-wv-story__photo img { min-height:0; }
  .do-wv-story[data-variant="photo"] .do-wv-story__inner { min-height:0; }
  /* Крупная метрика в одну колонку с текстом: на планшете вторая колонка сжималась
     до нуля и число выходило за экран (768px). */
  .do-wv-story[data-variant="metric"] .do-wv-story__inner { grid-template-columns:minmax(0,1fr); grid-template-areas:none; gap:24px; min-height:0; padding:56px 40px; }
  .do-wv-story[data-variant="metric"] .do-wv-story__kicker,
  .do-wv-story[data-variant="metric"] .do-wv-story__title,
  .do-wv-story[data-variant="metric"] .do-wv-story__desc,
  .do-wv-story[data-variant="metric"] .do-wv-story__captions,
  .do-wv-story[data-variant="metric"] .do-wv-story__metric--lg { grid-area:auto; align-self:stretch; }
  .do-wv-story__metric--lg { font-size:64px; }
  .do-wv-story__metric--long { font-size:44px; }
}
@media (max-width:1050px) {
  .do-wv-hero__title { font-size:52px; line-height:60px; }
  /* Зеркала (T-027): ударная строка бывает одним длинным словом («BLACKline») и в 68px
     не помещается в половину планшетной колонки — на 768 она выталкивала страницу.
     Кегль масштабируется по ширине только у этой партии. */
  @media (min-width:761px) {
    .do-wv-story[data-batch="mirrors"] .do-wv-story__metric { font-size:clamp(40px,8.4vw,68px); line-height:1.15; }
  }
  .do-wv-story__metric--lg { font-size:80px; }
  .do-wv-story[data-variant="photo"] .do-wv-story__kicker { padding:56px 40px 0; }
  .do-wv-story[data-variant="photo"] .do-wv-story__title,
  .do-wv-story[data-variant="photo"] .do-wv-story__desc,
  .do-wv-story[data-variant="photo"] .do-wv-story__metric,
  .do-wv-story[data-variant="photo"] .do-wv-story__fact { padding:20px 40px 0; }
  .do-wv-story[data-variant="photo"] .do-wv-story__captions { padding:20px 40px 56px; }
  .do-wv-story[data-variant="metric"] .do-wv-story__inner { padding:56px 40px; gap:40px; }
  .do-wv-hero__inner { padding-left:40px; }
}
@media (max-width:760px) {
  .do-wv-hero__o { display:none; }
  .do-wv-hero__inner { grid-template-columns:minmax(0,1fr); grid-template-areas:none; row-gap:20px; min-height:0; padding:40px 24px 32px; }
  .do-wv-hero__eyebrow, .do-wv-hero__title, .do-wv-hero__desc, .do-wv-hero__fact, .do-wv-hero__condition, .do-wv-hero__photo { grid-area:auto; max-width:none; }
  .do-wv-hero__title { font-size:36px; line-height:42px; letter-spacing:-.5px; overflow-wrap:break-word; }
  .do-wv-hero__line--mobile { display:block; }
  .do-wv-hero__photo { position:static; margin:0; width:100%; }
  .do-wv-hero__photo-caption { position:static; margin-top:12px; }
  .do-wv-hero__photo img { position:static; height:auto; aspect-ratio:342/290; object-fit:cover; }
  /* Вырезанный товар на белом и на мобильной ширине показывается целиком: кадрирование
     «как в макете» срезало бы, например, широкий чертёж зарядной станции (1185×472). */
  .do-wv-hero__photo[data-fit="contain"] img { object-fit:contain; }
  .do-wv-story[data-variant="photo"] .do-wv-story__inner,
  .do-wv-story[data-variant="metric"] .do-wv-story__inner { display:flex; flex-direction:column; gap:24px; min-height:0; padding:40px 24px; grid-template-areas:none; }
  .do-wv-story[data-variant="photo"] .do-wv-story__photo img { min-height:0; height:auto; aspect-ratio:342/250; border-radius:12px; }
  .do-wv-story[data-variant="photo"][data-photo-style="inset"] .do-wv-story__photo { padding:0; }
  .do-wv-story[data-variant="photo"][data-photo="right"] .do-wv-story__inner { grid-template-areas:none; }
  .do-wv-story[data-variant="photo"] .do-wv-story__kicker,
  .do-wv-story[data-variant="photo"] .do-wv-story__title,
  .do-wv-story[data-variant="photo"] .do-wv-story__desc,
  .do-wv-story[data-variant="photo"] .do-wv-story__metric,
  .do-wv-story[data-variant="photo"] .do-wv-story__fact,
  .do-wv-story[data-variant="photo"] .do-wv-story__captions { grid-area:auto; padding:0; }
  .do-wv-story__copy { gap:24px; max-width:none; }
  /* Строка документа на узком экране: кнопка переносится под текст, иначе колонке с
     названием остаётся 52px и подпись печатается по букве в строку (360px). */
  .do-story__docs--wave .do-story__doc-row { flex-wrap:wrap; }
  .do-story__docs--wave .do-story__doc-text { flex:1 1 calc(100% - 60px); }
  .do-story__docs--wave .do-story__doc-btn { flex:1 0 100%; justify-content:center; margin-top:12px; }
  .do-wv-story__kicker { display:none; }
  /* Тема секции в мобильном макете может отличаться от десктопной. */
  .do-story .do-wv-story[data-theme-mobile="light"] { --do-story-surface:#ffffff; --do-story-text:#2c2b2a; --do-story-muted:#686765; --do-story-border:#e5e4e2; }
  .do-story .do-wv-story[data-theme-mobile="dark"] { --do-story-surface:#171615; --do-story-text:#ffffff; --do-story-muted:#c2c1bf; --do-story-border:#504e4b; }
  .do-wv-story__title { font-size:28px; }
  .do-wv-story__metric, .do-wv-story__metric--lg { font-size:20px; line-height:1.2; letter-spacing:0; font-weight:700; align-self:stretch; }
  .do-wv-maker { padding:40px 24px; gap:24px; grid-template-columns:minmax(0,1fr); }
  .do-wv-maker__photo img { height:220px; }
  .do-wv-maker__title { font-size:28px; }
  .do-wv-maker__cta { align-self:stretch; justify-content:center; }
}

/* T-029B — выбранные 18 товаров (Support Design, BRUMABA, Rini RiEye, Planmeca, Asiga).
   Размеры сняты с макетов (SUPPORT 6102:349 / 6102:357): заголовок hero 60/66 в колонке 570px,
   цифра «Особенностей» 42/76. Правила стоят в media, чтобы не перебить мобильные (20px). */
@media (min-width:1051px) {
  .do-wv-hero[data-batch="selected"] .do-wv-hero__title { font-size:60px; line-height:1.1; max-width:570px; }
}
@media (min-width:761px) {
  .do-wv-story[data-batch="selected"] .do-wv-story__metric { font-size:42px; line-height:76px; overflow-wrap:break-word; }
}
/* Asiga: вместо второго фото — тёмная карточка с двумя крупными параметрами
   (620px, отступ 40, радиус 16; значение 64/1.15 ExtraBold, подпись 18/1.15). Между парами —
   пустая строка, как в макете (6105:20044), поэтому зазор 20 + 73,6px. */
.do-wv-story[data-variant="facts"] .do-wv-story__inner { display:grid; grid-template-columns:620px minmax(0,560px); grid-template-areas:"facts title" "facts desc" "facts ."; grid-template-rows:auto auto 1fr; column-gap:100px; row-gap:24px; align-items:start; justify-content:start; min-height:650px; padding:80px; box-sizing:border-box; }
.do-wv-story[data-variant="facts"] .do-wv-story__title { grid-area:title; }
.do-wv-story[data-variant="facts"] .do-wv-story__desc { grid-area:desc; }
.do-wv-facts { grid-area:facts; margin-top:10px; display:flex; flex-direction:column; gap:93.6px; padding:40px; border-radius:16px; background:#171615; color:#ffffff; box-sizing:border-box; min-width:0; }
.do-wv-facts__item { display:flex; flex-direction:column; gap:20px; min-width:0; }
.do-wv-facts__value { margin:0; font-size:64px; line-height:1.15; font-weight:800; color:#ffffff; overflow-wrap:break-word; }
.do-wv-facts__label { margin:0; font-size:18px; line-height:1.15; color:#c2c1bf; }
@media (max-width:1050px) {
  .do-wv-story[data-variant="facts"] .do-wv-story__inner { grid-template-columns:minmax(0,1fr) minmax(0,1fr); column-gap:40px; padding:56px 40px; min-height:0; }
  .do-wv-facts { padding:32px; gap:56px; }
  .do-wv-facts__value { font-size:clamp(36px,5.6vw,64px); }
}
@media (max-width:760px) {
  .do-wv-story[data-variant="facts"] .do-wv-story__inner { display:flex; flex-direction:column; gap:24px; padding:40px 24px; grid-template-areas:none; }
  .do-wv-story[data-variant="facts"] .do-wv-story__title, .do-wv-story[data-variant="facts"] .do-wv-story__desc { grid-area:auto; }
  .do-wv-facts { grid-area:auto; margin-top:0; padding:24px; gap:32px; }
  .do-wv-facts__value { font-size:40px; }
  .do-wv-facts__label { font-size:16px; }
}
/* В макетах T-029B значок WEB красный, как и PDF (6102:364, 6102:4914); у волны T-018 — тёмный. */
.do-story__docs[data-batch="selected"] .do-story__doc-icon--web { background:#ba0f26; }

/* T-029B — геометрия рамок фото по макетам (десктоп ≥1051px).
   Hero: фото — рамка 680×640 (или 680×560) со смещением от верха секции, правое поле 40px
   (rounded-rectangle «… — hero», 6102:347). Внутри фото вписано целиком (contain).
   «Особенности»: фото 700×540 со смещением (40, 55), текст начинается с x=800
   (6102:356 / 6102:357); кикера и подписи в макете нет — заголовок сдвинут на 41px, как
   пустая строка кикера. Ниже 1051px действует общая адаптивная раскладка. */
@media (min-width:1051px) {
  /* Та же рамка hero-фото 680×640 у Rini (6048:917, 6025:2517): R01 проверки T-028 — кресло было
     ~16% крупнее макета, потому что фото вписывалось в весь контейнер 720×740. */
  .do-wv-hero:is([data-batch="selected"],[data-batch="rini"]) .do-wv-hero__photo { align-self:start; height:var(--do-hero-photo-h,640px); width:var(--do-hero-photo-w,auto); margin:calc(var(--do-hero-photo-top,40px) - 92px) 40px calc(740px - var(--do-hero-photo-top,40px) - var(--do-hero-photo-h,640px) - 72px) var(--do-hero-photo-left,0px); }
  .do-wv-story[data-batch="selected"][data-variant="photo"] .do-wv-story__inner { grid-template-columns:minmax(0,51.39%) minmax(0,1fr); grid-template-rows:auto auto auto auto auto 1fr; align-content:start; }
  .do-wv-story[data-batch="selected"][data-variant="photo"] .do-wv-story__photo { padding:55px 0 55px 40px; align-items:flex-start; box-sizing:border-box; }
  .do-wv-story[data-batch="selected"][data-variant="photo"] .do-wv-story__photo img { width:100%; height:540px; min-height:0; max-height:none; object-fit:contain; }
  .do-wv-story[data-batch="selected"][data-variant="photo"] .do-wv-story__title { padding:121px 80px 0 60px; }
  .do-wv-story[data-batch="selected"][data-variant="photo"] .do-wv-story__desc,
  .do-wv-story[data-batch="selected"][data-variant="photo"] .do-wv-story__metric { padding-left:60px; padding-right:80px; }
}
/* MAX UV: фото 195×146 не увеличивается больше чем вдвое — врезка 390×292 (6102:5894). */
.do-wv-hero__photo[data-small] img { width:390px; height:292px; max-width:100%; margin:auto; object-fit:contain; }
@media (min-width:1051px) {
  .do-wv-hero__photo[data-small] img { margin:0; }
}
@media (max-width:760px) {
  /* Мобильный макет 6102:6022 показывает фото в натуральном размере. */
  .do-wv-hero__photo[data-small] img { width:195px; height:146px; }
}
/* То же в галерее карточки: не растягивать 195×146 на всё окно просмотра. */
.do-product__main-image[data-small] { width:390px; max-width:100%; height:292px; object-fit:contain; margin-inline:auto; }

/* T-029, этап A, п.3 — Flexion Advanced на 390: фото hero выступало на 50px за правый край
   (обрезались балка и подпись «Awarded for Design»), а горизонтальный градиент-подложка закрывал
   окуляры слева. Только для страницы с data-mobile-fit="contain": фото по ширине экрана целиком,
   подложка — вертикальная, гасит только нижнюю часть под текстом. Hero других товаров не менялись. */
@media (max-width:760px) {
  .do-story__hero-photo[data-mobile-fit="contain"] img { top:0; right:0; width:100%; max-width:none; opacity:.55; }
  .do-story__hero[data-theme="dark"] .do-story__hero-photo[data-mobile-fit="contain"]::after { background:linear-gradient(180deg,transparent 0%,transparent 55%,var(--do-story-surface) 100%); }
  /* Текст начинается под фото (высота кадра 390×293), а не поверх корпуса микроскопа. */
  .do-story__hero[data-mobile-fit="contain"] { min-height:0; padding-top:284px; }
}

/* T-029, этап A — блок производителя CJ-Optik на планшете (761–1100px): два фото 360+280px и
   колонка текста лежали в одной строке flex, текст уходил за правый край (страница шире экрана
   на 768 у всех пяти Flexion). Колонка текста уходит под фото; ≤760 и десктоп не менялись. */
@media (min-width:761px) and (max-width:1100px) {
  .do-story__manufacturer-row { flex-direction:column; gap:32px; padding-inline:24px; box-sizing:border-box; }
  .do-story__manufacturer-photos { flex-wrap:wrap; max-width:100%; }
  .do-story__manufacturer-copy { width:100%; min-width:0; }
}
/* Кнопка «Все товары CJ-Optik»: общее правило .do-product a { color:inherit } делало подпись тёмной
   (rgb 44,43,42) на красном (186,15,38) — контраст около 2,6:1. Белый, как в макетах и у других брендов. */
.do-product .do-story__manufacturer-btn { color:#ffffff; }

/* ============================================================================
   Проверка Rini T-028 (29.09.2026): R03, R04.
   ========================================================================== */
/* R03 — строка документа теперь целиком ссылка (<a class="do-story__doc-row">), «кнопка» — span внутри. */
.do-story__doc-row { color:inherit; text-decoration:none; }
.do-story__doc-row:hover .do-story__doc-btn { background:var(--do-story-text); color:var(--do-story-surface); }
/* R04 — ярлык «Параметры» над «Характеристиками» в макетах Rini: цвет текста секции (Figma 6025:2533:
   свойство text-[color:var(--do-story-text)]), а не акцент; в тёмной теме правило уже действовало. */
.do-story__specs--wave .do-story__kicker { color:var(--do-story-text); }

@media (max-width:760px) {
  /* R03 — мобильные документы Rini: белый блок при любой теме desktop (README пакета T-028; Figma 6048:1044)
     и компактные строки «иконка + название + подпись» без отдельной кнопки: ссылка — вся строка.
     Партия T-029B (data-batch="selected") получает те же компактные строки: в её мобильных макетах
     (6102:481, 6102:5025, 6102:5275) кнопок нет, а тема мобильного блока совпадает с desktop. */
  /* Таблица характеристик: на мобильном белая при любой теме desktop (Rini). Заголовки групп в светлой
     теме — акцентные (красные), как в мобильных кадрах; правило тёмной темы, делающее их белыми, здесь
     не действует. */
  .do-story .do-story__specs[data-theme-mobile="light"] { --do-story-surface:#ffffff; --do-story-text:#2c2b2a; --do-story-muted:#686765; --do-story-border:#e5e4e2; }
  .do-story__specs--wave[data-theme="dark"][data-theme-mobile="light"] .do-story__specs-group-title { color:var(--do-story-accent); }
  .do-story__specs--wave[data-theme="dark"][data-theme-mobile="light"] .do-story__kicker { color:var(--do-story-text); }
  .do-story .do-story__docs[data-theme-mobile="light"] { --do-story-surface:#ffffff; --do-story-text:#2c2b2a; --do-story-muted:#686765; --do-story-border:#e5e4e2; }
  .do-story .do-story__docs[data-theme-mobile="dark"] { --do-story-surface:#171615; --do-story-text:#ffffff; --do-story-muted:#c2c1bf; --do-story-border:#504e4b; }
  .do-story__docs--wave[data-mobile-rows="compact"] .do-story__doc-row { flex-wrap:nowrap; min-height:52px; border-bottom:0; }
  .do-story__docs--wave[data-mobile-rows="compact"] .do-story__doc-text { flex:1 1 auto; }
  .do-story__docs--wave[data-mobile-rows="compact"] .do-story__doc-btn { display:none; }
  /* R04 — в мобильном фрейме Rini нет крупной фоновой O ни у характеристик, ни у документов. */
  .do-story__specs[data-batch="rini"] .do-story__specs-watermark,
  .do-story__docs[data-batch="rini"] .do-story__docs-o { display:none; }
}


/* ============================================================================
   Rini, проход 2 ночного пакета (30.09.2026): остатки расхождений FIX-REPORT (29.09.2026), п. 4–6, 8.
   Всё ограничено [data-batch="rini"]. Размеры сняты с макетов Rini (desktop 1440 / mobile 390):
   «Особенности» 6048:2160 (ComfortMove; тот же каркас у 15 моделей) и 6048:2288; «Документы» 6048:2169, 6048:687, 6048:2349.
   Размеры заголовков глав (32px), ярлыков (12px) и начертание метрики (600) — принятый стандарт
   product-type.css, здесь не меняются.
   ========================================================================== */
@media (min-width:1051px) {
  /* Фото — рамка 700×540 со смещением (40, 55), текст начинается с x=800: как у T-029B, но кикер в макете есть. */
  .do-wv-story[data-batch="rini"][data-variant="photo"] .do-wv-story__inner { grid-template-columns:minmax(0,51.39%) minmax(0,1fr); grid-template-rows:auto auto auto auto auto 1fr; align-content:start; }
  .do-wv-story[data-batch="rini"][data-variant="photo"] .do-wv-story__photo { padding:55px 0 55px 40px; align-items:flex-start; box-sizing:border-box; }
  .do-wv-story[data-batch="rini"][data-variant="photo"] .do-wv-story__photo img { width:100%; height:540px; min-height:0; max-height:none; object-fit:contain; }
  .do-wv-story[data-batch="rini"][data-variant="photo"] .do-wv-story__kicker { padding:80px 80px 0 60px; line-height:normal; }
  .do-wv-story[data-batch="rini"][data-variant="photo"] :is(.do-wv-story__title,.do-wv-story__desc,.do-wv-story__metric,.do-wv-story__fact) { padding-left:60px; padding-right:80px; }
  .do-wv-story[data-batch="rini"][data-variant="photo"] .do-wv-story__captions { padding:24px 80px 80px 60px; }
  /* Ударная строка: 42 или 36 px (по макету каждой модели, data-metric-size), межстрочный 76 px, на ширинах
     меньше 1440 пропорционально сжимается, чтобы «R7 · Электропривод» не переносилась. */
  .do-wv-story[data-batch="rini"][data-variant="photo"] .do-wv-story__metric {
    font-size:min(calc(var(--do-metric-size,42) * 1px), calc(var(--do-metric-size,42) / 14.4 * 1vw));
    line-height:min(76px, 5.2778vw); }
}
.do-wv-story[data-batch="rini"][data-metric-size="36"] { --do-metric-size:36; }
.do-wv-story[data-batch="rini"][data-metric-size="42"] { --do-metric-size:42; }
@media (max-width:760px) {
  /* Mobile 6048:2288: заголовок, фото, ударная строка 28 px в одну строку, текст; подписи под строкой в кадре нет. */
  .do-wv-story[data-batch="rini"][data-variant="photo"] .do-wv-story__metric { font-size:28px; line-height:normal; letter-spacing:0; }
  .do-wv-story[data-batch="rini"][data-variant="photo"] .do-wv-story__captions { display:none; }
}

/* Документы: разделитель 1px #e6e6e6 между строками (Separator 5655:624), кнопка с рамкой 1.5px цвета границы
   темы (а не цвета текста), между ярлыком и заголовком 16 px, контент шириной 1280 (x=80), фоновая O — 2100×2087
   со смещением от середины секции (Background O-Shape Large: left 50%+430−850−400, top 50%+83,5−843,5−400). */
@media (min-width:1051px) {
  .do-story__docs:is([data-batch="rini"],[data-batch="eight"]) > .do-product__container { width:min(1280px,calc(100% - 160px)); }
  .do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__docs-o { right:auto; left:calc(50% - 820px); top:calc(50% - 1160px); width:2100px; height:2087px; opacity:1; }
}
.do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__docs-head { display:flex; flex-direction:column; gap:16px; }
.do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__docs-head .do-story__kicker { margin:0; }
.do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__doc-row { border-bottom:0; }
.do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__doc-row + .do-story__doc-row { border-top:1px solid #e6e6e6; }
.do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__doc-btn { border:1.5px solid var(--do-story-border,#e5e4e2); }

/* Rini, проход 2 — mobile 390: характеристики (6048:2293) и документы (6048:2349).
   Характеристики: отступы секции 40/24, блок заголовка gap 8, группы через 24, строка 13px с промежутком 8 до
   разделителя и 8 после, столбцы 150 / 180. Документы: секция 305 px = 40 + 53 + 20 + 66 + 20 + 66 + 40,
   строка — значок 36×42 (радиус 4), название 14/600, подпись 11, gap 12, вертикальные поля 12. */
@media (max-width:760px) {
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) { padding-block:40px; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-head { display:flex; flex-direction:column; gap:8px; margin-bottom:24px; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-head .do-story__kicker { margin:0; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-group + .do-story__specs-group { margin-top:0; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-group-title { margin:0 0 8px; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-row { gap:0; padding:0 0 14px; margin-bottom:8px; font-size:13px; line-height:normal; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-row dt { flex:0 0 150px; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-row dd { flex:0 0 180px; }

  .do-story__docs:is([data-batch="rini"],[data-batch="eight"]) { padding-block:40px; }
  .do-story__docs:is([data-batch="rini"],[data-batch="eight"]) > .do-product__container { display:flex; flex-direction:column; gap:20px; }
  .do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__docs-head { gap:8px; margin-bottom:0; }
  .do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__docs-head + div { display:flex; flex-direction:column; gap:20px; }
  .do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__doc-row { gap:12px; padding:12px 0; min-height:0; }
  .do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__doc-row + .do-story__doc-row { border-top:0; }
  .do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__doc-icon { width:36px; height:42px; border-radius:4px; font-size:10px; font-weight:700; }
  .do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__doc-text { gap:2px; }
  .do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__doc-title { font-size:14px; line-height:normal; }
  .do-story__docs:is([data-batch="rini"],[data-batch="eight"]) .do-story__doc-meta { font-size:11px; line-height:normal; }
}

/* Rini, проход 2 — характеристики, desktop (Figma «Specs Split Columns»: контент 1280 при полях 80, ярлык и заголовок
   через 16 px, строка 41 px = 12 + 17 + 12; колонки по 608 px). Заголовки групп остаются 18 px (принятый стандарт). */
@media (min-width:1051px) {
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) > .do-product__container { width:min(1280px,calc(100% - 160px)); }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-head { display:flex; flex-direction:column; gap:16px; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-head .do-story__kicker { margin:0; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-row { padding:12px 0 11px; line-height:normal; }
  /* Расстояние от заголовка группы до первой строки: 12 px в макете (заголовок 20 px) минус разница с принятым заголовком 18/25,2 px. */
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-group-title { margin-bottom:7px; }
}

/* Проход 3 ночного пакета (30.09.2026): hero волны T-018 по матрице Figma (models/hero-geometry.json, qa/hero/HERO-GEOMETRY-MATRIX.md).
   data-title-size="60" — заголовок 60/68 в колонке 570 (у Xenosys Looks/L2S/XD/LooksCAM и всех Dentsply Sirona; у ILLUCO и Looks A
   остаётся 68/76); data-hero-h="660" — hero высотой 660 (шесть аксессуаров Xenosys), фото-рамка 640×520 со смещением (740, 70).
   Только ≥1051px: на планшете и телефоне действуют прежние адаптивные размеры. */
@media (min-width:1051px) {
  .do-wv-hero[data-title-size="60"] .do-wv-hero__title { font-size:60px; line-height:68px; max-width:570px; }
  .do-wv-hero[data-hero-h="660"] .do-wv-hero__inner { min-height:660px; }
  /* Xenosys Looks 2500/2800/5000/7500 и Looks A: текст hero начинается с y=96, а не 92 (Hero copy в 5852:293 и аналогах). */
  .do-wv-hero[data-copy-top="96"] .do-wv-hero__eyebrow { margin-top:4px; }
  /* Рамка 640×520 в макете; правый отступ 40 (1440 − 1400) и max-width вместо фиксированных 640, чтобы на 1051–1290 фото не выходило за колонку. */
  .do-wv-hero[data-hero-h="660"]:not([data-comp]) .do-wv-hero__photo { align-self:start; width:auto; max-width:640px; height:520px; margin:-22px 40px -2px 20px; }
}

/* Вариант A таблицы характеристик (30.09.2026): группа — <table> с <caption>, параметр — <th scope="row">. Геометрия строк прежняя
   (тот же отступ 12+12 и линия 1 px, что у <dl>); включено флагом specs.semantic, пока только у Rini. */
.do-story__specs-table { width:100%; border-collapse:collapse; table-layout:fixed; }
.do-story__specs-table caption { caption-side:top; text-align:left; margin:0; padding:0 0 12px; }
.do-story__specs-table tr { border-bottom:1px solid var(--do-story-border); }
.do-story__specs-table th, .do-story__specs-table td { padding:12px 0; font-size:14px; vertical-align:top; }
.do-story__specs-table th { width:40%; padding-right:16px; color:var(--do-story-muted); font-weight:400; text-align:left; }
.do-story__specs-table td { font-weight:700; text-align:right; overflow-wrap:anywhere; }
.do-product .do-story__specs-table td { font-weight:var(--do-type-semibold); }
.do-story__specs-table caption.do-story__specs-group-title { font-size:16px; }
.do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-table caption { padding-bottom:12px; }
@media (min-width:1051px) {
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-table caption { padding-bottom:7px; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-table th, .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-table td { padding:12px 0 11px; line-height:normal; }
}
@media (max-width:760px) {
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-table { margin-bottom:8px; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-table caption { padding-bottom:8px; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-table th, .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-table td { padding:0 0 14px; font-size:13px; line-height:normal; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-table tr + tr th, .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-table tr + tr td { padding-top:8px; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-table td { width:180px; }
  .do-story__specs:is([data-batch="rini"],[data-batch="eight"]) .do-story__specs-table th { width:auto; padding-right:12px; }
}
.do-story__specs .do-story__specs-table caption.do-story__specs-group-title { margin:0; }

/* D8-2026-09-30: карточка фактов (Feature facts, Figma 6431:27073) и второе изделие в hero (Ultra + Otoflash).
   Десктоп: секция 560, карточка 620 слева (x=80, y=80, отступ 40, значения 32/40, подписи 18/28, зазор 20), текст справа с x=800. */
.do-wv-story[data-variant="factlist"] .do-wv-story__inner { display:grid; grid-template-columns:620px minmax(0,560px); grid-template-areas:"list title" "list desc"; grid-template-rows:auto 1fr; column-gap:100px; row-gap:24px; align-items:start; min-height:560px; padding:80px; box-sizing:border-box; }
.do-wv-story[data-variant="factlist"] .do-wv-story__title { grid-area:title; }
.do-wv-story[data-variant="factlist"] .do-wv-story__desc { grid-area:desc; }
.do-wv-factlist { grid-area:list; display:flex; flex-direction:column; gap:20px; margin:0; padding:40px; border-radius:16px; background:#171615; box-sizing:border-box; min-width:0; }
.do-wv-factlist > div { display:contents; }
.do-wv-factlist dt { margin:0; color:#fff; font-size:32px; line-height:40px; font-weight:800; overflow-wrap:break-word; }
.do-wv-factlist dd { margin:0; color:#c2c1bf; font-size:18px; line-height:28px; }
.do-wv-hero__photo .do-wv-hero__extra { position:absolute; inset:auto; display:block; max-width:none; object-fit:contain; pointer-events:none; }
@media (min-width:1051px) {
  .do-wv-hero__photo .do-wv-hero__extra { left:calc(var(--ex-x) * var(--px)); top:calc(var(--ex-y) * var(--px)); width:calc(var(--ex-w) * var(--px)); height:calc(var(--ex-h) * var(--px)); }
}
@media (max-width:1050px) {
  .do-wv-story[data-variant="factlist"] .do-wv-story__inner { grid-template-columns:minmax(0,1fr) minmax(0,1fr); column-gap:40px; padding:56px 40px; min-height:0; }
  .do-wv-factlist { padding:32px; }
}
@media (max-width:760px) {
  .do-wv-story[data-variant="factlist"] .do-wv-story__inner { display:flex; flex-direction:column; align-items:stretch; gap:24px; padding:40px 24px; }
  .do-wv-factlist { gap:16px; padding:28px 24px; }
  .do-wv-factlist dt { font-size:24px; line-height:30px; }
  .do-wv-factlist dd { font-size:16px; line-height:22px; }
}
.do-story__docs[data-batch="eight"] .do-story__doc-icon--web { background:#ba0f26; }

/* D8: мобильная композиция «два изделия» (Figma 6431:27456: Ultra 175×292 в (0,10), Otoflash 170×195 в (175,130) внутри блока 342×320
   со смещением 24 от края экрана) и мобильный блок производителя CJ-Optik (6431:27314: без двух фото, логотип и кнопка на всю ширину). */
@media (max-width:760px) {
  .do-wv-hero[data-comp][data-duo] .do-wv-hero__photo { height:320px; margin-top:20px; }
  .do-wv-hero[data-comp][data-duo] .do-wv-hero__photo img:not(.do-wv-hero__strip):not(.do-wv-hero__extra) { position:absolute; left:calc(24 / 390 * 100%); top:10px; width:calc(175 / 390 * 100%); height:292px; aspect-ratio:auto; padding:0; }
  .do-wv-hero[data-comp][data-duo] .do-wv-hero__photo .do-wv-hero__extra { left:calc(199 / 390 * 100%); top:130px; width:calc(170 / 390 * 100%); height:195px; }
  .do-story__manufacturer[data-variant="eight"] { gap:32px; padding-block:64px; }
  .do-story__manufacturer[data-variant="eight"] .do-story__manufacturer-head { padding-inline:0; }
  .do-story__manufacturer[data-variant="eight"] .do-story__manufacturer-photos { display:none; }
  .do-story__manufacturer[data-variant="eight"] .do-story__manufacturer-panorama { height:220px; }
  .do-story__manufacturer[data-variant="eight"] .do-story__manufacturer-caption { font-size:12px; }
  .do-story__manufacturer[data-variant="eight"] .do-story__manufacturer-copy > p { line-height:24px; }
  .do-story__manufacturer[data-variant="eight"] .do-story__manufacturer-facts { gap:12px; }
  .do-story__manufacturer[data-variant="eight"] .do-story__manufacturer-fact { gap:12px; }
  .do-story__manufacturer[data-variant="eight"] .do-story__manufacturer-cta-row { gap:20px; }
  .do-story__manufacturer[data-variant="eight"] .do-story__manufacturer-logo { width:100%; height:auto; padding:12px 0; box-sizing:border-box; }
  .do-story__manufacturer[data-variant="eight"] .do-story__manufacturer-btn { padding:14px 0; border-radius:8px; font-size:16px; font-weight:700; }
}

/* End */


/* Start:/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/purchase-mobile-first.css?17941852881677*/
/* Approved shared layout. All content already exists in the server/static HTML.
   Desktop uses two columns; mobile follows the HTML source order. */
.do-product__hero--mobile-first {
  grid-template-areas:
    "media title"
    "media price"
    "media details"
    "media purchase"
    "media bottom";
  grid-template-rows:auto auto auto auto 1fr;
  row-gap:0;
}
.do-product__hero--mobile-first > * { min-width:0; }
.do-product__hero--mobile-first > .do-product__heading { grid-area:title; overflow-wrap:break-word; }
.do-product__hero--mobile-first > .do-product__details { grid-area:details; }
.do-product__hero--mobile-first > .do-product__price-row { grid-area:price; }
.do-product__hero--mobile-first > .do-product__buy-area { grid-area:purchase; }
.do-product__hero--mobile-first .do-product__cart-status:empty { display:none; }
.do-product__hero--mobile-first > .do-product__offer-bottom { margin-top:0; }
.do-product__hero--mobile-first .do-product__messengers { margin-top:20px; }
@media (max-width:760px) {
  .do-product__hero--mobile-first {
    grid-template-areas:"title" "media" "details" "price" "purchase" "bottom";
    grid-template-rows:auto;
    row-gap:24px;
  }
  .do-product__hero--mobile-first > .do-product__heading { margin:0; }
  .do-product__hero--mobile-first .do-product__intro { margin-top:0!important; }
  .do-product__hero--mobile-first .do-product__purchase { margin-top:0; }
  .do-product__hero--mobile-first .do-product__cart-status:empty { min-height:0; margin-top:0!important; }
  .do-product__hero--mobile-first > .do-product__offer-bottom { margin-top:0; }
  .do-product__hero--mobile-first .do-product__messengers { margin-top:0; }
}

/* End */


/* Start:/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/product-type.css?17941852882194*/
/* Typography standard, 2026-09-29. Scope: product content; site header unchanged.
   One family, three weights: regular 400, semibold 600, extrabold 800.
   Four roles: display/section title, subheading, body, interface/caption.
   Sizes of layouts and decorative metrics remain responsive, not extra font faces. */
.do-product {
  --do-type-regular:400;
  --do-type-semibold:600;
  --do-type-heading:800;
  --do-type-section:32px;
  --do-type-subhead:18px;
  --do-type-body:15px;
  font-family:var(--do-font);
  font-weight:var(--do-type-regular);
}
.do-product h1, .do-product h2 { font-weight:var(--do-type-heading); }
.do-product h3, .do-product strong, .do-product b { font-weight:var(--do-type-semibold); }
.do-product :is(.do-story__heading,.do-story__reviews-title,.do-ev-heading,.do-wv-story__title,.do-wv-maker__title) {
  font-size:var(--do-type-section); font-weight:var(--do-type-heading); line-height:1.2; letter-spacing:-.65px;
}
.do-product :is(.do-story__feature-title,.do-ev-feature-title,.do-story__review-name,.do-story__doc-title,.do-story__specs-group-title) {
  font-size:var(--do-type-subhead); font-weight:var(--do-type-semibold); line-height:1.4; letter-spacing:0;
}
.do-product :is(.do-story__feature-desc,.do-ev-feature-desc,.do-ev-hero-body,.do-ev-gallery-note,.do-ev-body,.do-story__manufacturer-copy p) {
  font-size:var(--do-type-body); font-weight:var(--do-type-regular); line-height:1.6;
}
.do-product :is(.do-story__kicker,.do-story__reviews-kicker,.do-ev-kicker,.do-ev-hero-eyebrow,.do-story__hero-eyebrow,.do-wv-hero__eyebrow) {
  font-size:12px; font-weight:var(--do-type-semibold); line-height:1.4; letter-spacing:.7px;
}
.do-product :is(.do-story__specs-row dd,.do-story__manufacturer-fact,.do-story__doc-btn,.do-story__reviews-btn,.do-ev-cta,.do-product__buy,.do-product__secondary,.do-product__cta,.do-product__qty-value),
.do-product .do-product__brandline>a:first-child {
  font-weight:var(--do-type-semibold);
}
.do-product :is(.do-wv-hero__fact,.do-wv-story__fact,.do-wv-story__metric,.do-product__doc-title) {
  font-weight:var(--do-type-semibold);
}
@media (max-width:760px) {
  .do-product { --do-type-section:27px; --do-type-subhead:16px; }
}

/* End */


/* Start:/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/review-player.css?17941852881068*/
.do-review-player { box-sizing:border-box;width:min(960px,calc(100% - 24px));max-height:92dvh;padding:24px;border:0;border-radius:16px;background:#fff;color:#292929;font:400 15px/1.5 var(--do-font, sans-serif); }
.do-review-player::backdrop { background:rgb(0 0 0 / .8); }
.do-review-player h2 { margin:16px 0;font-size:20px;font-weight:600; }
.do-review-player video,.do-review-player img { display:block;width:100%;max-height:65dvh;object-fit:contain;background:#171717;border-radius:10px; }
.do-review-player__close { display:block;margin-left:auto;min-height:44px;padding:8px 16px;border:1px solid #ddd;border-radius:24px;background:white;color:inherit;font:600 14px var(--do-font,sans-serif);cursor:pointer; }
.do-review-player a { color:#bd0a2b;text-underline-offset:3px; }
.do-review-player :focus-visible { outline:3px solid #bd0a2b;outline-offset:3px; }
.do-review-player [role=status]:empty { display:none; }
.do-story__review-card[data-do-review-type=image] .do-story__review-play { display:none; }
@media(max-width:760px){.do-review-player{padding:16px;}}

/* End */


/* Start:/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/story-refinements.css?17941852881567*/
/* T-022: keep the original brand vector's aspect ratio; content stays still. */
.do-product .do-story__specs-group-title { text-transform:none; letter-spacing:0; }
.do-product .do-story__specs-watermark { width:min(1140px,110vw);height:auto;right:-26%;top:-18%;opacity:.065;transform:rotate(-18deg); }
.do-product .do-story__specs[data-theme=dark] .do-story__specs-watermark { opacity:.16; }
.do-product [data-do-parallax] { position:relative;isolation:isolate;overflow:hidden; }
.do-product [data-do-parallax-fallback]::before { content:'';position:absolute;width:min(1040px,100vw);aspect-ratio:720/714;right:-20%;top:-22%;background:url('/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/./assets/story/o-hero-red.svg') center/contain no-repeat;opacity:.14;pointer-events:none;z-index:-1;transform:translateY(var(--do-parallax-y,0px)); }
.do-product [data-do-parallax] > :is(.do-story__hero-o,.do-story__docs-o,.do-story__specs-watermark,.do-wv-hero__o,.do-ev-hero-o,.do-ev-brand-o) { translate:0 var(--do-parallax-y,0px); }
@media(max-width:760px) {
  .do-product .do-story__specs-watermark { width:150vw;right:-78%;top:6%;opacity:.065; }
  .do-product [data-do-parallax-fallback]::before {width:150vw;right:-68%;top:0;}
  .do-product [data-do-parallax-fallback][data-theme-mobile=light]::before { display:none; }
}
@media(prefers-reduced-motion:reduce) {
  .do-product [data-do-parallax] > :is(.do-story__hero-o,.do-story__docs-o,.do-story__specs-watermark,.do-wv-hero__o,.do-ev-hero-o,.do-ev-brand-o) { translate:none!important; }
  .do-product [data-do-parallax-fallback]::before {transform:none!important;}
}

/* End */


/* Start:/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/brand-block.css?17941852889996*/
/* Блоки производителей, выбранные пользователем в T-022:
   ExamVision A (5954:346), ILLUCO B (5954:349), Dentsply Sirona A (5954:350).
   Все правила ограничены классами .do-brand* — вёрстка CJ-Optik (.do-story__*),
   ExamVision (.do-ev-*) и волны T-018 (.do-wv-*) не затрагивается.
   Сетка макета: полоса 1440 с внутренними отступами 64px, контент 1312px,
   две колонки по 624px с зазором 64px (у Dentsply Sirona — 528 + 720). */
.do-brand { --do-brand-surface:#ffffff; --do-brand-text:#2c2b2a; --do-brand-muted:#686765; --do-brand-accent:#ba0f26;
  background:var(--do-brand-surface); color:var(--do-brand-text); }
.do-brand[data-theme="dark"] { --do-brand-surface:#171615; --do-brand-text:#ffffff; --do-brand-muted:#c2c1bf; }
.do-brand__inner { width:min(1440px,100%); margin-inline:auto; padding:56px 64px; display:flex; flex-direction:column; gap:40px; }
.do-brand--illuco .do-brand__inner,
.do-brand--dentsply .do-brand__inner { padding:64px; gap:24px; }

.do-brand__label { display:flex; align-items:center; gap:16px; margin:0; font-size:14px; line-height:21px; font-weight:600; color:var(--do-brand-muted); }
.do-brand__rule { display:block; width:40px; height:4px; background:var(--do-brand-accent); flex-shrink:0; }
.do-brand--illuco .do-brand__rule, .do-brand--dentsply .do-brand__rule { width:64px; }

.do-brand__row { display:grid; grid-template-columns:minmax(0,624px) minmax(0,624px); gap:64px; align-items:center; }
.do-brand--dentsply .do-brand__row { grid-template-columns:minmax(0,528px) minmax(0,720px); }

.do-brand__photos { display:flex; align-items:center; gap:24px; min-width:0; }
.do-brand__photos img { display:block; max-width:100%; height:auto; object-fit:cover; }
.do-brand--examvision .do-brand__photos img:first-child { width:360px; aspect-ratio:360/476; }
.do-brand--examvision .do-brand__photos img:last-child { width:240px; aspect-ratio:240/332; }
.do-brand--illuco .do-brand__photos img { width:100%; aspect-ratio:624/530; }

.do-brand__copy { display:flex; flex-direction:column; align-items:flex-start; gap:24px; min-width:0; }
/* Официальный знак производителя (T-027): пропорции исходника, без обрезки и растяжения,
   отступ до следующего элемента задаёт gap колонки — 24px (у ILLUCO 28px, как в макете). */
.do-brand__logo { display:block; width:auto; max-width:min(100%,246px); height:auto; object-fit:contain; }
.do-brand--examvision .do-brand__logo { height:96px; }
.do-brand--illuco .do-brand__logo { height:30px; }
.do-brand--dentsply .do-brand__logo { height:63px; }
.do-brand--illuco .do-brand__copy { gap:28px; }
.do-brand__eyebrow { margin:0; font-size:14px; line-height:21px; font-weight:600; color:var(--do-brand-muted); }
.do-brand__body { margin:0; max-width:568px; font-size:18px; line-height:27px; color:var(--do-brand-muted); }
/* В макете строка набрана с двойными пробелами вокруг слэша (5955:204) — сохраняем их. */
.do-brand__facts { margin:0; font-size:14px; line-height:21px; font-weight:600; color:var(--do-brand-text); white-space:pre-wrap; }
.do-brand__note { margin:0; max-width:496px; font-size:14px; line-height:21px; color:var(--do-brand-muted); }

.do-brand__figure { margin:0; display:flex; flex-direction:column; gap:20px; min-width:0; }
.do-brand__figure img { width:100%; height:auto; aspect-ratio:720/496; object-fit:cover; }
.do-brand__figure figcaption { font-size:14px; line-height:21px; font-weight:600; color:var(--do-brand-muted); }

.do-product .do-brand__cta { display:inline-flex; align-items:center; justify-content:center; min-height:52px; padding:14px 24px; border-radius:12px;
  background:var(--do-brand-accent); color:#fff; font-size:16px; line-height:24px; font-weight:600; text-decoration:none; }
.do-brand__cta:hover { background:#a00d21; }
.do-brand__cta:focus-visible { outline:3px solid var(--do-brand-text); outline-offset:3px; }

/* Заголовок главы: правило .do-product h2 задаёт 32px, поэтому размер макета (48/54)
   поднят по специфичности — как и в остальных главах волны. */
.do-product .do-brand__title { margin:0; max-width:600px; font-size:48px; line-height:54px; font-weight:800; letter-spacing:0;
  color:var(--do-brand-text); overflow-wrap:break-word; }

@media (max-width:1100px) {
  .do-brand__inner, .do-brand--illuco .do-brand__inner, .do-brand--dentsply .do-brand__inner { padding:48px 40px; }
  .do-brand__row, .do-brand--dentsply .do-brand__row { grid-template-columns:minmax(0,1fr); gap:32px; }
  .do-product .do-brand__title { font-size:36px; line-height:42px; }
  .do-brand__body { font-size:17px; line-height:26px; }
  .do-brand--examvision .do-brand__photos img:first-child { width:58%; }
  .do-brand--examvision .do-brand__photos img:last-child { width:38%; }
}
@media (max-width:760px) {
  .do-brand__inner, .do-brand--illuco .do-brand__inner, .do-brand--dentsply .do-brand__inner { padding:40px 24px; gap:24px; }
  .do-brand__row { gap:24px; }
  .do-product .do-brand__title { font-size:30px; line-height:36px; }
  .do-brand__body { font-size:16px; line-height:25px; }
  .do-brand__photos { gap:12px; }
  /* Мобильная адаптация выбранных блоков T-022 сохранена, знак уменьшен пропорционально. */
  .do-brand--examvision .do-brand__logo { height:72px; }
  .do-brand--dentsply .do-brand__logo { height:48px; }
  .do-brand--illuco .do-brand__logo { height:26px; }
  .do-brand__cta { align-self:stretch; }
}

/* HAHNENKRATT — зеркала (T-027, Figma 5992:3331): фото команды слева 600×480,
   справа знак 96×96 рядом со страной, заголовок, два абзаца и кнопка каталога. */
.do-brand--hahnenkratt .do-brand__row { grid-template-columns:minmax(0,600px) minmax(0,600px); align-items:start; }
.do-brand--hahnenkratt .do-brand__photos img { width:100%; aspect-ratio:600/480; border-radius:12px; }
.do-brand--hahnenkratt .do-brand__logo { width:96px; height:96px; }

/* Широкая полоса (Rini T-028, Figma 6048:935; Support Design, BRUMABA, Planmeca, Asiga T-029B):
   фото здания или бренда во всю ширину, знак рядом со страной, текст под ним. У Asiga фото нет —
   остаётся та же полоса из знака, заголовка, текста и кнопки. */
.do-brand--wide .do-brand__inner { gap:32px; padding:64px 80px; }
.do-brand--wide .do-brand__wide-photo img { display:block; width:100%; height:auto; aspect-ratio:1280/300; object-fit:cover; border-radius:12px; }
.do-product .do-brand--wide .do-brand__title { max-width:1100px; }
.do-brand--wide .do-brand__text p { max-width:1100px; }
.do-brand--wide .do-brand__logo { height:auto; object-fit:contain; }
.do-brand--rini .do-brand__logo { width:189px; height:67px; }
.do-brand--support-design .do-brand__logo { width:250px; height:43px; }
.do-brand--brumaba .do-brand__logo { width:240px; height:38px; }
.do-brand--planmeca .do-brand__logo { width:244px; height:38px; }
.do-brand--asiga .do-brand__logo { width:244px; height:21px; }

/* Общее для блоков со знаком рядом со страной. */
.do-brand__identity { display:flex; align-items:center; gap:24px; }
.do-brand__country { margin:0; font-size:14px; line-height:1.4; color:var(--do-brand-accent); white-space:pre-line; }
.do-brand__text { display:flex; flex-direction:column; gap:16px; }
.do-brand__text p { margin:0; max-width:580px; font-size:16px; line-height:1.6; color:var(--do-brand-muted); }

@media (max-width:1100px) {
  .do-brand--wide .do-brand__inner { padding:48px 40px; }
}
@media (max-width:760px) {
  .do-brand--hahnenkratt .do-brand__row { grid-template-columns:minmax(0,1fr); }
  .do-brand--hahnenkratt .do-brand__logo { width:80px; height:80px; }
  .do-brand--wide .do-brand__inner { padding:40px 24px; }
  .do-brand--rini .do-brand__logo { width:150px; height:53px; }
  .do-brand--support-design .do-brand__logo { width:170px; height:30px; }
  .do-brand--brumaba .do-brand__logo { width:160px; height:25px; }
  .do-brand--planmeca .do-brand__logo { width:160px; height:25px; }
  .do-brand--asiga .do-brand__logo { width:160px; height:14px; }
  .do-brand--wide .do-brand__wide-photo img { aspect-ratio:342/220; }
  .do-brand__identity { gap:16px; }
}

/* Rini, проход 2 ночного пакета (30.09.2026): блок производителя по макетам 6048:2170 (desktop) и 6048:2373 (mobile).
   Заголовок 42/normal (desktop) и 28/normal (mobile), пустая строка между абзацами (25,6 px), кнопка
   328×56 с подписью слева (Regular 16/1,6), фото на телефоне 342×180. Только .do-brand--rini. */
.do-brand--rini .do-brand__text { gap:25.6px; }
.do-product .do-brand--rini .do-brand__cta { box-sizing:border-box; width:328px; max-width:100%; height:56px; min-height:56px; padding:16px 24px; justify-content:flex-start; align-items:flex-start; font-weight:400; line-height:1.6; }
@media (min-width:1101px) {
  .do-product .do-brand--rini .do-brand__title { font-size:42px; line-height:normal; }
}
@media (max-width:760px) {
  .do-product .do-brand--rini .do-brand__title { font-size:28px; line-height:normal; }
  .do-brand--rini .do-brand__wide-photo img { aspect-ratio:342/180; }
  .do-brand--rini .do-brand__identity { gap:24px; }
  .do-product .do-brand--rini .do-brand__cta { align-self:flex-start; }
}

/* End */


/* Start:/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/hero-composition.css?17941852883664*/
/* T-030: крупная непрозрачная фирменная полоса позади вырезанного товара в hero (Figma: Looks 3700, варианты 1/5/6 и др.).
   Геометрия — CSS-переменные из models/hero-composition.json (кадр Figma 1440×740):
   --hp-x/y/w/h — рамка фото; --hs-x/y/w/h — начало координат и размер вектора относительно рамки фото; --hs-r — угол.
   Единица --px = ширина hero / 1440 (не больше 1px): композиция масштабируется целиком, на 1440 и шире равна макету. */
.do-wv-hero[data-comp] { container-type: inline-size; }
.do-wv-hero[data-comp] .do-wv-hero__inner { --px: calc(min(100cqw, 1440px) / 1440); }
.do-wv-hero[data-comp] .do-wv-hero__o { display: none; }
.do-wv-hero[data-comp] .do-wv-hero__strip {
  position: absolute; z-index: -1; max-width: none; pointer-events: none; user-select: none;
  left: calc(var(--hs-x) * var(--px)); top: calc(var(--hs-y) * var(--px));
  width: calc(var(--hs-w) * var(--px)); height: calc(var(--hs-h) * var(--px));
  transform-origin: 0 0; transform: rotate(var(--hs-r));
}
@media (min-width: 1051px) {
  .do-wv-hero[data-comp] .do-wv-hero__inner { grid-template-columns: minmax(0, 1fr) calc((1440 - var(--hp-x)) * var(--px)); min-height: calc(740 * var(--px)); }
  .do-wv-hero[data-comp][data-comp] .do-wv-hero__photo {
    grid-area: auto; position: absolute; margin: 0; align-self: auto;
    left: calc(var(--hp-x) * var(--px)); top: calc(var(--hp-y) * var(--px));
    width: calc(var(--hp-w) * var(--px)); height: calc(var(--hp-h) * var(--px));
  }
}
/* Планшет: фото остаётся в колонке 45%, полоса масштабируется вместе с макетом относительно рамки фото. */
@media (min-width: 761px) and (max-width: 1050px) {
  .do-wv-hero[data-comp] .do-wv-hero__photo { margin: 0; }
}
/* Мобильная композиция проектируется отдельно: «сцена» на всю ширину экрана под фото, полоса режется краями сцены и не
   заходит под текст. Три варианта повторяют характер desktop-полосы (дуга снизу, диагональ справа, широкая полоса сверху). */
@media (max-width: 760px) {
  .do-wv-hero[data-comp] .do-wv-hero__photo { position: relative; margin: 8px -24px 0; width: auto; height: auto; overflow: hidden; isolation: isolate; }
  .do-wv-hero[data-comp] .do-wv-hero__photo img:not(.do-wv-hero__strip) { position: relative; display: block; width: 100%; height: auto; aspect-ratio: 390 / 320; object-fit: contain; padding: 16px 24px; box-sizing: border-box; }
  .do-wv-hero[data-comp] .do-wv-hero__strip { width: 118%; height: auto; aspect-ratio: 1200 / 1190; transform-origin: 50% 50%; }
  .do-wv-hero[data-comp][data-comp-m="a"] .do-wv-hero__strip { left: -30%; top: 12%; transform: rotate(-25.61deg); }
  .do-wv-hero[data-comp][data-comp-m="b"] .do-wv-hero__strip { left: 8%; top: -84%; transform: rotate(10deg); }
  .do-wv-hero[data-comp][data-comp-m="c"] .do-wv-hero__strip { left: -18%; top: -70%; transform: rotate(-35deg); }
}
/* Проход 3: hero высотой 660 (шесть аксессуаров Xenosys) — композиция с полосой масштабируется от 660, а не от 740. */
@media (min-width: 1051px) {
  .do-wv-hero[data-comp][data-hero-h="660"] .do-wv-hero__inner { min-height: calc(660 * var(--px)); }
}

/* End */


/* Start:/local/templates/dentoptics_redesign/assets/cad-cam/full.css?17941852882340*/
@font-face { font-family: Montserrat; font-style: normal; font-weight: 400; font-display: swap; src: url("/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-2623/assets/montserrat-400.ttf") format('truetype'); }
@font-face { font-family: Montserrat; font-style: normal; font-weight: 500; font-display: swap; src: url("/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-2623/assets/montserrat-500.ttf") format('truetype'); }
@font-face { font-family: Montserrat; font-style: normal; font-weight: 600; font-display: swap; src: url("/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-2623/assets/montserrat-600.ttf") format('truetype'); }
@font-face { font-family: Montserrat; font-style: normal; font-weight: 700; font-display: swap; src: url("/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-2623/assets/montserrat-700.ttf") format('truetype'); }
@font-face { font-family: Montserrat; font-style: normal; font-weight: 800; font-display: swap; src: url("/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-2623/assets/montserrat-800.ttf") format('truetype'); }
@font-face { font-family: Montserrat; font-style: normal; font-weight: 900; font-display: swap; src: url("/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-2623/assets/montserrat-900.ttf") format('truetype'); }
@font-face { font-family: Montserrat; font-style: italic; font-weight: 900; font-display: swap; src: url("/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-2623/assets/montserrat-900-italic-cyrillic.woff2") format('woff2'); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: Montserrat; font-style: italic; font-weight: 900; font-display: swap; src: url("/local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-2623/assets/montserrat-900-italic-latin.woff2") format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
.do-cad-cam-full {
  --do-brand: #ba0f26;
  --do-brand-secondary: #ac252a;
  --do-text: #2c2b2a;
  --do-text-strong: #252525;
  --do-text-muted: #777;
  --do-placeholder: #ababab;
  --do-surface: #fff;
  --do-surface-soft: #fafafa;
  --do-surface-subtle: #f5f5f5;
  --do-surface-promo: #f2f2f2;
  --do-border: #e0e0e0;
  --do-border-panel: #ddd;
  --do-border-list: #e5e5e5;
  --do-overlay: rgb(34 34 34 / 18%);
  --do-radius-control: 8px;
  --do-radius-card: 24px;
  --do-content-width: 1216px;
  --do-font: Montserrat, Arial, sans-serif;
}
.do-cad-cam-full { font-family:var(--do-font); color:var(--do-text); background:var(--do-surface); }

/* End */
/* /local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/product.css?179418528817176 */
/* /local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/story.css?179418528877992 */
/* /local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/purchase-mobile-first.css?17941852881677 */
/* /local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/product-type.css?17941852882194 */
/* /local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/review-player.css?17941852881068 */
/* /local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/story-refinements.css?17941852881567 */
/* /local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/brand-block.css?17941852889996 */
/* /local/templates/dentoptics_redesign/assets/cad-cam/ru/dentsply-6018/product/hero-composition.css?17941852883664 */
/* /local/templates/dentoptics_redesign/assets/cad-cam/full.css?17941852882340 */
