/*
Theme Name: Joriacor
Description: Block theme for a Polish commercial real estate data publication: green-tinted paper, forest-green ink, one emerald family, hairline rules, Spectral and Work Sans, self-hosted fonts.
Text Domain: joriacor
Requires at least: 7.0
Requires PHP: 8.1
Version: 0.1.19
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Update URI: false
*/

/* Tokens that theme.json does not cover. Colours, fonts, sizes, spacing, shadow and widths live in theme.json. */
:root {
	--jrc-focus: var(--wp--preset--color--focus); /* Focus ring on light surfaces: 5.9:1 on paper, 6.4:1 on tint. */
	--jrc-r-1: 2px; /* Chips, inputs. */
	--jrc-r-2: 4px; /* Cards, buttons. */
	--jrc-r-3: 6px; /* Large panels, the table scroller. */
	--jrc-head-h: 3rem; /* Height of the sticky strip with the five sections: 48 px, the only sticky part of the header. Zero where the strip is not sticky. */
	--jrc-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12H19'/%3E%3Cpath d='M14 7L19 12L14 17'/%3E%3C/svg%3E"); /* Arrow of the quiet link and the scroll hint, drawn as a mask in the text colour. */
}

/* A sticky strip must not hide the focused element or an anchor target (WCAG 2.2, 2.4.11). Under 56.25rem the sticky bar is the logo and the menu button (4.25rem). */
@media (max-width: 56.24rem) { :root { --jrc-head-h: 4.25rem; } }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--jrc-head-h) + 1rem); }
body { font-kerning: normal; overflow-wrap: break-word; }
img, svg { height: auto; max-width: 100%; }
a { text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { text-decoration-thickness: 2px; }
h1, h2, h3, h4 { font-variant-numeric: lining-nums; text-wrap: balance; }
.wp-block-post-content li::marker { color: var(--wp--preset--color--forest); font-weight: 600; }

/* Keyboard focus: a visible 3 px ring everywhere. */
:focus-visible { outline: 3px solid var(--jrc-focus); outline-offset: 2px; }

/* Data tables: functions.php wraps the table in .jrc-scroll, a keyboard-reachable scroller, so the caption stays outside it and is never cut off (360 px: the table scrolls, the page never does). Add class jrc-bench to the table block when its first row is the benchmark. */
.jrc-scroll { background: linear-gradient(to left, var(--wp--preset--color--sheet) 30%, transparent) right center / 2.5rem 100% no-repeat local, linear-gradient(to left, rgba(17, 39, 27, 0.2), transparent) right center / 0.875rem 100% no-repeat scroll, var(--wp--preset--color--sheet); border-radius: var(--jrc-r-3); overflow-x: auto; -webkit-overflow-scrolling: touch; } /* The right edge shades while there is more to scroll: the local cover (moves with the content) hides the fixed shadow at the end. Cells are transparent so both show through; the pinned column is opaque. */
.jrc-scroll-hint { align-items: center; color: var(--wp--preset--color--ink-faint); display: flex; font-size: var(--wp--preset--font-size--note); gap: 0.375rem; line-height: 1.4; margin: 0; padding-bottom: 0.375rem; }
.jrc-scroll-hint::after, .jrc-proceed a::after { background: currentcolor; content: ""; flex: none; height: 1.125rem; -webkit-mask: var(--jrc-arrow) center / contain no-repeat; mask: var(--jrc-arrow) center / contain no-repeat; width: 1.125rem; }
figure.wp-block-table { container-type: inline-size; }
@supports (animation-timeline: scroll()) {
  figure.wp-block-table { timeline-scope: --jrc-x; }
  .jrc-scroll { scroll-timeline: --jrc-x x; }
  .jrc-scroll-hint { animation: jrc-hint 1ms linear both; animation-timeline: --jrc-x; max-height: 0; opacity: 0; overflow: hidden; padding-bottom: 0; visibility: hidden; }
}
@keyframes jrc-hint { from, to { max-height: 3rem; opacity: 1; padding-bottom: 0.375rem; visibility: visible; } }
@keyframes jrc-pinned { from { opacity: 0; } to { opacity: 1; } }
@supports not (animation-timeline: scroll()) { @container (min-width: 36rem) { .jrc-scroll-hint { display: none; } } } /* The hint follows the real overflow: the scroller's own scroll timeline is inactive when nothing scrolls, so the keyframes (the only thing that shows the hint) do not apply. Without scroll timelines the hint falls back to the width of the block (a table holds in 36rem at most 569px of the 672px article column). */
figure.wp-block-table table { border-collapse: separate; border-spacing: 0; font-size: var(--wp--preset--font-size--row); font-variant-numeric: tabular-nums lining-nums; line-height: 1.35; min-width: 34rem; width: 100%; } /* Size and line height restated: theme.json sets them on .wp-block-table > table, and the scroller is now between the two. */
figure.wp-block-table :is(th, td) { border: 0; border-bottom: 1px solid var(--wp--preset--color--hairline); padding: 0.75rem 0.875rem; vertical-align: baseline; }
figure.wp-block-table :where(th:first-child, td:first-child) { text-align: left; }
figure.wp-block-table :is(th, td):first-child { box-sizing: border-box; overflow-wrap: normal; padding-inline: 0.625rem 0.5rem; width: 7.5rem; }
figure.wp-block-table thead th:first-child { letter-spacing: 0.02em; } /* The pinned column never takes more than 7.5rem, so a phone sees at least two data columns beside it (a 438px label column left none, and could not pin). Long labels wrap at spaces; the column grows past 7.5rem only for a single word that does not fit, never breaking a word in the middle. */
figure.wp-block-table :where(th:not(:first-child), td:not(:first-child)) { text-align: right; } /* Numbers sit right, the first td after th scope=row included. Zero specificity: the editor's has-text-align-* classes win (text columns opt in with left). */
figure.wp-block-table :is(th, td).has-text-align-right { white-space: nowrap; }
figure.wp-block-table thead th { border-bottom: 2px solid var(--wp--preset--color--forest); color: var(--wp--preset--color--forest); font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.05em; line-height: 1.25; text-transform: uppercase; vertical-align: bottom; }
figure.wp-block-table tbody th { font-weight: 600; }
figure.wp-block-table tbody tr { --jrc-row: var(--wp--preset--color--sheet); }
figure.wp-block-table tbody tr:hover, figure.wp-block-table.jrc-bench tbody tr:first-child { --jrc-row: var(--wp--preset--color--tint); background: var(--jrc-row); } /* Only the hovered and the benchmark row paint a background; the others stay transparent so the scroller's edge shadow shows. */
figure.wp-block-table tbody tr:last-child > * { border-bottom: 0; } /* Borders are per cell (separate model), so the pinned column keeps its rule while it scrolls. */
figure.wp-block-table :is(th, td):first-child { background: var(--jrc-row, var(--wp--preset--color--sheet)); left: 0; position: sticky; z-index: 1; }
@supports (animation-timeline: scroll()) {
  figure.wp-block-table :is(th, td):first-child::after { animation: jrc-pinned 1ms linear both; animation-range: 0 1.5rem; animation-timeline: --jrc-x; background: linear-gradient(to right, rgba(17, 39, 27, 0.2), transparent); bottom: 0; content: ""; left: 100%; opacity: 0; pointer-events: none; position: absolute; top: 0; width: 0.875rem; }
} /* A shadow right of the pinned column fades in over the first 1.5rem of scrolling, so it says "the table is scrolled" and is absent at the start. */
figure.wp-block-table.jrc-bench tbody tr:first-child th:first-child { box-shadow: inset 3px 0 0 var(--wp--preset--color--forest); }
figure.wp-block-table figcaption { color: var(--wp--preset--color--ink-muted); font-size: var(--wp--preset--font-size--note); line-height: 1.5; margin: 0; padding: 0.5rem 0; }
.jrc-table-caption { border: 0; clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; white-space: nowrap; width: 1px; } /* The table's own name for assistive technology (made from the figcaption in functions.php); the figcaption is the visible one. Not display:none, which would drop it from the accessibility tree. */

/* Data character, never by colour alone: filled = own calculation, tint = agency data, dashed = editorial estimate, deep tint = partner material. The label text always says which. */
.jrc-prov { border-radius: var(--jrc-r-1); display: inline-block; font-size: var(--wp--preset--font-size--note); font-weight: 600; letter-spacing: 0.02em; line-height: 1; padding: 0.375em 0.625em; white-space: nowrap; }
.jrc-prov--own { background: var(--wp--preset--color--forest); color: var(--wp--preset--color--white); }
.jrc-prov--agency { background: var(--wp--preset--color--tint); color: var(--wp--preset--color--forest); }
.jrc-prov--est { border: 1px dashed var(--wp--preset--color--control); color: var(--wp--preset--color--ink-muted); }
.jrc-prov--paid { background: var(--wp--preset--color--tint-deep); color: var(--wp--preset--color--ink); }

/* Buttons: 44 px high, one solid call to action per page. States beyond hover (theme.json): pressed and disabled (aria-disabled or the disabled attribute). Other actions are quiet links with an arrow. */
.wp-block-button__link { align-items: center; display: inline-flex; justify-content: center; min-height: 2.75rem; }
.wp-block-button__link:active { background: var(--wp--preset--color--ink); color: var(--wp--preset--color--white); transform: translateY(1px); }
.wp-block-button__link[aria-disabled="true"], .wp-block-button__link:disabled { background: var(--wp--preset--color--tint-deep); color: var(--wp--preset--color--ink-muted); cursor: not-allowed; transform: none; }
.jrc-proceed a { align-items: center; display: inline-flex; font-size: var(--wp--preset--font-size--row); font-weight: 600; gap: 0.375rem; line-height: 1.3; min-height: 2rem; text-decoration: none; white-space: nowrap; }
.jrc-proceed a:hover { color: var(--wp--preset--color--forest); }
.jrc-proceed a::after { transition: transform 0.15s; }
.jrc-proceed a:hover::after { transform: translateX(3px); }

/* Quote: a tonal panel with a double emerald rule on the left; verbatim excerpts only. */
blockquote.wp-block-quote { border: 0; position: relative; }
blockquote.wp-block-quote::before { border-inline: 2px solid var(--wp--preset--color--emerald); bottom: 1.5rem; content: ""; left: 1.125rem; position: absolute; top: 1.5rem; width: 8px; }
blockquote.wp-block-quote cite { display: block; margin-top: 0.75rem; }

/* Header: two light parts side by side in the page flow, the masthead (sign centred, "Szukaj" as a quiet link at the right edge) and the strip of the five sections between two hairlines. The header element itself has no box from 56.25rem, so the strip is a child of the page wrapper and its sticky range is the whole page; only the strip sticks and its size does not change on scroll. Under 56.25rem one narrow row: the sign at the left and the menu button at the right, nothing sticks. */
.wp-site-blocks > header { display: contents; }
.jrc-masthead, .jrc-rail { background: var(--wp--preset--color--sheet); }
.jrc-rail { border-block: 1px solid var(--wp--preset--color--hairline); box-shadow: var(--wp--preset--shadow--bar); box-sizing: border-box; height: 3rem;
	position: sticky; top: var(--wp-admin--admin-bar--height, 0); z-index: 50; }
.jrc-bar { min-height: 3.5rem; padding-block: var(--wp--preset--spacing--xs); }
.jrc-znak { flex: 0 0 auto; line-height: 0; margin: 0; }
.jrc-znak-obraz { margin: 0; }
.jrc-znak a { display: block; }
.jrc-znak .jrc-znak-obraz img { display: block; height: 1.375rem; max-width: none; width: auto; } /* The size lives here, not in the block: 22 px, 24 px in the footer, 36 px from 900 px in the header. */
.jrc-foot .jrc-znak .jrc-znak-obraz img { height: 1.5rem; }

/* The section links are the strip under the masthead (centred, 48 px) from 56.25rem. Under that width core shows a menu button instead (the fold below is moved from core's 37.5rem to 56.25rem) and "Szukaj" is the last item of the open panel. */
.jrc-nav { justify-content: center; }
.jrc-nav .wp-block-navigation__container { gap: var(--wp--preset--spacing--xxs); }
.jrc-nav .wp-block-navigation-item__content { border-bottom: 2px solid transparent; color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--row); font-weight: 500; line-height: 1.3; padding: 0.5625rem var(--wp--preset--spacing--sm) 0.4375rem; text-decoration: none; }
.jrc-nav .wp-block-navigation-item__content:hover, .jrc-nav .current-menu-item > a, .jrc-nav a[aria-current] { border-bottom-color: var(--wp--preset--color--emerald); color: var(--wp--preset--color--ink); font-weight: 600; }
/* The menu button (below 56.25rem) and its close button: the word "Menu" or "Zamknij" in a 1 px forest frame, a 44 px target, no icon. The close button is drawn in the place of the menu button, so one frame changes its word. */
.jrc-nav .wp-block-navigation__responsive-container-open, .jrc-nav .wp-block-navigation__responsive-container-close { align-items: center; background: transparent; border: 1px solid var(--wp--preset--color--forest); border-radius: var(--jrc-r-2); box-sizing: border-box; color: var(--wp--preset--color--forest); gap: 0; justify-content: center; min-height: 2.75rem; min-width: 2.75rem; padding: 0 var(--wp--preset--spacing--md); }
.jrc-nav .wp-block-navigation__responsive-container-open svg, .jrc-nav .wp-block-navigation__responsive-container-close svg { display: none; }
.jrc-nav .wp-block-navigation__responsive-container-open::after { content: "Menu"; font-size: var(--wp--preset--font-size--row); font-weight: 600; }
.jrc-nav .is-menu-open .wp-block-navigation__responsive-container-close { display: flex; }
.jrc-nav .wp-block-navigation__responsive-container-close::after { content: "Zamknij"; font-size: var(--wp--preset--font-size--row); font-weight: 600; }
.jrc-nav .wp-block-navigation__responsive-container-open:hover, .jrc-nav .wp-block-navigation__responsive-container-close:hover { background: var(--wp--preset--color--tint); }

