/* sitegen fast mode · theme ocean · seed 2977810756 */
:root {
  --bg: #0a4386;
  --bg-alt: #0b4a94;
  --surface: #14529b;
  --surface-2: #1e5ca5;
  --border: #386faf;
  --border-strong: #6a93c4;
  --text: #ffffff;
  --muted: #d0d6dc;
  --accent: #ff5800;
  --accent-2: #ff9b28;
  --accent-ink: #ffcaad;
  --link: #ffcaad;
  --accent-deep: #ecb193;
  --on-accent: #0b0b12;
  --on-accent-2: #0b0b12;
  --accent-soft: color-mix(in srgb, #ff5800 22%, transparent);
  --header-bg: color-mix(in srgb, #0a4386 84%, transparent);
  --glass: color-mix(in srgb, #14529b 58%, transparent);
  --glass-border: rgba(255, 255, 255, .12);
  --star: #fbbf24;
  --good: #4ade80;
  --bad: #f87171;
  --shadow: 0 12px 32px -14px rgba(0, 0, 0, .7);
  --shadow-lg: 0 24px 60px -20px rgba(0, 0, 0, .8);
  color-scheme: dark;
  --font-display: "Raleway", sans-serif;
  --font-body: "Ubuntu", sans-serif;
  --display-scale: 1.1;
  --radius: 18px;
  --radius-sm: 11px;
  --radius-lg: 25px;
  --radius-btn: 999px;
  --gutter: clamp(1rem, .5rem + 2.5vw, 2rem);
  --max: 84rem;
  --dur: .2s;
  --section-y: clamp(3.5rem, 2rem + 6vw, 7rem);
  --gap: clamp(1.25rem, 1rem + 1.5vw, 2rem);
  --card-pad: clamp(1.5rem, 1rem + 1.5vw, 2.2rem);
  --article-w: 54rem;
  --body-size: 1.0625rem;
  --logo-w: 220.0px;
  --logo-h: 37.9px;
  --logo-w-sm: 150.0px;
  --logo-h-sm: 25.8px;
}

/* COMPONENT INDEX
   Layout      .container .section(--alt) .section-head .eyebrow .grid-auto
   Actions     .btn(--primary|--ghost|--small|--block) .chip .filters
   Cards       .card (look set by body[data-cards]: flat|outline|shadow|glass|offset)
   Header      .site-header .brand(--logo) .brand__logo .site-nav .nav-toggle (body[data-header]: bar|center|pill|solid)
   Hero        .hero .score-card .stats .page-hero .breadcrumbs (body[data-hero]: split|center|stats)
   Blocks      .feature-grid .cat-grid[data-layout=tiles|rows|mosaic] .steps .faq .teasers .notice .cta-band
   Data        .table-wrap .table .rating .tags .list(--pros|--cons) (body[data-tables]: lines|striped|boxed|accent)
   Article     .prose .item-grid .toc(--sticky|--inline) .callout(--info|--tip|--warning) .cta-inline(--head|--end|--hero)
               .cta-btn .cta-mark .table-wrap--article .article-layout .article-list .accent-paragraph .pull-quote
               .page-head (hero_style none) .hero--compact .section--split (body[data-layout]: hero-toc|sidebar|inline|
               article-layout|split;
               body[data-items]: grid|list|steps; body[data-hero-style]: standard|compact|none)
   Article Layout  main > article.article > section.article__section, .article__head, .article-toc, .site-footer--article
   Pages       .review .bonus-grid .terms .code-row .code-token .store-btn .phone .auth .form .field
   Footer      .site-footer (body[data-footer]: columns|compact|center)
   Sections    body[data-sections]: plain|alt|lines|numbered
   Tokens come from :root (written by the generator); theme files only restyle these components. */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  min-height: 100vh;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  font-size: var(--body-size, 1rem);
  line-height: 1.65;
  text-rendering: optimizeLegibility;
}
img, svg { display: block; max-width: 100%; }
a { color: var(--link); text-underline-offset: .2em; }
a:hover { color: var(--text); }
p { margin: 0 0 1em; }
ul, ol { margin: 0; padding: 0; }
button, input { font: inherit; color: inherit; }
:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; border-radius: 4px; }

/* Long words: headings are capped by --fit (a share of the heading's container width: .hero__text, .section-head,
   .page-head, .article, .article__head; the viewport elsewhere), so a word of up to ~18 letters fits whole even in
   the widest display face at 320 px. Themes with uppercase headings lower --fit. Only longer words are hyphenated
   (19+ letters; Safari, without hyphenate-limit-chars: 16+ via the -webkit- limits); overflow-wrap is the last resort. */
:root { --fit: 8.2cqi; }
h1, h2, h3, h4 {
  margin: 0 0 .5em;
  font-family: var(--font-display);
  font-weight: var(--display-weight, 700);
  line-height: 1.15;
  letter-spacing: var(--display-tracking, -0.01em);
  text-transform: var(--display-case, none);
  overflow-wrap: break-word;
  hyphens: auto; hyphenate-limit-chars: 19 8 8; -webkit-hyphenate-limit-before: 8; -webkit-hyphenate-limit-after: 8;
  text-wrap: balance;
}
h1 { font-size: calc(min(clamp(2rem, 1.4rem + 3vw, 3.4rem), var(--fit)) * var(--display-scale)); }
h2 { font-size: calc(min(clamp(1.6rem, 1.2rem + 1.8vw, 2.5rem), var(--fit)) * var(--display-scale)); }
/* floor: display fonts with a small scale (pixel «Press Start 2P» × .52, compact type × .9) must not drop H3 to 9–11 px */
h3 { font-size: max(.8rem, calc(min(clamp(1.1rem, 1rem + .4vw, 1.3rem), var(--fit)) * var(--display-scale))); line-height: 1.3; }
h4 { font-size: 1rem; font-family: var(--font-body); letter-spacing: 0; text-transform: none; }

.container { width: min(100% - 2 * var(--gutter), var(--max)); margin-inline: auto; }
.skip-link {
  position: absolute; left: 1rem; top: -4rem; z-index: 100;
  padding: .6rem 1rem; background: var(--accent); color: var(--on-accent); border-radius: var(--radius-sm);
}
.skip-link:focus { top: 1rem; }
.visually-hidden {
  position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}

/* ---------- buttons, chips ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  min-height: 48px; padding: .75rem 1.4rem;
  border: 2px solid transparent; border-radius: var(--radius-btn);
  font-weight: 700; line-height: 1.2; text-decoration: none; text-align: center;
  cursor: pointer; transition: transform var(--dur) ease, background var(--dur) ease, color var(--dur) ease,
    border-color var(--dur) ease, box-shadow var(--dur) ease;
}
.btn svg { width: 1.1em; height: 1.1em; flex: none; }
.btn--primary { background: var(--accent); color: var(--on-accent); }
.btn--primary:hover { background: var(--accent-2); color: var(--on-accent-2); transform: translateY(-2px); }
.btn--ghost { border-color: var(--border-strong); color: var(--text); background: transparent; }
.btn--ghost:hover { border-color: var(--accent); color: var(--text); }
.btn--small { min-height: 44px; padding: .5rem 1rem; font-size: .9rem; }
.btn--block { width: 100%; }

.chip {
  display: inline-flex; align-items: center; min-height: 44px; padding: .4rem 1rem;
  border: 1px solid var(--border-strong); border-radius: 999px; background: transparent;
  font-size: .9rem; font-weight: 600; cursor: pointer;
}
.chip[aria-pressed="true"] { background: var(--accent); border-color: var(--accent); color: var(--on-accent); }
.filters { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.75rem; }

.tags { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; }
.tags li {
  padding: .2rem .65rem; border-radius: 999px; background: var(--accent-soft); color: var(--text);
  font-size: .8rem; font-weight: 600;
}

/* ---------- cards ---------- */
.card {
  position: relative; min-width: 0;
  padding: var(--card-pad);
  border-radius: var(--radius);
  background: var(--surface);
  transition: transform var(--dur) ease, border-color var(--dur) ease, box-shadow var(--dur) ease, background var(--dur) ease;
}
[data-cards="flat"] .card { background: var(--surface-2); }
[data-cards="outline"] .card { background: transparent; border: 1px solid var(--border-strong); }
[data-cards="outline"] .card:hover { border-color: var(--accent); }
[data-cards="shadow"] .card { box-shadow: var(--shadow); }
[data-cards="shadow"] a.card:hover, [data-cards="shadow"] .card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
[data-cards="glass"] .card {
  background: var(--glass); border: 1px solid var(--glass-border);
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
}
[data-cards="offset"] .card { border: 2px solid var(--text); box-shadow: 6px 6px 0 var(--accent); }
[data-cards="offset"] .card:hover { transform: translate(-2px, -2px); box-shadow: 8px 8px 0 var(--accent); }
.card h3 { margin-bottom: .35em; }
.card p:last-child { margin-bottom: 0; }
.icon {
  display: grid; place-items: center; width: 3rem; height: 3rem; margin-bottom: 1rem;
  border-radius: var(--radius-sm); background: var(--accent-soft); color: var(--accent-ink);
}
.icon svg { width: 1.5rem; height: 1.5rem; }

/* ---------- header ---------- */
.site-header { position: sticky; top: 0; z-index: 50; }
.site-header__inner { display: flex; align-items: center; gap: 1rem; min-height: 4.5rem; }
[data-header="bar"] .site-header,
[data-header="center"] .site-header {
  background: var(--header-bg); border-bottom: 1px solid var(--border);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
}
[data-header="pill"] .site-header { top: .75rem; padding-top: .75rem; }
[data-header="pill"] .site-header__inner {
  padding: .35rem .5rem .35rem 1.25rem; border: 1px solid var(--border); border-radius: 999px;
  background: var(--header-bg); box-shadow: var(--shadow);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
}
[data-header="solid"] .site-header { background: var(--accent-deep); color: var(--on-accent); }
[data-header="solid"] .site-header .brand { color: var(--on-accent); }
[data-header="solid"] .site-header .brand__mark { background: var(--on-accent); color: var(--accent-deep); }
[data-header="solid"] .nav-toggle, [data-header="solid"] .age-badge { border-color: currentColor; color: var(--on-accent); }
.brand {
  display: inline-flex; align-items: center; gap: .6rem; min-width: 0; margin-right: auto;
  color: var(--text); text-decoration: none; font-family: var(--font-display); font-weight: var(--display-weight, 700);
  font-size: calc(1.15rem * var(--display-scale)); line-height: 1.1;
}
.brand__mark {
  display: grid; place-items: center; flex: none; width: 2.4rem; height: 2.4rem;
  border-radius: var(--radius-sm); background: var(--accent); color: var(--on-accent);
}
.brand__mark svg { width: 1.4rem; height: 1.4rem; }
.brand__name { min-width: 0; overflow-wrap: break-word; }
/* uploaded logo: one box for every template and page. The generator writes --logo-w/--logo-h (desktop) and
   --logo-w-sm/--logo-h-sm (phones): the largest size with the logo's own proportions inside 220×48 / 150×36 px,
   so wide and tall logos are never stretched or cropped and the header keeps its height; transparency shows
   the header background. max-width lets a crowded header shrink it further, object-fit keeps proportions. */
.brand--logo { flex: 0 1 auto; min-width: 0; }
.brand__logo {
  display: block; width: var(--logo-w, auto); height: var(--logo-h, 2.75rem); max-width: 100%;
  object-fit: contain; object-position: left center;
}
[data-header="center"] .brand__logo { object-position: center; }
.age-badge {
  display: inline-grid; place-items: center; flex: none; width: 2.6rem; height: 2.6rem;
  border: 2px solid var(--border-strong); border-radius: 50%; font-size: .8rem; font-weight: 800;
}
.nav-toggle {
  display: inline-grid; place-items: center; flex: none; width: 48px; height: 48px;
  border: 1px solid var(--border-strong); border-radius: var(--radius-sm); background: transparent; cursor: pointer;
}
.nav-toggle__bars, .nav-toggle__bars::before, .nav-toggle__bars::after {
  display: block; width: 20px; height: 2px; border-radius: 2px; background: currentColor;
  transition: transform var(--dur) ease, opacity var(--dur) ease;
}
.nav-toggle__bars { position: relative; }
.nav-toggle__bars::before, .nav-toggle__bars::after { content: ""; position: absolute; left: 0; }
.nav-toggle__bars::before { top: -6px; }
.nav-toggle__bars::after { top: 6px; }
.nav-toggle[aria-expanded="true"] .nav-toggle__bars { background: transparent; }
.nav-toggle[aria-expanded="true"] .nav-toggle__bars::before { transform: translateY(6px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle__bars::after { transform: translateY(-6px) rotate(-45deg); }
.site-nav { display: none; }
.site-nav ul { list-style: none; display: flex; flex-direction: column; gap: .25rem; }
.site-nav a {
  display: flex; align-items: center; min-height: 44px; padding: .5rem .9rem;
  border-radius: var(--radius-sm); color: var(--text); font-weight: 600; text-decoration: none;
}
.site-nav a:hover { background: var(--accent-soft); }
.site-nav a[aria-current="page"] { background: var(--accent); color: var(--on-accent); }
.site-nav.is-open {
  display: block; position: absolute; left: var(--gutter); right: var(--gutter); top: calc(100% + .5rem);
  padding: .75rem; border: 1px solid var(--border); border-radius: var(--radius);
  background: var(--surface); box-shadow: var(--shadow-lg);
}

/* ---------- sections ---------- */
.section { position: relative; padding-block: var(--section-y); }
[data-sections="alt"] .section--alt { background: var(--bg-alt); }
[data-sections="lines"] .section + .section { border-top: 1px solid var(--border); }
[data-sections="numbered"] main { counter-reset: sec; }
[data-sections="numbered"] .section-head .eyebrow::before {
  counter-increment: sec; content: counter(sec, decimal-leading-zero) " / "; color: var(--accent-ink);
}
.section-head { container-type: inline-size; max-width: 46rem; margin-bottom: clamp(1.75rem, 1rem + 2vw, 3rem); }
.section-head--center { margin-inline: auto; text-align: center; }
.section-head p:last-child { margin-bottom: 0; color: var(--muted); font-size: 1.075rem; }
.eyebrow {
  display: inline-block; margin-bottom: .75rem; color: var(--accent-ink);
  font-size: .8rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
}
.lead { color: var(--muted); font-size: clamp(1.05rem, 1rem + .3vw, 1.2rem); }
.grid-auto { display: grid; gap: var(--gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); list-style: none; }
.feature-grid > * > .card, .tips > .card { height: 100%; }

/* ---------- hero ---------- */
.hero { position: relative; overflow: clip; padding-block: clamp(3rem, 2rem + 5vw, 6.5rem); }
.hero__grid { display: grid; gap: clamp(2rem, 1rem + 4vw, 4rem); grid-template-columns: minmax(0, 1fr); align-items: center; }
.hero__text { container-type: inline-size; min-width: 0; }
.hero__title { font-size: calc(min(clamp(2rem, 9cqi, 3.9rem), var(--fit)) * var(--display-scale)); line-height: 1.08; }
.hero__lead { max-width: 38rem; color: var(--muted); font-size: clamp(1.05rem, 1rem + .4vw, 1.25rem); }
.hero__actions { display: flex; flex-wrap: wrap; gap: .75rem; margin: 1.75rem 0 1.5rem; }
.hero__badges { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; list-style: none; color: var(--muted); font-size: .9rem; }
.hero__badges li { display: inline-flex; align-items: center; gap: .4rem; }
.hero__badges li::before { content: ""; width: .5rem; height: .5rem; border-radius: 50%; background: var(--accent); }
.hero__aside { min-width: 0; }
/* explicit width: with container-type the box cannot shrink-to-fit its content (it would collapse to 0) */
[data-hero="center"] .hero__text { width: min(100%, 52rem); margin-inline: auto; text-align: center; }
[data-hero="center"] .hero__lead { margin-inline: auto; }
[data-hero="center"] .hero__actions, [data-hero="center"] .hero__badges { justify-content: center; }
[data-hero="center"] .hero__aside { width: min(100%, 34rem); margin-inline: auto; }
.hero.hero--solo .hero__grid { grid-template-columns: minmax(0, 1fr); }
.hero.hero--solo .hero__text { max-width: 52rem; }
[data-hero="center"] .hero.hero--solo .hero__text { margin-inline: auto; }
/* hero_style: compact — the same hero with less air; none — H1, CTA and lead without a hero block.
   Neither (nor standard) has a forced height: the first screen is as tall as its content. */
.hero.hero--compact { padding-block: clamp(1.5rem, 1rem + 2vw, 2.75rem); }
.hero--compact .hero__title { font-size: calc(min(clamp(1.75rem, 6.5cqi, 2.9rem), var(--fit)) * var(--display-scale)); }
.hero--compact .hero__actions { margin: 1.25rem 0 1rem; }
.page-head { container-type: inline-size; padding-block: clamp(1.5rem, 1rem + 1.5vw, 2.5rem) clamp(.5rem, .25rem + 1vw, 1rem); }
[data-header="pill"] .page-head { padding-top: calc(clamp(1.5rem, 1rem + 1.5vw, 2.5rem) + .75rem); }
.page-head__title { max-width: 52rem; font-size: calc(min(clamp(1.75rem, 1.2rem + 2.4vw, 2.75rem), var(--fit)) * var(--display-scale)); line-height: 1.12; }
.page-head .hero__actions { margin: 1rem 0; }
.page-head + .toc-strip { margin-top: 0; }
/* centred when the composition centres headings or its first screen (hero=center): title, button and lead together */
.page-head--center, [data-hero="center"] .page-head { text-align: center; }
.page-head--center .page-head__title, .page-head--center .hero__lead,
[data-hero="center"] .page-head__title, [data-hero="center"] .page-head .hero__lead { margin-inline: auto; }
.page-head--center .hero__actions, [data-hero="center"] .page-head .hero__actions { justify-content: center; }
.page-head:not(.page-head--center) .hero__actions { justify-content: flex-start; }
[data-hero="center"] .page-head .hero__actions { justify-content: center; }

.score-card { padding: 1.5rem; border-radius: var(--radius-lg); }
.score-card__top { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.25rem; }
.score-card__ring { position: relative; flex: none; width: 5.5rem; height: 5.5rem; }
.score-card__ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.score-card__ring circle { fill: none; stroke-width: 10; }
.score-card__ring .track { stroke: var(--border); }
.score-card__ring .value { stroke: var(--accent); stroke-linecap: round; stroke-dasharray: 276; }
.score-card__ring strong {
  position: absolute; inset: 0; display: grid; place-items: center; font-family: var(--font-display); font-size: 1.4rem;
}
.score-card__title { margin: 0; font-weight: 700; }
.score-card__meta { margin: 0; color: var(--muted); font-size: .9rem; }
.score-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .35rem .75rem; margin-top: .9rem; font-size: .9rem; }
.score-row__bar { grid-column: 1 / -1; height: .5rem; border-radius: 999px; background: var(--surface-2); overflow: hidden; }
.score-row__bar span { display: block; width: var(--v); height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--accent), var(--accent-2)); }

