:root {
  --background: #f7f5ef;
  --surface: #ffffff;
  --text: #161616;
  --muted: #66655f;
  --line: #d8d5cc;
  --green: #176b52;
  --green-dark: #0d4535;
  --green-soft: #e8f0eb;
  --orange: #d96e32;
  --footer: #111815;
  --display: Georgia, "Times New Roman", serif;
  --body: Georgia, "Times New Roman", serif;
  --ui: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  --container: 1280px;
  --reading: 760px;
  --gutter: clamp(1rem, 4vw, 3rem);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--background); color: var(--text); font-family: var(--ui); font-size: 16px; line-height: 1.62; }
img, svg { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration-color: color-mix(in srgb, currentColor 45%, transparent); text-decoration-thickness: 1px; text-underline-offset: .22em; }
a:hover { color: var(--green); text-decoration-color: currentColor; }
button, input, select, textarea { font: inherit; color: inherit; }
button, select { cursor: pointer; }
h1, h2, h3, p { overflow-wrap: anywhere; }
h1, h2, h3 { margin: 0; }
h1, h2, h3 { overflow-wrap: normal; word-break: normal; }
h1, h2 { font-family: var(--display); font-weight: 500; letter-spacing: -.035em; line-height: .98; }
h3 { font-family: var(--display); font-weight: 500; line-height: 1.08; }
p { margin: 0 0 1.2em; }
ul, ol { margin-top: 0; }
:focus-visible { outline: 3px solid var(--orange); outline-offset: 3px; }
[hidden] { display: none; }
.shell { width: min(var(--container), calc(100% - (var(--gutter) * 2))); margin-inline: auto; min-width: 0; }
.narrow { width: min(var(--reading), calc(100% - (var(--gutter) * 2))); margin-inline: auto; min-width: 0; }
.skip-link { position: fixed; z-index: 1000; inset: .75rem auto auto .75rem; transform: translateY(-180%); padding: .65rem 1rem; background: var(--surface); border: 1px solid var(--green); font-family: var(--ui); }
.skip-link:focus { transform: none; }
.sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.rubric { margin: 0 0 .8rem; color: var(--orange); font-family: var(--ui); font-size: .72rem; font-weight: 750; letter-spacing: .12em; line-height: 1.25; text-transform: uppercase; }
.primary-link, .secondary-link, .text-link { display: inline-flex; align-items: center; gap: .35rem; font-family: var(--ui); font-size: .78rem; font-weight: 750; letter-spacing: .055em; text-transform: uppercase; }
.primary-link { padding: .78rem 1.05rem; background: var(--green); color: #fff; text-decoration: none; border: 1px solid var(--green); }
.primary-link:hover { background: var(--green-dark); color: #fff; }
.secondary-link { padding: .75rem 0; color: var(--green-dark); }
.button-row, .front-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .8rem 1.2rem; margin-top: 1.6rem; }
.button { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: .7rem 1rem; border: 1px solid var(--green); background: var(--green); color: #fff; font-family: var(--ui); font-size: .76rem; font-weight: 750; letter-spacing: .055em; text-decoration: none; text-transform: uppercase; }
.button:hover { background: var(--green-dark); color: #fff; }
.button.secondary { background: transparent; color: var(--green-dark); }
.section-title-row { display: flex; align-items: end; justify-content: space-between; gap: 1.5rem; margin-bottom: 2rem; padding-bottom: 1rem; border-bottom: 1px solid var(--line); }
.section-title-row h2 { font-size: clamp(2.25rem, 7vw, 4.6rem); }
.section-title-row > a { flex: 0 0 auto; font-size: .78rem; font-weight: 750; text-transform: uppercase; }

/* Masthead */
.publication-header { position: relative; z-index: 20; background: var(--background); }
.masthead-row { min-height: 76px; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.publication-brand { min-width: 0; display: block; text-decoration: none; }
.publication-name { display: block; font-family: var(--display); font-size: clamp(1.55rem, 8vw, 2.25rem); letter-spacing: -.045em; line-height: .88; }
.publication-tagline { display: block; margin-top: .4rem; color: var(--muted); font-size: .58rem; font-weight: 700; letter-spacing: .1em; line-height: 1; text-transform: uppercase; }
.header-actions { flex: 0 0 auto; display: flex; align-items: center; gap: .25rem; }
.header-search-button, .menu-toggle { min-height: 42px; display: inline-flex; align-items: center; gap: .45rem; padding: .45rem .55rem; border: 0; background: transparent; font-size: .7rem; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.header-search-button svg, .menu-toggle svg { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 1.7; }
.navigation-rule { border-block: 1px solid var(--line); }
.navigation-row { min-width: 0; }
.primary-nav { min-width: 0; display: none; padding: .4rem 0 1rem; }
.primary-nav.open { display: grid; }
.primary-nav a { padding: .85rem 0; border-bottom: 1px solid var(--line); font-size: .8rem; font-weight: 700; text-decoration: none; }
.primary-nav a[aria-current="page"] { color: var(--green); }
.edition-label { display: none; }
.header-search-panel { padding: 1rem 0 1.2rem; border-bottom: 1px solid var(--line); background: var(--surface); }
.header-search-form label { display: block; margin-bottom: .4rem; font-size: .72rem; font-weight: 700; text-transform: uppercase; }
.header-search-form > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; }
.header-search-form input { min-width: 0; min-height: 46px; padding: .65rem .8rem; border: 1px solid var(--line); background: var(--surface); }
.header-search-form button { min-height: 46px; padding: .65rem 1rem; border: 1px solid var(--green); background: var(--green); color: #fff; font-size: .75rem; font-weight: 750; text-transform: uppercase; }
.breadcrumbs { width: min(var(--container), calc(100% - (var(--gutter) * 2))); margin: .8rem auto 0; font-family: var(--ui); font-size: .64rem; font-weight: 700; letter-spacing: .045em; text-transform: uppercase; }
.breadcrumbs ol { display: flex; flex-wrap: wrap; gap: .25rem .5rem; margin: 0; padding: 0; list-style: none; }
.breadcrumbs li { min-width: 0; overflow-wrap: anywhere; }
.breadcrumbs li + li::before { content: "/"; margin-right: .5rem; color: var(--muted); }

/* Home */
.front-hero { padding: clamp(1.75rem, 4vw, 3rem) 0; border-bottom: 1px solid var(--line); }
.front-hero-layout { display: grid; gap: 3rem; }
.front-introduction, .front-feature { min-width: 0; }
.front-introduction h1 { max-width: 22ch; font-size: clamp(2.2rem, 4.5vw, 3.6rem); line-height: 1.05; }
.front-deck { max-width: 39rem; margin-top: 1rem; color: var(--muted); font-family: var(--body); font-size: clamp(1rem, 2vw, 1.12rem); line-height: 1.48; }
.front-introduction .front-actions { margin-top: 1rem; font-size: .9rem; }
.front-feature { padding-top: 1.5rem; border-top: 3px solid var(--green); }
.front-feature-cover { display: block; margin-bottom: 1.4rem; background: var(--surface); }
.front-feature-cover img { width: 100%; aspect-ratio: 3 / 2; object-fit: contain; }
.front-feature h2 { font-size: clamp(2.2rem, 8vw, 3.8rem); }
.front-feature h2 a { text-decoration: none; }
.front-feature > p:not(.rubric):not(.feature-meta) { margin-top: 1rem; font-family: var(--body); font-size: 1.05rem; }
.feature-meta { display: flex; flex-wrap: wrap; gap: .5rem 1rem; color: var(--muted); font-size: .72rem; font-weight: 700; text-transform: uppercase; }
.feature-links { margin-top: 1.5rem; border-top: 1px solid var(--line); }
.feature-links a { display: grid; grid-template-columns: 7rem minmax(0, 1fr); gap: .8rem; padding: .8rem 0; border-bottom: 1px solid var(--line); text-decoration: none; }
.feature-links span { color: var(--muted); font-size: .66rem; text-transform: uppercase; }
.feature-links strong { min-width: 0; }
.front-section { padding: clamp(3.8rem, 9vw, 7rem) 0; border-bottom: 1px solid var(--line); }
.latest-section { background: var(--surface); }
.review-stream, .related-review-list, .review-grid { border-top: 1px solid var(--text); }
.review-entry { min-width: 0; display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 1rem; padding: 1.25rem 0; border-bottom: 1px solid var(--line); }
.entry-cover { min-width: 0; align-self: start; background: var(--background); }
.entry-cover img { width: 100%; aspect-ratio: 3 / 2; object-fit: contain; }
.entry-body { min-width: 0; }
.entry-category { margin: 0 0 .4rem; color: var(--orange); font-size: .62rem; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.entry-body h3 { font-size: clamp(1.4rem, 5vw, 2.05rem); }
.entry-body h3, .entry-body h3 a { overflow-wrap: anywhere; }
.entry-body h3 a { text-decoration: none; }
.entry-excerpt { margin: .55rem 0 0; color: var(--muted); font-family: var(--body); font-size: .92rem; line-height: 1.48; }
.entry-verdict { margin: .7rem 0 0; font-family: var(--body); font-size: .84rem; line-height: 1.45; }
.entry-meta { min-width: 0; grid-column: 2; display: flex; flex-wrap: wrap; gap: .35rem .8rem; align-items: center; color: var(--muted); font-size: .66rem; font-weight: 650; text-transform: uppercase; }
.entry-meta a { margin-left: auto; color: var(--green-dark); font-weight: 750; }
.directory-section { background: var(--background); }
.directory-layout { display: grid; gap: 2.5rem; }
.directory-layout > header h2 { font-size: clamp(2.6rem, 9vw, 5rem); }
.directory-layout > header p:last-child { max-width: 32rem; margin-top: 1rem; color: var(--muted); font-family: var(--body); }
.alphabetical-directory { min-width: 0; display: grid; gap: 1.8rem; }
.alphabetical-directory section { min-width: 0; display: grid; grid-template-columns: 2rem minmax(0, 1fr); gap: .8rem; padding-top: .75rem; border-top: 1px solid var(--line); }
.alphabetical-directory h3 { color: var(--green); font-family: var(--ui); font-size: .85rem; font-weight: 800; }
.alphabetical-directory ul { min-width: 0; margin: 0; padding: 0; list-style: none; }
.alphabetical-directory li { min-width: 0; display: flex; justify-content: space-between; gap: 1rem; padding: .3rem 0; }
.alphabetical-directory li a { min-width: 0; font-family: var(--display); font-size: 1.05rem; }
.alphabetical-directory li span { flex: 0 0 auto; color: var(--muted); font-size: .62rem; text-transform: uppercase; }
.guides-front { background: var(--surface); }
.guides-front-layout { display: grid; gap: 2.5rem; }
.featured-guide { min-width: 0; padding-bottom: 2rem; border-bottom: 1px solid var(--line); }
.featured-guide h3 { max-width: 18ch; font-size: clamp(2.4rem, 8vw, 4.6rem); }
.featured-guide h3 a, .guide-briefs h3 a { text-decoration: none; }
.featured-guide > p:not(.rubric):not(.guide-meta) { max-width: 42rem; margin-top: 1.3rem; font-family: var(--body); font-size: 1.08rem; }
.guide-meta { color: var(--muted); font-size: .7rem; text-transform: uppercase; }
.guide-briefs { display: grid; gap: 1.8rem; }
.guide-briefs article { padding-bottom: 1.5rem; border-bottom: 1px solid var(--line); }
.guide-briefs h3 { font-size: 1.75rem; }
.guide-briefs article > p:not(.rubric) { margin-top: .8rem; color: var(--muted); font-family: var(--body); }
.guide-briefs a:last-child { font-size: .75rem; font-weight: 750; text-transform: uppercase; }
.comparison-invite { background: var(--green-dark); color: #fff; }
.comparison-invite-layout { display: grid; gap: 2rem; }
.comparison-invite h2 { max-width: 14ch; font-size: clamp(2.7rem, 10vw, 5.6rem); }
.comparison-invite .rubric { color: #f1a77c; }
.comparison-invite-layout > div:last-child { max-width: 38rem; }
.comparison-invite .primary-link { background: transparent; border-color: #fff; }

/* Shared page headings */
.archive-heading, .standard-heading, .search-heading, .page-hero, .article-heading { padding: clamp(3rem, 8vw, 6.5rem) 0; border-bottom: 1px solid var(--line); }
.archive-heading-layout, .standard-heading-layout { display: grid; gap: 1.5rem; }
.archive-heading h1, .standard-heading h1, .search-heading h1, .page-hero h1 { max-width: 18ch; font-size: clamp(3rem, 11vw, 6.8rem); }
.archive-heading-layout > p, .standard-heading-layout > p, .page-hero .lede { max-width: 38rem; margin: 0; color: var(--muted); font-family: var(--body); font-size: clamp(1.06rem, 2.6vw, 1.28rem); }

/* Reviews catalogue */
.catalogue-section { padding: 2rem 0 clamp(4rem, 8vw, 7rem); }
.filter-disclosure { border-block: 1px solid var(--line); }
.filter-disclosure summary { padding: .9rem 0; color: var(--green-dark); font-size: .76rem; font-weight: 750; letter-spacing: .055em; text-transform: uppercase; }
.catalogue-filters { display: grid; gap: .9rem; padding: 0 0 1.2rem; }
.catalogue-filters label { min-width: 0; font-size: .68rem; font-weight: 750; text-transform: uppercase; }
.catalogue-filters input, .catalogue-filters select { width: 100%; min-width: 0; min-height: 44px; margin-top: .3rem; padding: .55rem .65rem; border: 1px solid var(--line); border-radius: 0; background: var(--surface); }
.catalogue-filters button { min-height: 44px; padding: .55rem .9rem; border: 1px solid var(--green); background: var(--green); color: #fff; font-size: .72rem; font-weight: 750; text-transform: uppercase; }
.catalogue-filters > a { align-self: center; font-size: .7rem; font-weight: 750; text-transform: uppercase; }
.catalogue-status { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .7rem 1rem; align-items: center; padding: 1rem 0; border-bottom: 1px solid var(--text); }
.catalogue-status p { margin: 0; font-size: .72rem; text-transform: uppercase; }
.catalogue-status nav { display: flex; flex-wrap: wrap; gap: .65rem; }
.catalogue-status nav a { font-size: .68rem; font-weight: 750; text-decoration: none; }
.catalogue-layout { min-width: 0; display: grid; gap: 3rem; }
.catalogue-main { min-width: 0; }
.letter-anchor { display: block; padding-top: 1rem; color: var(--green); font-family: var(--display); font-size: 1.1rem; }
.catalogue-sidebar { min-width: 0; display: grid; gap: 2.2rem; align-content: start; }
.catalogue-sidebar section { padding-top: 1rem; border-top: 2px solid var(--green); }
.catalogue-sidebar h2 { margin-bottom: .8rem; font-family: var(--ui); font-size: .78rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.catalogue-sidebar ul { margin: 0; padding: 0; list-style: none; }
.catalogue-sidebar li { padding: .5rem 0; border-bottom: 1px solid var(--line); font-size: .8rem; }
.catalogue-sidebar article { padding: .65rem 0; border-bottom: 1px solid var(--line); }
.catalogue-sidebar article a { display: block; font-family: var(--display); line-height: 1.25; }
.catalogue-sidebar article span { color: var(--muted); font-size: .65rem; text-transform: uppercase; }
.empty-state { padding: 2.5rem 0; }
.empty-state:not(.show) { visibility: hidden; height: 0; padding: 0; overflow: clip; }
.empty-state h2 { font-size: 2rem; }

/* Review article */
.review-heading { padding: clamp(2.5rem, 7vw, 5.5rem) 0 clamp(3rem, 8vw, 6rem); border-bottom: 1px solid var(--line); }
.review-heading-layout { min-width: 0; display: grid; gap: 2.5rem; }
.review-heading-copy { min-width: 0; }
.review-heading h1 { max-width: 15ch; font-size: clamp(3.2rem, 12vw, 7rem); }
.review-heading h1 { overflow-wrap: anywhere; }
.review-deck { max-width: 45rem; margin-top: 1.4rem; color: var(--muted); font-family: var(--body); font-size: clamp(1.12rem, 3vw, 1.4rem); line-height: 1.48; }
.review-byline { margin-top: 1.3rem; color: var(--muted); font-size: .68rem; font-weight: 650; letter-spacing: .035em; text-transform: uppercase; }
.review-lead-verdict { max-width: 48rem; margin-top: 2rem; padding-top: 1rem; border-top: 1px solid var(--line); font-family: var(--body); font-size: 1rem; }
.review-cover { min-width: 0; margin: 0; align-self: start; }
.review-cover img { width: 100%; aspect-ratio: 3 / 2; object-fit: contain; background: var(--surface); }
.review-cover figcaption { padding: .55rem 0; border-bottom: 1px solid var(--line); color: var(--green-dark); font-size: .68rem; font-weight: 750; text-align: right; text-transform: uppercase; }
.review-layout { min-width: 0; display: grid; gap: 2rem; padding-block: 2.5rem clamp(4rem, 8vw, 7rem); }
.review-left-rail, .review-right-rail, .review-article { min-width: 0; }
.review-right-rail { order: 1; }
.review-left-rail { order: 2; }
.review-article { order: 3; font-family: var(--body); font-size: 1.04rem; line-height: 1.72; }
.review-toc { border-block: 1px solid var(--line); }
.review-toc summary { padding: .8rem 0; color: var(--green-dark); font-family: var(--ui); font-size: .76rem; font-weight: 750; text-transform: uppercase; }
.review-toc nav { display: grid; padding-bottom: .8rem; }
.review-toc a { padding: .42rem 0; border-bottom: 1px solid var(--line); font-family: var(--ui); font-size: .72rem; line-height: 1.35; text-decoration: none; }
.platform-snapshot { padding-top: 1rem; border-top: 3px solid var(--green); }
.platform-snapshot h2 { font-size: 1.75rem; }
.platform-snapshot h2 { overflow-wrap: anywhere; }
.platform-snapshot dl { margin: 1rem 0; }
.platform-snapshot dl div { padding: .65rem 0; border-bottom: 1px solid var(--line); }
.platform-snapshot dt { color: var(--muted); font-size: .62rem; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.platform-snapshot dd { margin: .2rem 0 0; font-family: var(--body); font-size: .86rem; line-height: 1.45; }
.platform-snapshot dd { overflow-wrap: anywhere; }
.platform-snapshot > a { font-size: .7rem; font-weight: 750; text-transform: uppercase; }
.review-article > section { padding: 0 0 clamp(2.6rem, 7vw, 4.5rem); margin-bottom: clamp(2.6rem, 7vw, 4.5rem); border-bottom: 1px solid var(--line); scroll-margin-top: 1rem; }
.review-article h2 { max-width: 18ch; margin-bottom: 1.2rem; font-size: clamp(2.2rem, 8vw, 4rem); }
.review-article h2 { overflow-wrap: anywhere; }
.review-article p { max-width: 42rem; }
.article-lead { font-size: clamp(1.18rem, 3vw, 1.42rem); line-height: 1.52; }
.review-highlights { padding-top: 1.1rem; border-top: 3px solid var(--green); }
.review-highlights ul, .assessment-layout ul, .feature-list { margin: 0; padding: 0; list-style: none; }
.review-highlights li, .assessment-layout li { position: relative; padding: .72rem 0 .72rem 1.25rem; border-top: 1px solid var(--line); }
.review-highlights li::before, .assessment-layout li::before { content: ""; position: absolute; left: 0; top: 1.25rem; width: 5px; height: 5px; border-radius: 50%; background: var(--green); }
.overview-list { margin: 2rem 0 0; }
.overview-list div { padding: .85rem 0; border-top: 1px solid var(--line); }
.overview-list dt { color: var(--muted); font-family: var(--ui); font-size: .66rem; font-weight: 750; text-transform: uppercase; }
.overview-list dd { margin: .25rem 0 0; }
.feature-list { display: flex; flex-wrap: wrap; gap: .5rem .7rem; margin-bottom: 1.3rem; }
.feature-list li { padding: .4rem .65rem; border: 1px solid var(--line); background: var(--surface); font-family: var(--ui); font-size: .72rem; }
.assessment-layout { display: grid; gap: 2.5rem; }
.assessment-layout > div { min-width: 0; }
.assessment-layout h2 { font-size: clamp(1.9rem, 6vw, 2.6rem); }
.final-verdict { padding-top: 1.2rem; border-top: 3px solid var(--green); }
.final-verdict > div { display: grid; gap: 1.5rem; }
.verdict-score { color: var(--green-dark); font-family: var(--display); font-size: clamp(3.2rem, 12vw, 5.5rem); line-height: .9; }
.verdict-score span { font-size: 1rem; }
.final-verdict small { display: block; max-width: 38rem; color: var(--muted); font-family: var(--ui); font-size: .72rem; line-height: 1.45; }
.faq-list details { border-top: 1px solid var(--line); }
.faq-list details:last-child { border-bottom: 1px solid var(--line); }
.faq-list summary { padding: .9rem 0; font-family: var(--ui); font-weight: 700; line-height: 1.35; }
.faq-list details p { padding-bottom: .8rem; }
.source-list { margin: 0; padding: 0; list-style: none; }
.source-list li { min-width: 0; padding: 1rem 0; border-top: 1px solid var(--line); }
.source-list li div, .source-list code, .source-list a { min-width: 0; overflow-wrap: anywhere; }
.source-list li p { margin: .25rem 0 0; color: var(--muted); font-size: .83rem; }
.source-list code { display: block; margin-top: .5rem; font-size: .7rem; }
.source-list li > a { display: inline-block; margin-top: .5rem; font-family: var(--ui); font-size: .7rem; font-weight: 750; text-transform: uppercase; }
.article-disclaimer { color: var(--muted); font-family: var(--ui); font-size: .72rem; line-height: 1.5; }
.related-reviews { padding: clamp(3.5rem, 8vw, 6rem) 0; border-top: 1px solid var(--line); background: var(--surface); }

/* Comparison */
.comparison-section { padding: clamp(3rem, 8vw, 6rem) 0; }
.comparison-note { display: grid; gap: .8rem; margin-bottom: 1.5rem; }
.comparison-note h2 { font-size: clamp(2.2rem, 7vw, 3.8rem); }
.comparison-note p { max-width: 40rem; color: var(--muted); font-family: var(--body); }
.responsive-table { max-width: 100%; }
.comparison-table { width: 100%; border-collapse: collapse; }
.comparison-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.comparison-table tbody, .comparison-table tr, .comparison-table td { display: block; min-width: 0; }
.comparison-table tr { padding: 1rem 0; border-top: 2px solid var(--text); }
.comparison-table td { display: grid; grid-template-columns: minmax(6.5rem, 34%) minmax(0, 1fr); gap: .8rem; padding: .5rem 0; border-bottom: 1px solid var(--line); overflow-wrap: anywhere; font-family: var(--body); font-size: .85rem; line-height: 1.45; }
.comparison-table td::before { content: attr(data-label); color: var(--muted); font-family: var(--ui); font-size: .62rem; font-weight: 750; letter-spacing: .04em; text-transform: uppercase; }
.comparison-table td:first-child { font-family: var(--ui); font-size: 1rem; font-weight: 750; }
.comparison-explainer { padding: clamp(3.5rem, 8vw, 6rem) 0; background: var(--green-soft); border-block: 1px solid var(--line); }
.comparison-explainer-layout { display: grid; gap: 2rem; }
.comparison-explainer h2 { max-width: 15ch; font-size: clamp(2.5rem, 8vw, 4.6rem); }
.comparison-explainer-layout > div:last-child { max-width: 39rem; }

/* Guides and search */
.guide-library { padding: clamp(3.5rem, 8vw, 6.5rem) 0; }
.guide-library-layout { display: grid; gap: 3rem; }
.guide-lead { min-width: 0; padding-top: 1rem; border-top: 3px solid var(--green); }
.guide-lead h2 { max-width: 17ch; font-size: clamp(2.7rem, 9vw, 5.5rem); }
.guide-lead h2 a, .guide-list h2 a { text-decoration: none; }
.guide-lead > p:not(.rubric) { max-width: 42rem; margin-top: 1.2rem; font-family: var(--body); }
.guide-list { min-width: 0; border-top: 1px solid var(--text); }
.guide-list article { padding: 1.5rem 0; border-bottom: 1px solid var(--line); }
.guide-list h2 { font-size: clamp(1.7rem, 5vw, 2.4rem); }
.guide-list article > p:not(.rubric) { margin-top: .7rem; color: var(--muted); font-family: var(--body); }
.article-heading-inner { max-width: 980px; }
.article-heading h1 { max-width: 16ch; font-size: clamp(3.1rem, 10vw, 7rem); }
.article-deck { max-width: 44rem; margin-top: 1.5rem; color: var(--muted); font-family: var(--body); font-size: clamp(1.15rem, 3vw, 1.45rem); }
.article-byline { margin-top: 1.4rem; color: var(--muted); font-size: .68rem; font-weight: 650; text-transform: uppercase; }
.article-layout { min-width: 0; display: grid; gap: 3rem; padding-block: clamp(3rem, 8vw, 6rem); }
.guide-article { min-width: 0; max-width: var(--reading); font-family: var(--body); font-size: clamp(1rem, 2vw, 1.12rem); line-height: 1.78; }
.article-scope { padding: 1rem 0; border-block: 1px solid var(--line); }
.guide-article section { padding-top: clamp(2.5rem, 6vw, 4rem); }
.guide-article h2 { max-width: 18ch; margin-bottom: 1rem; font-size: clamp(2rem, 6vw, 3.2rem); }
.article-sidebar { min-width: 0; padding-top: 1rem; border-top: 3px solid var(--green); align-self: start; }
.article-sidebar article { padding: .9rem 0; border-bottom: 1px solid var(--line); }
.article-sidebar h2 { font-size: 1.2rem; }
.article-sidebar article p { color: var(--muted); font-size: .65rem; text-transform: uppercase; }
.article-sidebar > a { display: inline-block; margin-top: 1rem; font-size: .72rem; font-weight: 750; text-transform: uppercase; }
.search-heading .shell { max-width: 900px; }
.page-search-form { margin-top: 2rem; }
.page-search-form label { display: block; margin-bottom: .4rem; font-size: .68rem; font-weight: 750; text-transform: uppercase; }
.page-search-form > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; }
.page-search-form input { min-width: 0; min-height: 50px; padding: .7rem .8rem; border: 1px solid var(--line); background: var(--surface); }
.page-search-form button { min-height: 50px; padding: .7rem 1rem; border: 1px solid var(--green); background: var(--green); color: #fff; font-size: .72rem; font-weight: 750; text-transform: uppercase; }
.search-results { min-height: 32rem; padding: clamp(3rem, 8vw, 6rem) 0; }
.search-message { font-family: var(--body); font-size: 1.2rem; }
.search-results-header { padding-bottom: 1rem; border-bottom: 1px solid var(--text); }
.search-results-header h2 { font-size: clamp(2rem, 7vw, 3.5rem); }
.search-result-list article { padding: 1.5rem 0; border-bottom: 1px solid var(--line); }
.search-result-list h3 { font-size: clamp(1.6rem, 5vw, 2.35rem); }
.search-result-list h3 a { text-decoration: none; }
.search-result-list article > p:not(.rubric) { margin-top: .7rem; color: var(--muted); font-family: var(--body); }
.search-result-list article > a { font-size: .7rem; font-weight: 750; text-transform: uppercase; }

/* Existing policy, methodology and utility pages */
.page-hero .shell, .page-hero .narrow { display: grid; gap: .8rem; }
.prose { padding-block: clamp(3rem, 8vw, 6rem); font-family: var(--body); font-size: 1.04rem; line-height: 1.75; }
.prose > .lead { font-size: 1.3rem; line-height: 1.55; }
.prose h2 { margin: 2.6rem 0 1rem; font-size: clamp(2rem, 7vw, 3.2rem); }
.prose h3 { margin: 2rem 0 .6rem; font-family: var(--ui); font-size: 1.15rem; }
.prose ul, .prose ol { padding-left: 1.2rem; }
.policy-grid, .score-grid, .contact-box { display: grid; gap: 1.5rem; margin: 2rem 0; }
.policy-card, .score-item, .contact-box > div { min-width: 0; padding-top: 1rem; border-top: 2px solid var(--green); }
.policy-card h2, .score-item h2, .contact-box h2 { margin-top: 0; }
.score-item b { display: block; color: var(--orange); font-family: var(--ui); }
.score-item strong { display: block; margin: .35rem 0; font-family: var(--ui); }
.prose .fact-table, .prose .fact-table tbody, .prose .fact-table tr, .prose .fact-table th, .prose .fact-table td { display: block; width: 100%; min-width: 0; }
.prose .fact-table { margin: 1.5rem 0; border-top: 1px solid var(--text); border-collapse: collapse; }
.prose .fact-table tr { padding: .8rem 0; border-bottom: 1px solid var(--line); }
.prose .fact-table th { color: var(--green-dark); font-family: var(--ui); font-size: .72rem; text-align: left; text-transform: uppercase; }
.prose .fact-table td { margin-top: .25rem; }
.error-page { min-height: 64vh; display: grid; align-items: center; padding: 4rem 0; }
.error-code { color: var(--orange); font-size: .72rem; font-weight: 750; letter-spacing: .1em; text-transform: uppercase; }
.error-page h1 { max-width: 15ch; margin-top: .8rem; font-size: clamp(3rem, 12vw, 6rem); }
.error-page p { max-width: 38rem; margin-top: 1.2rem; color: var(--muted); font-family: var(--body); font-size: 1.12rem; }
.centered-actions { justify-content: flex-start; }
.section { padding: clamp(3.5rem, 8vw, 6rem) 0; }
.section-head { margin-bottom: 2rem; padding-bottom: 1rem; border-bottom: 1px solid var(--line); }
.section-head h2 { font-size: clamp(2.3rem, 7vw, 4rem); }
.section-head p { color: var(--muted); }
.notice { padding: 1rem 0; border-block: 1px solid var(--line); }

/* Footer */
.publication-footer { padding: clamp(3.5rem, 8vw, 6rem) 0 1.5rem; background: var(--footer); color: #edf1ee; }
.footer-primary { min-width: 0; display: grid; gap: 2.5rem; }
.footer-identity { min-width: 0; }
.footer-identity > a { font-family: var(--display); font-size: clamp(2.3rem, 9vw, 4.5rem); line-height: .95; text-decoration: none; }
.footer-identity p { max-width: 31rem; margin-top: 1.2rem; color: #acb4af; font-family: var(--body); }
.footer-column { min-width: 0; }
.footer-column h2 { margin-bottom: .8rem; color: #8fbba9; font-family: var(--ui); font-size: .68rem; font-weight: 750; letter-spacing: .1em; text-transform: uppercase; }
.footer-column a { display: block; padding: .25rem 0; color: #edf1ee; font-size: .82rem; text-decoration: none; }
.footer-column a:hover { color: #a8d2c1; }
.footer-disclaimer { display: grid; gap: .8rem; margin-top: 3rem; padding-top: 1.2rem; border-top: 1px solid #3d4742; color: #96a09a; font-size: .65rem; line-height: 1.5; }
.footer-disclaimer p { margin: 0; }

@media (min-width: 640px) {
  .review-entry { grid-template-columns: 150px minmax(0, 1fr); gap: 1.4rem; }
  .entry-meta { grid-column: 2; }
  .alphabetical-directory { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 2rem; }
  .catalogue-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: end; }
  .catalogue-filters label:first-child { grid-column: 1 / -1; }
  .catalogue-filters button { align-self: end; }
  .assessment-layout, .final-verdict > div, .comparison-note, .policy-grid, .score-grid, .contact-box { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .source-list li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 1rem; align-items: start; }
  .source-list li > a, .source-list code { margin-top: 0; text-align: right; }
  .prose .fact-table { display: table; }
  .prose .fact-table tbody { display: table-row-group; }
  .prose .fact-table tr { display: table-row; padding: 0; }
  .prose .fact-table th, .prose .fact-table td { display: table-cell; width: auto; padding: .8rem; border-bottom: 1px solid var(--line); vertical-align: top; }
  .prose .fact-table th { width: 28%; }
  .prose .fact-table td { margin: 0; }
  .footer-primary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .footer-identity { grid-column: 1 / -1; }
}

@media (min-width: 760px) {
  .review-heading-layout { grid-template-columns: minmax(0, 1.1fr) minmax(280px, .9fr); align-items: start; }
  .directory-layout { grid-template-columns: minmax(220px, .65fr) minmax(0, 1.35fr); align-items: start; }
  .guides-front-layout { grid-template-columns: minmax(0, 1.35fr) minmax(260px, .65fr); }
  .featured-guide { padding: 0 clamp(2rem, 5vw, 4rem) 0 0; border-right: 1px solid var(--line); border-bottom: 0; }
  .comparison-invite-layout, .comparison-explainer-layout { grid-template-columns: minmax(0, 1.2fr) minmax(260px, .8fr); align-items: end; }
  .catalogue-filters { grid-template-columns: minmax(0, 1.4fr) repeat(2, minmax(180px, .7fr)) auto auto; }
  .catalogue-filters label:first-child { grid-column: auto; }
  .catalogue-feature { grid-template-columns: minmax(220px, 35%) minmax(0, 1fr); padding-block: 2rem; }
  .catalogue-feature .entry-meta { grid-column: 2; }
  .platform-snapshot dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1.5rem; }
  .article-layout { grid-template-columns: minmax(0, var(--reading)) minmax(190px, 260px); justify-content: space-between; align-items: start; }
  .guide-library-layout { grid-template-columns: minmax(0, 1.3fr) minmax(280px, .7fr); }
  .guide-lead { padding-right: clamp(2rem, 5vw, 4rem); border-right: 1px solid var(--line); }
}

@media (min-width: 900px) {
  .front-hero-layout { grid-template-columns: minmax(0, 1.1fr) minmax(280px, .9fr); align-items: start; }
  .front-feature { padding-top: 0; border-top: 0; border-left: 1px solid var(--line); padding-left: clamp(1.5rem, 4vw, 3.5rem); }
  .archive-heading-layout, .standard-heading-layout { grid-template-columns: minmax(0, 1.2fr) minmax(260px, .8fr); align-items: end; }
  .masthead-row { min-height: 150px; align-items: end; padding-bottom: 1.6rem; }
  .publication-name { font-size: clamp(4.25rem, 7vw, 6.2rem); }
  .publication-tagline { margin-top: .65rem; font-size: .7rem; }
  .menu-toggle { display: none; }
  .header-search-button { margin-bottom: .25rem; }
  .navigation-row { min-height: 54px; display: flex; align-items: center; justify-content: space-between; gap: 2rem; }
  .primary-nav, .primary-nav.open { display: flex; align-items: center; gap: clamp(1.4rem, 3vw, 2.8rem); padding: 0; }
  .primary-nav a { padding: 1rem 0 .85rem; border-bottom: 2px solid transparent; font-size: .72rem; letter-spacing: .07em; text-transform: uppercase; }
  .primary-nav a[aria-current="page"] { border-color: var(--green); }
  .edition-label { display: block; color: var(--muted); font-size: .65rem; letter-spacing: .08em; text-transform: uppercase; }
  .review-entry { grid-template-columns: 180px minmax(0, 1fr) 165px; gap: 1.7rem; align-items: start; }
  .entry-meta { grid-column: 3; display: grid; justify-items: end; text-align: right; }
  .entry-meta a { margin: .7rem 0 0; }
  .catalogue-feature { grid-template-columns: 270px minmax(0, 1fr) 165px; }
  .catalogue-feature .entry-meta { grid-column: 3; }
  .catalogue-layout { grid-template-columns: minmax(0, 1fr) 240px; gap: clamp(2.5rem, 5vw, 5rem); }
  .catalogue-sidebar { padding-top: 1rem; }
  .responsive-table { overflow-x: auto; border-top: 1px solid var(--text); }
  .comparison-table { min-width: 1180px; table-layout: fixed; }
  .comparison-table thead { position: static; width: auto; height: auto; overflow: visible; clip-path: none; white-space: normal; }
  .comparison-table tbody { display: table-row-group; }
  .comparison-table tr { display: table-row; padding: 0; border: 0; }
  .comparison-table th, .comparison-table td { display: table-cell; width: auto; padding: .75rem .7rem; border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); vertical-align: top; overflow-wrap: anywhere; font-size: .76rem; line-height: 1.4; }
  .comparison-table th { position: sticky; top: 0; z-index: 1; background: var(--green-dark); color: #fff; font-size: .61rem; letter-spacing: .05em; text-align: left; text-transform: uppercase; }
  .comparison-table th:first-child, .comparison-table td:first-child { width: 160px; }
  .comparison-table td::before { content: none; }
  .footer-primary { grid-template-columns: minmax(300px, 1.5fr) repeat(3, minmax(150px, .5fr)); }
  .footer-identity { grid-column: auto; }
  .footer-disclaimer { grid-template-columns: minmax(0, 1fr) auto; align-items: end; }
  .footer-disclaimer p:last-child { text-align: right; }
}

@media (min-width: 1120px) {
  .review-layout { grid-template-columns: 180px minmax(0, var(--reading)) 245px; gap: clamp(1.5rem, 3vw, 2.6rem); justify-content: space-between; align-items: start; }
  .review-left-rail, .review-article, .review-right-rail { order: initial; }
  .platform-snapshot dl { display: block; }
  .assessment-layout { gap: 3.5rem; }
}

@media (min-width: 1200px) and (min-height: 720px) {
  .review-toc, .platform-snapshot { position: sticky; top: 1.25rem; max-height: calc(100vh - 2.5rem); overflow-y: auto; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

@media print {
  .publication-header, .publication-footer, .breadcrumbs, .review-left-rail, .review-right-rail, .button, .primary-link { display: none; }
  body { background: #fff; color: #000; }
  .shell, .narrow { width: 100%; }
  .review-heading-layout, .review-layout, .article-layout { display: block; }
  .review-article > section { break-inside: avoid; }
}

.front-hero .front-hero-layout { align-items: center; gap: clamp(2rem, 5vw, 5rem); }
.front-hero .front-introduction h1 { max-width: 19ch; font-size: clamp(2.4rem, 4.5vw, 4rem); }
.front-hero .front-deck { max-width: 47ch; margin-top: 1.25rem; }
.home-registration { width: 100%; max-width: 480px; margin: 0; justify-self: end; }
.home-registration-note { margin: .85rem 0 0; color: var(--muted); font-size: .75rem; line-height: 1.45; }
.home-registration-card { min-width: 0; padding: clamp(1.25rem, 3vw, 2rem); background: var(--surface); border: 1px solid var(--line); border-top: 3px solid var(--green); border-radius: .75rem; box-shadow: 0 12px 36px rgba(13, 69, 53, .06); }
.home-registration-card .rubric { margin-bottom: .65rem; }
.home-registration-card h2 { font-size: 2rem; line-height: 1.1; }
.home-registration-description { margin: .65rem 0 1.4rem; color: var(--muted); font-size: .9rem; }
.home-registration-card form { margin: 0; }
.home-registration-card form > .home-registration { max-width: none; margin: 0; gap: 12px; grid-template-areas: 'first last' 'email email' 'phone phone' 'submit submit'; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.home-registration-card form > .home-registration > div:nth-child(1) { grid-area: first; }
.home-registration-card form > .home-registration > div:nth-child(2) { grid-area: last; }
.home-registration-card form > .home-registration > div:nth-child(3) { grid-area: email; }
.home-registration-card form > .home-registration > div:nth-child(4) { grid-area: phone; }
.home-registration-card form > .home-registration > div:nth-child(5) { grid-area: submit; }
.home-registration-card form input:not([type="hidden"]) { height: 48px; border-radius: 6px; font-family: var(--ui); font-size: .9rem; }
.home-registration-card form input::placeholder { font-size: .85rem; }
.home-registration-card input[type="submit"] { cursor: pointer; }
.featured-home .front-feature { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); column-gap: 2.5rem; border: 0; padding: 0; }
.featured-home .front-feature-cover { grid-column: 1; grid-row: 1 / span 5; margin: 0; align-self: start; }
.featured-home .front-feature > :not(.front-feature-cover) { grid-column: 2; }
@media (max-width: 759px) {
  .home-registration { max-width: none; }
  .featured-home .front-feature { display: block; }
  .featured-home .front-feature-cover { margin-bottom: 1.5rem; }
}
@media print {
  .home-registration { display: none; }
}