/* Desktop header: the sign sits in the middle of an 84 px band, "Szukaj" at its right edge as a quiet link without a field, the sections in the 48 px strip, centred. */
@media (min-width: 56.25rem) {
	.jrc-masthead { padding-block: 0; }
	.jrc-masthead > .wp-block-group { justify-content: center; min-height: 5.25rem; position: relative; }
	.jrc-find { margin: 0; position: absolute; inset-inline-end: 0; top: 50%; transform: translateY(-50%); }
	.jrc-find a { align-items: center; color: var(--wp--preset--color--ink-muted); display: inline-flex; font-size: var(--wp--preset--font-size--row); font-weight: 500; min-height: 2.75rem; padding-inline: 0.25rem; text-decoration: none; }
	.jrc-find a:hover { color: var(--wp--preset--color--ink); text-decoration: underline; text-decoration-color: var(--wp--preset--color--emerald); text-decoration-thickness: 2px; }
	.jrc-rail { padding-block: 0; }
	.jrc-rail > .wp-block-group { height: 100%; justify-content: center; }
	.jrc-nav .wp-block-navigation-item__content { box-sizing: border-box; min-height: 0; height: 2.875rem; }
	.jrc-nav .jrc-nav-search, .jrc-nav .jrc-nav-service { display: none; }
}

