/* ==========================================================================
   Law reader — direction A (2026-09-17)
   ==========================================================================
   Templates (templates_v2/core/): law_detail, law_as_of, law_article_detail,
   law_section_detail, law_version_history and the law/ partials. Loaded after
   v2/law-shared.css in place of law-shared.css + law-reader.css. Behaviour: the
   unchanged static/core/js/law-reader-*.js plus static/core/js/v2/law-reader.js.

   Scoped `.ui2 .lr2` (the <main>), except body-level rules on `.ui2.law-reader`.
   No :root block. Tokens and components from ui-kit.css.

   Three rules this file keeps from the reader it replaces (CLAUDE.md «Law
   reader: template + script contract»):
   1. Native page scroll — no inner scroll pane for the text.
   2. Sticky offsets are MEASURED. --app-header-h is the shell's pinned bar
      (site-shell.js); --lr-sticky-h is the docbar (law-reader-shell.js, which
      writes it on body.law-reader). Every sticky top and scroll-margin below is
      their sum. The fallbacks only keep a no-JS page usable.
   3. `content-visibility` is opt-in (.is-virtualized, set by the view for long
      acts) and force-reset for print, or unrendered sections never print.

   State classes the old scripts toggle, all styled here:
     .lr-docbar.is-compact  .lr-menu.is-open  .lr-findbar[hidden]
     #documentSidebar.is-open (phone sheet)  .lr-body.is-rail-collapsed
     .law-reader.lr-focus  .toc-item.expanded/.is-filtered-out  .toc-link.active
     #lrScrim.is-open  .lr-drawer[hidden]/.is-open/.is-selecting
     .revision-item.is-hidden/.is-selected/.is-current-view  .lr-comparebar.is-refused
     .section-block.is-flash  .lr-clamp.is-open  mark.lr-find-hit(.is-active)
     body.lr-print-scope-article/-section + .section-block.is-print-target

   Breakpoints: ≥1068 three columns (contents · text · redactions from the
   widest); 992–1067 contents · text; <992 one column with the bottom toolbar
   and sheets — 992 because law-reader-shell.js and -prefs.js switch there.
   ========================================================================== */

.ui2.law-reader { --lr2-top: calc(var(--app-header-h, 48px) + var(--lr-sticky-h, 56px)); }
/* Bootstrap's reboot makes :root scroll smoothly. Under content-visibility a
   smooth jump to #st-N lays out blocks while it travels, and lands a screen
   away from the article; law-reader-cite.js re-scrolls once, instantly. */
html:has(> body.ui2.law-reader) { scroll-behavior: auto; }