.stats { display: grid; gap: var(--gap); grid-template-columns: repeat(2, minmax(0, 1fr)); list-style: none; }
.stat { padding: 1.25rem; border-radius: var(--radius); background: var(--surface-2); }
.stat strong { display: block; font-family: var(--font-display); font-size: calc(clamp(1.8rem, 1.4rem + 1.5vw, 2.6rem) * var(--display-scale)); line-height: 1.1; color: var(--accent-ink); }
.stat span { color: var(--muted); font-size: .95rem; }

.page-hero { padding-block: clamp(2.5rem, 1.5rem + 4vw, 4.5rem) clamp(1.5rem, 1rem + 2vw, 2.5rem); }
.page-hero .container { container-type: inline-size; }
.page-hero h1 { max-width: 20ch; font-size: calc(min(clamp(2rem, 8cqi, 3.4rem), var(--fit)) * var(--display-scale)); }
.page-hero .lead { max-width: 42rem; }
[data-hero="center"] .page-hero { text-align: center; }
[data-hero="center"] .page-hero h1, [data-hero="center"] .page-hero .lead { margin-inline: auto; }
[data-hero="center"] .breadcrumbs ol { justify-content: center; }
.breadcrumbs ol { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; margin-bottom: 1rem; color: var(--muted); font-size: .9rem; }
.breadcrumbs li + li::before { content: "/"; margin-right: .4rem; color: var(--border-strong); }
.breadcrumbs a { color: var(--muted); }