/* Footer: the brand line, then a register of label and links rows, then the legal row. Core has no definition list, so a row is a group (label paragraph, links). */
.jrc-foot { border-top: 1px solid var(--wp--preset--color--hairline); padding-block: var(--wp--preset--spacing--xl) var(--wp--preset--spacing--lg); position: relative; }
.jrc-foot::before { background: var(--wp--preset--color--emerald); content: ""; height: 3px; left: max(var(--wp--style--root--padding-left, 0px), calc(50% - var(--wp--style--global--wide-size) / 2)); position: absolute; top: -2px; width: 5rem; }
.jrc-foot-brand { padding-bottom: var(--wp--preset--spacing--md); }
.jrc-foot-lead, .jrc-foot-legal p, .jrc-foot-row > p:not(.jrc-foot-h) { color: var(--wp--preset--color--ink-muted); margin: 0; }
.jrc-foot-lead { flex: 1 1 18rem; max-width: 40rem; }
.jrc-foot-row { border-top: 1px solid var(--wp--preset--color--hairline); display: grid; gap: var(--wp--preset--spacing--xxs) var(--wp--preset--spacing--lg); padding-block: var(--wp--preset--spacing--sm); }
.jrc-foot-h { color: var(--wp--preset--color--ink-muted); font-size: var(--wp--preset--font-size--note); font-weight: 600; letter-spacing: 0.08em; margin: 0; text-transform: uppercase; }
.jrc-foot-links { column-gap: var(--wp--preset--spacing--md); display: flex; flex-wrap: wrap; row-gap: var(--wp--preset--spacing--xxs); }
.jrc-foot-links a { color: var(--wp--preset--color--ink); font-weight: 500; text-decoration: underline; text-decoration-color: var(--wp--preset--color--control); }
.jrc-foot-links a:hover { color: var(--wp--preset--color--forest); text-decoration-color: currentcolor; }
.jrc-foot-legal { border-top: 1px solid var(--wp--preset--color--hairline); padding-top: var(--wp--preset--spacing--md); }
@media (min-width: 40rem) { .jrc-foot-row { grid-template-columns: 7rem 1fr; } }
/* "Do góry" in the bottom footer row: a 44 px target at every width (a long article is 16 screens of a phone), the same ink and underline as the footer links, the global 3 px focus ring. */
.jrc-foot-legal .jrc-foot-top { margin: 0; }
.jrc-foot-top a { align-items: center; color: var(--wp--preset--color--ink); display: inline-flex; font-weight: 500; gap: var(--wp--preset--spacing--xxs); min-height: 2.75rem; min-width: 2.75rem; text-decoration: underline; text-decoration-color: var(--wp--preset--color--control); }
.jrc-foot-top a:hover { color: var(--wp--preset--color--forest); text-decoration-color: currentcolor; }

/* Page furniture: panels, kicker, the register strip, section heads and the method block. */
.jrc-kicker { align-items: center; color: var(--wp--preset--color--link); display: flex; font-size: var(--wp--preset--font-size--note);
	font-weight: 600; gap: var(--wp--preset--spacing--xs); letter-spacing: 0.07em; line-height: 1.3; margin: 0; text-transform: uppercase; }
.jrc-kicker::before { background: var(--wp--preset--color--forest); content: ""; flex: none; height: 2px; width: 1.375rem; }
.jrc-kicker a { color: inherit; text-decoration: none; }
.jrc-strip { background: var(--wp--preset--color--tint); border-block-start: 1px solid var(--wp--preset--color--tint-deep); padding-block: var(--wp--preset--spacing--xl); }
.jrc-strip h2, .jrc-strip p { margin: 0; }
.jrc-sec-head { margin: 0; }
.jrc-method > * { margin: 0; }
.wp-block-term-description { color: var(--wp--preset--color--ink-muted); margin: 0; max-width: 42rem; }
.jrc-method { align-items: baseline; border-top: 1px solid var(--wp--preset--color--tint-deep); display: grid; gap: var(--wp--preset--spacing--xs) var(--wp--preset--spacing--lg); padding-top: var(--wp--preset--spacing--md); }
.jrc-method h2 { font-family: var(--wp--preset--font-family--sans); font-weight: 600; }
@media (min-width: 56.25rem) { .jrc-method { grid-template-columns: 12rem 1fr auto; } }