.ui2 .lr2-messages { padding-top: 16px; }
.ui2 .lr2-skip { position: absolute; left: 12px; top: -100px; z-index: 1100; padding: 10px 14px; border-radius: 10px; background: var(--ink); color: #fff; font-size: 15px; text-decoration: none; }
.ui2 .lr2-skip:focus { top: 56px; color: #fff; }
.ui2 .lr-print-masthead { display: none; }
.ui2 .lr2-muted { color: var(--ink3); }

/* ================================================================ docbar */
.ui2 .lr2-bar {
  position: sticky;
  top: var(--app-header-h, 48px);
  z-index: 950;
  background: var(--glass);
  -webkit-backdrop-filter: saturate(180%) blur(20px);
  backdrop-filter: saturate(180%) blur(20px);
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}
/* Not today's text: the whole bar says so, quietly. */
.ui2 .lr2-bar.is-point-in-time { background: rgba(255, 246, 228, 0.9); }
.ui2 .lr2-bar-in { position: relative; display: flex; align-items: center; gap: 12px; height: 56px; }
.ui2 .lr2-bar-t { flex: 0 1 auto; min-width: 0; max-width: 300px; overflow: hidden; color: var(--ink); font-size: 19px; font-weight: 600; letter-spacing: -0.012em; white-space: nowrap; text-overflow: ellipsis; }
.ui2 .lr2-bar .law-status-badge { flex: none; }
.ui2 .lr2-ver {
  flex: none; display: inline-flex; align-items: center; gap: 4px;
  height: 30px; margin: 0; padding: 0 10px; border: 0; border-radius: 15px; background: transparent;
  color: var(--ink2); font: inherit; font-size: 13px; white-space: nowrap; cursor: pointer; transition: background-color 0.15s;
}
.ui2 .lr2-ver:hover { background: var(--fill); color: var(--ink); }
.ui2 .lr2-ver-t { overflow: hidden; text-overflow: ellipsis; }
.ui2 .lr2-ver-n { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; color: var(--ink3); }
.ui2 .lr2-ver .ui-ic { width: 12px; height: 12px; stroke-width: 2.6; }
.ui2 .lr2-ver.is-static { cursor: default; }
.ui2 .lr2-ver.is-static:hover { background: transparent; color: var(--ink2); }
.ui2 .lr2-ver.is-stale { color: var(--warn-ink); }
.ui2 .lr-crumb { display: none; }

.ui2 .lr2-tools { flex: none; display: flex; align-items: center; gap: 4px; margin-left: auto; }
.ui2 .lr2-tb {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  height: 32px; margin: 0; padding: 0 12px; border: 0; border-radius: 16px; background: transparent;
  color: var(--ink); font: inherit; font-size: 13px; line-height: 1; white-space: nowrap; text-decoration: none; cursor: pointer;
  transition: background-color 0.15s, color 0.15s;
}
.ui2 .lr2-tb:hover { background: var(--fill); color: var(--ink); }
.ui2 .lr2-tb:active { background: var(--fill2); }
.ui2 .lr2-tb[aria-expanded="true"] { background: var(--fill); }
.ui2 .lr2-tb .ui-ic { width: 16px; height: 16px; }
.ui2 .lr2-tb.is-ic { width: 32px; padding: 0; }
.ui2 .lr2-tb i { font-size: 15px; line-height: 1; }
.ui2 #lrBookmarkBtn[aria-pressed="true"] { color: var(--brand); }
/* Focus mode is a sticky, remembered state; it has to look switched-on. */
.ui2 #lrFocusBtn[aria-pressed="true"] { background: var(--fill); color: var(--brand); }
.ui2 .lr2-tb-n { color: var(--ink3); font-variant-numeric: tabular-nums; }
.ui2 .lr2-sep { width: 1px; height: 20px; margin: 0 4px; background: var(--hair); }
.ui2 .lr2-phone { display: none; }
.ui2 .lr2-size { display: inline-flex; height: 32px; margin-right: 4px; padding: 2px; border-radius: 16px; background: var(--fill); }
.ui2 .lr2-size > button { min-width: 38px; height: 28px; margin: 0; padding: 0; border: 0; border-radius: 14px; background: transparent; color: var(--ink); font: inherit; font-size: 13px; font-weight: 500; cursor: pointer; }
.ui2 .lr2-size > button.is-big { font-size: 16px; }
.ui2 .lr2-size > button:hover { background: #fff; }
.ui2 .lr2-size > button:disabled { opacity: 0.35; cursor: default; background: transparent; }

.ui2 .lr2-menu { position: relative; }
.ui2 .lr2-menu .lr-menu__list { position: absolute; right: 0; top: calc(100% + 8px); z-index: 20; display: none; }
.ui2 .lr2-menu.is-open .lr-menu__list { display: block; }

.ui2 .lr2-find { border-top: 1px solid var(--sep); }
.ui2 .lr2-find[hidden] { display: none; }
.ui2 .lr2-find-in { display: flex; align-items: center; gap: 4px; padding: 8px 0; }
.ui2 .lr2-find-field { flex: 1; max-width: 560px; margin: 0 8px 0 0; }
.ui2 .lr2-find-count { flex: none; color: var(--ink3); font-size: 13px; font-variant-numeric: tabular-nums; }
.ui2 .lr2-up { transform: rotate(180deg); }
/* law-reader-shell.js still drives the reading-progress hairline; this design
   does without it (a red line under the bar read as a rendering fault). */
.ui2 .lr2-progress { display: none; }

@media (max-width: 1239.98px) {
  .ui2 .lr2-bar-t { max-width: 240px; }
  .ui2 #shareBtn .lr2-tb-w, .ui2 #lrPrintMenu .lr2-tb-w { display: none; }
  .ui2 #shareBtn, .ui2 #lrPrintMenu > .lr2-tb { width: 32px; padding: 0; }
}

/* ================================================================ layout */
.ui2 .lr2-body {
  display: grid;
  grid-template-columns: 232px minmax(0, 720px) 152px;
  column-gap: 38px;
  justify-content: space-between;
  align-items: start;
  padding-bottom: 96px;
}
.ui2 .lr2-body.no-aside { grid-template-columns: 232px minmax(0, 720px); justify-content: start; column-gap: 76px; }
.ui2 .lr2-body.is-single { grid-template-columns: minmax(0, 720px); justify-content: center; }
/* `.is-rail-collapsed` is written onto `.lr-body` by law-reader-prefs.js from a
   saved setting, on every reader page — but only law_detail and law_as_of have
   a rail to collapse. `:not(.is-single)` is load-bearing: without it the saved
   «Свернуть» put the article, section and history pages' only column into the
   44px re-open gutter, a few letters per line, with nothing on the page to
   undo it. Guarded by SingleColumnRailCollapseTests (test_laws_v2.py). */
.ui2 .lr2-body.is-rail-collapsed:not(.is-single) { grid-template-columns: 44px minmax(0, 720px) 152px; }
.ui2 .lr2-body.no-aside.is-rail-collapsed:not(.is-single) { grid-template-columns: 44px minmax(0, 720px); }
/* Focus mode only means anything where the rail and the redaction column are
   docked. Below 992px the rail IS the bottom sheet that «Содержание» opens, so
   hiding it there left that button opening the scrim over a locked page with
   no contents in it — and no control anywhere to turn focus mode back off. */
@media (min-width: 992px) {
  .ui2.law-reader.lr-focus .lr2-body { grid-template-columns: minmax(0, 720px); justify-content: center; }
  .ui2.law-reader.lr-focus .lr2-toc, .ui2.law-reader.lr-focus .lr2-rev { display: none; }
}

/* ======================================================= contents rail */
.ui2 .lr2-toc {
  position: sticky;
  top: var(--lr2-top);
  display: flex;
  flex-direction: column;
  max-height: calc(100vh - var(--lr2-top));
  min-height: 0;
  padding: 28px 0 24px;
}
.ui2 .lr2-sheet-grab, .ui2 .lr2-sheet-h { display: none; }
.ui2 .lr2-toc-head { flex: none; }
.ui2 .lr2-toc-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 10px; color: var(--ink3); font-size: 12px; font-weight: 600; }
.ui2 .lr2-toc-count { font-variant-numeric: tabular-nums; }
.ui2 .lr2-toc-actions { display: flex; gap: 14px; margin-top: 8px; }
.ui2 .lr2-mini { margin: 0; padding: 2px 0; border: 0; background: none; color: var(--ink3); font: inherit; font-size: 12px; cursor: pointer; }
.ui2 .lr2-mini:hover { color: var(--ink); }
.ui2 .lr2-toc-body { flex: 1 1 auto; min-height: 0; margin: 10px -8px 0; padding: 0 8px 12px; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: none; }
.ui2 .lr2-toc-body::-webkit-scrollbar { display: none; }
.ui2 .lr2-toc-empty { margin: 8px 0 0; color: var(--ink3); font-size: 13px; line-height: 1.45; }
.ui2 .lr2-reopen { display: none; }

.ui2 .lr2 .toc-tree, .ui2 .lr2 .toc-children { margin: 0; padding: 0; list-style: none; }
.ui2 .lr2 .toc-item { margin: 0; content-visibility: auto; contain-intrinsic-size: auto 28px; }
.ui2 .lr2 .toc-row { display: flex; align-items: flex-start; padding-left: calc(min(var(--depth, 0), 4) * 12px); }
.ui2 .lr2 .toc-toggle { flex: none; display: grid; place-items: center; width: 18px; height: 28px; margin: 0; padding: 0; border: 0; border-radius: 6px; background: none; color: var(--ink3); cursor: pointer; }
.ui2 .lr2 .toc-toggle::before { content: ""; width: 6px; height: 6px; margin-left: -2px; border-right: 1.6px solid currentColor; border-bottom: 1.6px solid currentColor; transform: rotate(-45deg); transition: transform 0.15s; }
.ui2 .lr2 .toc-toggle:hover { color: var(--ink); }
.ui2 .lr2 .toc-item.expanded > .toc-row > .toc-toggle::before { margin: -3px 0 0; transform: rotate(45deg); }
.ui2 .lr2 .toc-row.is-leaf::before { content: ""; flex: none; width: 18px; }
.ui2 .lr2 .toc-link { flex: 1 1 auto; min-width: 0; display: flex; align-items: baseline; gap: 8px; padding: 5px 8px; border-radius: 8px; color: var(--ink2); font-size: 13px; line-height: 1.35; text-decoration: none; transition: background-color 0.15s, color 0.15s; }
.ui2 .lr2 .toc-link:hover { background: var(--fill); color: var(--ink); }
.ui2 .lr2 .toc-num { flex: none; min-width: 26px; font-variant-numeric: tabular-nums; }
.ui2 .lr2 .toc-text { flex: 1 1 auto; min-width: 0; }
.ui2 .lr2 .toc-row.is-leaf .toc-text { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
/* Only a real parent reads as open: law-reader-toc.js also marks a visited leaf .expanded. */
.ui2 .lr2 .toc-item.has-children.expanded > .toc-row > .toc-link { color: var(--ink); font-weight: 500; }
.ui2 .lr2 .toc-link.active, .ui2 .lr2 .toc-item.expanded > .toc-row > .toc-link.active { background: var(--tint); color: var(--brand); font-weight: 600; }
.ui2 .lr2 .toc-children { display: none; }
.ui2 .lr2 .toc-item.expanded > .toc-children { display: block; }
.ui2 .lr2 .toc-item.is-filtered-out { display: none; }

/* Collapsed rail: a slim re-open gutter. */
.ui2 .lr2-body.is-rail-collapsed .lr2-toc-head, .ui2 .lr2-body.is-rail-collapsed .lr2-toc-body { display: none; }
.ui2 .lr2-body.is-rail-collapsed .lr2-reopen {
  display: flex; flex-direction: column; align-items: center; gap: 8px; margin: 0; padding: 12px 0; border: 0; border-radius: 22px;
  background: var(--fill); color: var(--ink2); font: inherit; font-size: 12px; cursor: pointer;
}
.ui2 .lr2-body.is-rail-collapsed .lr2-reopen span { writing-mode: vertical-rl; }
.ui2 .lr2-body.is-rail-collapsed .lr2-reopen .ui-ic { width: 16px; height: 16px; }

/* ======================================================= reading column */
.ui2 .lr2-col {
  min-width: 0;
  padding-top: 32px;
  color: var(--ink);
  font-size: calc(var(--lr-read-size, 17px) + 2px);
  line-height: 1.62;
  letter-spacing: -0.2px;
}
.ui2 .lr2-col.is-point-in-time::before { content: ""; display: block; height: 3px; margin-bottom: 24px; border-radius: 2px; background: rgba(224, 122, 0, 0.5); }

/* ---- masthead: fixed sizes, the reading size moves only the text below */
.ui2 .lr2-head { padding-bottom: 28px; border-bottom: 1px solid var(--hair); font-size: 15px; line-height: 1.4; letter-spacing: 0; }
.ui2 .lr2-crumbs { font-size: 12px; }
.ui2 .lr2-crumbs span { color: var(--ink2); }
.ui2 .lr2-h1 { margin: 14px 0 0; color: var(--ink); font-size: 34px; font-weight: 600; line-height: 1.12; letter-spacing: -0.02em; text-wrap: balance; overflow-wrap: anywhere; }
.ui2 .lr2-h1.is-caps { font-size: 28px; letter-spacing: -0.005em; }
.ui2 .lr2-h1-art { font-size: 30px; line-height: 1.16; }
/* Two in five titles in this corpus are a citation of the act they amend. */
.ui2 .lr2-h1.is-long { font-size: 24px; line-height: 1.25; letter-spacing: -0.012em; text-wrap: pretty; }
.ui2 .lr2-kk { display: flex; align-items: flex-start; gap: 10px; margin: 10px 0 0; color: var(--ink2); font-size: 17px; line-height: 1.35; }
.ui2 .lr2-kk .lw-kk-tag { margin-top: 2px; }
.ui2 .lr2-idn { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-top: 18px; color: var(--ink2); font-size: 15px; }
.ui2 .lr2-dot { color: var(--ink3); }
.ui2 .lr2-of { margin: 10px 0 0; color: var(--ink2); font-size: 15px; }
.ui2 .lr2-of a { color: inherit; text-decoration: none; }
.ui2 .lr2-of a:hover { color: var(--brand); text-decoration: underline; text-underline-offset: 3px; }
.ui2 .lr2-fresh { margin-top: 8px; }
.ui2 .lr2-verm { display: none; }
.ui2 .lr2-prac-row { margin: 14px 0 0; }

.ui2 .lr2-about { margin-top: 14px; }
.ui2 .lr2-about > summary { display: inline-flex; align-items: center; gap: 4px; color: var(--ink2); font-size: 13px; cursor: pointer; list-style: none; }
.ui2 .lr2-about > summary::-webkit-details-marker { display: none; }
.ui2 .lr2-about > summary:hover { color: var(--ink); }
.ui2 .lr2-about > summary .ui-ic { width: 12px; height: 12px; stroke-width: 2.6; transition: transform 0.2s; }
.ui2 .lr2-about[open] > summary .ui-ic { transform: rotate(180deg); }
.ui2 .lr2-dl { display: grid; grid-template-columns: minmax(140px, 32%) minmax(0, 1fr); margin: 12px 0 0; font-size: 13px; line-height: 1.5; }
.ui2 .lr2-dl dt { margin: 0; padding: 7px 12px 7px 0; border-top: 1px solid var(--fill2); color: var(--ink3); font-weight: 400; }
.ui2 .lr2-dl dd { margin: 0; padding: 7px 0; border-top: 1px solid var(--fill2); color: var(--ink); overflow-wrap: anywhere; }
.ui2 .lr2-dl .is-mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; }
.ui2 .lr2-dl a { color: var(--brand); }
.ui2 .lr2-tags { display: flex; flex-wrap: wrap; gap: 6px; }

.ui2 .lr2-ribbon { display: grid; gap: 10px; margin-top: 24px; font-size: 15px; letter-spacing: 0; }
.ui2 .lr2-ribbon:empty { display: none; }
.ui2 .lr2-map { margin-top: 16px; letter-spacing: 0; }

/* ---- sections. `data-section-type` decides the voice; em = reading size. */
.ui2 .lr2 .section-block { position: relative; margin-top: 0.74em; scroll-margin-top: calc(var(--lr2-top) + 16px); }
.ui2 .lr2 .section-title { display: flex; align-items: flex-start; gap: 6px 12px; margin: 0; color: var(--ink); font-size: 1em; font-weight: 400; line-height: inherit; letter-spacing: inherit; scroll-margin-top: calc(var(--lr2-top) + 16px); break-after: avoid; }
.ui2 .lr2 .section-title:focus { outline: none; }
.ui2 .lr2 .section-title:empty { display: none; }
.ui2 .lr2 .section-num { flex: none; color: var(--ink3); font-variant-numeric: tabular-nums; }
.ui2 .lr2 .section-name { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.ui2 .lr2 .section-content { color: var(--ink); overflow-wrap: break-word; }
.ui2 .lr2 .section-content p { margin: 0.74em 0 0; }
.ui2 .lr2 .section-content p:first-child { margin-top: 0; }
.ui2 .lr2 .section-title + .section-content p:first-child { margin-top: 0.74em; }
.ui2 .lr2 .section-content p:empty { display: none; }
.ui2 .lr2 .section-content a { color: var(--brand); text-underline-offset: 3px; }

.ui2 .lr2 .section-block[data-section-type="article"] { margin-top: 2.3em; }
.ui2 .lr2 .section-block[data-section-type="article"] > .section-title { font-size: 1.37em; font-weight: 600; line-height: 1.22; letter-spacing: -0.018em; text-wrap: balance; }
.ui2 .lr2 .section-block[data-section-type="article"] > .section-title .section-num { color: inherit; }
.ui2 .lr2 .section-block[data-section-type="chapter"] { margin-top: 2.3em; padding-top: 1.26em; border-top: 1px solid var(--hair); }
.ui2 .lr2 .section-block[data-section-type="chapter"] > .section-title { font-size: 0.9em; font-weight: 600; line-height: 1.35; letter-spacing: 0.01em; }
.ui2 .lr2 .section-block:is([data-section-type="section"], [data-section-type="part"]) { margin-top: 2.9em; padding-top: 1.4em; border-top: 1px solid var(--hair); }
.ui2 .lr2 .section-block:is([data-section-type="section"], [data-section-type="part"]) > .section-title { color: var(--ink2); font-size: 0.79em; font-weight: 600; line-height: 1.35; letter-spacing: 0.02em; }
.ui2 .lr2 .section-block:is([data-section-type="chapter"], [data-section-type="section"], [data-section-type="part"]) > .section-title .section-num { color: inherit; }
.ui2 .lr2 .lr2-ribbon + .section-block, .ui2 .lr2 .lr2-head + .section-block { margin-top: 32px; }
.ui2 .lr2 .lr2-ribbon + .section-block[data-section-type], .ui2 .lr2 .lr2-head + .section-block[data-section-type] { border-top: 0; padding-top: 0; }

.ui2 .lr2-col.is-virtualized .section-block { content-visibility: auto; contain-intrinsic-size: auto 140px; }

.ui2 .lr2 .section-block.is-flash > .section-title, .ui2 .lr2 .section-block:target > .section-title { animation: lr2-flash 1.4s ease-out; border-radius: 6px; }
@keyframes lr2-flash {
  from { background: rgba(255, 204, 0, 0.32); box-shadow: 0 0 0 6px rgba(255, 204, 0, 0.32); }
  to { background: transparent; box-shadow: 0 0 0 6px transparent; }
}
.ui2 .lr2 mark.lr-find-hit { padding: 0 1px; border-radius: 3px; background: rgba(255, 204, 0, 0.38); color: inherit; }
.ui2 .lr2 mark.lr-find-hit.is-active { background: #ffcc00; }

.ui2 .lr2 .lr-clamp { position: relative; max-height: 60vh; overflow: hidden; }
.ui2 .lr2 .lr-clamp.is-open { max-height: none; }
.ui2 .lr2 .lr-clamp::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 90px; background: linear-gradient(rgba(255, 255, 255, 0), #fff); pointer-events: none; }
.ui2 .lr2 .lr-clamp.is-open::after { display: none; }
.ui2 .lr2 .lr-clamp__more { margin-top: 12px; }

/* «Практика · N» — approved lawyers only; rendered by the template only then. */
.ui2 .lr2-prac-chip {
  flex: none; display: inline-flex; align-items: center; gap: 6px; height: 30px; margin: 0.08em 0 0; padding: 0 12px;
  border: 0; border-radius: 15px; background: var(--fill); color: var(--ink);
  font: inherit; font-size: 13px; font-weight: 500; line-height: 1; letter-spacing: 0; white-space: nowrap; cursor: pointer; transition: background-color 0.15s;
}
.ui2 .lr2-prac-chip:hover, .ui2 .lr2-prac-chip[aria-expanded="true"] { background: var(--fill2); }
.ui2 .lr2-prac-chip .ui-ic { width: 15px; height: 15px; color: var(--ink2); }

/* ---- per-section apparatus. Articles: a quiet row. Others: on hover, on a
   pointer device only — a row under every paragraph of a code is noise. */
.ui2 .lr2-app { display: flex; flex-wrap: wrap; gap: 4px 20px; margin-top: 14px; font-size: 13px; line-height: 1.3; letter-spacing: 0; }
.ui2 .lr2-app > button { display: inline-flex; align-items: center; gap: 5px; margin: 0; padding: 4px 0; border: 0; background: none; color: var(--ink3); font: inherit; cursor: pointer; transition: color 0.15s; }
.ui2 .lr2-app > button:hover { color: var(--ink); }
.ui2 .lr2-app .ui-ic { width: 14px; height: 14px; }
@media (max-width: 733.98px) {
  .ui2 .lr2-app-w { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}
.ui2 .lr2 .section-block:not(.is-article) > .lr2-app {
  position: absolute; top: -6px; right: 0; z-index: 2; gap: 2px; margin: 0; padding: 3px;
  border-radius: 980px; background: #fff; box-shadow: 0 4px 14px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(0, 0, 0, 0.06);
  opacity: 0; pointer-events: none; transition: opacity 0.12s;
}
.ui2 .lr2 .section-block:not(.is-article) > .lr2-app > button { padding: 4px 8px; border-radius: 980px; }
.ui2 .lr2 .section-block:not(.is-article) > .lr2-app > button:hover { background: var(--fill); }
.ui2 .lr2 .section-block:not(.is-article):hover > .lr2-app, .ui2 .lr2 .section-block:not(.is-article):focus-within > .lr2-app { opacity: 1; pointer-events: auto; }
@media (hover: none) {
  .ui2 .lr2 .section-block:not(.is-article) > .lr2-app { display: none; }
}

/* ---- next steps */
.ui2 .lr2-next { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 56px; padding-top: 28px; border-top: 1px solid var(--hair); letter-spacing: 0; line-height: 1.3; }
/* Chips here carry article titles: let a long one wrap instead of running off a phone. */
.ui2 .lr2-next .ui-chip { max-width: 100%; height: auto; min-height: 34px; padding-block: 6px; white-space: normal; line-height: 1.3; }
.ui2 .lr2-replace { flex: 0 0 100%; margin-bottom: 8px; color: var(--ink); text-decoration: none; }
.ui2 .lr2-replace:hover { color: var(--ink); }

/* ---- single-column pages */
.ui2 .lr2-art-body { margin-top: 32px; }
.ui2 .lr2 .lr2-pre { white-space: pre-line; }
.ui2 .lr2 .lr2-pre + .lr2-pre { margin-top: 0.74em; }
.ui2 .lr2 .lr2-pre.is-sub { padding-left: 20px; }
.ui2 .lr2-permalink { display: flex; gap: 12px; margin-top: 32px; padding: 14px 18px; border-radius: 14px; background: var(--fill); font-size: 13px; line-height: 1.4; letter-spacing: 0; }
.ui2 .lr2-permalink .ui-ic { width: 18px; height: 18px; color: var(--ink2); }
.ui2 .lr2-permalink-t { margin: 0; color: var(--ink); font-weight: 600; }
.ui2 .lr2-permalink-u { margin: 2px 0 0; color: var(--ink2); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; word-break: break-all; }
.ui2 .lr2-children { margin-top: 40px; letter-spacing: 0; }
.ui2 .lr2-children-h { margin: 0 0 8px; color: var(--ink3); font-size: 12px; font-weight: 600; }
.ui2 .lr2-children-list { margin: 0; padding: 0; list-style: none; }
.ui2 .lr2-children-list > li { margin: 0; border-top: 1px solid var(--fill2); }
.ui2 .lr2-children-list a { display: block; padding: 12px 0; color: inherit; text-decoration: none; }
.ui2 .lr2-children-t { display: block; color: var(--ink); font-size: 15px; font-weight: 600; line-height: 1.35; }
.ui2 .lr2-children-list a:hover .lr2-children-t { color: var(--brand); }
.ui2 .lr2-children-s { display: block; margin-top: 4px; color: var(--ink2); font-size: 13px; line-height: 1.45; }
.ui2 .lr2-asof-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; margin-top: 18px; }
.ui2 .lr2-asof-l { color: var(--ink2); font-size: 13px; }
.ui2 .lr2-asof-head .lr2-asof-field { width: 200px; }

/* ---- redaction timeline */
.ui2 .lr2-tl { margin: 32px 0 0; padding: 0; list-style: none; letter-spacing: 0; line-height: 1.4; }
.ui2 .lr2-tl-i { position: relative; display: flex; gap: 16px; padding-bottom: 28px; }
.ui2 .lr2-tl-i:not(:last-child)::before { content: ""; position: absolute; left: 5px; top: 18px; bottom: 0; width: 2px; background: var(--fill2); }
.ui2 .lr2-tl-dot { flex: none; width: 12px; height: 12px; margin-top: 6px; border-radius: 50%; box-shadow: inset 0 0 0 2px var(--hair); background: #fff; }
.ui2 .lr2-tl-i.is-current .lr2-tl-dot { background: var(--ok); box-shadow: 0 0 0 4px rgba(31, 157, 85, 0.14); }
.ui2 .lr2-tl-b { flex: 1; min-width: 0; }
.ui2 .lr2-tl-h { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.ui2 .lr2-tl-d { color: var(--ink); font-size: 19px; font-weight: 600; text-decoration: none; }
.ui2 .lr2-tl-d:hover { color: var(--brand); }
.ui2 .lr2-pill-ok { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 980px; background: rgba(31, 157, 85, 0.1); color: var(--ok-ink); font-size: 12px; font-weight: 500; }
/* `.is-last` — «последняя», not «действующая». The newest redaction of an act
   that has lost force (or is suspended, or has not commenced) is not current
   law, and a green chip beside «Утратил силу» is precisely the confusion that
   status vocabulary exists to prevent. Same modifier on .revision-pill and,
   in law-compare.css, on .lc-cur. */
.ui2 .lr2-pill-ok.is-last { background: var(--fill); color: var(--ink2); }
.ui2 .lr2-tl-r { margin: 6px 0 0; color: var(--ink2); font-size: 15px; line-height: 1.45; }
.ui2 .lr2-tl-x { display: flex; flex-wrap: wrap; gap: 4px 14px; margin: 8px 0 0; color: var(--ink2); font-size: 13px; font-variant-numeric: tabular-nums; }
.ui2 .lr2-tl-x .is-add { color: var(--ok-ink); }
.ui2 .lr2-tl-x .is-del { color: var(--brand); }
.ui2 .lr2-tl-x .is-mod { color: var(--warn-ink); }
.ui2 .lr2-tl-a { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 0; }

/* ======================================================= redaction column */
.ui2 .lr2-rev { position: sticky; top: var(--lr2-top); padding-top: 32px; letter-spacing: 0; }
.ui2 .lr2-rev-h { display: flex; justify-content: space-between; margin: 0 0 8px; color: var(--ink3); font-size: 12px; font-weight: 600; line-height: 1.35; }
.ui2 .lr2-rev-list { margin: 0; padding: 0; list-style: none; }
.ui2 .lr2-rev-list a { display: block; padding: 8px 0; border-top: 1px solid var(--fill2); color: inherit; text-decoration: none; }
.ui2 .lr2-rev-d { display: block; color: var(--ink); font-size: 15px; line-height: 1.35; transition: color 0.15s; }
.ui2 .lr2-rev-list a:hover .lr2-rev-d { color: var(--brand); }
.ui2 .lr2-rev-c { display: block; overflow: hidden; color: var(--ink3); font-size: 12px; line-height: 1.35; white-space: nowrap; text-overflow: ellipsis; }
.ui2 .lr2-rev-c.is-ok { color: var(--ok-ink); }
.ui2 .lr2-rev-list .is-cur .lr2-rev-d { font-weight: 600; }
.ui2 .lr2-rev-more { margin-top: 6px; }
.ui2 .lr2-rev-none { margin: 4px 0 0; }
.ui2 .lr2-rev-links { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; margin: 14px 0 0; }
.ui2 .lr2-rev :is(.lr2-rev-links, .lr2-rev-more).ui-link, .ui2 .lr2-rev-links .ui-link { max-width: 100%; white-space: normal; text-align: left; line-height: 1.3; }

/* ================================================= scrim, drawers, sheets */
.ui2 .lr2 .lr-scrim { position: fixed; inset: 0; z-index: 1150; background: rgba(0, 0, 0, 0.28); opacity: 0; visibility: hidden; transition: opacity 0.25s, visibility 0.25s; }
.ui2 .lr2 .lr-scrim.is-open { opacity: 1; visibility: visible; }

.ui2 .lr2-drawer {
  position: fixed; top: 0; right: 0; bottom: 0; z-index: 1160;
  display: flex; flex-direction: column; width: min(460px, 100vw);
  background: #fff; box-shadow: -24px 0 60px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.05);
  transform: translateX(100%); transition: transform 0.32s cubic-bezier(0.32, 0.72, 0, 1);
  letter-spacing: 0;
}
.ui2 .lr2-drawer[hidden] { display: none; }
.ui2 .lr2-drawer.is-open { transform: none; }
.ui2 .lr2-dr-h { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 22px 24px 0 28px; }
.ui2 .lr2-dr-t { margin: 0; color: var(--ink); font-size: 24px; font-weight: 600; line-height: 1.2; letter-spacing: -0.015em; }
.ui2 .lr2-dr-n { color: var(--ink3); font-size: 15px; font-weight: 400; letter-spacing: 0; font-variant-numeric: tabular-nums; }
.ui2 .lr2-dr-note { display: flex; align-items: flex-start; gap: 6px; margin: 6px 28px 0; color: var(--ink2); font-size: 13px; line-height: 1.4; }
.ui2 .lr2-dr-note .ui-ic { width: 14px; height: 14px; margin-top: 1px; }
.ui2 .lr2-dr-b { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 18px 28px 12px; }
.ui2 .lr2-dr-sec { margin-bottom: 18px; padding-bottom: 18px; border-bottom: 1px solid var(--hair); }
.ui2 .lr2-dr-label { margin: 0 0 8px; color: var(--ink3); font-size: 12px; font-weight: 600; }
.ui2 .lr2-asof { display: flex; gap: 8px; }
.ui2 .lr2-asof .lr2-asof-field { flex: 1; }
.ui2 .lr2-asof .ui-btn2 { height: 36px; }
.ui2 .lr2-dr-hint { margin-top: 8px; }
.ui2 .lr2-dr-short { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.ui2 .lr2-dr-empty { margin: 0; color: var(--ink2); font-size: 15px; }

.ui2 .lr2 .revision-year-group { border-bottom: 1px solid var(--fill2); }
.ui2 .lr2 .revision-year-group.is-hidden { display: none; }
.ui2 .lr2 .revision-year-header { position: sticky; top: -18px; z-index: 1; display: flex; align-items: center; gap: 8px; height: 40px; background: #fff; color: var(--ink); font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; list-style: none; cursor: pointer; }
.ui2 .lr2 .revision-year-header::-webkit-details-marker { display: none; }
.ui2 .lr2 .revision-year-count { color: var(--ink3); font-size: 13px; font-weight: 400; }
.ui2 .lr2 .revision-year-header .ui-ic { width: 12px; height: 12px; margin-left: auto; stroke-width: 2.6; color: var(--ink3); transition: transform 0.2s; }
.ui2 .lr2 .revision-year-group[open] > .revision-year-header .ui-ic { transform: rotate(180deg); }
.ui2 .lr2 .revision-item { display: flex; align-items: flex-start; gap: 10px; margin: 0 -12px; padding: 10px 12px; border-top: 1px solid var(--fill2); border-radius: 0; }
.ui2 .lr2 .revision-item.is-current-view { border-radius: 10px; border-top-color: transparent; background: var(--fill); }
.ui2 .lr2 .revision-item.is-selected { border-radius: 10px; background: var(--tint); }
.ui2 .lr2 .revision-item.is-hidden { display: none; }
.ui2 .lr2 .revision-checkbox { display: none; flex: none; width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--brand); cursor: pointer; }
.ui2 .lr2 .lr-drawer.is-selecting .revision-item { cursor: pointer; }
.ui2 .lr2 .lr-drawer.is-selecting .revision-checkbox { display: block; }
.ui2 .lr2 .revision-content { flex: 1; min-width: 0; }
.ui2 .lr2 .revision-date { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; color: var(--ink); font-size: 15px; line-height: 1.35; }
.ui2 .lr2 .revision-pill { display: inline-flex; align-items: center; height: 20px; padding: 0 7px; border-radius: 980px; background: rgba(31, 157, 85, 0.1); color: var(--ok-ink); font-size: 12px; }
.ui2 .lr2 .revision-pill.is-last { background: var(--fill); color: var(--ink2); }
.ui2 .lr2 .revision-changes { margin-top: 2px; color: var(--ink2); font-size: 13px; line-height: 1.4; }
.ui2 .lr2 .revision-link { display: inline-block; margin-top: 4px; color: var(--brand); font-size: 13px; text-decoration: none; }
.ui2 .lr2 .revision-link:hover { text-decoration: underline; text-underline-offset: 3px; }
.ui2 .lr2 .lr-drawer.is-selecting .revision-link { opacity: 0.45; pointer-events: none; }

.ui2 .lr2-dr-f { flex: none; display: grid; gap: 10px; padding: 14px 28px calc(16px + env(safe-area-inset-bottom)); border-top: 1px solid var(--sep); background: #fff; }
.ui2 .lr2-cmp { display: none; align-items: center; gap: 10px; }
.ui2 .lr2 .lr-drawer.is-selecting .lr2-cmp { display: flex; }
.ui2 .lr2-cmp-s { flex: 1; min-width: 0; color: var(--ink2); font-size: 13px; line-height: 1.35; }
.ui2 .lr2-cmp.is-refused { animation: lr2-shake 0.28s; }
@keyframes lr2-shake { 0%, 100% { transform: none; } 25% { transform: translateX(-5px); } 75% { transform: translateX(5px); } }
.ui2 .lr2-dr-fa { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; }

/* ---- the practice panel's fragment (core/cabinet/court_practice/_law_panel.html) */
.ui2 .lr2-prac .lr2-dr-b { display: flex; flex-direction: column; }
.ui2 .lr2-prac .lr-practice { flex: 1 0 auto; padding: 0; }
.ui2 .lr2-prac .lr-practice__lead { margin: 0; padding-bottom: 14px; border-bottom: 1px solid var(--hair); color: var(--ink2); font-size: 15px; }
.ui2 .lr2-prac .lr-practice__lead strong { color: var(--ink); font-weight: 600; }
.ui2 .lr2-prac .lr-practice__state { margin: 0; padding: 18px 0; color: var(--ink2); font-size: 15px; }
.ui2 .lr2-prac .lr-practice__group { padding: 0; }
.ui2 .lr2-prac .lr-practice__group > h3 { margin: 18px 0 2px; color: var(--ink3); font-size: 12px; font-weight: 600; letter-spacing: 0; text-transform: none; }
.ui2 .lr2-prac .lr-practice__item { padding: 16px 0; border: 0; }
.ui2 .lr2-prac .lr-practice__item + .lr-practice__item { border-top: 1px solid var(--fill2); }
.ui2 .lr2-prac .lr-practice__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; color: var(--ink3); font-size: 12px; }
.ui2 .lr2-prac .lr-practice__kind { color: var(--ink2); font-weight: 600; }
.ui2 .lr2-prac .lr-practice__meta .cpr-binding { color: var(--ok-ink); font-weight: 600; }
.ui2 .lr2-prac .lr-practice__title { display: block; margin: 5px 0 0; color: var(--ink); font-size: 15px; font-weight: 600; line-height: 1.35; text-decoration: none; overflow-wrap: anywhere; }
.ui2 .lr2-prac .lr-practice__title:hover { color: var(--brand); text-decoration: underline; text-underline-offset: 3px; }
.ui2 .lr2-prac .lr-practice__court { margin: 2px 0 0; color: var(--ink2); font-size: 13px; }
.ui2 .lr2-prac .cpr-quote { margin: 10px 0 0; padding: 10px 14px; border: 0; border-radius: 12px; background: var(--fill); color: var(--ink); font-size: 15px; line-height: 1.5; overflow-wrap: anywhere; }
.ui2 .lr2-prac .cpr-quote mark { padding: 0 2px; border-radius: 3px; background: rgba(255, 204, 0, 0.38); color: inherit; }
.ui2 .lr2-prac .lr-practice__more { margin: 6px 0 0; color: var(--ink3); font-size: 12px; }
.ui2 .lr2-prac .lr-practice__foot { position: sticky; bottom: -12px; display: flex; justify-content: flex-end; margin: 8px -28px -12px; padding: 14px 28px 18px; border-top: 1px solid var(--sep); background: #fff; }
.ui2 .lr2-prac .lr-practice__all { display: inline-flex; align-items: center; gap: 6px; color: var(--brand); font-size: 13px; text-decoration: none; }
.ui2 .lr2-prac .lr-practice__all:hover { text-decoration: underline; text-underline-offset: 3px; }
.ui2 .lr2-prac .lr-practice__all i { font-size: 11px; }

/* ====================================================== bottom toolbar */
.ui2 .lr2-mtb { display: none; }

/* ================================================================ tablet */
@media (max-width: 1067.98px) {
  .ui2 .lr2-body { grid-template-columns: 220px minmax(0, 1fr); column-gap: 40px; }
  .ui2 .lr2-body.no-aside { grid-template-columns: 220px minmax(0, 1fr); column-gap: 40px; }
  .ui2 .lr2-body.is-rail-collapsed:not(.is-single),
  .ui2 .lr2-body.no-aside.is-rail-collapsed:not(.is-single) { grid-template-columns: 44px minmax(0, 1fr); }
  .ui2 .lr2-rev { display: none; }
  .ui2 .lr2-bar-t { max-width: 200px; }
}

/* ========================================================= phone sheets */
@media (max-width: 991.98px) {
  /* Room for the bottom toolbar, on the pages that have one. */
  .ui2.law-reader:has(.lr2-mtb) { padding-bottom: calc(56px + env(safe-area-inset-bottom)); }
  .ui2 .lr2-body, .ui2 .lr2-body.no-aside, .ui2 .lr2-body.is-rail-collapsed { display: block; padding-bottom: 48px; }

  /* docbar → title · pill · Aa · search */
  .ui2 .lr2-bar-in { gap: 8px; height: 44px; }
  .ui2 .lr2-bar-t { flex: 0 1 auto; max-width: none; font-size: 15px; letter-spacing: -0.2px; }
  .ui2 .lr2-bar .lr2-ver, .ui2 .lr2-desk { display: none !important; }
  .ui2 .lr2-phone { display: inline-flex; order: -1; }
  .ui2 .lr2-crumbs > :is(a, span) { max-width: 100%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .ui2 .lr2-tools { gap: 0; margin-right: -12px; }
  .ui2 .lr2-tb.is-ic { width: 44px; height: 44px; border-radius: 50%; }
  .ui2 .lr2-tb .ui-ic { width: 20px; height: 20px; }
  .ui2 .lr2-tb-w { display: none; }
  .ui2 .lr2-share-any { width: 44px; height: 44px; padding: 0; border-radius: 50%; }
  .ui2 .lr2-size { display: none; }
  .ui2 .lr2-size.is-open {
    position: absolute; top: calc(100% + 6px); right: 0; z-index: 30; display: flex; height: auto; margin: 0; padding: 4px;
    border-radius: 14px; background: #fff; box-shadow: 0 12px 40px rgba(0, 0, 0, 0.14), 0 0 0 1px rgba(0, 0, 0, 0.06);
  }
  .ui2 .lr2-size.is-open > button { min-width: 64px; height: 44px; border-radius: 10px; font-size: 17px; }
  .ui2 .lr2-size.is-open > button.is-big { font-size: 22px; }
  .ui2 .lr2-size.is-open > button:hover { background: var(--fill); }
  .ui2 .lr2-find-field { max-width: none; margin-right: 0; }

  /* column */
  .ui2 .lr2-col { max-width: 720px; margin: 0 auto; padding-top: 20px; font-size: var(--lr-read-size, 17px); line-height: 1.58; }
  .ui2 .lr2-h1 { font-size: 28px; line-height: 1.14; }
  .ui2 .lr2-h1.is-caps { font-size: 23px; }
  .ui2 .lr2-h1-art { font-size: 24px; }
  .ui2 .lr2-h1.is-long { font-size: 21px; line-height: 1.28; }
  .ui2 .lr2-kk { align-items: flex-start; font-size: 15px; line-height: 1.4; }
  .ui2 .lr2-kk .lw-kk-tag { margin-top: 1px; }
  .ui2 .lr2-idn { margin-top: 14px; }
  /* The pill is in the docbar right above; drop its twin (and a dot it would orphan). */
  .ui2 .lr2-head .lr2-idn .law-status-badge, .ui2 .lr2-head .lr2-idn .law-status-badge + .lr2-dot { display: none; }
  .ui2 .lr2-verm {
    display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; min-height: 44px; margin: 14px 0 0; padding: 0 14px;
    border: 0; border-radius: 12px; background: var(--fill); color: var(--ink); font: inherit; font-size: 15px; text-align: left; cursor: pointer;
  }
  .ui2 .lr2-verm.is-stale { background: rgba(224, 122, 0, 0.1); color: var(--warn-ink); }
  .ui2 .lr2-verm-t { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .ui2 .lr2-verm-n { flex: none; display: inline-flex; align-items: center; gap: 4px; color: var(--ink2); white-space: nowrap; }
  .ui2 .lr2-verm-n .ui-ic { width: 13px; height: 13px; stroke-width: 2.6; color: var(--ink3); }
  .ui2 .lr2 .section-block[data-section-type="article"] > .section-title { flex-direction: column; gap: 10px; font-size: 1.3em; line-height: 1.24; }
  .ui2 .lr2 .section-block[data-section-type="article"] > .section-title .section-name { flex: none; }
  .ui2 .lr2-prac-chip { height: 36px; padding: 0 14px; border-radius: 18px; font-size: 15px; }
  .ui2 .lr2-next { margin-top: 40px; }
  .ui2 .lr2-dl { grid-template-columns: minmax(0, 1fr); }
  .ui2 .lr2-dl dt { padding-bottom: 0; }
  .ui2 .lr2-dl dd { padding-top: 2px; border-top: 0; }

  /* contents → bottom sheet (shell.js opens it) */
  .ui2 .lr2-toc {
    position: fixed; top: auto; left: 0; right: 0; bottom: 0; z-index: 1160;
    width: min(100%, 640px); max-height: calc(100dvh - 64px); margin: 0 auto; padding: 0 0 env(safe-area-inset-bottom);
    border-radius: 14px 14px 0 0; background: #fff; box-shadow: 0 -10px 40px rgba(0, 0, 0, 0.12);
    transform: translateY(104%); visibility: hidden;
    transition: transform 0.36s cubic-bezier(0.32, 0.72, 0, 1), visibility 0s linear 0.36s;
  }
  .ui2 .lr2-toc.is-open { transform: none; visibility: visible; transition: transform 0.36s cubic-bezier(0.32, 0.72, 0, 1); }
  .ui2 .lr2-sheet-grab { display: block; flex: none; width: 36px; height: 5px; margin: 6px auto 0; border-radius: 3px; background: var(--hair); }
  .ui2 .lr2-toc .lr2-sheet-h { display: grid; flex: none; grid-template-columns: 1fr auto 1fr; align-items: center; height: 50px; padding: 0 20px; border-bottom: 1px solid var(--sep); }
  .ui2 .lr2-sheet-t { color: var(--ink); font-size: 17px; font-weight: 600; }
  .ui2 .lr2-sheet-r { justify-self: end; height: 44px; margin: 0; padding: 0; border: 0; background: none; color: var(--brand); font: inherit; font-size: 17px; font-weight: 600; cursor: pointer; }
  .ui2 .lr2-toc-head { padding: 16px 20px 0; }
  .ui2 .lr2-toc-top, .ui2 .lr2-toc-actions, .ui2 .lr2-body.is-rail-collapsed .lr2-reopen { display: none; }
  .ui2 .lr2-body.is-rail-collapsed .lr2-toc-head, .ui2 .lr2-body.is-rail-collapsed .lr2-toc-body { display: block; }
  .ui2 .lr2-toc-field { height: 44px; border-radius: 12px; font-size: 17px; }
  .ui2 .lr2-toc-body { margin: 8px 0 0; padding: 0 20px 16px; }
  .ui2 .lr2 .lr2-toc .toc-link { align-items: center; min-height: 44px; margin: 0 -10px 0 0; padding: 8px 10px; font-size: 15px; }
  .ui2 .lr2 .lr2-toc .toc-toggle { height: 44px; width: 22px; }
  .ui2 .lr2 .lr2-toc .toc-row.is-leaf::before { width: 22px; }

  /* drawers → wider sheet from the right on a tablet, bottom sheet on a phone */
  .ui2 .lr2-drawer { width: min(420px, 100vw); }

  /* the toolbar */
  .ui2 .lr2-mtb {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 940;
    display: grid; grid-auto-flow: column; grid-auto-columns: 1fr;
    padding: 4px 8px calc(2px + env(safe-area-inset-bottom));
    background: rgba(255, 255, 255, 0.92); -webkit-backdrop-filter: saturate(180%) blur(20px); backdrop-filter: saturate(180%) blur(20px);
    border-top: 1px solid var(--sep);
  }
  .ui2 .lr2-mtb > button, .ui2 .lr2-mtb > a {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; height: 48px; margin: 0; padding: 0;
    border: 0; border-radius: 12px; background: none; color: var(--ink); font: inherit; font-size: 12px; font-weight: 500; text-decoration: none; cursor: pointer;
  }
  .ui2 .lr2-mtb > :active { background: rgba(118, 118, 128, 0.12); }
  .ui2 .lr2-mtb > [aria-expanded="true"] { color: var(--brand); }
  .ui2 .lr2-mtb .ui-ic { width: 22px; height: 22px; }
}

@media (max-width: 733.98px) {
  .ui2 .lr2-tools { margin-right: -12px; }
  .ui2 .lr2-drawer {
    top: auto; left: 0; right: 0; bottom: 0; width: 100%; max-height: calc(100dvh - 64px);
    border-radius: 14px 14px 0 0; box-shadow: 0 -10px 40px rgba(0, 0, 0, 0.12);
    transform: translateY(104%); transition: transform 0.36s cubic-bezier(0.32, 0.72, 0, 1);
  }
  .ui2 .lr2-drawer .lr2-sheet-grab { display: block; }
  .ui2 .lr2-dr-h { padding: 10px 12px 0 20px; }
  .ui2 .lr2-dr-t { font-size: 20px; }
  .ui2 .lr2-dr-note { margin: 6px 20px 0; }
  .ui2 .lr2-dr-b { padding: 16px 20px 8px; }
  .ui2 .lr2-dr-f { padding: 12px 20px calc(10px + env(safe-area-inset-bottom)); }
  /* style.css caps phone elements at max-width:100%, which would cancel the bleed. */
  .ui2 .lr2-prac .lr-practice__foot { align-self: flex-start; width: calc(100% + 40px); max-width: none; margin: 8px 0 -8px -20px; padding: 12px 20px calc(10px + env(safe-area-inset-bottom)); bottom: -8px; }
  .ui2 .lr2-asof-head .lr2-asof-field { width: auto; flex: 1 1 180px; }
}

/* =================================================================== print */
@media print {
  @page { margin: 18mm 16mm; }
  .ui2.law-reader { padding-bottom: 0 !important; }
  .ui2 header.header-main, .ui2 .sh-foot, .ui2 .lr2-bar, .ui2 .lr2-toc, .ui2 .lr2-rev, .ui2 .lr2-drawer, .ui2 .lr-scrim,
  .ui2 .lr2-mtb, .ui2 .lr-apparatus, .ui2 .lr2-next, .ui2 .lr2-progress, .ui2 .law-toast, .ui2 .lr2-skip, .ui2 .sh-skip,
  .ui2 .lr2-verm, .ui2 .lr-practice-chip, .ui2 .lr2-prac-row, .ui2 .lr-practice-drawer, .ui2 #aiChatWidget, .ui2 .ai-chat-widget {
    display: none !important;
  }
  .ui2 .lr-print-masthead { display: block; margin-bottom: 16pt; padding-bottom: 10pt; border-bottom: 1pt solid #666; font-size: 9.5pt; line-height: 1.45; }
  .ui2 .lr-print-masthead h1 { margin: 0 0 6pt; font-size: 14pt; line-height: 1.3; }
  .ui2 .lr-print-masthead__url { word-break: break-all; color: #444; }
  .ui2 .lr2-body, .ui2 .lr2-body.is-single, .ui2 .lr2-body.no-aside { display: block; width: auto; max-width: none; padding: 0; }
  .ui2 .lr2-col { padding: 0; color: #000; font-size: 11pt; line-height: 1.45; }
  .ui2 .lr2-col.is-point-in-time::before { display: none; }
  .ui2 .lr2-head > :not(.lr2-about) { display: none; }
  .ui2 .lr2-head { padding: 0; border: 0; }
  /* «Реквизиты и источник» is the one part of the masthead that belongs on
     paper — the print masthead above carries only the title, number and URL.
     A closed <details> prints its summary alone, which is how this shipped: a
     lone «Реквизиты и источник ⌄» line and no requisites under it. v2/law-
     reader.js opens it on beforeprint and puts it back afterwards; the
     ::details-content rule is the no-JS fallback where it is supported. */
  .ui2 .lr2-about { margin: 0 0 14pt; }
  .ui2 .lr2-about::details-content { content-visibility: visible; }
  .ui2 .lr2-about > summary { display: block; margin: 0; color: #000; font-size: 10pt; font-weight: 700; }
  .ui2 .lr2-about > summary .ui-ic { display: none; }
  .ui2 .lr2-dl { margin-top: 6pt; font-size: 9pt; }
  .ui2 .lr2-dl dt, .ui2 .lr2-dl dd { padding: 3pt 8pt 3pt 0; border-top: 0.5pt solid #ccc; color: #000; }
  .ui2 .lr2-dl a { color: #000; }
  .ui2 .lr2 .section-block, .ui2 .lr2-col.is-virtualized .section-block { content-visibility: visible !important; contain-intrinsic-size: none !important; }
  .ui2 .lr2 .section-title { break-after: avoid; }
  .ui2 .lr2 .section-content { orphans: 3; widows: 3; color: #000; }
  .ui2 .lr2 .lr-clamp, .ui2 .lr2 .lr-clamp.is-open { max-height: none; overflow: visible; }
  .ui2 .lr2 .lr-clamp::after, .ui2 .lr2 .lr-clamp__more { display: none; }
  .ui2 .lr2 .toc-children { display: block; }
  .ui2 .law-notice { border: 1pt solid #999; background: none !important; }
  body.lr-print-scope-article .lr2 .section-block:not(.is-print-target),
  body.lr-print-scope-section .lr2 .section-block:not(.is-print-target) { display: none !important; }
}