/* ---------- blocks ---------- */
.feature-grid { display: grid; gap: var(--gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); }

.cat-grid { display: grid; gap: var(--gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); list-style: none; }
.cat-grid .card { display: flex; flex-direction: column; height: 100%; }
.cat-grid .card p { flex: 1; }
.cat-grid[data-layout="rows"] { grid-template-columns: minmax(0, 1fr); }
.cat-grid[data-layout="rows"] .card { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 0 1.25rem; align-items: start; }
.cat-grid[data-layout="rows"] .icon { grid-row: span 3; margin: 0; }

.steps { display: grid; gap: var(--gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); list-style: none; counter-reset: step; }
.step { position: relative; padding-top: 3.5rem; }
.step::before {
  counter-increment: step; content: counter(step);
  position: absolute; top: 0; left: 0; display: grid; place-items: center; width: 2.6rem; height: 2.6rem;
  border-radius: 50%; background: var(--accent); color: var(--on-accent); font-family: var(--font-display); font-weight: 700;
}
.step h3 { font-size: 1.1rem; }
.step p { margin: 0; color: var(--muted); }

.faq { display: grid; gap: .75rem; max-width: 52rem; }
.faq--center { margin-inline: auto; }
.faq details { border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.faq summary {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 48px;
  padding: 1rem 1.25rem; font-weight: 700; cursor: pointer; list-style: none;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: "+"; flex: none; display: grid; place-items: center; width: 2rem; height: 2rem;
  border-radius: 50%; background: var(--accent-soft); color: var(--accent-ink); font-size: 1.25rem; line-height: 1;
  transition: transform var(--dur) ease;
}
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details > div { padding: 0 1.25rem 1.25rem; color: var(--muted); }
.faq details > div p { margin: 0; }

.teasers { display: grid; gap: var(--gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); }
.teaser { display: flex; flex-direction: column; color: var(--text); text-decoration: none; }
.teaser p { flex: 1; color: var(--muted); }
.teaser__more { display: inline-flex; align-items: center; gap: .4rem; margin-top: 1rem; color: var(--accent-ink); font-weight: 700; }
.teaser__more svg { width: 1rem; height: 1rem; transition: transform var(--dur) ease; }
.teaser:hover .teaser__more svg { transform: translateX(4px); }

.notice {
  display: grid; gap: 1rem 1.5rem; grid-template-columns: minmax(0, 1fr);
  padding: clamp(1.25rem, 1rem + 1.5vw, 2rem); border-radius: var(--radius);
  border: 1px solid var(--border-strong); border-left: 6px solid var(--accent); background: var(--surface);
}
.notice h2, .notice h3 { margin: 0; }
.notice ul { display: grid; gap: .5rem; list-style: none; }
.notice li { display: flex; gap: .6rem; }
.notice li::before { content: "✓"; flex: none; color: var(--accent-ink); font-weight: 800; }

.cta-band {
  display: grid; gap: 1.5rem; align-items: center; grid-template-columns: minmax(0, 1fr);
  padding: clamp(1.75rem, 1rem + 3vw, 3.5rem); border-radius: var(--radius-lg);
  background: linear-gradient(135deg, var(--accent), var(--accent-2)); color: var(--on-accent);
}
.cta-band h2 { margin-bottom: .3em; }
.cta-band p { margin: 0; opacity: .92; }
.cta-band .btn { background: var(--on-accent); color: var(--accent-deep); justify-self: start; }
.cta-band .btn:hover { background: var(--on-accent); color: var(--accent-deep); transform: translateY(-2px); }

/* ---------- article (texts from content.json) ---------- */
section[id], .toc { scroll-margin-top: 6rem; } /* anchors land below the sticky header */
.prose { max-width: 68ch; font-size: 1.05rem; }
.prose p { margin-bottom: 1.1em; }
.prose p:last-child { margin-bottom: 0; }
.section-head--center ~ .prose, .section-head--center ~ .callout { margin-inline: auto; }
.item-grid { display: grid; gap: var(--gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); margin-top: 2rem; }
.item-grid .card p { color: var(--muted); }
.toc { padding: 1.5rem; border-radius: var(--radius-lg); }
.toc__title { margin: 0 0 .75rem; font-family: var(--font-display); font-weight: var(--display-weight, 700); font-size: 1.1rem; }
.toc ol { display: grid; gap: .15rem; list-style: none; counter-reset: toc; }
.toc li { counter-increment: toc; }
/* overflow-wrap: a very long word in a menu label wraps inside its pill instead of widening the page */
.toc a {
  display: flex; gap: .75rem; align-items: baseline; min-height: 44px; padding: .55rem .5rem;
  border-radius: var(--radius-sm); color: var(--text); text-decoration: none; line-height: 1.35; overflow-wrap: anywhere;
}
.toc a::before { content: counter(toc, decimal-leading-zero); flex: none; color: var(--accent-ink); font-weight: 700; font-size: .85rem; }
.toc a:hover { background: var(--accent-soft); }
[data-hero="center"] .hero--article .toc { text-align: left; }
.callout {
  --callout: var(--accent-ink);
  display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 1rem; align-items: start;
  max-width: 68ch; margin-top: 1.75rem; padding: 1.1rem 1.25rem; border-radius: var(--radius);
  border: 1px solid var(--border); border-left: 5px solid var(--callout);
  background: color-mix(in srgb, var(--callout) 9%, var(--surface));
}
.callout--tip { --callout: var(--good); }
.callout--warning { --callout: var(--star); }
.callout--important { --callout: color-mix(in srgb, var(--star) 55%, var(--accent-ink)); }
.callout--summary { --callout: color-mix(in srgb, var(--accent-ink) 65%, var(--text)); }
.callout--steps { --callout: color-mix(in srgb, var(--good) 50%, var(--accent-ink)); }
.callout__icon {
  display: grid; place-items: center; width: 2.4rem; height: 2.4rem; border-radius: 50%;
  background: color-mix(in srgb, var(--callout) 18%, transparent); color: var(--callout);
}
.callout__icon svg { width: 1.3rem; height: 1.3rem; }
.callout__title { margin: 0 0 .25rem; font-weight: 700; }
.callout p:last-child { margin-bottom: 0; }
.cta-inline--head { margin: calc(-1 * clamp(.75rem, .5rem + 1vw, 1.5rem)) 0 1.75rem; }
.cta-inline--end { margin-top: 2rem; }
.table-wrap--article { margin-top: 2rem; }
.table-wrap--article .table { min-width: 30rem; }
.table-wrap--article caption {
  padding: .85rem 1rem; border-bottom: 1px solid var(--border); text-align: left;
  font-family: var(--font-display); font-weight: var(--display-weight, 700);
}

/* article layouts (body[data-layout]): contents strip under the hero / sticky contents column */
/* the strip overlaps the hero's bottom padding; its own layer keeps it above the (positioned) hero background */
.toc-strip { position: relative; z-index: 1; margin-block: calc(-1 * clamp(1rem, .5rem + 2vw, 2.5rem)) 0; }
.toc--inline { padding-block: 1rem; border-block: 1px solid var(--border); }
.toc--inline ol { display: flex; flex-wrap: wrap; gap: .5rem; }
.toc--inline a { padding: .45rem .9rem; border: 1px solid var(--border-strong); border-radius: 999px; }
.toc--inline a::before { font-size: .75rem; }
.article-layout { display: grid; gap: clamp(1rem, .5rem + 2vw, 2.5rem); grid-template-columns: minmax(0, 1fr); padding-top: var(--section-y); }
.article-layout__body .section { padding-block: 0 var(--section-y); }
/* layout "split" (asymmetric): heading + CTA in a narrow column that stays in view, image and text in a wide one;
   phones stack them in the same order (H2 → CTA → image → text) */
.section--split .section-split__aside .section-head { margin-bottom: 1rem; }
.section--split .section-split__aside .cta-inline { margin: 0 0 1.5rem; }
.section--split .section-split__main > :first-child { margin-top: 0; }
.section--split .section-split__main .article-figure { max-width: 68ch; font-size: 1.05rem; }  /* the edge of .prose below */
[data-sections="alt"] .article-layout .section--alt { padding: clamp(1.25rem, 1rem + 2vw, 2.25rem); margin-bottom: var(--section-y); border-radius: var(--radius-lg); }
[data-sections="lines"] .article-layout .section + .section { padding-top: var(--section-y); }

/* rich text inside articles (every layout): bold phrases, accent paragraph, key-fact lists, pull quote */
.prose strong, .article strong { color: var(--text); font-weight: 700; }
.accent-paragraph {
  max-width: 68ch; margin: 1.25rem 0; padding: .2rem 0 .2rem 1rem; border-left: 4px solid var(--accent);
  font-size: 1.12em; font-weight: 600; line-height: 1.55;
}
.article-list { max-width: 68ch; margin: 1rem 0 1.25rem; padding-left: 1.4rem; }
.article-list li { margin-bottom: .45rem; padding-left: .25rem; }
.article-list li::marker { color: var(--accent-ink); font-weight: 700; }
.pull-quote {
  max-width: 60ch; margin: 1.75rem 0; padding: .25rem 0 .25rem 1.25rem; border-left: 3px solid var(--border-strong);
  font-family: var(--font-display); font-size: calc(1.2rem * var(--display-scale)); font-style: italic; line-height: 1.45;
}
.pull-quote p { margin: 0; }
/* OpenAI illustration of an H2 section (after the section's CTA): never wider than the column, never stretched */
.article-figure { max-width: 52rem; margin: 0 0 1.5rem; }
.article-figure img {
  display: block; width: 100%; height: auto; border-radius: var(--radius); background: var(--surface-2);
  object-fit: cover;
}
.section-head--center ~ .article-figure { margin-inline: auto; }
.article .article-figure { max-width: none; margin: 0 0 1.25rem; }
/* the H1 illustration (H1 → CTA → image → lead): inside the hero text column, the no-hero head or the article head */
.hero__text .article-figure--lead, .page-head .article-figure--lead { max-width: 46rem; margin: 0 0 1.25rem; }
.page-head--center .article-figure--lead, [data-hero="center"] .article-figure--lead { margin-inline: auto; }
.article__head .article-figure--lead { margin: 0 0 1rem; }

/* Article Layout (body[data-layout="article-layout"]): header → H1 → CTA → one continuous article → footer.
   main > article > section; no hero, no cards, no forced heights; reading width ~46rem. */
.article.container { container-type: inline-size; max-width: var(--article-w, 46rem); padding-block: clamp(1.5rem, 1.1rem + 1.2vw, 2.25rem) clamp(1.5rem, 1rem + 2vw, 3rem); }
/* the floating pill header is shifted .75rem down over the content: keep the same visible gap above the H1 */
[data-header="pill"] .article.container { padding-top: calc(clamp(1.5rem, 1.1rem + 1.2vw, 2.25rem) + .75rem); }
.article { font-size: calc(var(--body-size, 1rem) * 1.0625); line-height: 1.75; }
.article__head { container-type: inline-size; padding-bottom: .5rem; }
.article__head--band {
  padding: clamp(1rem, .75rem + 1vw, 1.5rem); border-radius: var(--radius-lg); background: var(--bg-alt);
}
.article__title { margin-bottom: .9rem; font-size: calc(min(clamp(1.7rem, 1.25rem + 2vw, 2.6rem), var(--fit)) * var(--display-scale)); line-height: 1.15; }
.article__lead { margin: 0; color: var(--muted); font-size: 1.12em; line-height: 1.6; }
.article .cta-inline { margin: 0 0 1.25rem; }
.article__head .cta-inline { margin-bottom: 1rem; }
.article-toc { margin: 1.25rem 0 .5rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.article-toc summary {
  display: flex; align-items: center; min-height: 44px; padding: .5rem 1rem; cursor: pointer;
  font-weight: 700; list-style: none;
}
.article-toc summary::-webkit-details-marker { display: none; }
.article-toc summary::after { content: "+"; margin-left: auto; color: var(--accent-ink); font-size: 1.3rem; line-height: 1; }
.article-toc[open] summary::after { content: "−"; }
.article-toc ol { padding: 0 1rem .75rem 2.4rem; font-size: .95rem; }
.article-toc li { margin-bottom: .2rem; }
.article-toc a { display: inline-block; padding-block: .3rem; color: var(--text); }
.article__section { padding-top: clamp(1.75rem, 1.25rem + 1.5vw, 2.5rem); scroll-margin-top: 5.5rem; }
.article__section > h2 { margin-bottom: .75rem; font-size: calc(min(clamp(1.4rem, 1.15rem + 1.1vw, 2rem), var(--fit)) * var(--display-scale)); }
.article__section > h3 { margin: 1.6rem 0 .5rem; }
.article__section > p { max-width: none; }
.article .callout, .article .accent-paragraph, .article .article-list, .article .pull-quote { max-width: none; }
.article .table-wrap--article { margin: 1.5rem 0; }
.article .table-wrap--article .table { min-width: 28rem; }
.article .faq { margin-top: .5rem; }
[data-sections="lines"] .article__section + .article__section { margin-top: 1.75rem; border-top: 1px solid var(--border); }

/* H3 blocks (body[data-items]): card grid, single column list, numbered steps */
[data-items="list"] .item-grid { grid-template-columns: minmax(0, 1fr); }
[data-items="list"] .item-grid .card { border-left: 4px solid var(--accent); }
[data-items="steps"] .item-grid { counter-reset: item; }
[data-items="steps"] .item-grid .card { padding-top: calc(var(--card-pad) + 3rem); }
[data-items="steps"] .item-grid .card::before {
  counter-increment: item; content: counter(item);
  position: absolute; top: var(--card-pad); left: var(--card-pad); display: grid; place-items: center; width: 2.4rem; height: 2.4rem;
  border-radius: 50%; background: var(--accent); color: var(--on-accent); font-family: var(--font-display); font-weight: 700;
}

/* CTA after headings: the theme's .btn look; an external link gets a visible advertising mark beside the button.
   Alignment: always centred on the column's axis (templates/fast/center.css) */
.cta-inline { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .85rem; margin-bottom: 1.75rem; }
.cta-inline--hero { margin: 0; }
.cta-btn { max-width: 100%; white-space: normal; }
.cta-mark { color: var(--muted); font-size: .78rem; font-weight: 600; letter-spacing: .02em; line-height: 1.3; }
.ad-note { font-size: .82rem; }

/* ---------- data ---------- */
.table-wrap { max-width: 100%; overflow-x: auto; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.table { width: 100%; min-width: 34rem; border-collapse: collapse; font-size: .95rem; }
.table th, .table td { padding: .85rem 1rem; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; }
.table thead th { background: var(--surface-2); font-size: .8rem; letter-spacing: .06em; text-transform: uppercase; }
.table tbody tr:last-child th, .table tbody tr:last-child td { border-bottom: 0; }
.table td.num { font-variant-numeric: tabular-nums; font-weight: 700; }
[data-tables="striped"] .table tbody tr:nth-child(even) { background: var(--surface-2); }
[data-tables="lines"] .table-wrap { border: 0; border-radius: 0; background: transparent; box-shadow: none; }
[data-tables="lines"] .table thead th { background: transparent; border-bottom: 2px solid var(--text); }
[data-tables="boxed"] .table th, [data-tables="boxed"] .table td { border: 1px solid var(--border); }
[data-tables="boxed"] .table tbody th { background: var(--surface-2); }
[data-tables="accent"] .table thead th { background: var(--accent); color: var(--on-accent); }

.rating { display: inline-flex; align-items: center; gap: .5rem; flex: none; }
.rating__value { font-family: var(--font-display); font-size: 1.35rem; font-weight: 700; color: var(--accent-ink); }
.rating__stars {
  position: relative; display: inline-block; font-size: 1rem; letter-spacing: .1em; color: var(--border-strong);
}
.rating__stars::after {
  content: "★★★★★"; position: absolute; inset: 0; width: var(--r); overflow: hidden; color: var(--star);
}

.list { display: grid; gap: .45rem; list-style: none; }
.list li { display: flex; gap: .55rem; }
.list li::before { flex: none; font-weight: 800; }
.list--pros li::before { content: "+"; color: var(--good); }
.list--cons li::before { content: "−"; color: var(--bad); }

/* ---------- reviews ---------- */
.review-grid { display: grid; gap: var(--gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); }
.review[hidden] { display: none; }
.review__head { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; margin-bottom: 1rem; }
.review__logo {
  display: grid; place-items: center; flex: none; width: 3.25rem; height: 3.25rem; border-radius: var(--radius-sm);
  background: linear-gradient(135deg, var(--accent), var(--accent-2)); color: var(--on-accent);
  font-family: var(--font-display); font-weight: 700;
}
.review__id { flex: 1 1 8rem; min-width: 0; }
.review__id h3 { margin: 0; }
.review__id p { margin: 0; color: var(--muted); font-size: .85rem; }
.review__summary { color: var(--muted); }
.review__lists { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr)); margin: 1rem 0 1.25rem; font-size: .95rem; }
.review__lists h4 { margin-bottom: .5rem; }
.demo-note { margin-top: 1.5rem; color: var(--muted); font-size: .9rem; }

/* ---------- bonuses ---------- */
.bonus-grid { display: grid; gap: var(--gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); }
.bonus dl { display: grid; gap: .4rem; margin: 1rem 0 0; padding-top: 1rem; border-top: 1px dashed var(--border-strong); font-size: .92rem; }
.bonus dl div { display: flex; justify-content: space-between; gap: 1rem; }
.bonus dt { color: var(--muted); }
.bonus dd { margin: 0; font-weight: 700; text-align: right; }
.terms { display: grid; gap: var(--gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); margin: 0; }
.terms div { padding: 1.25rem; border-left: 4px solid var(--accent); border-radius: var(--radius-sm); background: var(--surface-2); }
.terms dt { margin-bottom: .35rem; font-family: var(--font-display); font-weight: 700; }
.terms dd { margin: 0; color: var(--muted); }
.code-list { display: grid; gap: .75rem; }
.code-row { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; }
.code-row__info { flex: 1 1 14rem; min-width: 0; }
.code-row__info p { margin: 0; color: var(--muted); font-size: .9rem; }
.code-token {
  padding: .45rem .8rem; border: 2px dashed var(--accent); border-radius: var(--radius-sm);
  font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; font-size: 1.05rem; font-weight: 700;
  letter-spacing: .08em; overflow-wrap: anywhere;
}
.btn.is-copied { background: var(--good); border-color: var(--good); color: #fff; }

/* ---------- app ---------- */
.app-hero { display: grid; gap: clamp(2rem, 1rem + 4vw, 4rem); grid-template-columns: minmax(0, 1fr); align-items: center; }
.store-buttons { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.5rem; }
.store-btn {
  display: inline-flex; align-items: center; gap: .75rem; min-height: 56px; padding: .6rem 1.2rem;
  border-radius: var(--radius-btn); background: var(--text); color: var(--bg); text-decoration: none; line-height: 1.2;
}
.store-btn:hover { color: var(--bg); transform: translateY(-2px); }
.store-btn svg { width: 1.6rem; height: 1.6rem; flex: none; }
.store-btn small { display: block; font-size: .72rem; opacity: .8; }
.store-btn strong { font-size: 1rem; }
.phone {
  position: relative; width: min(100%, 17rem); aspect-ratio: 9 / 18.5; margin-inline: auto; padding: .7rem;
  border-radius: 2.6rem; background: var(--text); box-shadow: var(--shadow-lg);
}
.phone::before {
  content: ""; position: absolute; top: 1.1rem; left: 50%; z-index: 1; width: 30%; height: 1.1rem;
  border-radius: 999px; background: var(--text); transform: translateX(-50%);
}
.phone__screen {
  display: flex; flex-direction: column; gap: .6rem; height: 100%; padding: 2.6rem .9rem 1rem;
  border-radius: 2rem; background: var(--bg); overflow: hidden; font-size: .78rem;
}
.phone__bar { display: flex; justify-content: space-between; font-weight: 700; }
.phone__tile { padding: .7rem; border-radius: .8rem; background: var(--surface-2); }
.phone__tile--accent { background: linear-gradient(135deg, var(--accent), var(--accent-2)); color: var(--on-accent); }
.phone__tile strong { display: block; font-size: .95rem; }
.phone__line { height: .5rem; margin-top: .45rem; border-radius: 999px; background: var(--border); }
.phone__line--short { width: 60%; }
.phone__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
.phone__grid span { aspect-ratio: 1; border-radius: .7rem; background: var(--accent-soft); }

/* ---------- login (demo) ---------- */
.auth { display: grid; gap: var(--gap); grid-template-columns: minmax(0, 1fr); align-items: start; }
.auth-card { padding: clamp(1.5rem, 1rem + 2vw, 2.5rem); }
.demo-banner {
  margin-bottom: 1.5rem; padding: .9rem 1rem; border-radius: var(--radius-sm);
  background: var(--accent-soft); border: 1px dashed var(--accent); font-size: .92rem;
}
.form { display: grid; gap: 1.1rem; }
.field { display: grid; gap: .4rem; }
.field label { font-weight: 600; font-size: .92rem; }
.field input {
  width: 100%; min-height: 48px; padding: .7rem .9rem;
  border: 1px solid var(--border-strong); border-radius: var(--radius-sm); background: var(--surface-2);
}
.field input:disabled, .check input:disabled { cursor: not-allowed; opacity: .7; }
.check { display: flex; align-items: center; gap: .6rem; min-height: 44px; font-size: .95rem; }
.check input { width: 1.2rem; height: 1.2rem; accent-color: var(--accent); }
.form__status { min-height: 1.5em; margin: 0; font-weight: 600; color: var(--accent-ink); }
/* 17rem: the aside next to the login card is narrow; long words like «Двухфакторная» need a full-width card */
.tips { display: grid; gap: var(--gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); }

/* ---------- footer ---------- */
.site-footer { margin-top: var(--section-y); padding-block: 3rem 2rem; border-top: 1px solid var(--border); background: var(--bg-alt); }
.footer-grid { display: grid; gap: 2rem; grid-template-columns: minmax(0, 1fr); }
.footer-grid h2, .footer-grid .footer-title { margin: 0 0 .75rem; font-family: var(--font-body); font-size: .8rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.footer-grid p { color: var(--muted); font-size: .92rem; }
.footer-nav { display: grid; gap: .25rem; list-style: none; }
.footer-nav a { display: inline-flex; align-items: center; min-height: 44px; color: var(--text); text-decoration: none; }
.footer-nav a:hover, .footer-nav a[aria-current="page"] { color: var(--accent-ink); text-decoration: underline; }
[data-footer="compact"] .footer-grid { align-items: center; }
[data-footer="compact"] .footer-nav { display: flex; flex-wrap: wrap; gap: .25rem 1.25rem; }
[data-footer="center"] .footer-grid { grid-template-columns: minmax(0, 1fr); justify-items: center; text-align: center; }
[data-footer="center"] .footer-grid .brand { margin-inline: auto; }
[data-footer="center"] .footer-grid p { max-width: 40rem; margin-inline: auto; }
[data-footer="center"] .footer-nav { display: flex; flex-wrap: wrap; justify-content: center; gap: .25rem 1.25rem; }
[data-footer="center"] .footer-bottom { justify-content: center; text-align: center; }
.footer-bottom {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: .75rem 1.5rem;
  margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--border); color: var(--muted); font-size: .85rem;
}
.footer-bottom p { margin: 0; }
.age-inline { font-weight: 800; color: var(--text); }
/* Article Layout footer: one compact block — page links, footer note, year; no brand, no site name */
.site-footer--article { margin-top: 0; padding-block: 1.5rem; }
.footer-article { display: grid; gap: .75rem; }
.footer-article .footer-nav { display: flex; flex-wrap: wrap; gap: 0 1.25rem; }
.footer-article__meta { display: flex; flex-wrap: wrap; gap: .25rem 1.5rem; color: var(--muted); font-size: .85rem; }
.footer-article__meta p { margin: 0; }
[data-footer="center"] .footer-article { justify-items: center; text-align: center; }
[data-footer="center"] .footer-article .footer-nav, [data-footer="center"] .footer-article__meta { justify-content: center; }
[data-footer="columns"] .footer-article { padding-top: .5rem; border-top: 3px solid var(--accent); }

/* ---------- style dimensions (body[data-*], fastgen.STYLE_DEFAULTS) ----------
   Default values (plain, bar, theme, text-first, burger, scroll, regular) have no rules: the look sites had before.
   width and type_scale work through --max, --article-w, --body-size and --display-scale written by the generator. */
[data-nav-style="pills"] .site-nav a { border-radius: 999px; }
/* text colour, not accent-ink: ink is fitted to 4.5:1 against plain surfaces and drops below it on the tinted pill */
[data-nav-style="pills"] .site-nav a[aria-current="page"] { background: var(--accent-soft); color: var(--text); box-shadow: inset 0 0 0 1px var(--accent); }
[data-nav-style="underline"] .site-nav a { border-radius: 0; }
[data-nav-style="underline"] .site-nav a:hover { background: none; box-shadow: inset 0 -2px 0 var(--border-strong); }
[data-nav-style="underline"] .site-nav a[aria-current="page"] { background: none; color: var(--accent-ink); box-shadow: inset 0 -3px 0 var(--accent); }
[data-nav-style="caps"] .site-nav a { font-size: .78rem; letter-spacing: .12em; text-transform: uppercase; }

[data-callout-style="filled"] .callout { border: 0; background: color-mix(in srgb, var(--callout) 16%, var(--surface)); }
[data-callout-style="outline"] .callout { border: 2px solid var(--callout); background: var(--surface); }
[data-callout-style="minimal"] .callout {
  border: 0; border-block: 1px solid var(--border); border-radius: 0; background: transparent; padding-inline: 0;
}
[data-callout-style="minimal"] .callout__icon { background: none; }

[data-cta-shape="pill"] .cta-btn { border-radius: 999px; }
[data-cta-shape="square"] .cta-btn { border-radius: 0; }
[data-cta-shape="wide"] .cta-inline:not(.cta-inline--hero) { display: block; }
[data-cta-shape="wide"] .cta-inline:not(.cta-inline--hero) .cta-btn { width: 100%; justify-content: center; text-align: center; }
[data-cta-shape="arrow"] .cta-btn::after { content: "→"; margin-left: .55em; font-weight: 700; transition: transform var(--dur) ease; }
[data-cta-shape="arrow"] .cta-btn:hover::after { transform: translateX(3px); }

/* ---------- motion ---------- */
.motion .reveal { opacity: 0; transform: translateY(18px); transition: opacity .6s ease, transform .6s ease; }
.motion .reveal.is-visible { opacity: 1; transform: none; }

/* ---------- breakpoints ---------- */
/* Small phones: logo, 18+ badge and menu button share ~290px; shrink them so brand words fit whole. */
@media (max-width: 419px) {
  .site-header__inner { gap: .6rem; }
  [data-header="pill"] .site-header__inner { padding-left: .85rem; }
  .brand { gap: .45rem; font-size: calc(1rem * var(--display-scale)); }
  .brand__mark { width: 2.1rem; height: 2.1rem; }
  .age-badge { width: 2.2rem; height: 2.2rem; font-size: .7rem; }
}
@media (min-width: 600px) {
  .stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .notice { grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); align-items: center; }
  .cta-band { grid-template-columns: minmax(0, 1fr) auto; }
  .cta-band .btn { justify-self: end; }
  .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cat-grid[data-layout="mosaic"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 900px) {
  .nav-toggle { display: none; }
  .site-nav, .site-nav.is-open { display: block; position: static; padding: 0; border: 0; background: none; box-shadow: none; }
  .site-nav ul { flex-direction: row; flex-wrap: wrap; }
  /* two rows (logo, menu) kept within ~95 px: tighter padding, a slightly smaller logo, 38 px menu links */
  [data-header="center"] .site-header__inner { flex-wrap: wrap; justify-content: center; row-gap: .15rem; padding-block: .4rem; }
  [data-header="center"] .brand__logo { width: calc(var(--logo-w, 9rem) * .8); height: calc(var(--logo-h, 2.75rem) * .8); }
  [data-header="center"] .site-nav a { min-height: 38px; padding-block: .3rem; }
  [data-header="center"] .brand { margin-inline: auto; }
  [data-header="center"] .age-badge { position: absolute; right: var(--gutter); top: .6rem; }
  [data-header="center"] .site-nav { flex-basis: 100%; }
  [data-header="center"] .site-nav ul { justify-content: center; }
  [data-hero="split"] .hero__grid { grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); }
  [data-hero="stats"] .hero__grid { grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); }
  .app-hero { grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); }
  .auth { grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); }
  .cat-grid[data-layout="mosaic"] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .cat-grid[data-layout="mosaic"] li:first-child { grid-column: span 2; grid-row: span 2; }
  .cat-grid[data-layout="mosaic"] li:first-child .card { justify-content: flex-end; }
  .cat-grid[data-layout="mosaic"] li:first-child h3 { font-size: calc(min(clamp(1.5rem, 1rem + 1.5vw, 2.2rem), var(--fit)) * var(--display-scale)); }
  .cat-grid[data-layout="rows"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  [data-footer="columns"] .footer-grid { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) minmax(0, 1.2fr); }
  [data-footer="compact"] .footer-grid { grid-template-columns: minmax(0, 1fr) auto; }
  [data-header="solid"] .site-nav a { color: var(--on-accent); }
  [data-header="solid"] .site-nav a:hover { background: color-mix(in srgb, var(--on-accent) 16%, transparent); }
  [data-header="solid"] .site-nav a[aria-current="page"] { background: var(--on-accent); color: var(--accent-deep); }
  .article-layout { grid-template-columns: minmax(0, 15rem) minmax(0, 1fr); }
  .section--split > .container { display: grid; grid-template-columns: minmax(0, 17rem) minmax(0, 1fr); gap: clamp(1.5rem, 1rem + 2vw, 3.5rem); align-items: start; }
  .section--split .section-split__aside { position: sticky; top: 6rem; }
  .section--split .section-split__aside h2 { font-size: calc(min(clamp(1.35rem, 1rem + 1.2vw, 1.9rem), var(--fit)) * var(--display-scale)); }
  .toc--sticky { position: sticky; top: 6rem; max-height: calc(100vh - 7rem); overflow: auto; }
}
@media (max-width: 899px) {
  /* mobile_nav=scroll: the menu is a scrollable row under the logo instead of a dropdown behind a button */
  [data-mobile-nav="scroll"] .nav-toggle { display: none; }
  [data-mobile-nav="scroll"] .site-header__inner { flex-wrap: wrap; row-gap: .25rem; min-height: 0; padding-top: .65rem; }
  [data-mobile-nav="scroll"] .site-header__inner > .brand { min-height: 48px; }
  [data-mobile-nav="scroll"] .site-nav {
    display: block; order: 3; flex: 0 0 calc(100% + 2 * var(--gutter)); margin-inline: calc(-1 * var(--gutter));
    padding: 0 var(--gutter) .5rem; overflow-x: auto; scrollbar-width: thin;
  }
  [data-mobile-nav="scroll"] .site-nav ul { flex-direction: row; flex-wrap: nowrap; gap: .25rem; }
  [data-mobile-nav="scroll"] .site-nav a { min-height: 44px; padding: .4rem .8rem; white-space: nowrap; }
  /* the solid header is painted with the accent: the scrollable menu row uses the same light-on-accent links as desktop */
  [data-header="solid"][data-mobile-nav="scroll"] .site-nav a { color: var(--on-accent); }
  [data-header="solid"][data-mobile-nav="scroll"] .site-nav a:hover { background: color-mix(in srgb, var(--on-accent) 16%, transparent); }
  [data-header="solid"][data-mobile-nav="scroll"] .site-nav a[aria-current="page"] { background: var(--on-accent); color: var(--accent-deep); }
}
@media (max-width: 599px) {
  .cta-inline .btn { width: 100%; }
  .cta-inline .cta-mark { width: 100%; }
  .brand__logo { width: var(--logo-w-sm, auto); height: var(--logo-h-sm, 2.1rem); }
  .article .cta-inline .btn { min-height: 52px; font-size: 1rem; }
  .article-toc ol { padding-left: 2rem; }
  /* mobile_table=stack: every row becomes a small card, cells show their column name (data-label) */
  [data-mobile-table="stack"] .table-wrap--article { overflow: visible; }
  [data-mobile-table="stack"] .table-wrap--article .table { min-width: 0; }
  [data-mobile-table="stack"] .table-wrap--article thead {
    position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
  }
  [data-mobile-table="stack"] .table-wrap--article tbody,
  [data-mobile-table="stack"] .table-wrap--article tr,
  [data-mobile-table="stack"] .table-wrap--article tbody th { display: block; }
  [data-mobile-table="stack"] .table-wrap--article tr { padding: .75rem 1rem; border-bottom: 1px solid var(--border); }
  [data-mobile-table="stack"] .table-wrap--article tbody th { padding: 0 0 .35rem; border: 0; font-weight: 700; }
  [data-mobile-table="stack"] .table-wrap--article td {
    display: grid; grid-template-columns: minmax(0, 42%) minmax(0, 1fr); gap: .75rem; padding: .2rem 0; border: 0;
  }
  [data-mobile-table="stack"] .table-wrap--article td::before { content: attr(data-label); color: var(--muted); font-size: .85rem; }
}
@media (min-width: 1200px) {
  .stats--hero { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* ===== theme: ocean ===== */
/* theme: ocean — sea depth: scalloped wave edge, wavy underlines, teal gradient washes, flowing rounded panels */
.hero { isolation: isolate; background: linear-gradient(180deg, var(--bg), color-mix(in srgb, var(--accent) 10%, var(--bg))); }
.hero::after { content: ""; position: absolute; inset: auto 0 0; height: 14px; z-index: -1; pointer-events: none;
  background: radial-gradient(circle at 50% 100%, var(--bg) 0 13px, transparent 14px) 0 100% / 28px 14px repeat-x; }
.section-head h2::after, .article__section > h2::after { content: ""; display: block; width: 6rem; height: 7px; margin-top: .7rem;
  background: radial-gradient(circle at 50% 0, transparent 0 4px, var(--accent) 4.5px 6px, transparent 6.5px) 0 0 / 12px 7px repeat-x; }
.section-head--center h2::after { margin-inline: auto; }
.eyebrow { letter-spacing: .18em; }
.btn, .chip { border-radius: 999px; }
.btn--primary { background: linear-gradient(135deg, var(--accent), var(--accent-deep)); }
.icon { border-radius: 50% 50% 50% 12%; }
.stat, .score-card { border: 1px solid var(--border); background: linear-gradient(160deg, var(--surface), color-mix(in srgb, var(--accent) 6%, var(--surface))); }
.faq details, .table-wrap, .toc, .article-toc { border-radius: var(--radius-lg); }
.toc a:hover { border-radius: 999px; }
.site-footer { border-top: 0; background: linear-gradient(180deg, var(--bg-alt), color-mix(in srgb, var(--accent) 6%, var(--bg-alt))); }
/* muted is fitted to 4.5:1 against the plain background: on the teal washes it leans to the text colour */
.hero .hero__lead, .hero .cta-mark, .site-footer p, .site-footer .footer-title { color: color-mix(in srgb, var(--muted) 55%, var(--text)); }

/* ===== layout type: reference-index ===== */
/* Reference Index: a handbook built like a book index. The contents are index lines (text, a dotted leader and the
   number at the right edge), every H2 repeats that pattern — heading, leader, section number — and under it the entry
   sits in two columns (≥ 900 px): a small plate picture that stays in view on the left, the text, tables and
   lists in the wide column on the right. Lists are dotted index rows, H3 blocks are ruled entries, the FAQ is an index
   of questions and the footer links get the same leader and number. Phones stack everything in one column. */
[data-archetype="reference-index"] main { counter-reset: ri; }
[data-archetype="reference-index"] .hero--article { border-bottom: 1px solid var(--text); }
[data-archetype="reference-index"] .hero--article .eyebrow { letter-spacing: .18em; text-transform: uppercase; color: var(--accent-ink); }
[data-archetype="reference-index"] .toc { padding: 1.25rem 1.5rem; border: 1px solid var(--text); border-radius: 0; background: var(--surface); }
[data-archetype="reference-index"] .toc__title { padding-bottom: .5rem; border-bottom: 3px double var(--text); font-size: .85rem; letter-spacing: .16em; text-transform: uppercase; }
[data-archetype="reference-index"] .toc ol { gap: 0; }
[data-archetype="reference-index"] .toc a, [data-archetype="reference-index"] .footer-nav a { align-items: flex-end; gap: .5rem; padding: .4rem 0; border-radius: 0; }
[data-archetype="reference-index"] .toc a::before { order: 3; color: var(--accent-ink); font-variant-numeric: tabular-nums; }
[data-archetype="reference-index"] .toc a::after, [data-archetype="reference-index"] .footer-nav a::after {
  content: ""; order: 2; flex: 1 1 1rem; min-width: 1rem; margin-bottom: .4em; border-bottom: 2px dotted var(--border-strong);
}
[data-archetype="reference-index"] .toc a:hover { background: transparent; color: var(--accent-ink); }
[data-archetype="reference-index"] .toc--inline ol { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr)); gap: 0 2.5rem; }
[data-archetype="reference-index"] .toc--inline li { border: 0; }
[data-archetype="reference-index"] .toc--inline a { padding: .4rem 0; border: 0; border-radius: 0; }
[data-archetype="reference-index"] .section { counter-increment: ri; padding-block: clamp(1.5rem, 1rem + 2vw, 2.75rem); border-top: 1px solid var(--border-strong); }
[data-archetype="reference-index"] .section-head { max-width: none; margin-bottom: 1.25rem; }
[data-archetype="reference-index"] .section-head h2 { display: flex; align-items: baseline; gap: .75rem; margin: 0; }
[data-archetype="reference-index"] .section-head h2::after { content: ""; flex: 1 1 1.5rem; min-width: 1.5rem; border-bottom: 3px dotted var(--border-strong); }
[data-archetype="reference-index"] .section-head h2::before {
  content: counter(ri, decimal-leading-zero); order: 2; flex: none; color: var(--accent-ink); font-family: var(--font-body); font-size: .6em; font-weight: 800; letter-spacing: .08em; font-variant-numeric: tabular-nums;
}
[data-archetype="reference-index"] .section-head h2::after { order: 1; }
[data-archetype="reference-index"] .article-figure img { aspect-ratio: 4 / 3; border-radius: 0; border: 1px solid var(--text); padding: .35rem; background: var(--surface); }
[data-archetype="reference-index"] .article-list { padding: 0; list-style: none; }
[data-archetype="reference-index"] .article-list li { margin: 0; padding: .45rem 0 .45rem 1.3rem; border-bottom: 1px dotted var(--border-strong); position: relative; }
[data-archetype="reference-index"] .article-list li::before {
  content: ""; position: absolute; left: .2rem; top: 1.05em; width: .45rem; height: .45rem; background: var(--accent);
}
[data-archetype="reference-index"] .table-wrap--article { border: 0; border-block: 2px solid var(--text); border-radius: 0; background: transparent; box-shadow: none; }
[data-archetype="reference-index"] .table-wrap--article :is(th, td) { border-bottom: 1px dotted var(--border-strong); }
[data-archetype="reference-index"] .table-wrap--article thead th { background: transparent; border-bottom: 1px solid var(--text); font-size: .76rem; letter-spacing: .12em; }
[data-archetype="reference-index"] .table-wrap--article tbody th { font-weight: 700; }
[data-archetype="reference-index"] .item-grid .card { padding: .85rem 0 0; border: 0; border-top: 2px solid var(--text); border-radius: 0; background: transparent; box-shadow: none; transform: none; }
[data-archetype="reference-index"] .item-grid .card::before { content: none; }
[data-archetype="reference-index"] .item-grid .card h3 { font-size: .9rem; letter-spacing: .08em; text-transform: uppercase; }
[data-archetype="reference-index"] .callout { border: 0; border-block: 1px solid var(--text); border-radius: 0; background: transparent; }
[data-archetype="reference-index"] .faq { gap: 0; max-width: none; }
[data-archetype="reference-index"] .faq details { border: 0; border-bottom: 1px dotted var(--border-strong); border-radius: 0; background: transparent; }
[data-archetype="reference-index"] .faq summary { padding-inline: 0; }
[data-archetype="reference-index"] .faq details > div { padding-inline: 0; }
[data-archetype="reference-index"] .site-footer { border-top: 3px double var(--text); background: var(--bg); }
[data-archetype="reference-index"] .footer-nav { counter-reset: rf; }
[data-archetype="reference-index"] .footer-nav li { counter-increment: rf; }
[data-archetype="reference-index"] .footer-nav a::before { content: counter(rf, decimal-leading-zero); order: 3; color: var(--accent-ink); font-weight: 800; font-variant-numeric: tabular-nums; }
@media (max-width: 479px) {
  [data-archetype="reference-index"] .section-head h2 { display: block; }
  [data-archetype="reference-index"] .section-head h2::after { display: none; }
  [data-archetype="reference-index"] .section-head h2::before { display: block; margin-bottom: .35em; }
}
@media (min-width: 900px) {
  [data-archetype="reference-index"] .hero--article:not(.hero--solo) .hero__grid { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); }
  [data-archetype="reference-index"] .section > .container.reveal {
    display: grid; grid-template-columns: clamp(10rem, 22%, 15rem) minmax(0, 1fr); column-gap: clamp(1.5rem, 1rem + 2vw, 3rem); align-items: start;
  }
  [data-archetype="reference-index"] .section > .container.reveal > * { grid-column: 2; max-width: none; margin-inline: 0; }
  [data-archetype="reference-index"] .section > .container.reveal > :is(.section-head, .prose, .callout, .accent-paragraph, .article-list, .pull-quote, .table-wrap, .item-grid, .article-figure, .faq, .cta-inline) { max-width: none; margin-inline: 0; }
  [data-archetype="reference-index"] .section > .container.reveal > .section-head { grid-column: 1 / -1; }
  [data-archetype="reference-index"] .section > .container.reveal > .cta-inline { justify-content: flex-start; }
  [data-archetype="reference-index"] .section > .container.reveal > .article-figure { grid-column: 1; grid-row: 2 / span 30; position: sticky; top: 6.5rem; margin: 0; }
  [data-archetype="reference-index"] .section > .container.reveal > .prose { max-width: 48rem; }
  [data-archetype="reference-index"] .section > .container.reveal > .cta-inline--head { grid-row: 2; }
  [data-archetype="reference-index"] .section > .container.reveal:not(:has(> .article-figure)) { grid-template-columns: minmax(0, 1fr); }
  [data-archetype="reference-index"] .section > .container.reveal:not(:has(> .article-figure)) > * { grid-column: 1; }
}