/* Cards: type on a tonal surface, no frame; the whole card is one link target (stretched title link). Hover lifts it to the sheet colour, focus rings the card. */
.wp-block-post-title a { color: var(--wp--preset--color--ink); text-decoration: none; }
.wp-block-post-title a:hover { color: var(--wp--preset--color--forest); text-decoration: underline; }
.wp-block-post > .jrc-card { box-sizing: border-box; height: 100%; }
.jrc-card { background: var(--wp--preset--color--tint); border-radius: var(--jrc-r-2); position: relative; }
.jrc-card:hover { background: var(--wp--preset--color--sheet); }
.jrc-card > *, .jrc-card-body > * { margin: 0; }
.jrc-card-img, .jrc-hero, .jrc-lead-img { margin: 0; }
.jrc-card-img img, .jrc-hero img, .jrc-lead-img img { display: block; height: auto; object-fit: cover; width: 100%; }
.jrc-card-img img { border-radius: var(--jrc-r-2) var(--jrc-r-2) 0 0; }
/* The mark under the lead picture of an article: small, muted, on its own line. */
.jrc-ai-caption { color: var(--wp--preset--color--ink-muted); font-size: var(--wp--preset--font-size--note); line-height: 1.4; margin: var(--wp--preset--spacing--xxs) 0 0; }
.jrc-card-body { padding: 1.25rem; }
.jrc-card-meta { color: var(--wp--preset--color--link); font-size: var(--wp--preset--font-size--note); font-weight: 600; letter-spacing: 0.07em; line-height: 1.3; text-transform: uppercase; }
.jrc-card-meta a { position: relative; text-decoration: none; z-index: 1; }
.jrc-card-title { line-height: 1.22; }
.jrc-card-title a::after { content: ""; inset: 0; position: absolute; }
.jrc-card .wp-block-post-excerpt { color: var(--wp--preset--color--ink-muted); }
.jrc-card-foot { color: var(--wp--preset--color--ink-faint); font-size: var(--wp--preset--font-size--note); }
.jrc-card:has(.jrc-card-title a:focus-visible) { outline: 3px solid var(--jrc-focus); outline-offset: 2px; }
@supports selector(:has(a)) { .jrc-card .jrc-card-title a:focus-visible { outline: 0; } } /* The ring moves to the card only where :has() works. */
@media (min-width: 40rem) {
	.jrc-card-body { padding: var(--wp--preset--spacing--lg); }
	}
@media (min-width: 56.25rem) {
	.jrc-finder.wp-block-search { --jrc-ctl: 2.5rem; }
	.wp-site-blocks > header .jrc-znak .jrc-znak-obraz img { height: 2.25rem; }
}