/* ===== centering (every composition; loaded after the theme and the layout type) =====
   One axis per content area: the section container, the text column of sidebar layouts, the main column of split
   layouts, the Article Layout column. The reading column — heading block, text, callouts, lists, quotes — is centred
   on it at a comfortable width (--read-w); images, CTA buttons, tables, H3 blocks and the FAQ are centred on the same
   axis. Long paragraphs stay left-aligned inside the column (readability); the H1 block (heading, CTA, image, lead)
   is centred. Layout types that are multi-column by design keep their structure and centre it as a whole: bento
   tiles, the illustration beside the text (alternating), two text columns, newspaper columns, dashboard panels. */
body { --read-w: 42rem; --wide-w: 58rem; }

/* ---------- the reading column of a section ---------- */
body:not([data-archetype="bento-editorial"]) :is(.section > .container, .section > .reveal, .section-split__main)
  > :is(.section-head, .prose, .callout, .accent-paragraph, .article-list, .pull-quote) {
  max-width: min(100%, var(--read-w)); margin-inline: auto;
}
body:not([data-archetype="bento-editorial"]) :is(.section > .container, .section > .reveal, .section-split__main)
  > :is(.table-wrap, .item-grid) {
  max-width: min(100%, var(--wide-w)); margin-inline: auto;
}
body:not([data-archetype="bento-editorial"]) :is(.section > .container, .section > .reveal, .section-split__main)
  > :is(.article-figure, .faq) { margin-inline: auto; }

/* ---------- CTA: always centred on the axis of the column it follows (H1, H2) ---------- */
.cta-inline { justify-content: center; text-align: center; }
body:not([data-archetype="bento-editorial"]) :is(.section > .container, .section > .reveal, .section-split__main) > .cta-inline {
  max-width: min(100%, var(--read-w)); margin-inline: auto;
}
.cta-inline .cta-mark { text-align: center; }

/* ---------- the H1 block: hero, page head without a hero, Article Layout head ---------- */
.hero--article .hero__text, .page-head, .article__head { text-align: center; }
/* no aside beside it: the column itself is centred (explicit width — a container-type box cannot shrink-to-fit) */
.hero--article.hero--solo .hero__text { width: min(100%, 52rem); margin-inline: auto; }
.hero--article :is(.hero__title, .hero__lead), :is(.page-head__title, .page-head .hero__lead) { margin-inline: auto; }
.hero--article .hero__actions, .page-head .hero__actions, .page-head:not(.page-head--center) .hero__actions { justify-content: center; }
/* the CTA itself stands on the axis: a secondary button («Содержание») goes under it, not beside it */
.hero--article .hero__actions, .page-head .hero__actions { flex-direction: column; align-items: center; gap: .6rem; }
@media (max-width: 599px) {
  .hero--article .hero__actions, .page-head .hero__actions { align-items: stretch; }  /* full-width buttons on phones */
}
.hero--article .article-figure--lead, .page-head .article-figure--lead, .article__head .article-figure--lead { margin-inline: auto; }
.hero--article .toc { text-align: left; }