/* Page grid: the header, the main area and the footer share one container (the 75rem wide group of the header). From 64rem an article and a service page are a 12-column grid: the text takes the first 8 columns on the container's left edge, the rail the last 4. Below 64rem it is one column with the header's gutters. */
.wp-block-group.jrc-grid { column-gap: var(--wp--preset--spacing--xl); display: grid; grid-template-columns: minmax(0, 1fr); row-gap: var(--wp--preset--spacing--lg); }
.wp-block-group.jrc-grid > *, .wp-block-group.jrc-stack > * { margin: 0; max-width: none; }
.jrc-stack { display: contents; }
.jrc-art .jrc-side { display: contents; }
.jrc-art .jrc-head { order: 1; }
.jrc-art .jrc-hero { order: 2; }
.jrc-art .jrc-toc { order: 3; }
.jrc-art .jrc-body { order: 4; }
.jrc-art .jrc-pass { order: 5; }
.jrc-art .jrc-how { order: 6; }
.jrc-art .jrc-related { order: 7; }
.jrc-body { font-size: 1.0625rem; line-height: 1.65; }
.jrc-body > :first-child { margin-top: 0; }
.jrc-body > :where(p, ul, ol, h2, h3, h4, blockquote, dl) { max-width: 43rem; } /* About 70 characters a line at the desktop size, at most 80 on a phone; tables and pictures keep the whole column. */
.jrc-head { display: grid; gap: var(--wp--preset--spacing--sm); }
.jrc-head > * { margin: 0; }
.jrc-kickrow { align-items: baseline; column-gap: var(--wp--preset--spacing--xs); }
.jrc-kickdate { color: var(--wp--preset--color--ink-faint); margin: 0; }
.jrc-kickdate::before { content: "\00b7"; padding-inline-end: var(--wp--preset--spacing--xs); }
.jrc-head .wp-block-post-title, .jrc-leaf-title { max-width: none; }
/* Visible breadcrumbs above the kicker: the core nav with the trail of the structured-data breadcrumbs. Note size, muted ink, links underlined on hover; the last item is plain text. The current item takes at most one line and ends in an ellipsis, so a long title adds one row, never more, and never widens the page. */
.jrc-crumbs { min-width: 0; color: var(--wp--preset--color--ink-muted); font-size: var(--wp--preset--font-size--note); line-height: 1.4; }
.jrc-crumbs ol { column-gap: 0; row-gap: var(--wp--preset--spacing--xxs); }
.jrc-crumbs li { min-width: 0; }
.jrc-crumbs li:not(:last-child)::after { color: var(--wp--preset--color--ink-faint); opacity: 1; }
.jrc-crumbs a { color: inherit; text-decoration: none; }
.jrc-crumbs a:hover { color: var(--wp--preset--color--forest); text-decoration: underline; }
.jrc-crumbs li:last-child { max-width: 100%; }
.jrc-crumbs [aria-current] { color: var(--wp--preset--color--ink-faint); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (min-width: 64rem) {
	.wp-block-group.jrc-grid { grid-template-columns: repeat(12, minmax(0, 1fr)); }
	.jrc-stack { display: flex; flex-direction: column; gap: var(--wp--preset--spacing--lg); grid-column: 1 / 9; }
	.jrc-art .jrc-related { grid-column: 1 / -1; order: 0; }
	.jrc-art .jrc-head, .jrc-art .jrc-hero, .jrc-art .jrc-body, .jrc-art .jrc-how { order: 0; }
	.jrc-grid > .jrc-side { align-self: start; display: block; grid-column: 9 / -1; grid-row: 1; max-height: calc(100vh - var(--jrc-head-h) - 2rem); overflow-y: auto; position: sticky; top: calc(var(--jrc-head-h) + var(--wp--preset--spacing--md)); }
	.jrc-art .jrc-side > * + * { margin-block-start: var(--wp--preset--spacing--lg); }
	.jrc-body { font-size: 1.1875rem; }
}

/* The rail: contents of the article, its data sheet, or the links of the published service pages. Each block opens with a hairline and the short emerald segment. */
.jrc-toc, .jrc-pass, .jrc-svc { border-top: 1px solid var(--wp--preset--color--hairline); font-size: var(--wp--preset--font-size--row); padding-top: var(--wp--preset--spacing--md); position: relative; }
.jrc-toc::before, .jrc-pass::before, .jrc-svc::before { background: var(--wp--preset--color--emerald); content: ""; height: 3px; left: 0; position: absolute; top: -2px; width: 3.5rem; }
.jrc-toc-fold > summary, .jrc-pass-h, .jrc-svc-h { color: var(--wp--preset--color--ink-muted); cursor: pointer; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.07em; line-height: 1.3; margin: 0; min-height: 2.75rem; text-transform: uppercase; display: flex; align-items: center; }
.jrc-pass-h, .jrc-svc-h { cursor: default; min-height: 0; padding-bottom: var(--wp--preset--spacing--sm); }
.jrc-toc-list, .jrc-svc-list { display: grid; gap: var(--wp--preset--spacing--xs); list-style: none; margin: 0; padding: 0; }
.jrc-toc-list a, .jrc-svc-list a { color: var(--wp--preset--color--ink); display: block; line-height: 1.4; padding-block: 0.25rem; text-decoration: none; }
.jrc-toc-list a:hover, .jrc-svc-list a:hover { color: var(--wp--preset--color--forest); text-decoration: underline; }
.jrc-svc-list a[aria-current] { border-left: 2px solid var(--wp--preset--color--emerald); color: var(--wp--preset--color--forest); font-weight: 600; padding-left: var(--wp--preset--spacing--sm); }
.jrc-pass { display: grid; row-gap: var(--wp--preset--spacing--sm); }
.jrc-pass > *, .jrc-pass-row > * { margin: 0; }
.jrc-pass-row { display: grid; gap: 0.125rem; }
.jrc-pass-row .jrc-val { color: var(--wp--preset--color--ink); }
.jrc-pass-row:not(:has(.jrc-val:not(:empty))) { display: none; }
@media (min-width: 64rem) {
	.jrc-toc-fold > summary { cursor: default; list-style: none; }
	.jrc-toc-fold > summary::-webkit-details-marker { display: none; }
	.jrc-toc-fold::details-content { content-visibility: visible; display: block; }
}

/* The data sheet of the home lead reads as a line of "label value" pairs between dots; an item without a value is not printed (render filter in joriacor-roadsign.php), so a label never stands alone; the :has() rule below is only a second guard. */
.wp-block-group.jrc-sheet { column-gap: 0; row-gap: var(--wp--preset--spacing--xxs); }
.jrc-sheet-item { align-items: baseline; color: var(--wp--preset--color--ink-faint); display: flex; flex-wrap: wrap; gap: 0 0.375rem; font-variant-numeric: tabular-nums lining-nums; } /* Digits of the dates stay in the font of the line (no font-family here): only their figure style is fixed. */
.jrc-sheet-item > * { margin: 0; }
.jrc-sheet-item:not(:first-child)::before { content: "\00b7"; padding-inline: 0.625rem; }
.jrc-lab { color: var(--wp--preset--color--ink-faint); }
.jrc-sheet-item .jrc-val { color: var(--wp--preset--color--ink-muted); }
.jrc-sheet-item:not(:has(.jrc-val:not(:empty))) { display: none; }

/* The method block that closes an article, and the related list. */
.jrc-how { background: var(--wp--preset--color--tint); border-left: 4px solid var(--wp--preset--color--forest); border-radius: 0 var(--jrc-r-2) var(--jrc-r-2) 0;
	padding: var(--wp--preset--spacing--md) var(--wp--preset--spacing--lg); }
.jrc-how > * { margin: 0; }
.jrc-how-h { color: var(--wp--preset--color--forest); font-family: var(--wp--preset--font-family--sans); font-weight: 600; letter-spacing: 0.07em; text-transform: uppercase; }
.jrc-related .wp-block-post { border-bottom: 1px solid var(--wp--preset--color--hairline); padding-block: var(--wp--preset--spacing--sm); }
.jrc-related .wp-block-post:last-child { border-bottom: 0; padding-block-end: 0; } /* The footer line closes the page: one line, not two, and the 72 px start at the last row's text. */
.jrc-related-item > * { margin: 0; }
.jrc-related-item { align-items: baseline; display: grid; gap: var(--wp--preset--spacing--xxs) var(--wp--preset--spacing--lg); }
.jrc-related-item .jrc-card-meta { order: -1; }
@media (min-width: 40rem) { .jrc-related-item { grid-template-columns: 12rem 1fr; } }

/* Spread figure: the bars sit at a fixed length, they show the layout and never a value; the text says what is compared. The emerald segment is the spread to the benchmark. */
.jrc-spread { background: var(--wp--preset--color--sheet); border: 1px solid var(--wp--preset--color--hairline); border-radius: var(--jrc-r-2); padding: var(--wp--preset--spacing--md) var(--wp--preset--spacing--lg); }
.jrc-spread > * { margin: 0; }
.jrc-spread-row::after { background: linear-gradient(var(--wp--preset--color--forest), var(--wp--preset--color--forest)) 0 0 / 10rem 100% no-repeat; content: ""; display: block; height: 0.625rem; margin-top: var(--wp--preset--spacing--xxs); }
.jrc-spread-row--gap::after { background: linear-gradient(var(--wp--preset--color--forest), var(--wp--preset--color--forest)) 0 0 / 10rem 100% no-repeat, linear-gradient(var(--wp--preset--color--emerald), var(--wp--preset--color--emerald)) 10rem 0 / 4rem 100% no-repeat; }
.jrc-spread-cap { color: var(--wp--preset--color--ink-muted); }

/* Pages and articles: every section opens with a hairline and a short emerald segment (the gap of the mark). */
.jrc-sec-head, .jrc-sec-row, .wp-block-post-content > h2 { border-top: 1px solid var(--wp--preset--color--hairline); padding-top: var(--wp--preset--spacing--md); position: relative; }
.jrc-sec-head::before, .jrc-sec-row::before, .wp-block-post-content > h2::before { background: var(--wp--preset--color--emerald); content: ""; height: 3px; left: 0; position: absolute; top: -2px; width: 3.5rem; }
.wp-block-group.jrc-sec-row { align-items: baseline; } /* The hairline and the emerald segment sit on the full-width row, so they follow the section grid; the title and the link share one baseline. */
.jrc-sec-row > .jrc-sec-title { margin: 0; }
/* Section head with its link (home register), phone: one column of the row width, the title over the whole line and the link under it on the same left edge; from 48rem they share one baseline line (core's flex row). Placed after the baseline rule above and specific enough to beat core's container rule (space-between). */
@media (max-width: 47.99rem) {
	.wp-block-group.jrc-sec-row { align-items: start; display: grid; gap: var(--wp--preset--spacing--xxs); grid-template-columns: minmax(0, 1fr); justify-content: stretch; }
}
.wp-block-post-content > h2 { margin-top: var(--wp--preset--spacing--xxl); }
.wp-block-post-content > h2:first-child { border-top: 0; margin-top: 0; padding-top: 0; }
.wp-block-post-content > h2:first-child::before { display: none; }

/* Home: the lead is a two-column block on the header's container (7 columns of text, 5 of photo, tops aligned), the register of the latest materials as rows, the workshop cards. */
.jrc-lead > * + *, .jrc-lead .wp-block-post-template > li > * + * { margin-block-start: var(--wp--preset--spacing--lg); }
.jrc-lead .wp-block-post-title { margin-block-end: 0; margin-inline: 0; max-width: none; }
.jrc-lead .wp-block-post-excerpt { margin-block-end: 0; max-width: 40rem; }
.jrc-lead .wp-block-group.jrc-sheet { column-gap: var(--wp--preset--spacing--lg); } /* A wrapped line never starts with a separator dot. */
.jrc-lead .jrc-sheet-item::before { content: none; }
.jrc-kicker .wp-block-post-terms__prefix { margin-inline-end: 0.4em; }
.jrc-lead .wp-block-read-more { align-items: center; background: var(--wp--preset--color--link); border-radius: var(--jrc-r-2); color: var(--wp--preset--color--white); display: inline-flex; font-weight: 600; justify-self: start; min-height: 2.75rem; padding-inline: var(--wp--preset--spacing--lg); text-decoration: none; }
.jrc-lead .wp-block-read-more:hover { background: var(--wp--preset--color--forest); }
@media (min-width: 64rem) {
	.jrc-lead .wp-block-post-template > li { column-gap: var(--wp--preset--spacing--xl); display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: repeat(5, auto) 1fr; }
	.jrc-lead .wp-block-post-template > li > * { grid-column: 1 / 8; }
	.jrc-lead .wp-block-post-template > li > .jrc-lead-img { align-self: start; grid-column: 8 / -1; grid-row: 1 / -1; margin-block-start: 0; }
}
.jrc-tagline { color: var(--wp--preset--color--ink-muted); max-width: 40rem; }
.jrc-reg > * { margin: 0; }
.jrc-reg > * + * { margin-block-start: var(--wp--preset--spacing--md); }
.jrc-related > * + * { margin-block-start: var(--wp--preset--spacing--sm); }
.jrc-reg-headrow { display: none; }
.jrc-reg { --jrc-date-col: 10rem; } /* One width for the date column of the head and of every row. */
.jrc-reg-row { border-bottom: 1px solid var(--wp--preset--color--hairline); display: flex; flex-wrap: wrap; gap: var(--wp--preset--spacing--xxs) var(--wp--preset--spacing--md); padding-block: var(--wp--preset--spacing--sm); }
.jrc-reg-cell, .jrc-reg-th { color: var(--wp--preset--color--ink-muted); margin: 0; }
.jrc-reg-cell:empty { display: none; }
.jrc-reg-date, .jrc-reg-title { flex: 0 0 100%; } /* On the phone the date stacks above the title. */
.jrc-reg-facts { gap: 0 var(--wp--preset--spacing--md); }
.jrc-reg-facts:not(:has(.jrc-reg-cell:not(:empty))) { display: none; }
.jrc-reg-title > * { margin: 0; }
.jrc-reg-by { color: var(--wp--preset--color--ink-faint); margin: 0; }
.jrc-work { display: grid; gap: var(--wp--preset--spacing--md); }
.jrc-work-card { background: var(--wp--preset--color--sheet); padding: var(--wp--preset--spacing--md); }
.jrc-work-card > * { margin: 0; }
.jrc-formula { border-left: 2px solid var(--wp--preset--color--emerald); color: var(--wp--preset--color--ink-muted); font-family: var(--wp--preset--font-family--serif); font-style: italic; padding-left: var(--wp--preset--spacing--sm); }
@media (min-width: 48rem) {
	.jrc-work { grid-template-columns: 1fr 1fr; }
	.jrc-reg-headrow, .jrc-reg-row { display: grid; gap: var(--wp--preset--spacing--md); align-items: baseline; grid-template-columns: var(--jrc-date-col) 1fr; }
	.jrc-reg-headrow { border-bottom: 1px solid var(--wp--preset--color--forest); padding-bottom: var(--wp--preset--spacing--xs); }
	.jrc-reg-th { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; }
	.jrc-reg-date { flex: none; grid-column: 1; grid-row: 1; }
	.jrc-reg-title { flex: none; grid-column: 2; grid-row: 1; } /* Title in the wide track whatever the data cells hold; city and segment fill the narrow tracks after it. */
	.jrc-reg-th:nth-child(n+3), .jrc-reg-cell:empty { display: none; } /* City and segment appear only where a row carries a value. */
	.jrc-reg-row > .wp-block-post-date { white-space: nowrap; } /* Long Polish month names must not break the date over two lines. */
	.jrc-reg-facts { grid-column: 2; grid-row: 2; }
}
@media (min-width: 48rem) and (pointer: fine) {
	.jrc-reg-title .wp-block-post-title a { display: inline; } /* An inline-block link would make the last title line the baseline of the row, so the date would sink below the first line. */
}
@media (min-width: 40rem) {
	.jrc-archive-feed .wp-block-post-template { display: grid; gap: var(--wp--preset--spacing--md); grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr)); }
	.jrc-archive-feed .wp-block-post-template > .wp-block-post { margin: 0; }
}
.jrc-archive-feed .jrc-card-img img { aspect-ratio: 16 / 9; }
/* Three columns (3 x 20rem + 2 gaps = 62rem): a lone last card spans the row and lies on its side, so the row has no empty two thirds. */
.jrc-archive-feed { container-type: inline-size; }
@container (min-width: 62rem) {
	.jrc-archive-feed .wp-block-post-template > .wp-block-post:last-child:nth-child(3n + 1):not(:first-child) { grid-column: 1 / -1; }
	.jrc-archive-feed .wp-block-post-template > .wp-block-post:last-child:nth-child(3n + 1):not(:first-child) > .jrc-card { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
	.jrc-archive-feed .wp-block-post-template > .wp-block-post:last-child:nth-child(3n + 1):not(:first-child) .jrc-card-img img { border-radius: var(--jrc-r-2) 0 0 var(--jrc-r-2); height: 100%; }
	.jrc-archive-feed .wp-block-post-template > .wp-block-post:last-child:nth-child(3n + 1):not(:first-child) .jrc-card-body { align-self: center; }
}
.jrc-work > .jrc-work-card { margin-block-start: 0; } /* Flow gap would offset the second card; the grid gap already spaces them. */

/* 404: the text keeps its own measure inside the container of the header. */
.jrc-lost-body > * { max-width: 44rem; }

/* 404: the code is drawn by CSS with an empty alternative text, so assistive technology reads only the heading. */
.jrc-404::before { background: linear-gradient(var(--wp--preset--color--emerald), var(--wp--preset--color--emerald)) 0 100% / min(18rem, 70%) 0.5rem no-repeat; color: var(--wp--preset--color--forest); content: "404"; content: "404" / ""; display: block;
	font: 700 clamp(4.5rem, 14vw, 8.5rem) / 0.9 var(--wp--preset--font-family--serif); letter-spacing: -0.03em; margin-bottom: var(--wp--preset--spacing--lg); padding-bottom: var(--wp--preset--spacing--lg); }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation: none !important; scroll-behavior: auto !important; transition: none !important; }
}
/* The data-table scroll hint and the pinned-column shadow are shown by scroll-driven keyframes (above), and the block just removed every animation, so the hint would stay hidden for these readers. These keyframes only toggle visibility, height and opacity on a 1 ms timeline tied to the scroller: there is no movement, so they stay. */
@media (prefers-reduced-motion: reduce) {
	@supports (animation-timeline: scroll()) {
		.jrc-scroll-hint { animation: jrc-hint 1ms linear both !important; animation-timeline: --jrc-x !important; }
		figure.wp-block-table :is(th, td):first-child::after { animation: jrc-pinned 1ms linear both !important; animation-range: 0 1.5rem !important; animation-timeline: --jrc-x !important; }
	}
}