/* ---------- Article Layout: the column is centred by .article.container; its blocks share the axis ---------- */
.article .cta-inline { justify-content: center; }
.article .article-figure { margin-inline: auto; }
[data-archetype="academic-report"] .article__lead { text-align: left; }  /* the boxed abstract reads as a paragraph */

/* ---------- split layouts: the heading column is centred in itself ---------- */
.section-split__aside { text-align: center; }
.section-split__aside .section-head { margin-inline: auto; }

/* ---------- contents strip under the first screen ---------- */
.toc--inline .toc__title { text-align: center; }
.toc--inline ol { justify-content: center; }

/* ---------- layout types with their own column structure ---------- */
@media (min-width: 900px) {
  /* the illustration floats beside the text: the unit (image + text) is centred, the text fills it */
  [data-archetype="alternating-sections"] { --read-w: 100%; }
  [data-archetype="alternating-sections"] .section > .container { width: min(100% - 2 * var(--gutter), var(--wide-w)); }
  /* the Timeline rail sits in the left padding: the same padding on the right keeps the column on the axis */
  [data-archetype="timeline-article"] .article__section:not(.article__faq) { padding-right: 2.25rem; }
}
@media (min-width: 1000px) {
  /* two text columns: a wider reading block, still centred */
  [data-archetype="two-column-reading"] { --read-w: 60rem; }
}