/* Template hooks (page, front page, 404): restore the spacing the sections had before the markup was split (blockGap between flattened pattern blocks, head width equal to the body column, hairline divider). */
.jrc-front-lead > * + *, .jrc-front-rest > * + * { margin-block-start: var(--wp--preset--spacing--xxl); }
.wp-block-separator.jrc-front-rule { background: none; border: 0; border-top: 1px solid var(--wp--preset--color--hairline); color: var(--wp--preset--color--hairline); margin-block: 0; max-width: none; }

/* Tap targets: the sign link and the section links reach 44px; the logo image keeps its size. */
.jrc-znak a { align-items: center; display: flex; min-height: 2.75rem; }
.jrc-nav .wp-block-navigation-item__content { align-items: center; display: inline-flex; min-height: 2.75rem; padding-block: 0; }

/* Phone tap targets: footer links, the section proceed links, register titles, kickers and the category link of a card reach 44px on narrow or touch screens. */
@media (max-width: 47.99rem), (pointer: coarse) {
	.jrc-card-meta a, .jrc-foot-nav a, .jrc-foot-links a, .jrc-proceed a, .jrc-reg-title a, .jrc-kicker a, .jrc-crumbs a { align-items: center; display: inline-flex; min-height: 2.75rem; }
}

/* Design: mobile header, hero kicker, byline, equal cards, footer baseline, short pages. */
.jrc-lead .jrc-kicker { display: block; }
.jrc-lead .jrc-kicker::before { display: none; }
.jrc-work { align-items: stretch; }
.jrc-work .jrc-work-card { box-sizing: border-box; height: 100%; }
.jrc-foot-row { align-items: baseline; }
.wp-site-blocks { display: flex; flex-direction: column; min-height: 100vh; }
.wp-site-blocks > main { flex: 1 0 auto; }
.wp-site-blocks > footer { margin-block-start: var(--wp--preset--spacing--xxxl); } /* The strip before the footer line: 72 px, set here and nowhere else (the templates' <main> has no bottom padding). */
@media (max-width: 56.24rem) {
	.wp-site-blocks > header { align-items: center; background: var(--wp--preset--color--sheet); box-shadow: var(--wp--preset--shadow--bar); display: flex; height: 4.25rem; position: sticky; top: 0; z-index: 60; }
	.jrc-masthead { flex: 1 1 auto; min-width: 0; padding-inline-end: 0; }
	.jrc-rail { border: 0; box-shadow: none; flex: 0 0 auto; height: auto; padding-inline-start: 0; position: static; }
	.jrc-find { display: none; }
	/* Core folds the menu below 37.5rem; from there up to 56.25rem the same button and panel are kept (core's own panel rules are not tied to a width). */
	.jrc-nav .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none; }
	.jrc-nav .wp-block-navigation__responsive-container-open { display: flex; }
	/* While the panel is open its close button stands where the menu button stands. */
	.jrc-nav:has(.is-menu-open) .wp-block-navigation__responsive-container-open { visibility: hidden; }
	/* The panel is not a full screen: a sheet that hangs under the sticky bar, as tall as its content and never taller than the space left; its rows scroll inside it. The selector is as heavy as core's own rule for the panel colour (six classes against its five), so the sheet colour wins over core's white. */
	.jrc-nav.wp-block-navigation:not(.has-background) .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) { background: var(--wp--preset--color--sheet); border-bottom: 1px solid var(--wp--preset--color--hairline); bottom: auto; box-shadow: var(--wp--preset--shadow--bar); color: var(--wp--preset--color--ink); left: 0; overflow: visible; padding: 0; right: 0; top: 4.25rem; }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-close, .jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog { max-width: none; width: 100%; }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close { position: absolute; right: var(--wp--preset--spacing--gutter); top: -3.5rem; }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-container-content { box-sizing: border-box; max-height: calc(100dvh - 4.25rem - 1px); overflow-y: auto; padding: var(--wp--preset--spacing--md) var(--wp--preset--spacing--gutter) var(--wp--preset--spacing--lg); }
	/* Five sections in two columns (the fifth across both), then the search field, then the service links in two columns. */
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container { align-items: stretch; display: grid; gap: var(--wp--preset--spacing--xs); grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container > li:nth-child(5) { grid-column: 1 / -1; }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content { background: var(--wp--preset--color--tint); border-bottom: 0; border-radius: var(--jrc-r-2); box-sizing: border-box; color: var(--wp--preset--color--ink); font-family: var(--wp--preset--font-family--serif); font-size: 1.125rem; font-weight: 600; height: 100%; line-height: 1.25; min-height: 3.5rem; padding: 0.5rem var(--wp--preset--spacing--sm); width: 100%; }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content:hover { background: var(--wp--preset--color--tint-deep); }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .current-menu-item > .wp-block-navigation-item__content, .jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content[aria-current] { box-shadow: inset 3px 0 0 var(--wp--preset--color--emerald); }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .jrc-nav-search { grid-column: 1 / -1; margin: var(--wp--preset--spacing--sm) 0; width: 100%; }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .jrc-nav-search .wp-block-search__inside-wrapper { background: var(--wp--preset--color--white); border: 1.5px solid var(--wp--preset--color--control); border-radius: var(--jrc-r-2); padding: 3px; }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .jrc-nav-search .wp-block-search__inside-wrapper:focus-within { outline: 3px solid var(--jrc-focus); outline-offset: 2px; }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .jrc-nav-search .wp-block-search__input { background: transparent; border: 0; color: var(--wp--preset--color--ink); font-size: var(--wp--preset--font-size--row); min-height: 2.75rem; padding: 0 var(--wp--preset--spacing--sm); }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .jrc-nav-search .wp-block-search__input:focus, .jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .jrc-nav-search .wp-block-search__input:focus-visible { outline: 0; }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .jrc-nav-search .wp-block-search__input::placeholder { color: var(--wp--preset--color--ink-faint); }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .jrc-nav-search .wp-block-search__button { background: var(--wp--preset--color--forest); border: 0; border-radius: var(--jrc-r-1); color: var(--wp--preset--color--white); font-size: var(--wp--preset--font-size--row); margin: 0; min-height: 2.75rem; min-width: 2.75rem; padding: 0 var(--wp--preset--spacing--md); }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .jrc-nav-service > .wp-block-navigation-item__content { background: transparent; box-shadow: none; color: var(--wp--preset--color--ink-muted); font-family: var(--wp--preset--font-family--sans); font-size: var(--wp--preset--font-size--row); font-weight: 500; min-height: 2.75rem; padding-inline: 0; }
	.jrc-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .jrc-nav-service > .wp-block-navigation-item__content:hover { background: transparent; color: var(--wp--preset--color--ink); text-decoration: underline; text-decoration-color: var(--wp--preset--color--emerald); text-decoration-thickness: 2px; }
}
@media (max-width: 39.99rem) {
	.wp-block-group.jrc-sheet { flex-direction: column; align-items: flex-start; }
	.jrc-sheet-item:not(:first-child)::before { content: none; }
}

/* Mobile footer air: same text, less padding, tighter stack. */
@media (max-width: 39.99rem) {
	.jrc-foot { padding-block: var(--wp--preset--spacing--md); }
	.jrc-foot > .alignwide + .alignwide { margin-block-start: var(--wp--preset--spacing--xs); }
	.jrc-foot-brand { padding-bottom: var(--wp--preset--spacing--sm); }
	.jrc-foot-row { padding-block: var(--wp--preset--spacing--xs); }
	.jrc-foot-legal { padding-top: var(--wp--preset--spacing--sm); row-gap: var(--wp--preset--spacing--xs); }
}

/* Footer site map links are 44px targets on a phone and on touch screens; the legal row has no label and sits in the value column; the information-only note stands above the rows. */
.jrc-foot-note { color: var(--wp--preset--color--ink-muted); margin: 0 0 var(--wp--preset--spacing--md); max-width: 75ch; }
@media (min-width: 40rem) { .jrc-foot-row-bare > p { grid-column: 2; } }
@media (max-width: 39.99rem), (pointer: coarse) {
	.jrc-foot-links a { align-items: center; display: inline-flex; min-height: 2.75rem; }
	.jrc-foot-links { row-gap: 0; }
}

/* Search page form: the field is a block of its own under the headline, not part of the header. A visible 3 px ring surrounds the whole control while the field has the focus. */
.jrc-finder.wp-block-search { --jrc-ctl: 2.75rem; max-width: 75rem; } /* Same 75 rem column as the headline above it; the field itself stays 40 rem. */
.jrc-finder.wp-block-search .wp-block-search__inside-wrapper { background: var(--wp--preset--color--white); border: 1.5px solid var(--wp--preset--color--control); border-radius: var(--jrc-r-2); padding: 3px; max-width: 40rem; }
.jrc-finder.wp-block-search .wp-block-search__inside-wrapper:focus-within { outline: 3px solid var(--jrc-focus); outline-offset: 2px; }
.jrc-finder.wp-block-search .wp-block-search__input { background: transparent; border: 0; color: var(--wp--preset--color--ink); font-size: var(--wp--preset--font-size--row); min-height: var(--jrc-ctl); padding: 0 var(--wp--preset--spacing--sm); }
.jrc-finder.wp-block-search .wp-block-search__input:focus, .jrc-finder.wp-block-search .wp-block-search__input:focus-visible { outline: 0; }
.jrc-finder.wp-block-search .wp-block-search__input::placeholder { color: var(--wp--preset--color--ink-faint); }
.jrc-finder.wp-block-search .wp-block-search__button { background: var(--wp--preset--color--forest); border: 0; border-radius: var(--jrc-r-1); color: var(--wp--preset--color--white); height: var(--jrc-ctl); margin: 0; min-width: var(--jrc-ctl); padding: 0 var(--wp--preset--spacing--md); }