/* ===== comments: quotes ===== */
/* ===== generated comments ===== */
/* a full row below the text in every layout type: across a grid of modules (the id outweighs a layout type's
   nth-of-type spans), multi-column text and floated rails */
#comments-section { grid-column: 1 / -1; column-span: all; clear: both; }
/* columns follow the block's own width (a narrow column of a layout type gets one column), not the screen's */
.comments { min-width: 0; max-width: 100%; clear: both; column-span: all; container: comments / inline-size; }
.comments__head { margin-bottom: 1.25rem; max-width: 52rem; }
/* sized like the H2 of a text section (not the larger generic h2) */
.comments__title { margin: 0 0 .3rem; font-size: max(1.15rem, calc(min(clamp(1.4rem, 1.15rem + 1.1vw, 2rem), var(--fit)) * var(--display-scale))); }
.comments__note { margin: 0; color: var(--muted); font-size: .8rem; letter-spacing: .01em; }
.comments p { margin: 0; }
.comments ol, .comments ul { list-style: none; margin: 0; padding: 0; }
.comments .c-name { font-weight: 600; overflow-wrap: anywhere; }
.comments .c-text { overflow-wrap: anywhere; }

.comments--quotes .comments__grid { display: grid; gap: 1rem; grid-template-columns: minmax(0, 1fr); }
.comments--quotes .c-card { position: relative; margin: 0; min-width: 0; padding: 1.1rem 1.25rem 1rem; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow); }
.comments--quotes .c-card::before { content: "\201C"; position: absolute; top: .1rem; left: .9rem; font: 700 3rem/1 var(--font-display); color: var(--accent); opacity: .55; }
.comments--quotes .c-quote { margin: 0; padding: 1.4rem 0 0; border: 0; background: none; }
.comments--quotes .c-name { margin-top: .75rem; color: var(--muted); font-size: .9rem; font-weight: 500; }
.comments--quotes .c-name::before { content: "\2014\00a0"; }
@container comments (min-width: 34rem) { .comments--quotes .comments__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@container comments (min-width: 54rem) { .comments--quotes .comments__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
