/*
Theme Name: Shih Tzu Danmark (Bricks Child)
Theme URI: https://shihtzudanmark.dk
Description: Child-tema til Bricks for shihtzudanmark.dk. Designsystemet er dokumenteret i DESIGN-TOKENS.md.
Author: Shih Tzu Danmark
Template: bricks
Version: 0.18.11
Text Domain: shihtzudanmark
*/

/* ==========================================================================
   1. ROD — Bricks-fælde nr. 1
   Bricks sender html{font-size:62.5%} inde i @layer bricks. Lagregler taber
   til ulagdelte regler, så roden bliver reelt 16px og hele rem-skalaen står
   1,6x for stor. Vi sætter den derfor selv, ulagdelt.
   ========================================================================== */

html {
	font-size: 100%;
	-webkit-text-size-adjust: 100%;
}

/* Værn for Safari/iOS < 15.4 (audit 1/10, P2): de kender ikke @layer og
   dropper alle Bricks' regler — også box-sizing, så hver side blev bredere
   end skærmen. Samme værdi som Bricks' lagregel; hr og .swiper-wrapper er
   undtaget, fordi Bricks giver dem content-box (de eneste to), og en
   ulagdelt regel ville vinde over den. :where() holder specificiteten på 0,
   så ingen andens regel tabes (Safari har :where() fra 14). Skip-linkets
   skjulning: afsnit 11. */
:where(*:not(hr, .swiper-wrapper)),
:where(*:not(hr, .swiper-wrapper))::before,
:where(*:not(hr, .swiper-wrapper))::after {
	box-sizing: border-box;
}

body {
	font-family: var(--std-font-body);
	font-size: var(--std-text-base);
	line-height: var(--std-leading-normal);
	color: var(--std-text);
	background-color: var(--std-frame);
}

/* ==========================================================================
   2. FOKUS — den alvorligste fejl i det gamle tema
   attitude satte outline:0 to steder og definerede nul :focus-visible i
   3.367 linjer. Med ~705 links pr. side kunne en tastaturbruger aldrig se
   hvor fokus var. Det er en WCAG 2.4.7-fejl og rangerer over enhver
   kontrastfejl.
   ========================================================================== */

:focus-visible {
	outline: 3px solid var(--std-focus);
	outline-offset: 2px;
	border-radius: 2px;
}

:focus:not(:focus-visible) {
	outline: none;
}

/* ==========================================================================
   3. LINKS
   Det gamle site havde sorte links uden understregning, røde besøgte og
   limegrønne aktive — og kontrasten FALDT ved hver interaktion
   (21,00 -> 2,80 -> 1,37). Nu stiger den: 5,55 -> 9,28.
   ========================================================================== */

a {
	color: var(--std-link);
	text-decoration: underline;
	text-underline-offset: 2px;
	text-decoration-thickness: from-font;
}

a:hover,
a:focus {
	color: var(--std-link-hover);
}

/* Bare URL'er som linktekst kan ikke ombryde med overflow-wrap:normal.
   "https://www.dkk.dk/uploads/documents/DKK_A5_Ny-på-udstilling_WEB.pdf"
   på /udstilling/om-udstilling/ var 385 px bred og gav sitets eneste
   vandrette overløb: 26 px ved 375. anywhere, aldrig break-word. */
.brxe-post-content a {
	overflow-wrap: break-word;                                              /* Safari < 15.4 kender ikke anywhere */
	overflow-wrap: anywhere;
}

/* Samme fejl med en bar URL som almindelig tekst eller i et nyhedsuddrag:
   målt 24/9 gav det vandret overløb på 13 af 840 adresser ved 320 px (værst
   /ny-racerepraesentant-2022/, 210 px). stds_bare_urls() i functions.php
   lægger adressen i span.std-url. En regel på hele afsnit blev afprøvet og
   forkastet: ved siden af flydende billeder brød den almindelige ord midt i
   ("Shih", "hver") på 3 sider. Nyhedsuddragene har ingen billeder ved siden. */
.brxe-post-content .std-url,
.stds-news__excerpt {
	overflow-wrap: break-word;                                              /* Safari < 15.4 kender ikke anywhere */
	overflow-wrap: anywhere;
}

/* Links på den mørke ramme kan ikke bruge brandfarven — 2,08:1.
   accent-on-dark giver 6,70:1. Det gælder også fokusringen fra afsnit 2:
   3px #d00c33 mod footerens #363942 var 2,08:1 på alle 20 fokuserbare pr.
   side (16.860 på 843 adresser, målt 1/10). WCAG 1.4.11 kræver 3:1. Med
   tokenet omdefineret her står ringen 6,70:1 mod rammen — både i
   mellemrummet (outline-offset) og udenfor. .std-on-dark bruges kun af
   footeren (inc/header.php), og alt fokuserbart dér står på rammen. */
.std-on-dark {
	--std-focus: var(--std-accent-on-dark);
}

.std-on-dark a {
	color: var(--std-accent-on-dark);
}

.std-on-dark a:hover {
	color: var(--std-accent-on-dark-hover);
}

/* Blokkenes knapper i husets knap (audit P3 INT-11). WordPress' classic-
   themes.css gav Fil-blokkens "Download" sitets eneste pilleform og eneste
   mørkegrå knap (#32373c, radius 2em) — på /pointsystem-til-aarets-shih-tzu-
   2026/. Nu som pointfilterets knapper: hvid, 1px ramme, sitets radius,
   linkfarven og 44 px. Knap-blokken (0 i dag) får det samme, så en ny knap
   ikke kommer med WordPress' standard. Gælder også i editoren (afsnit 3). */
/* En farve valgt i editoren (.has-background, .has-text-color) får lov at stå. */
.brxe-post-content :is(.wp-block-file__button, .wp-block-button__link):not(.has-background, .has-text-color) {
	display: inline-flex;
	align-items: center;
	justify-content: center;                                                /* også en knap i fuld bredde */
	min-height: var(--std-target);
	padding: 0 0.8rem;
	border: 1px solid var(--std-border);
	border-radius: var(--std-radius);
	background: var(--std-surface);
	color: var(--std-link);
	font-size: var(--std-text-s);
	text-decoration: none;
}

.brxe-post-content :is(.wp-block-file__button, .wp-block-button__link):not(.has-background, .has-text-color):is(:hover, :focus-visible) {
	border-color: var(--std-link);
	background: var(--std-surface-tint);
	color: var(--std-link-hover);
	opacity: 1;                                                             /* WP's :where(...):hover giver 0,85 */
}

/* ==========================================================================
   4. OVERSKRIFTER — Bricks-fælde nr. 2
   Bricks nulstiller alle overskriftsmargener. Uden modtræk klumper fjorten
   års indhold sammen.
   ========================================================================== */

h1, h2, h3, h4, h5, h6 {
	font-family: var(--std-font-head);
	line-height: var(--std-leading-tight);
	color: var(--std-neutral-900);
	/* Bærende, ikke sikkerhedsline: erstatter attitudes
	   body{word-wrap:break-word}. Kun 'anywhere' påvirker min-content-bredden.
	   Aldrig 'break-word'. */
	overflow-wrap: break-word;                                              /* Safari < 15.4 kender ikke anywhere */
	overflow-wrap: anywhere;
}

h1 { font-size: var(--std-text-4xl); }
h2 { font-size: var(--std-text-3xl); }
h3 { font-size: var(--std-text-2xl); }
h4 { font-size: var(--std-text-xl); }
h5 { font-size: var(--std-text-l); }
h6 { font-size: var(--std-text-m); }

.brxe-post-content :is(h1, h2, h3, h4, h5, h6) {
	margin-block: 1.6em 0.5em;
}

.brxe-post-content > :is(h1, h2, h3, h4, h5, h6):first-child {
	margin-block-start: 0;
}

/* Afsnit hvis eneste barn er <strong> fungerer som overskrifter. Talt over
   hele korpus: 3.006 på 227 sider, mod kun 98 rigtige overskriftselementer.
   Denne regel bærer derfor dokumentstrukturen på store dele af sitet.

   Tallet 410 i DESIGN-TOKENS.md stammer fra en stikprøve på 197 sider og er
   for lavt. Vigtigere: kun 907 af de 3.006 er <p><strong>. De øvrige 2.084
   er pakket i <span style="text-decoration: underline"> — redaktørernes
   husvane. 16 mere er pakket i <em>. Uden wrapper-varianten nedenfor var
   dækningen 907 af 3.019 = 30,0 %.

   <a> er bevidst udeladt: de 28 afsnit hvis eneste barn er et link med
   <strong> indeni er links, ikke overskrifter. */
.brxe-post-content p > strong:only-child,
.brxe-post-content p > b:only-child,
.brxe-post-content p > :is(span, em, i, u):only-child > strong:only-child,
.brxe-post-content p > :is(span, em, i, u):only-child > b:only-child {
	display: inline-block;
	font-family: var(--std-font-head);
	/* Ikke større end brødteksten. 37 % af afsnittene på fx racestandard
	   rammes af reglen, og med en størrelsesforøgelse læste siden som en
	   liste af overskrifter frem for som et dokument. Skriftskiftet og
	   luften ovenover bærer hierarkiet; størrelsen behøver ikke. */
	font-size: 1em;
	line-height: var(--std-leading-snug);
	color: var(--std-neutral-900);
	margin-block-start: 1.1em;
	/* :only-child ser ikke tekstknuder, så også fed tekst midt i en
	   sætning bliver inline-block, og det taber mellemrum i sine kanter:
	   "Don MartinoEjer" (33 steder på 18 indlæg) og "dommerenskal" (8 på 5
	   sider), målt 2/10. stds_pseudo_space() i functions.php flytter
	   mellemrummet uden for tagget. En margen her gjorde i stedet næsten
	   fulde overskrifter en linje højere og 2015-tabellernes celler bredere. */
}

/* Hundeweb-panelets arrangør ("Dansk Kennel Klub"): et afsnit fra v0.18.9
   (stds_hundeweb_organizer(), audit P3 A11Y-08), men med samme udseende som
   den h4, det var. */
.brxe-post-content p.std-hw-arrangoer {
	font-family: var(--std-font-head);
	font-size: var(--std-text-xl);
	font-weight: 700;
	line-height: var(--std-leading-tight);
	color: var(--std-neutral-900);
	margin-block: 1.6em 0.5em;
	overflow-wrap: break-word;                                              /* Safari < 15.4 kender ikke anywhere */
	overflow-wrap: anywhere;
}

/* ==========================================================================
   5. FLOW — to rytmer, ikke én
   88,5 % af sitets afsnit er 80 tegn eller kortere: enkeltlinjede
   resultatposter, ikke prosa. De skal stå tættere end brødtekst.
   Den tætte rytme er bygget 2/10 (v0.18.8, brugerens valg): korte afsnit i
   træk står med --std-flow-gap-tight. stds_tight_posts() i functions.php
   sætter .std-post på det første af to korte afsnit (højst 90 tegn, intet
   billede eller tabel; det andet er ikke en pseudo-overskrift).
   ========================================================================== */

.brxe-post-content > * + * {
	margin-block-start: var(--std-flow-gap);
}

/* Bricks giver alle afsnit :where(p){margin-block:0 1.2em}, så afstanden var
   reelt 20,4 px, og den marginsammenfaldende bundmargen skal også væk.
   Tabeller, galleri, pointsider og fremviseren har deres egen rytme. */
.brxe-post-content p.std-post:not(table p, .std-point p, .std-htm p, .std-galleri p) {
	margin-block-end: 0;
}

.brxe-post-content p.std-post:not(table p, .std-point p, .std-htm p, .std-galleri p) + p {
	margin-block-start: var(--std-flow-gap-tight);
}

/* ==========================================================================
   6. ARVET CENTRERING — kun billeder centreres
   2.006 inline text-align:center plus 284 align="center"-attributter.
   Centreret brødtekst er ulæseligt i en moderne bredde, fordi begge kanter
   flagrer. Rettes med CSS, ikke i indholdet — indhold flytter ikke med til
   produktion, så en databaseændring ville gå tabt ved go-live.

   Politikken (brugerens valg 2/10, audit INT-05): al tekst står venstre,
   uanset hvordan den blev centreret — klassisk (style, align), i blok-
   editoren (.has-text-align-center), i en liste eller en h1. Før blev blok-
   kenes centrering bevaret, også 282 afsnit på 28 sider, de fleste på 2-4
   linjer, og en centreret nummereret liste på 9 linjer. I editoren gælder
   det samme (stds_editor_css()), så redaktøren ser det, siden viser.

   Kun billeder centreres. Et element med et foto bliver stående centreret,
   så fotoet bliver i midten — 348 af dem har ingen tekst, og ingen har
   billeder side om side (målt 2/10 på 843 adresser). Undtaget fra den
   undtagelse er fotos, der selv centrerer sig (img.aligncenter er blok med
   margin auto), og emoji (WP's img.emoji/.wp-smiley og indsatte
   Facebook-emoji på 16 px): de er tekst, og teksten omkring dem venstre-
   stilles. Tilbage centreret med tekst: 2 fotos med ét løst tegn.
   Den anden selektor tager afsnit uden billede inde i en centreret
   beholder, der selv er undtaget, fordi den rummer billeder: de arvede
   centreringen (44 afsnit i en vinderliste på /galleri/2010-2/kss-vejen-
   d-295-2010/; fundet af skeptikeren). Afsnittet med selve fotoet arver
   stadig centreringen.
   ========================================================================== */

.brxe-post-content :is(p, div, li, ol, ul, dl, dt, dd, blockquote, h1, h2, h3, h4, h5, h6, center):is([style*="text-align: center"], [style*="text-align:center"], [align="center"], .has-text-align-center, center):not(:has(img:not(.aligncenter, .emoji, .wp-smiley, [src*="/emoji"]), figure, iframe, video)),
.brxe-post-content :is([style*="text-align: center"], [style*="text-align:center"], [align="center"], .has-text-align-center, center) :is(p, li, h1, h2, h3, h4, h5, h6, dt, dd, blockquote):not(:has(img:not(.aligncenter, .emoji, .wp-smiley, [src*="/emoji"]), figure, iframe, video)) {
	text-align: left !important;
}

/* Gutenbergs .has-text-align-right og -left røres ikke. */

/* Indlejrede tekstfarver fra det gamle site (audit 1/10, P2 A11Y-07 og P3
   TT-8). post_content har fem: #000000 (163, 6 sider), #0000ff (32, kun
   udstillingskalenderen), #ff0000 (14, 9 sider), #888888 (5, 1 side) og
   #003300 (4, 1 side), alle som color i et style-attribut (talt 2/10; aldrig
   baggrund eller kant). Rødt var 4,00:1 og gråt 3,54:1 — under AA — fx
   "BEMÆRK, DETTE ER KUN FOR MEDLEMMER" på /invitation-til-shih-tzu-moede-2020/.
   Rødt bliver husets mørke røde (brand-600, 7,31:1), så fremhævningen står;
   gråt bliver den dæmpede tekstfarve (7,1:1). Sort og mørkegrønt er næsten
   brødtekstens farve og arver nu den. Blåt på kalenderen (8,6:1) røres ikke:
   det markerer redaktørens 2027-afsnit, og kontrasten holder.
   !important, fordi et style-attribut ellers vinder over enhver selektor.
   Elementer med baggrund eller kant i style-attributtet er undtaget: der kan
   koden være en baggrund (fx sort bund med hvid tekst), og så må teksten ikke
   skifte (fundet af skeptikeren; 0 i dag). Indholdet i databasen er uændret.
   Gælder også i editoren (afsnit 6). */
.brxe-post-content [style*="#ff0000" i]:not([style*="background" i], [style*="border" i]) {
	color: var(--std-brand-600) !important;
}

.brxe-post-content [style*="#888888" i]:not([style*="background" i], [style*="border" i]) {
	color: var(--std-text-muted) !important;
}

.brxe-post-content :is([style*="#000000"], [style*="#003300"]):not([style*="background" i], [style*="border" i]) {
	color: inherit !important;
}

/* Faste pixelbredder i indholdet: 264 inline widths, hvoraf 249 er bredere
   end en telefonskærm. */
.brxe-post-content :is(img, table, iframe, div)[width] {
	max-width: 100%;
	height: auto;
}

/* ==========================================================================
   7. BILLEDTEKSTER — Bricks-fælde nr. 3
   Bricks sender .wp-caption p.wp-caption-text{font-size:11px} med
   specificitet (0,2,2). Uden modtræk stod alle 350 billedtekster i 11px.
   ========================================================================== */

.brxe-post-content .wp-caption p.wp-caption-text,
.brxe-post-content figcaption,
.brxe-post-content .wp-element-caption {
	font-size: var(--std-text-xs);
	line-height: var(--std-leading-snug);
	color: var(--std-text-muted);
	text-align: left;
	margin-block-start: 0.4em;
}

/* Bricks' ramme om klassiske billedtekster (frontend-layer.min.css:
   .wp-caption{background:#fff;border:1px solid #f0f0f0;padding:5px 3px 10px;
   max-width:96%}, billedet 98,5 %) ramte 314 billeder på
   193 sider (audit P3 TT-8): de stod 4 % smallere og med en anden ramme end
   blokbillederne. Nu som en <figure> fra blokeditoren: ingen ramme, fuld
   bredde. Billedteksten er altid en figcaption (WP's HTML5-billedtekst), så
   Bricks' p.wp-caption-text-polstring rammer intet. */
.brxe-post-content .wp-caption {
	max-width: 100%;
	padding: 0;
	border: 0;
	background: transparent;
}

.brxe-post-content .wp-caption img {
	max-width: 100%;
}

.brxe-post-content figure {
	margin-inline: 0;
}

.brxe-post-content img {
	max-width: 100%;
	height: auto;
}

/* ==========================================================================
   8. TABELLER — erstatningsomkostningen ved temaskiftet
   Bricks' frontend.min.css indeholder kun table{width:100%}. Når attitude
   ryger, forsvinder border-collapse, cellepadding, rammer og
   word-wrap:break-word. Uden dette mister 402 tabeller på 297 sider al
   struktur.

   Fire familier, talt over hele korpus 23. september — ikke en stikprøve:
     2015-2017  table.t1                  108 tabeller, 54 sider (Apple Pages)
     2016-2018  table.table + .table-condensed   2 x 51 tabeller, 52 sider
     2019-2026  table.table-striped       182 tabeller (hundeweb-paste)
     spredt     bare <table>              6 pointtabeller, 3 layouttabeller
   Før 2015 er der ingen tabeller, kun prosa med understregninger.

   Hver familie styles fra sine egne kroge, og hver selektor er talt på sin
   families sider og på de andre familiers: 0 træf udenfor. Ingen vandret
   scroll — 42 % af alle rækker er tomme og mange af resten enkeltcelle-
   prosa. Pointtabellerne er de eneste datatabeller, og de passer ved 320 px.

   ADVARSEL: der ligger 6.084 span.hidden-xs i markup'en i alle 182
   hundeweb-tabeller, uden at Bootstrap er indlæst. Indfør ALDRIG et
   Bootstrap-lignende utility-framework — kvalitetskolonnen (Excellent, SL,
   Very good, L, Good, ML, Sufficient) forsvinder lydløst på telefoner på
   alle 182 sider.
   ========================================================================== */

.brxe-post-content table {
	width: 100%;
	border-collapse: collapse;
	border: 0;
	font-size: var(--std-text-2xs);
}

.brxe-post-content :is(td, th) {
	border: 0;
	border-top: 1px solid var(--std-neutral-100);
	padding: var(--std-space-2xs) 0.5rem var(--std-space-2xs) 0;
	text-align: left;
	vertical-align: top;
	overflow-wrap: break-word;                                              /* Safari < 15.4 kender ikke anywhere */
	overflow-wrap: anywhere;
}

/* Faste cellebredder fra pastet ignoreres. */
.brxe-post-content :is(td, th)[width] {
	width: auto;
}

/* Afsnit og overskrifter inde i celler arver ellers fuld blokmargen. */
.brxe-post-content table p {
	margin: 0;
}

.brxe-post-content table :is(h2, h3) {
	margin: 0;
	font-size: var(--std-text-m);
}

@media (max-width: 480px) {
	.brxe-post-content table {
		font-size: var(--std-text-3xs);
	}
}

/* Rullecontaineren om de tre gamle familier (stds_table_scroll() i
   functions.php, audit 1/10 RESP-2). Ved normal tekst ruller ingen tabel;
   ved stor tekst ruller tabellen her i stedet for hele siden. De 5 px er
   fokusringen (3 px + 2 px afstand, afsnit 2), som en rullende boks ellers
   klipper ved første kolonne, der ingen venstreluft har. Den negative margen
   giver dem tilbage, så tabellen står præcis, hvor og så bred den stod.
   Lodret er cellernes egen luft (0,35rem) nok. Ringen om selve boksen, når
   header.js har gjort den fokuserbar, tegnes udenfor og klippes ikke. */
.brxe-post-content .std-tabelrulle {
	overflow-x: auto;
	overscroll-behavior-x: contain;
	padding-inline: 5px;
	margin-inline: -5px;
}

/* --- hundeweb-pastet, 2019-2026 --------------------------------------------
   Klasserne ligger allerede i markup'en og er udefinerede i al indlæst CSS.
   Gratis semantiske kroge: vi styler dem uden at røre indholdet.

   Samme rækkegrammatik i alle 182 tabeller, 2019-2026 (målt pr. årgang):
     white-bg (racen) > info (antal, dommer)
     > 3-6 x [heading "Bedst i ..." > vindernavn + Katalognr. > Ejer > Opdrætter]
     > 2 x [sex-header > klasse > Plac./Katalognr. > dog-item x n]
     > 0-3 x [heading (gruppeklasse) > <th>-række > dog-item]
   3-14 klasser pr. tabel.
   6.821 dog-item-rækker har fem celler: placering, kvalitet
   (span.hidden-xs), præmier (span.cert), katalognr. (a.Catalogue +
   a.Kritikk) og hundens navn. 7 har fire (kvalitet og præmie i én celle
   med colspan="2").
   Ejer og opdrætter står KUN i Bedst i-blokkene, i rækker uden klasse.

   Rækker uden klasse nås via table:has(td.dog-item). dog-item findes i
   ingen anden familie; table-striped gør (1 tabel i 2016-2018-familien). */

.brxe-post-content td.white-bg {
	font-family: var(--std-font-head);
	font-size: var(--std-text-2xl);
	font-weight: 700;
	line-height: var(--std-leading-tight);
	color: var(--std-neutral-900);
	padding-block: 0.4rem 0.3rem;
	border-top: 0;
}

/* Racenavnet står i en <h2>, og cellereglen ovenfor (text-m) gjorde det
   mindre end "Hanner" (text-l): 18,2 mod 19,6 px ved 1280, 17,5 mod 18,5
   ved 375. Hierarkiet var vendt om. Nu 24,2 og 22,0. */
.brxe-post-content td.white-bg > :is(h2, h3) {
	font-size: inherit;
	line-height: inherit;
}

/* 1 af 173 er tom (kun &nbsp;, 24-6-2023). De 172 udfyldte har alle <h2>.
   Bemærk: en fremtidig white-bg med ren tekst uden element ville også
   rammes. I dag 0 af 173. */
.brxe-post-content td.white-bg:not(:has(*)) {
	display: none;
}

/* Antal tilmeldte, antal bedømte, dommer: en byline, ikke en post.
   First-child fanger de 9 tabeller der starter uden racenavn. */
.brxe-post-content tr:has(> td.white-bg) + tr > td,
.brxe-post-content table:has(td.dog-item) tr:first-child > td:not([class]) {
	color: var(--std-text-muted);
	border-top: 0;
	padding-block: 0 var(--std-space-s);
}

.brxe-post-content td.sex-header {
	font-family: var(--std-font-head);
	font-size: var(--std-text-l);
	font-weight: 700;
	color: var(--std-neutral-900);
	border-top: 2px solid var(--std-neutral-900);
	padding-block: var(--std-space-s) 0.3rem;
}

.brxe-post-content td.heading,
.brxe-post-content td.grey {          /* td.grey = samme rolle i 2016-2018 */
	font-weight: 700;
	color: var(--std-neutral-900);
	background: var(--std-surface-tint);
	padding-block: 0.4rem;
	padding-inline: 0.5rem;                                                 /* audit P3 INT-10: teksten stod på båndets kant */
}

/* Bedst i-blokkene: én hund, tre linjer. Navn, Ejer og Opdrætter stod med
   samme skillelinje som mellem to hunde og læste som tre poster.
   Vindernavnet står i den eneste colspan="4"-celle i familien (925 af 925);
   Ejer og Opdrætter er altid de to næste rækker (925 af 925, efterfulgt af
   td.dog-show-td). */

.brxe-post-content table:has(td.dog-item) tr:has(> td[colspan="4"]) > td {
	border-top: 0;
	padding-block-end: 0.1rem;
}

.brxe-post-content table:has(td.dog-item) td[colspan="4"] {
	font-weight: 700;
	color: var(--std-neutral-900);
}

.brxe-post-content table:has(td.dog-item) tr:has(> td[colspan="4"]) + tr > td,
.brxe-post-content table:has(td.dog-item) tr:has(> td[colspan="4"]) + tr + tr > td {
	color: var(--std-text-muted);
	border-top: 0;
	padding-block: 0 0.1rem;
}

/* Klasser og kolonnelabels. Før: klasse 600 og "Plac./Katalognr." 700,
   begge 13,4 px ved 1280 som rækkerne. Labelen lige under stod tungere end
   overskriften den hører til. Nu ved 1280: race 24,2 > køn 19,6 > klasse
   15,2 serif > række 13,4; labelen 12,9 og dæmpet (7,11:1). */

.brxe-post-content td.klasse {
	font-family: var(--std-font-head);
	font-size: var(--std-text-s);
	font-weight: 700;
	color: var(--std-neutral-900);
	padding-block: 1.1rem 0.1rem;
}

/* colspan="3" findes kun i labelrækkerne (2.089 <td>, 79 <th>). */
.brxe-post-content table:has(td.dog-item) tr:has(> td[colspan="3"]) > td,
.brxe-post-content table:has(td.dog-item) th {
	font-size: var(--std-text-3xs);
	font-weight: 600;
	color: var(--std-text-muted);
	border-top: 0;
	padding-block: 0 0.3rem;
}

.brxe-post-content table:has(td.dog-item) tr:has(> td[colspan="3"]) strong {
	font-weight: inherit;
}

/* "Katalognr." står i 65 <th>-rækker alene i katalogkolonnen og brød som
   "Katal/ognr." ved 320 og 375 px. nowrap alene gjorde kolonnen 18-24 px
   bredere i hele tabellen, på navnenes bekostning. max-width:0 lader ordet
   løbe ind i nabocellen i stedet; overflow er synlig, intet beskæres.
   Nabocellen er tom eller rummer kun &nbsp; (17 sider). */
.brxe-post-content table:has(td.dog-item) th {
	white-space: nowrap;
	max-width: 0;
}

/* Gruppeklasserne (Opdræt 65, Par 8, Avl 5, 1 tom) bærer td.heading som
   Bedst i-båndene, men står efter tævernes sidste klasse og læste som en
   del af den. Kun de efterfølges af en <th>-række (79 af 79). Første gruppe
   lukker køns-afsnittet med samme streg som sex-header; de næste er
   klasser. */
.brxe-post-content tr:has(+ tr > th) > td.heading {
	font-family: var(--std-font-head);
	font-size: var(--std-text-s);
	color: var(--std-neutral-900);
	background: none;
	border-top: 2px solid var(--std-neutral-900);
	padding-block: 1.1rem 0.1rem;
	padding-inline: 0;                                                      /* intet bånd, så i flugt med kolonnen */
}

.brxe-post-content tr:has(+ tr > th) ~ tr:has(+ tr > th) > td.heading {
	border-top: 1px solid var(--std-neutral-100);
}

/* 1 tom gruppeoverskrift med tom <th>-række sidst i tabellen (12-5-2024).
   Alle tre celler er helt tomme, så :empty rammer dem. */
.brxe-post-content td.heading:empty,
.brxe-post-content tr:has(> td.heading:empty) + tr > th:empty {
	display: none;
}

.brxe-post-content td.dog-item {
	font-variant-numeric: tabular-nums;
}

.brxe-post-content td.dog-item .plassering {
	font-weight: 700;
	color: var(--std-neutral-900);
}

/* Kvaliteten brød som "Excel/lent" i 4.575 celler ved 375 px — praktisk
   talt hver eneste. Lukket ordforråd, 7 værdier over 6.084 celler, længst
   "Sufficient". nowrap er sikkert her og kun her. */
.brxe-post-content td.dog-item .hidden-xs {
	white-space: nowrap;
}

/* Præmierne: 34 forskellige ord, længst "Disqualified" (12 tegn). De må
   ombryde mellem ord, ikke inde i "R.Jun.CERT". Navnene beholder anywhere:
   "GustavsonsSagaOfEusebiaTheStoryteller" er 37 tegn. */
.brxe-post-content td.dog-item .cert {
	overflow-wrap: normal;
}

/* Mellem katalognummeret og det skjulte a.Kritikk står "&nbsp; " (5.646
   gange) eller "&nbsp;&nbsp;" (1.175, 2021 og 2025-2026). anywhere lod
   cellen knække ved det hårde mellemrum, så rækken blev to linjer høj
   uanset navnet. Cellen holdes samlet. */
.brxe-post-content td.dog-item:has(> a[class^="Catalogue"], > a.Kritikk) {
	white-space: nowrap;
}

/* Navnet er det læseren leder efter. Under 768 px krymper de fire første
   kolonner til indholdet og navnet får resten. Vagten :nth-child(5)
   springer de 7 rækker over hvor præmien har colspan="2". */
.brxe-post-content tr:has(> td.dog-item:nth-child(5)) > td.dog-item:nth-child(-n+4) {
	width: 1%;
}

/* Ved 320 px tager kvaliteten (nowrap) og præmierne (længste ord) plads
   fra navnet. Mindre luft til højre i de tre første kolonner giver noget
   tilbage. Katalogkolonnen beholder sin luft, så nummeret ikke klæber til
   navnet. */
@media (max-width: 480px) {
	.brxe-post-content tr:has(> td.dog-item:nth-child(5)) > td.dog-item:nth-child(-n+3) {
		padding-inline-end: var(--std-space-2xs);
	}
}

/* Fra 768 px faste bredder: før stod navnet 469-697 px inde afhængigt af
   siden (median 556 ved 1280), fordi præmiekolonnen tog 21-44 % af
   bredden. Nu står det samme sted på alle 182 sider. Katalogkolonnen er
   4 em: fem cifre (104 numre) plus luft. */
@media (min-width: 768px) {
	.brxe-post-content tr:has(> td.dog-item:nth-child(5)) > td.dog-item:nth-child(1) { width: 2.5em; }
	.brxe-post-content tr:has(> td.dog-item:nth-child(5)) > td.dog-item:nth-child(2) { width: 6.5em; }
	.brxe-post-content tr:has(> td.dog-item:nth-child(5)) > td.dog-item:nth-child(3) { width: 13em; }
	.brxe-post-content tr:has(> td.dog-item:nth-child(5)) > td.dog-item:nth-child(4) { width: 4em; }
}

/* Tomme afstandsrækker. 42 % af alle tabelrækker er tomme (18.295 af
   43.645); i hundeweb 52 %. Kritik- og ejerrækkerne er pladsholdere som
   hundewebs egen JS ville have fyldt: 13.523 rækker, 42 % af familiens
   rækker. At skjule dem barberer 18,5 % af den samlede sidehøjde ved
   375 px og 22,4 % ved 1280 (alle 182 sider, målt).

   Kun de TOMME skjules. 2 af 6.794 kritikceller bærer dommerens kritik af
   en opdrætsgruppe (23-3-2019, udstilling 2) og var skjult. De tomme er
   helt tomme (4.817 kritik, 4.774 ejer) eller rummer kun &nbsp; (1.975 og
   1.957), så :empty er ikke nok; de udfyldte har altid <div class="well">. */

.brxe-post-content :is(td.kritikk-td, td.owner-td):not(:has(*)) {
	display: none;
}

/* Uden :has() ville reglen ovenfor falde bort og 13.523 tomme rækker komme
   tilbage. Så hellere den gamle adfærd dér. */
@supports not selector(:has(*)) {
	.brxe-post-content :is(td.kritikk-td, td.owner-td) {
		display: none;
	}
}

.brxe-post-content td.kritikk-td:has(*) {
	font-size: var(--std-text-3xs);
	font-style: italic;
	color: var(--std-text-muted);
	border-top: 0;
	padding-block: 0 var(--std-space-xs);
}

.brxe-post-content td.dog-show-td {
	padding: 0;
	height: 0.75rem;
	border-top: 0;
}

/* 2.302 tomme <td colspan="5"> uden klasse. De står før en klasse (1.725),
   et køn (364) eller en gruppeklasse (70) og sidst i tabellen (118). Med egen
   kantlinje gav de en dobbeltstreg med 12 px imellem før hver klasse. Nu er
   de luft. :not(:has(br)) holder info-rækken ude — den har altid <br>. */
.brxe-post-content table:has(td.dog-item) tr:has(+ tr > :is(td.klasse, td.sex-header)) > td:not([class]),
.brxe-post-content table:has(td.dog-item) tr:has(+ tr > td.heading) > td:not([class]):not(:has(br)),
.brxe-post-content table:has(td.dog-item) tr:last-child > td:not([class]) {
	border-top: 0;
}

/* Alle katalognummer-links på en side peger på den SAMME URL:
   udstillingens resultatside hos hundeweb, 182 unikke i hele korpus, én pr.
   side. a.Kritikk er ordet "Kritik" (6.827 gange), og 6.745 af dem har
   præcis samme URL som katalognummeret ved siden af. På hundeweb åbner et
   script kritikken ud fra data-dog-id; her fører linket til samme side som
   nummeret, og ordet lover noget det ikke giver. Det skjules derfor, og
   stds_hundeweb_source_link() lægger ét ærligt link efter tabellen. Det
   dækker også de 82 gruppeklasserækker, hvor "Kritik" var eneste link. */
.brxe-post-content a.Kritikk {
	display: none;
}

.brxe-post-content a[class^="Catalogue"] {
	white-space: nowrap;
}

/* Kildelinjen efter tabellen, fra stds_hundeweb_source_link(). */
.brxe-post-content .std-hundeweb {
	font-size: var(--std-text-s);
	margin-block-start: var(--std-space-m);
}

/* --- 2016-2018: to søskendetabeller pr. side -------------------------------
   51 sider (én fra 2016) har en ydre class="table " med dagens vindere
   (BIR, BIM, bedste baby …) og en indre .table-condensed med
   klasseresultaterne. Den ydre har kun td.grey og td.no-border som kroge,
   den indre ingen celleklasser overhovedet: 16.901 celler. Alt herunder
   hænger derfor på tabelklassen plus struktur (colspan, :empty, :has), og
   hver selektor er talt på alle 52 sider. Ingen af dem rammer de 182
   hundeweb-tabeller ("table table-striped" uden -condensed): 0 træf på de
   245 øvrige tabelsider. */

/* Ydre tabel: et dokument, ikke et gitter. Vinderblokkene er ens på alle
   51 sider — overskrift, navn, Ejere, Opdrætter (264 af 264) — og en streg
   over hver linje delte én hund i fire poster. Det tonede bånd skiller nu
   blokkene. td.no-border var originalens egen markering af netop det. */
.brxe-post-content table.table:not(.table-striped) td {
	border-top: 0;
	padding-block: var(--std-space-3xs);
}

/* Rækken lige før en navnerække (colspan 5 + katalognr.) er altid en
   vinderoverskrift: 264 af 264, intet andet. 24 sider fra 2016-2017 har
   mistet class="grey" på BIM, som derfor stod som brødtekst mellem to
   bånd. Strukturen fanger dem; td.grey alene gør ikke. td.grey står i sin
   egen regel: en browser uden :has() dropper hele selektorlisten, og så
   ville reglen ovenfor tage 0,4rem-polstringen fra alle 240 grå bånd. */
.brxe-post-content table.table:not(.table-striped) td.grey {
	padding-block: 0.4rem;
}

.brxe-post-content table.table:not(.table-striped) tr:has(+ tr > td[colspan="5"]) > td {
	font-weight: 700;
	color: var(--std-neutral-900);
	background: var(--std-surface-tint);
	padding-block: 0.4rem;
	padding-inline: 0.5rem;                                                 /* audit P3 INT-10: teksten stod på båndets kant */
}

.brxe-post-content table.table:not(.table-striped) td[colspan="5"] {
	color: var(--std-neutral-900);
	padding-block-start: 0.4rem;
}

/* Katalognummeret er metadata og holdes samlet. Før brød "Katalognr.: 0308"
   ved 320 px, så 150 af 264 navnerækker var to linjer høje; nu 18, og kun
   hvor navnet selv er langt. Median 52 -> 30 px. Fra 768 px, se nederst. */
.brxe-post-content table.table:not(.table-striped) td[colspan="5"] + td {
	width: 1%;
	white-space: nowrap;
	color: var(--std-text-muted);
	padding-block-start: 0.4rem;
	padding-inline-end: 0;
}

/* Ejere og Opdrætter: altid de to rækker efter navnet, 264 + 264. 7,11:1. */
.brxe-post-content table.table:not(.table-striped) tr:has(> td[colspan="5"]) + tr > td,
.brxe-post-content table.table:not(.table-striped) tr:has(> td[colspan="5"]) + tr + tr > td {
	color: var(--std-text-muted);
}

/* Permanent tomme: den afsluttende tomme række (51) og de fem tomme rækker
   over stævnetitlen — to width-skabeloner (4120, 4207) og tre tomme
   td.no-border. Afstandsrækken mellem Dommer og BIR (51) beholdes. */
.brxe-post-content table.table:not(.table-striped) tr:last-child:not(:has(> td:not(:empty))),
.brxe-post-content table.table:not(.table-striped) tr:has(~ tr > td > h3):not(:has(> td:not(:empty))) {
	display: none;
}

/* Indre tabel, målt kolonnebetydning i 1.961 hunderækker:
     1 placering (1-4; tom = uplaceret)
     2 kvalitet i <em> (Excellent, SL, Very good …)
     3 præmiering (CK, CERT, CACIB, BIR … eller "Ikke mødt")
     4 katalognr. og 5 "Kritik": tomme i 1.858 og 1.862 rækker; 201 af de
       202 udfyldte står på fire Gørlev-sider fra 2017
     6 hundens navn (tom i én række, 239-2017)
   Ingen ejerlinjer; de står kun i den ydre tabel. */

/* Kønsoverskrifter (Hanner, Tæver, Opdræts- og Avlsklasse: 134). Samme
   rolle og udtryk som hundewebs td.sex-header. */
.brxe-post-content table.table-condensed td[colspan="6"]:has(> h2) {
	border-top: 2px solid var(--std-neutral-900);
	padding-block: var(--std-space-s) 0.3rem;
}

.brxe-post-content table.table-condensed td[colspan="6"] > h2 {
	font-size: var(--std-text-l);
}

/* Klasseoverskrifter (619): ren tekst i en fuldbreddecelle. Stod før i
   samme vægt som hunderækkerne under dem. Som hundewebs td.klasse. */
.brxe-post-content table.table-condensed td[colspan="6"]:not(:empty):not(:has(*)) {
	font-weight: 600;
	color: var(--std-neutral-800);
	padding-block-start: 0.8rem;
	border-top-color: var(--std-border);
}

/* Første række under en kønsoverskrift har allerede den tykke streg. */
.brxe-post-content table.table-condensed tr:has(> td > h2) + tr > td {
	border-top: 0;
}

/* 666 tomme afstandsrækker mellem klasserne gav dobbelte streger, plus to
   tomme hundeweb-kritikbokse (div.info-box på 4097). Luften over
   klasseoverskriften overtager deres arbejde. */
.brxe-post-content table.table-condensed tr:has(> td[colspan="6"]:empty),
.brxe-post-content table.table-condensed tr:has(> td[colspan="6"] > div:empty:only-child) {
	display: none;
}

/* "Plac."-rækken (632) er kolonneoverskrift for én kolonne og hører til
   klasseoverskriften over den. */
.brxe-post-content table.table-condensed tr:has(> td:first-child > strong) > td {
	border-top: 0;
	padding-block: 0 var(--std-space-3xs);
	color: var(--std-text-muted);
}

/* Under overflow-wrap:anywhere er en celles min-content ét tegn, så
   tabelalgoritmen gav de smalle kolonner for lidt: ved 320 px var 1.206 ord
   i kvalitetskolonnen og 593 i placeringskolonnen brudt midt i
   ("Excell|ent", "Pla|c."), på alle 51 sider. Nu 0. Kolonne 1 ("Plac."
   eller ét ciffer), katalognumre og "Kritik" er enkeltord; ankrene holdes
   samlet i reglen for døde ankre nedenfor.
   Kun celler uden blokindhold: indlægget "Nye avlskrav pr. 1/12" (31/10) er en
   indsat hundeweb-side med samme klasser (table-striped table-condensed), hvor
   al teksten — overskrifter, lister, afsnit — står i første celle, og nowrap
   gjorde tabellen 2.923 px bred (v0.18.10). Resultatcellerne har kun kort tekst. */
.brxe-post-content table.table-condensed tr:not(:has(> td[colspan="6"])) > td:first-child:not(:has(p, ul, ol, dl, h1, h2, h3, h4, h5, h6, div, table, blockquote)) {
	white-space: nowrap;
}

/* Kvaliteten får en bund i stedet for nowrap: "Excellent" er 3,68em i PT
   Sans kursiv, men "Cannot be judged" (89 px) skal kunne ombryde. Med
   nowrap voksede tabellen på 4226 med 474 px ved 320; med bunden faldt den
   366 px. anywhere står tilbage som nødudgang. */
.brxe-post-content table.table-condensed tr:not(:has(> td[colspan="6"])) > td:nth-child(2):not(:empty) {
	min-width: calc(3.8em + 0.5rem);
}

/* Kolonne 4 og 5 er tomme på 46 af 51 sider, men højrepolstringen gav dem
   stadig 8 px hver — 16 af 288 px ved 320. Undtagelse: på 4207, 4226 og
   217-2017 holder én enlig "Katalognr."-overskrift kolonne 4 på 30-33 px,
   uden et eneste katalognummer under sig. Den er tekst og bliver stående. */
.brxe-post-content table.table-condensed td:empty {
	padding-inline-end: 0;
}

/* 466 <a> uden href (264 + 103 katalognumre, 99 "Kritik") fik linkfarve og
   understregning fra afsnit 3 og hånd-markøren fra Bricks' :where(a):
   røde, understregede, "klikbare" og døde. De 264 i den ydre tabel står
   allerede i en nowrap-celle. */
.brxe-post-content :is(table.table:not(.table-striped), table.table-condensed) a:not([href]) {
	color: inherit;
	text-decoration: none;
	cursor: auto;
	white-space: nowrap;
}

/* 8287 (2024): én række med tre <th> der kun rummer &nbsp; — korpusets
   eneste tabel uden en eneste <td>. Tegnede kun en løs streg. */
.brxe-post-content table.table-striped:not(:has(td)) tr {
	display: none;
}

@media (max-width: 480px) {
	/* På de fire Gørlev-sider er alle seks kolonner udfyldt, og navnet fik
	   kun 70 px ved 320. 0,3rem i stedet for 0,5rem mellem de udfyldte
	   kolonner giver navnet 3-8 px (7-8 på Gørlev). */
	.brxe-post-content table.table-condensed tr:not(:has(> td[colspan="6"])) > td:not(:last-child):not(:empty) {
		padding-inline-end: 0.3rem;
	}
}

@media (min-width: 768px) {
	/* Ved 1280 stod navnet 511-656 px inde (median 586), efter tre kolonner
	   af mest luft. Kolonne 1-5 krymper nu til indholdet (længste
	   præmiering 199 px), og navnet står 233-409 px inde (median 290):
	   placering, kvalitet, præmiering, navn læses i ét. */
	.brxe-post-content table.table-condensed tr:not(:has(> td[colspan="6"])) > td:not(:last-child):not(:empty) {
		width: 1%;
		white-space: nowrap;
		padding-inline-end: 1.25rem;
	}

	/* Samme fejl i den ydre tabel: med width:1% på katalognummeret stod det
	   i højre kant, 755-955 px efter navnets sidste tegn ved 1280 (median
	   836; før 554). Nu følger det navnet: 8-201 px, median 44. Navnet må
	   ikke ombryde her; den bredeste navnekolonne er 232 af 718 px ved 768,
	   og katalognummeret tager resten. Under 768 px gælder reglen ovenfor. */
	.brxe-post-content table.table:not(.table-striped) td[colspan="5"] {
		width: 1%;
		white-space: nowrap;
	}

	.brxe-post-content table.table:not(.table-striped) td[colspan="5"] + td {
		width: auto;
	}
}

/* --- Apple Pages-eksporten, 2015-2017 -------------------------------------
   54 sider (25 fra 2015, 26 fra 2016, 3 fra 2017) med to table.t1 hver:
   en vindertabel (BIR, BIM, bedste baby …) og en resultattabel (Hanner/Tæver,
   klasser, placeringer). 108 tabeller, 21.190 celler.

   tdN er Pages' celleformat PR. DOKUMENT, ikke en rolle. td11 er hundenavn
   i 860 celler og tom katalogkolonne i 270; BIM står i td2 på 51 sider, BIR
   i td3. Den gamle td2-regel gjorde BIM grå, mens BIR fik overskriftsfladen.
   Rollen læses i stedet af rækkestrukturen, der er ens i alle 108 tabeller
   (efterprøvet række for række mod markup'en: 0 fejltræf).

   Vindertabellen er den eneste t1 med 2-cellerækker (hundenavn + katalognr.,
   261 rækker); resultattabellen har ingen. Det skiller de to. */

/* WordPress' billedtekst bærer style="width: 300px". I en auto-tabel bliver
   det cellens mindstebredde: 300 + 8 px padding = 308 px i en 288 px spalte
   ved 320 px — de fem 2015-sider med foto løb 4 px ud af skærmen. Ikke
   navnene: resultattabellens mindstebredde er kun 86-99 px, fordi
   overflow-wrap:anywhere allerede bryder 'MyFairLadyGustavsonsElizaDolittle'.
   fit-content lader billedet (max-width:100%) give sig: 269 px ved 320 px,
   300 px fra 375 px. !important, fordi det er en inline-stil, jf. afsnit 6.
   Alene udvidede fit-content rammen til billedtekstens linjelængde: 419-508
   px ved 768-1280 px med et 300 px billede. contain:inline-size tager
   teksten ud af breddeberegningen, så rammen følger billedet som før. */
.brxe-post-content table.t1 .wp-caption[style*="width"] {
	width: fit-content !important;
}

.brxe-post-content table.t1 .wp-caption[style*="width"] > .wp-caption-text {
	contain: inline-size;
}

/* To tabeller har en fast højde fra editoren (style="height: 3878px" og
   "1516px"), og rækkerne strækkes til at fylde den. Ved 1280 px er 1.354 px
   af resultattabellen på 235-2015 ren luft (3.878 -> 2.524 px), og
   vindertabellen på 283-2015 har 220 px. */
.brxe-post-content table.t1[style*="height"] {
	height: auto !important;
}

/* Afsnit 4 gør <p><b> til en pseudo-overskrift: inline-block, egen farve
   og 1,1 em luft ovenover. Inde i Pages-cellerne rammer det alle 2.079 <b>
   (overskrifter, klasser, "Plac.", "Dommer") og lagde 15-24 px oven i
   paddingen nedenfor: prisoverskriften stod nederst i sit bånd, og
   kolonnerækkens dæmpede farve nåede aldrig teksten. Cellen styrer i
   stedet. Specificiteten (0,3,4) slår afsnit 4's (0,3,3). */
.brxe-post-content table.t1 td p :is(b, strong):only-child {
	margin-block-start: 0;
	color: inherit;
}

/* 535 <a> uden href (534 katalognumre og ét "Kritik") lignede links: røde
   og understregede, men de kan ikke klikkes. */
.brxe-post-content table.t1 a:not([href]) {
	color: inherit;
	text-decoration: none;
}

/* Vindertabel: racetitlen (SHIH TZU, 45 tabeller; 3 har klub og dato
   øverst) i samme rolle som td.white-bg. :has(b) holder den ene tabel ude,
   der starter direkte med "Antal tilmeldte …". Én tabel (2827) har en tom
   6-cellerække øverst — Pages' kolonneskabelon — som skjules. */
.brxe-post-content table.t1:has(td:first-child:nth-last-child(2)) > tbody > tr:first-child > td:only-child:has(b):not(:has(img)),
.brxe-post-content table.t1:has(td:first-child:nth-last-child(2)) > tbody > tr:first-child:has(> td:nth-child(6)) + tr > td:only-child {
	font-family: var(--std-font-head);
	font-size: var(--std-text-xl);
	font-weight: 700;
	color: var(--std-neutral-900);
	padding-block: 0.8rem 0.3rem;
	border-top: 0;
}

.brxe-post-content table.t1:has(td:first-child:nth-last-child(2)) > tbody > tr:first-child:has(> td:nth-child(6)) {
	display: none;
}

/* Prisoverskriften er rækken lige over en hunderække: 261 af 261
   (BIR 54, BIM 53, hvalp 53, baby 46, veteran 39, junior 16). Samme rolle
   som td.heading og td.grey i de senere år. */
.brxe-post-content table.t1:has(td:first-child:nth-last-child(2)) tr:has(+ tr > td:first-child:nth-last-child(2)) > td:only-child {
	font-weight: 700;
	color: var(--std-neutral-900);
	background: var(--std-surface-tint);
	padding-block: 0.4rem;
	padding-inline: 0.5rem;                                                 /* audit P3 INT-10: teksten stod på båndets kant */
}

/* Hunderækken og de to linjer under den (Ejere, Opdrætter — 522 af 522)
   er én blok: ingen streger inde i den, navnet fremhævet, resten dæmpet.
   neutral-600 på hvid er 7,1:1. */
.brxe-post-content table.t1:has(td:first-child:nth-last-child(2)) td:first-child:nth-last-child(2) {
	font-weight: 700;
	color: var(--std-neutral-900);
}

.brxe-post-content table.t1:has(td:first-child:nth-last-child(2)) tr:has(> td:first-child:nth-last-child(2)) > td,
.brxe-post-content table.t1:has(td:first-child:nth-last-child(2)) tr:has(> td:first-child:nth-last-child(2)) + tr > td,
.brxe-post-content table.t1:has(td:first-child:nth-last-child(2)) tr:has(> td:first-child:nth-last-child(2)) + tr + tr > td {
	border-top: 0;
}

.brxe-post-content table.t1:has(td:first-child:nth-last-child(2)) tr:has(> td:first-child:nth-last-child(2)) + tr > td,
.brxe-post-content table.t1:has(td:first-child:nth-last-child(2)) tr:has(> td:first-child:nth-last-child(2)) + tr + tr > td {
	color: var(--std-text-muted);
	padding-block-start: 0.1rem;
}

/* Resultattabel: Hanner/Tæver er første række, eller en enkeltcelle med en
   enkeltcelle før og efter og en flercellerække to længere nede (108 af 108;
   en tom afstandsrække falder ud, fordi den altid står lige efter data).
   Samme rolle som td.sex-header. */
.brxe-post-content table.t1:not(:has(td:first-child:nth-last-child(2))) > tbody > tr:first-child > td:only-child,
.brxe-post-content table.t1:not(:has(td:first-child:nth-last-child(2))) tr:has(> td:only-child) + tr:has(+ tr > td:only-child):has(+ tr + tr > td:nth-child(2)) > td:only-child {
	font-family: var(--std-font-head);
	font-size: var(--std-text-l);
	font-weight: 700;
	color: var(--std-neutral-900);
	border-top: 2px solid var(--std-neutral-900);
	padding-block: var(--std-space-s) 0.3rem;
}

/* Klassenavnet er enkeltcellen lige over en flercellerække (645: 642
   klasser + 3 "Tispe header boolean slutt Opdrætsklasse", der også er en
   klasseoverskrift). Samme rolle som td.klasse. */
.brxe-post-content table.t1:not(:has(td:first-child:nth-last-child(2))) tr:has(+ tr > td:nth-child(2)) > td:only-child {
	font-weight: 600;
	color: var(--std-neutral-800);
	padding-block-start: 0.8rem;
}

/* En enkeltcelle lige efter en data- eller kolonnerække er altid en tom
   afstandsrække: 609 af 609, kun &nbsp;. Klassens egen topmargen overtager
   luften. Den anden af to tomme rækker før Tæver (46) bliver stående: den
   kan ikke skilles fra de 8 rækker med hundeweb-restteksten "… header
   boolean slutt", og tekst skjules ikke. */
.brxe-post-content table.t1:not(:has(td:first-child:nth-last-child(2))) tr:has(> td:nth-child(2)) + tr:has(> td:only-child) {
	display: none;
}

/* Kolonnerækken ("Plac.", på 12 sider også "Katalognr.") er den eneste
   flercellerække med <b>: 633 af 633; datarækker har aldrig fed. */
.brxe-post-content table.t1:not(:has(td:first-child:nth-last-child(2))) tr:has(> td:nth-child(2)):has(b) > td {
	color: var(--std-text-muted);
	border-top: 0;
	padding-block: 0 var(--std-space-3xs);
}

/* Kolonnebredder i resultattabellen. Auto-layout fordeler efter
   max-content, så ved 320 px fik placering 25-28 px og bedømmelse 33-40 px:
   "Pla|c." brød 597 gange og "Excell|ent" 1.377 gange på de 54 sider.
   Gulvene er målt i siden: "Plac." 2,31 em, "Excellent" 3,66 em,
   "Sufficient" 3,78 em, "R.CACIB" 3,36 em. Katalogkolonnen får 2,8 em —
   nummeret er 2,18 em, men under det brød overskriften "Katalognr." i tre
   linjer. Den gælder kun celler med <a> (277 på 7 sider), så de 47 sider
   uden numre ikke betaler for en tom kolonne. 189-2016 har ét eneste
   nummer og får alligevel en 43 px kolonne ved 320 px (før 24 px); det
   kan ikke skilles ud uden at indlejre :has(), som ikke er tilladt.
   anywhere står som sikkerhedsnet: "Disqualified" (4,79 em, 4 celler),
   overskriften "Katalognr." (5,04 em, 12 sider) og det ene "Kritik" brydes
   stadig ved 320 px. Et gulv til den ene "Kritik"-celle gjorde dens side
   220-1.040 px højere. */
.brxe-post-content table.t1:not(:has(td:first-child:nth-last-child(2))) td:first-child:nth-last-child(6) {
	min-width: calc(2.4em + 0.5rem);
}

.brxe-post-content table.t1:not(:has(td:first-child:nth-last-child(2))) td:nth-child(2):nth-last-child(5) {
	min-width: calc(3.8em + 0.5rem);
}

.brxe-post-content table.t1:not(:has(td:first-child:nth-last-child(2))) td:nth-child(3):nth-last-child(4) {
	min-width: calc(3.4em + 0.5rem);
}

.brxe-post-content table.t1:not(:has(td:first-child:nth-last-child(2))) td:nth-child(4):nth-last-child(3):has(a) {
	min-width: calc(2.8em + 0.5rem);
}

/* Gulvene tager pladsen fra hundenavnet; uden andet blev 16 sider op til
   792 px højere ved 320 px. 40 % til navnet på telefon giver den tilbage.
   Over 480 px er der plads nok, og fordelingen røres ikke (navnet har
   38-51 % ved 768 og 1280 px, som før). */
@media (max-width: 480px) {
	.brxe-post-content table.t1:not(:has(td:first-child:nth-last-child(2))) td:nth-child(6):last-child {
		width: 40%;
	}
}

/* --- ægte datatabeller: Årets Shih Tzu-pointtabellerne ---------------------
   stds_data_table_headers (22) giver de 6 pointtabeller <thead>, th[scope]
   og klassen std-datatable — de eneste ægte datatabeller i korpus. Den
   rammer også produktionens afkortede 7284/7852/8597 (rækkeform 1, 5, 2).
   6378 står i en wp:table-blok, så WP indlejrer blokkens CSS EFTER
   style.css: .wp-block-table td{border:1px solid;padding:.5em} og
   thead{border-bottom:3px solid}. 2022 var derfor den eneste med fuldt
   gitter. Specificitet (0,2,2) og op slår blokkens (0,1,1).
   Ingen overflow-x: ved 320 px måler alle 6 tabeller 288 af 288 px. */

.brxe-post-content table.std-datatable {
	font-variant-numeric: tabular-nums;
	/* Dansk orddeling (lang="da-DK") før anywhere. Ved 320 px havde de 6
	   tabeller 111 ordbrud uden bindestreg ("tilmeldt/e", "VETERA/NER"), ved
	   375 px 48; nu brydes der ved stavelser ("til-meldte", "VETE-RANER").
	   Grænsen 6 3 3 sparer korte ord som "el-ler". Uden understøttelse:
	   anywhere, som i dag. */
	-webkit-hyphens: auto;
	hyphens: auto;
	hyphenate-limit-chars: 6 3 3;
}

.brxe-post-content table.std-datatable :is(td, th) {
	border: 0;
	border-top: 1px solid var(--std-neutral-100);
	padding: var(--std-space-2xs) 0.5rem var(--std-space-2xs) 0;
}

.brxe-post-content table.std-datatable :is(td, th):last-child {
	padding-inline-end: 0;
}

.brxe-post-content table.std-datatable thead {
	border-bottom: 0;
}

.brxe-post-content table.std-datatable th {
	font-weight: 700;
	color: var(--std-neutral-900);
}

/* Titelrækken ("POINT") har samme rolle som td.heading og får samme bånd.
   neutral-900 på surface-tint: 10,19:1. */
.brxe-post-content table.std-datatable thead tr:first-child > th {
	background: var(--std-surface-tint);
	padding-block: 0.4rem;
	padding-inline: 0.5rem;                                                 /* audit P3 INT-10: teksten stod på båndets kant */
	border-top: 0;
}

/* Kolonneoverskrifterne står på den kraftige linje, som td.sex-header. */
.brxe-post-content table.std-datatable thead tr:last-child > * {
	vertical-align: bottom;
	border-bottom: 2px solid var(--std-neutral-900);
}

/* Rækkeoverskrifterne er tre fede versaler (BIR+nbsp = 1,73em). I
   produktionens afkortede tabel er BIR eneste datarække; uden gulv fik
   kolonnen 26 px og "BI|R" knækkede ved 320 px. Gulvet giver 33 px og
   koster 0 px højde i de fulde tabeller. Et gulv, ikke en bredde:
   anywhere gælder stadig. */
.brxe-post-content table.std-datatable th[scope="row"] {
	min-width: calc(2em + 0.5rem);
}

/* Tallene står forrest i hver celle ("30 +" over "antal tilmeldte …").
   Venstrestillet med tabular-nums: højrestilling lægger 46 tegns prosa
   ragged-left, og "7+" / "7 +" / "25 +" i kilden flugter alligevel ikke. */

/* <p>&nbsp;</p> i 4 af 6 tabeller er en død linje (20-21 px) i hver
   datacelle; filteret sætter krogen. Ingen tekst. 1280 px: 525 -> 399 px.
   p:empty (wpautops løse </p> i 5150/5172) er målt til 0 px og røres ikke. */
.brxe-post-content table.std-datatable td p.std-blank {
	display: none;
}

/* --- bare layouttabeller ---------------------------------------------------
   153 (galleri): tre billeder og billedtekster i én celle, role=
   "presentation" fra filteret. Kantlinjen og højrepaddingen fra
   datatabellerne gav billedet 280 px og skubbede det 8 px ud af midten;
   nu 288 af 288 px ved 320. */

.brxe-post-content table.std-layouttable :is(td, th) {
	border: 0;
	padding: 0;
}

/* 4250 og 6951: én permanent tom celle i en wp:table-blok. Blokkens egen
   CSS tegnede en tom kasse med fuld ramme (34 og 15 px + figurmargen).
   To regler: en selektorliste med :has() falder helt bort i browsere uden
   :has(), og så ville også tabellen blive stående. */
.brxe-post-content table.std-layouttable--empty {
	display: none;
}

.brxe-post-content figure.wp-block-table:has(> table.std-layouttable--empty) {
	display: none;
}

/* ==========================================================================
   9. LAYOUT — to spaltebredder, ikke én
   Prosa vil have 65-75 tegn (520px ved 17px). Resultattabeller med 16.323
   celler vil have 1.100-1.200px. Den gamle ene spalte på 978px var 2,3x for
   bred til det første og for smal til det andet.

   Spaltebredderne sættes ikke her. Skabelonernes Bricks-elementer bruger
   --std-container-prose/-records direkte, og #brx-header/#brx-content
   (afsnit 13) bruger -records. Hjælpeklasserne .std-prose, .std-records,
   .std-measure og .std-measure-tight blev aldrig brugt og er fjernet
   (distill 2/10). Her står kun .std-wide, header- og footerindholdets
   ramme, og prosaens loft nedenfor.
   ========================================================================== */

.std-wide {
	max-width: var(--std-container-wide);
	margin-inline: auto;
	padding-inline: var(--std-gutter);
}

/* Prosaen er aldrig bredere end prosaspalten (brugerens valg 2/10, audit
   INT-09). Resultatskabelonen giver indholdet hele container-records
   (1076 px ved 1280), så afsnit dér løb 133-154 tegn pr. linje på de 30
   sider med længere tekst — almindelige sider har 76-94 (valgt 22/9). Nu
   stopper tekst, lister og overskrifter ved samme bredde som på en
   almindelig side: prosaspalten minus dens gutter, præcis den bredde
   STD Side giver indholdet. Dér ændres derfor intet. Tabeller, pointtabeller,
   galleri, fremviseren og afsnit med billeder, iframes eller tabeller
   beholder hele bredden. Ingen skabelon- eller element-ID'er (D23): reglen
   gælder overalt og virker kun, hvor spalten er bredere. Også prosa i det
   gamle temas indpakning (div.page > div.layoutArea > div.column på
   pointsiderne 2023-2026), ikke kun direkte børn. */
.brxe-post-content :is(p, ul, ol, dl, blockquote, h1, h2, h3, h4, h5, h6):not(table *, li *, figure *, .std-point *, .std-htm *, .std-galleri *):not(:has(img, iframe, video, table, figure, .std-galleri)) {
	max-width: calc(var(--std-container-prose) - 2 * var(--std-gutter));
}

/* ==========================================================================
   10. UNDERSTREGNINGER SOM SKILLETEGN
   ~106 sider i 9 af 11 sektioner bruger rækker af understregninger som
   visuel adskiller. Et the_content-filter laver dem om til
   <hr class="std-sep">; her er stilen. Fra v0.18.6 også de løse stjerner
   ("*", "**", "***": 236 afsnit), stds_star_separators().
   ========================================================================== */

.brxe-post-content hr,
.std-sep {
	border: 0;
	border-top: 1px solid var(--std-border);
	margin-block: var(--std-space-l);
}

/* Årstallene på vinderlisterne ("*2022*" -> <h2 class="std-aarstal">2022</h2>,
   stds_star_separators()). En lille mellemoverskrift: på h4's størrelse, så
   året står over vindernes navne (afsnit 4: brødtekstens størrelse) uden at
   råbe som en h2. */
.brxe-post-content .std-aarstal {
	font-size: var(--std-text-xl);
}

/* ==========================================================================
   11. SKÆRMLÆSERE
   ========================================================================== */

/* Bricks' egne spring-til-links (a.skip-link, frontend.php:1191-1194) er de
   to første tabstop på alle sider. Bricks giver dem #fff på #000 i @layer
   bricks, men lagregler taber til ulagdelte (afsnit 1), så afsnit 3's a og
   a:focus farvede dem: #910823 på #000 = 2,26:1 med fokus på alle 1.686
   links (843 adresser, målt 1/10). WCAG 1.4.3 kræver 4,5:1. Her får de
   husets farver i alle tilstande: hvid på rammen = 11,53:1. Bricks'
   skjulning (clip, 1 × 1 px, position i 0,0) gentages blot uden lag nedenfor.

   Ringen: brandrød mod rammen er 2,08:1, og ingen farve klarer 3:1 mod både
   #363942 og den lyse side bag linket. Derfor to farver: en hvid kant i
   ringens mellemrum (box-shadow på 2 px = outline-offset) og afsnit 2's røde
   ring udenom; den hvide kant mod linkets bund = 11,53:1. Margenen flytter
   linket fri af hjørnet, så ringen også ses til venstre og foroven — i 0,0
   lå de 5 px uden for skærmen. Målt med ægte Tab på 9 sider ved 375 og 1280
   (36 links, 1/10): tekst 11,53:1, rød ring mod den hvide kant 5,55:1 på
   alle fire sider. Bag ringen skifter det: den hvide side giver 5,55:1, men
   ved 1280 ligger underkanten på "Spring til hovedindhold" over det mørke
   logo (2,08:1) og højre kant på "Spring til sidefod" over headergrafikken
   (#ababab, 2,42:1) — 18 af 72 målte kanter. Dér bærer den hvide kant
   kontrasten. Teknik C40's 9:1 mellem de to farver kan brandrød ikke nå
   (højst 5,55:1, mod hvid). Den døde .std-skip-link-regel er fjernet:
   temaet har ikke haft sit eget spring-til-link siden header-skabelonen
   (inc/header.php ~299). */
.skip-link,
.skip-link:is(:hover, :focus) {
	color: var(--std-text-invert);
	background: var(--std-frame);
}

/* Bricks' skjulning gentaget uden lag, med Bricks' egne værdier — Safari/iOS
   < 15.4 dropper @layer, og så stod begge links synlige øverst på hver side
   (audit 1/10, P2). Bricks' afrundede hjørne er udeladt: uden lag ville det
   vinde over afsnit 2's 2 px, så fokusringen fik et andet hjørne (fundet af
   skeptikeren). I andre browsere ændrer reglen derfor intet. Ovenfor står
   :focus-visible ikke i listen — Safari < 15.4 kender den ikke, og :focus
   dækker den. */
.skip-link {
	position: absolute;
	top: 0;
	left: 0;
	z-index: 9999;
	padding: 5px 10px;
	font-weight: 700;
	white-space: nowrap;
}

.skip-link:not(:focus) {
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
}

.skip-link:focus {
	margin: var(--std-space-2xs);
}

.skip-link:focus-visible {
	box-shadow: 0 0 0 2px var(--std-surface);
}

.std-visually-hidden:not(:focus):not(:active) {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

/* ==========================================================================
   12. LAG 1 — WAYFINDING
   Brødkrumme, børneliste, forrige/næste og søskenderække. Alt afledt af
   post_parent og menu_order.
   ========================================================================== */

/* --- brødkrumme ----------------------------------------------------------- */

.stds-crumb {
	font-size: var(--std-text-s);
	color: var(--std-text-muted);
	margin-block-end: var(--std-space-s);
}

.stds-crumb__list {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0 0.35em;
	list-style: none;
	margin: 0;
	padding: 0;
}

.stds-crumb__sep {
	margin-inline-start: 0.35em;
	color: var(--std-neutral-400);
}

.stds-crumb [aria-current="page"] {
	color: var(--std-text);
	font-weight: 700;
}

/* På telefon fylder en seks-leddet sti tre linjer. Vis kun forælderen, og lad
   resten stå til rådighed for skærmlæsere og søgemaskiner. */
@media (max-width: 640px) {
	.stds-crumb__item {
		display: none;
	}

	.stds-crumb__item:nth-last-child(2) {
		display: inline;
	}

	.stds-crumb__item:nth-last-child(2) .stds-crumb__sep {
		display: none;
	}

	.stds-crumb__item:nth-last-child(2) a::before {
		content: "\2039\00a0";
	}
}

/* --- børneliste ----------------------------------------------------------- */

.stds-index {
	margin-block-start: var(--std-space-xl);
}

.stds-index__heading,
.stds-rail__heading {
	font-family: var(--std-font-head);
	font-size: var(--std-text-xl);
	line-height: var(--std-leading-tight);
	color: var(--std-neutral-900);
	margin: 0 0 var(--std-space-s);
	padding-block-end: 0.3em;
	border-block-end: 2px solid var(--std-neutral-900);
}

/* min(100%, 17rem): ved 200 % tekst er 17rem 544 px, og listen løb op til
   257 px ud af en telefon (målt 24/9, 71 sider). Ved normal tekst uændret. */
.stds-index__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr));
	gap: 1px;
	background: var(--std-border);
	border: 1px solid var(--std-border);
}

.stds-index__link {
	display: flex;
	flex-direction: column;
	gap: 0.15em;
	/* 44px minimum tapmål — det gamle site havde 24x21. */
	min-height: var(--std-target);
	justify-content: center;
	padding: var(--std-space-xs) 0.8rem;
	background: var(--std-surface);
	text-decoration: none;
	color: var(--std-link);
}

.stds-index__link:hover,
.stds-index__link:focus-visible {
	background: var(--std-surface-tint);
	color: var(--std-link-hover);
}

.stds-index__title {
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* Ved 200 % tekst løb lange titler ud af en telefon, fx "1/5 – 2026 DKK
   Nordisk, Roskilde “Vikingevinder…" med hårde mellemrum (målt 24/9: 26
   sider ved 320 px). Ingen flydende billeder her, og ved normal tekst passer
   ordene, så intet ændres. Søskendelisten og søgeuddragene fulgte efter
   (audit 1/10, RESP-4): 2026-pointsidens søskende løb 28 px ud ved 320 px,
   og en række understregninger i et uddrag 74 px. */
.stds-index__link,
.stds-pager__link,
.stds-rail__item :is(a, span),
.stds-news__excerpt,
.stds-results__excerpt {
	overflow-wrap: break-word;                                              /* Safari < 15.4 kender ikke anywhere */
	overflow-wrap: anywhere;
}

.stds-index__count {
	font-size: var(--std-text-3xs);
	color: var(--std-text-muted);
	text-decoration: none;
}

/* --- forrige / næste ------------------------------------------------------ */

.stds-pager {
	display: flex;
	flex-wrap: wrap;
	gap: var(--std-space-xs);
	margin-block-start: var(--std-space-xl);
}

.stds-pager__link {
	flex: 1 1 14rem;
	display: flex;
	flex-direction: column;
	gap: 0.15em;
	min-height: var(--std-target);
	padding: var(--std-space-xs) var(--std-space-s);
	border: 1px solid var(--std-border);
	border-radius: var(--std-radius);
	text-decoration: none;
	color: var(--std-link);
}

.stds-pager__link:hover,
.stds-pager__link:focus-visible {
	border-color: var(--std-link);
	background: var(--std-surface-tint);
}

.stds-pager__link--next {
	text-align: right;
}

.stds-pager__label {
	font-size: var(--std-text-3xs);
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--std-text-muted);
}

.stds-pager__title {
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* --- søskenderække -------------------------------------------------------- */

.stds-rail {
	margin-block-start: var(--std-space-xl);
	padding-block-start: var(--std-space-s);
}

.stds-rail__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.3rem;
}

.stds-rail__item :is(a, span) {
	display: inline-block;
	min-height: var(--std-target);
	line-height: var(--std-leading-snug);
	padding: 0.5rem 0.7rem;
	border: 1px solid var(--std-border);
	border-radius: var(--std-radius);
	font-size: var(--std-text-2xs);
	text-decoration: none;
	color: var(--std-link);
}

.stds-rail__item a:hover,
.stds-rail__item a:focus-visible {
	border-color: var(--std-link);
	background: var(--std-surface-tint);
	color: var(--std-link-hover);
}

.stds-rail__item.is-current span {
	background: var(--std-neutral-900);
	border-color: var(--std-neutral-900);
	color: var(--std-text-invert);
	font-weight: 700;
}

/* ==========================================================================
   13. LAG 2 — HEADER
   Erstatter en menu med 621 punkter, 110 KB markup pr. sidevisning og
   27.701 px udfoldet på telefon.
   ========================================================================== */

.stds-header {
	background: var(--std-surface);
	border-block-end: 1px solid var(--std-border);
}

.stds-main {
	background: var(--std-surface);
	padding-block: var(--std-space-l) var(--std-space-2xl);
}

/* Den hvide spalte på den mørke ramme.

   Under stilladset lå hele siden i én <div class="stds-main std-wide">, som
   bar både baggrund og bredde. Bricks lægger i stedet header, indhold og
   footer i hver sin rodbeholder, så kortet skabes her frem for i
   skabelonerne — så gælder det uanset hvilken indholds-skabelon der vinder,
   og en ny skabelon kan ikke komme til at glemme det.

   Footeren holdes udenfor med vilje: den hører til på rammen. */
#brx-header,
#brx-content {
	max-width: var(--std-container-records);
	margin-inline: auto;
	background: var(--std-surface);
}

/* --- øverste bånd: logo, søgning, hamburger ------------------------------- */

.stds-header__bar {
	display: flex;
	align-items: center;
	gap: var(--std-space-m);
	padding-block: var(--std-space-xs);
}

/* Logoet er klubbens runde mærke (se inc/header.php). Det vokser med
   vinduet fra 56 px på telefon til 76 px på brede skærme, i rem, så det
   følger brugerens skriftstørrelse. Linket er præcis så stort som billedet
   og rundt, så fokusringen følger cirklen. */
.stds-logo {
	display: flex;
	flex: 0 0 auto;
	border-radius: 50%;
	text-decoration: none;
}

/* font-size og line-height gælder kun alt-teksten, hvis billedet ikke kan
   hentes: så står "Shih Tzu Danmark" læseligt inden for de 56-76 px i
   stedet for klippet eller oven i sig selv. */
.stds-logo__img {
	display: block;
	width: clamp(3.5rem, 2.6rem + 2.2vw, 4.75rem);
	height: auto;
	font-size: 0.75rem;
	line-height: var(--std-leading-tight);
}

.stds-header__tools {
	display: flex;
	align-items: center;
	gap: var(--std-space-xs);
	flex: 0 0 auto;
	min-width: 0;
}

/* --- søgning -------------------------------------------------------------- */

.stds-search {
	display: flex;
	gap: 0;
}

.stds-search__input {
	font: inherit;
	font-size: var(--std-text-s);
	text-overflow: ellipsis;
	padding: 0.5rem 0.7rem;
	min-height: var(--std-target);
	width: clamp(9rem, 22vw, 18rem);
	border: 1px solid var(--std-border-field);
	border-inline-end: 0;
	border-radius: var(--std-radius) 0 0 var(--std-radius);
	background: var(--std-surface);
	color: var(--std-text);
}

/* Bricks' ::placeholder er var(--bricks-text-light) = #9e9e9e: 2,68:1 på
   hvid i alle 845 søgefelter (#stds-s-top på 843 adresser, -404 og -empty,
   målt 1/10). WCAG 1.4.3 kræver 4,5:1; text-muted giver 7,11:1.
   opacity:1, fordi Firefox ellers dæmper pladsholderen. */
.stds-search__input::placeholder {
	color: var(--std-text-muted);
	opacity: 1;
}

/* iOS Safari zoomer siden ind, når man trykker i et felt med under 16 px
   tekst — feltet var 14,5-15,3 px (målt 24/9). any-pointer, så også en iPad
   med tastatur og pegeplade (primær pegeenhed "fine") er med. På skrivebordet
   uden touch er feltet uændret. Pladsholderen er kort nok til de smalleste
   felter ved 16 px (inc/header.php). */
@media (any-pointer: coarse) {
	.stds-search__input { font-size: max(1rem, var(--std-text-s)); }
}

.stds-search__btn {
	font: inherit;
	font-size: var(--std-text-s);
	min-height: var(--std-target);
	padding-inline: var(--std-space-s);
	border: 1px solid var(--std-link);
	border-radius: 0 var(--std-radius) var(--std-radius) 0;
	background: var(--std-link);
	color: var(--std-text-invert);
	cursor: pointer;
}

.stds-search__btn:hover {
	background: var(--std-link-hover);
	border-color: var(--std-link-hover);
}

/* --- hamburger: 44x44, mod det gamle temas 24x21 med font-size:0 ---------- */

.stds-burger {
	display: none;
	/* flex-shrink:0 er baerende, ikke pynt: uden den klemte flexboksen
	   knappen fra 44 til 22 px, naar soegefeltet kraevede plads paa samme
	   raekke -- praecis den fejl det gamle temas 24x21 px-hamburger havde. */
	flex: 0 0 auto;
	width: var(--std-target);
	height: var(--std-target);
	padding: 0;
	border: 1px solid var(--std-border-field);
	border-radius: var(--std-radius);
	background: var(--std-surface);
	cursor: pointer;
}

.stds-burger__bars,
.stds-burger__bars::before,
.stds-burger__bars::after {
	display: block;
	width: 20px;
	height: 2px;
	margin-inline: auto;
	background: var(--std-neutral-900);
	content: "";
}

.stds-burger__bars::before { transform: translateY(-6px); }
.stds-burger__bars::after  { transform: translateY(4px); }

/* --- navigationen --------------------------------------------------------- */

/* Panelerne maales ud fra denne, ikke fra det enkelte menupunkt. Ankret paa
   <li>'et startede panelet 340-450 px inde, og bredde-klampen begraensede kun
   bredden -- ikke bredde plus venstreforskydning. Resultatet var vandret
   overloeb paa hele siden ved alt under ~1400 px: 296 px ved 900, 227 ved
   1024, 154 ved 1100, 98 ved 1200, 39 ved 1320. */
.stds-nav { position: relative; }

.stds-nav__list {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	list-style: none;
	margin: 0;
	padding: 0;
}

.stds-nav__item {
	display: flex;
	align-items: stretch;
}

.stds-nav__link {
	display: flex;
	align-items: center;
	min-height: var(--std-target);
	padding: 0.4rem 0.7rem;
	font-size: var(--std-text-s);
	color: var(--std-text);
	text-decoration: none;
	border-block-end: 3px solid transparent;
}

.stds-nav__link:hover {
	color: var(--std-link-hover);
	border-block-end-color: var(--std-border);
}

.stds-nav__item.is-current > .stds-nav__link {
	color: var(--std-neutral-900);
	font-weight: 700;
	border-block-end-color: var(--std-link);
}

.stds-nav__toggle {
	display: flex;
	align-items: center;
	min-width: 32px;
	min-height: var(--std-target);
	padding: 0 0.4rem 0 0;
	border: 0;
	background: none;
	cursor: pointer;
}

.stds-nav__chev {
	width: 0.45rem;
	height: 0.45rem;
	border-inline-end: 2px solid var(--std-text-muted);
	border-block-end: 2px solid var(--std-text-muted);
	transform: rotate(45deg) translate(-2px, -2px);
}

.stds-nav__toggle[aria-expanded="true"] .stds-nav__chev {
	transform: rotate(-135deg) translate(-2px, -2px);
}

/* Uden JS kan pilen ikke åbne sit panel; sektionslinket ved siden af virker. */
html:not(.stds-js) .stds-nav__toggle { display: none; }

/* --- panelerne ------------------------------------------------------------ */

.stds-panel {
	position: absolute;
	inset-block-start: 100%;
	/* Spaender over navigationslinjen. Kan dermed ikke loebe ud over
	   skaermen, uanset hvilket menupunkt der aabnede panelet. */
	inset-inline: 0;
	z-index: 50;
	display: flex;
	flex-wrap: wrap;
	gap: var(--std-space-m);
	/* Ikke en 190 px-kolonne der ikke kan scrolles. */
	max-height: min(70vh, 34rem);
	overflow-y: auto;
	padding: var(--std-space-m);
	background: var(--std-surface);
	border: 1px solid var(--std-border);
	border-block-start: 3px solid var(--std-link);
	box-shadow: 0 8px 24px rgb(54 57 66 / 12%);
}

.stds-panel[hidden] { display: none; }

.stds-panel__col { flex: 1 1 13rem; min-width: 0; }
.stds-panel__col--wide { flex: 2 1 22rem; }

.stds-panel__h {
	font-family: var(--std-font-head);
	font-size: var(--std-text-m);
	margin: 0 0 var(--std-space-2xs);
	padding-block-end: 0.25em;
	border-block-end: 1px solid var(--std-border);
}

.stds-panel__h a { text-decoration: none; color: var(--std-neutral-900); }
.stds-panel__h a:hover { color: var(--std-link-hover); text-decoration: underline; }

.stds-panel__list {
	list-style: none;
	margin: 0;
	padding: 0;
	font-size: var(--std-text-2xs);
}

.stds-panel__list a {
	display: block;
	min-height: 2rem;
	padding-block: 0.3rem;
	line-height: var(--std-leading-snug);
}

.stds-panel__chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.3rem;
	list-style: none;
	margin: 0;
	padding: 0;
}

.stds-chip {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 3.4rem;
	min-height: var(--std-target);
	padding-inline: 0.5rem;
	border: 1px solid var(--std-border);
	border-radius: var(--std-radius);
	font-size: var(--std-text-2xs);
	font-variant-numeric: tabular-nums;
	text-decoration: none;
}

.stds-chip:hover {
	border-color: var(--std-link);
	background: var(--std-surface-tint);
}

/* --- telefon og liggende telefon -------------------------------------------

   Grænsen var 860 px, men de 11 menupunkter skal bruge 927-940 px på én
   række (målt 1/10 ved 900-1280; mere med berøringsmålene nedenfor). Fra 861
   til ca. 990 px stod menuen derfor i to rækker, og på en liggende telefon
   (896 × 414, 915 × 412, 932 × 430) var headeren 170 px — 40 % af skærmen —
   og et panel rullede ud over skærmkanten (audit 1/10, RESP-6). Nu får alt
   til og med 1000 px skuffen. I em, så grænsen følger brugerens
   skriftstørrelse i browseren som menuens tekst gør: ved 200 % er den
   2.000 px. Sidezoom flytter begge ens. Menuens beholder,
   --std-container-records, er i rem fra v0.18.5 (71.25rem), så den også
   vokser: én række over grænsen ved browserskrift 20, 24 og 32 px (målt 2/10;
   i v0.18.4 to rækker fra 1251 px ved 20 px). */

@media (max-width: 62.5em) {
	.stds-burger { display: block; }

	.stds-header__bar { flex-wrap: wrap; }

	/* Soegefeltet og burgeren ligger i .stds-header__tools, men reglerne
	   herunder (order + flex-basis 100%) skal virke mod .stds-header__bar.
	   display:contents lader de to boern deltage direkte i bar'ens flexboks,
	   saa soegefeltet faar sin egen raekke i stedet for at dele raekke med
	   burgeren. Uden den blev formularen 289 px bred fra x=48 i et 320 px
	   vindue -- 16 px vandret overloeb med Soeg-knappen uden for skaermen. */
	.stds-header__tools { display: contents; }

	.stds-search {
		order: 3;
		flex: 1 0 100%;
		min-width: 0;
		padding-block-end: var(--std-space-xs);
	}

	.stds-search__input {
		width: 100%;
		min-width: 0;
	}

	/* Uden JS står menuen åben — bedre end en skuffe der ikke kan åbnes —
	   og burgeren, der intet kan, er skjult. html.stds-js sættes i <head>
	   (functions.php), før siden males; før klappede skuffen sammen, når
	   header.js kørte sidst i footeren (layoutskift ~0,5). */
	.stds-js .stds-header .stds-nav { display: none; }
	.stds-js .stds-header.is-open .stds-nav { display: block; }
	html:not(.stds-js) .stds-burger { display: none; }

	.stds-nav__list { flex-direction: column; }

	.stds-nav__item {
		flex-wrap: wrap;
		border-block-start: 1px solid var(--std-neutral-100);
	}

	.stds-nav__link {
		flex: 1 1 auto;
		border-block-end: 0;
		border-inline-start: 3px solid transparent;
	}

	.stds-nav__item.is-current > .stds-nav__link {
		border-block-end: 0;
		border-inline-start-color: var(--std-link);
	}

	.stds-panel {
		position: static;
		flex: 1 0 100%;
		width: auto;
		max-height: none;
		border: 0;
		border-block-start: 1px solid var(--std-neutral-100);
		box-shadow: none;
		padding-inline: var(--std-space-s);
	}
}

/* Fra 600 px er der plads til logo, søgefelt og burger på én række. Med
   søgefeltet på egen række var headeren 157-160 px — 38 % af en liggende
   telefons skærm (896 × 414) — nu 76-84 px fra 600 til 1000 px (audit 1/10,
   RESP-6). Feltet er bredt nok til pladsholderen ved 16 px (berøring). */
@media (min-width: 37.5em) and (max-width: 62.5em) {
	/* Baren ombryder stadig: er der ikke plads (stor tekst), går søgefelt og
	   burger samlet ned på næste række, som før. */
	.stds-header__tools {
		display: flex;
		flex: 0 1 auto;
		min-width: 0;
		margin-inline-start: auto;
	}

	/* Kan krympe (min-width 0), så rækken ikke løber ud ved stor tekst. */
	.stds-search {
		order: 0;
		flex: 0 1 clamp(16rem, 38vw, 22rem);
		min-width: 0;
		padding-block-end: 0;
	}

	.stds-search__input {
		width: 100%;
		min-width: 0;
	}
}

/* Wayfinding-blokken har en topmargen. Er alle tre elementer inde i den
   tomme — forsiden, udstillingskalenderen og de fem enebørn uden børn —
   efterlod den 24-32 px dødt luft før footeren. Bricks udelader selv de
   tomme shortcode-wrappere, men ikke blokken omkring dem. */
#stds-main > .brxe-block:empty {
	margin: 0;
	padding: 0;
}

/* --- lister: nyheder, søgeresultater, 404 ---------------------------------- */

.stds-news__list,
.stds-results__list,
.stds-404__sections {
	list-style: none;
	margin: 0;
	padding: 0;
}

.stds-news__heading,
.stds-search__heading {
	font-size: var(--std-text-4xl);
	margin-block: 0 var(--std-space-s);
}

.stds-news__item + .stds-news__item,
.stds-results__item + .stds-results__item {
	margin-block-start: var(--std-space-l);
	padding-block-start: var(--std-space-l);
	border-block-start: 1px solid var(--std-neutral-100);
}

.stds-news__title,
.stds-results__title {
	font-size: var(--std-text-xl);
	margin: 0 0 var(--std-space-2xs);
}

.stds-news__title a,
.stds-results__title a { text-decoration: none; }
.stds-news__title a:hover,
.stds-results__title a:hover { text-decoration: underline; }

/* Datoen er meta, ikke brødtekst. Samme rolle som billedteksterne. */
.stds-news__meta {
	margin: 0 0 var(--std-space-2xs);
	font-size: var(--std-text-s);
	color: var(--std-text-muted);
}

.stds-news__excerpt,
.stds-results__excerpt { margin: 0; }

/* Stien giver konteksten titlen mangler: "Årets Veteran 2025" siger ikke
   hvilket år man står i, på et femniveau-site. */
.stds-results__path {
	margin: 0 0 var(--std-space-2xs);
	font-size: var(--std-text-s);
	color: var(--std-text-muted);
}

.stds-search__count {
	margin-block: 0 var(--std-space-l);
	color: var(--std-text-muted);
}

.stds-news__pager ul {
	display: flex;
	flex-wrap: wrap;
	gap: var(--std-space-2xs);
	list-style: none;
	margin: var(--std-space-xl) 0 0;
	padding: 0;
}

.stds-news__pager a,
.stds-news__pager span {
	display: flex;
	align-items: center;
	min-height: var(--std-target);
	padding-inline: 0.8rem;
	border: 1px solid var(--std-border);
	border-radius: var(--std-radius);
	text-decoration: none;
}

/* Samme sprog som søskendelisten (afsnit 12) og pointfilteret: "her er du"
   er mørk, et link bliver lyserødt ved hover (audit P3 INT-11). Før var det
   aktuelle sidetal en rød flade og sidetallene uden hover. */
.stds-news__pager a:hover,
.stds-news__pager a:focus-visible {
	border-color: var(--std-link);
	background: var(--std-surface-tint);
	color: var(--std-link-hover);
}

.stds-news__pager .current {
	background: var(--std-neutral-900);
	border-color: var(--std-neutral-900);
	color: var(--std-text-invert);
	font-weight: 700;
}

/* 404: sektionslisten er svaret på en død URL, ikke pynt. To kolonner, så
   alle elleve sektioner kan ses uden at scrolle. */
.stds-404__sections {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
	gap: var(--std-space-2xs) var(--std-space-m);
	margin-block-start: var(--std-space-s);
}

.stds-404__sections a {
	display: block;
	min-height: var(--std-target);
	padding-block: var(--std-space-xs);
}

.stds-404 .stds-search,
.stds-results .stds-search { margin-block: var(--std-space-m); }

.stds-empty { color: var(--std-text-muted); }

/* --- footer --------------------------------------------------------------- */

.stds-footer {
	background: var(--std-frame);
	color: var(--std-text-on-dark-muted);
	padding-block: var(--std-space-xl);
	font-size: var(--std-text-s);
}

/* min(100%, …): ved 200 % tekst er 12rem 384 px — bredere end en telefon —
   og gitteret løb ud af skærmen (målt 24/9: footeren på alle 840 adresser ved
   320 og 375 px). Nu bliver det én kolonne. Ved normal tekst er 12rem altid
   smallere end 100 %, så intet ændres. */
.stds-footer__cols {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
	gap: var(--std-space-m);
}

.stds-footer__h {
	font-family: var(--std-font-head);
	font-size: var(--std-text-m);
	margin: 0 0 var(--std-space-2xs);
	color: var(--std-text-invert);
}

.stds-footer__h a { color: var(--std-text-invert); text-decoration: none; }
.stds-footer__h a:hover { text-decoration: underline; }

.stds-footer ul { list-style: none; margin: 0; padding: 0; }
.stds-footer li a { display: block; padding-block: 0.25rem; }

.stds-footer__meta {
	margin-block-start: var(--std-space-l);
	padding-block-start: var(--std-space-s);
	border-block-start: 1px solid var(--std-neutral-700);
	font-size: var(--std-text-2xs);
}

/* --- berøring: 44 px ------------------------------------------------------

   De tætte lister klarede WCAG 2.5.8 (24 px), men ikke de 44 px, en finger
   skal bruge: footerlinks 31 px, footeroverskrifter 23, panellister 32,
   brødkrummen og pointnavigationen 19, skuffens pile 32 brede og sidetal 37
   (målt ved 375 px på 843 adresser, audit 1/10 RESP-5). Kun ved berøring —
   med mus er de tætte lister lettere at overskue og rammes fint. any-pointer,
   så en iPad med pegeplade også er med (som søgefeltet ovenfor).
   Katalognumrene i resultattabellerne er bevidst udeladt: tabellerne skal
   være tætte, og AA holder. */
@media (any-pointer: coarse) {
	.stds-footer li a,
	.stds-panel__list a {
		display: flex;
		align-items: center;
		min-height: var(--std-target);
	}

	.stds-footer__h a,
	.stds-crumb a,
	.brxe-post-content .std-point__nav a {
		display: inline-flex;
		align-items: center;
		min-height: var(--std-target);
	}

	/* Korte ord ("Om", "Baby") gav 33-44 px brede mål. */
	.stds-crumb a,
	.brxe-post-content .std-point__nav a {
		justify-content: center;
		min-width: var(--std-target);
	}

	/* Pilen bliver 12 px bredere; linkets højreluft foran den går fra, så
	   menuen fylder det samme som med mus (930 px, én række fra ca. 985 px —
	   ellers 955 og to rækker til 1015 px), og pilen står omtrent, hvor den
	   stod. */
	.stds-nav__toggle {
		justify-content: center;
		min-width: var(--std-target);
		padding: 0;
	}

	.stds-nav__link:has(+ .stds-nav__toggle) {
		padding-inline-end: 0;
	}

	.stds-news__pager :is(a, span) {
		justify-content: center;
		min-width: var(--std-target);
	}
}

/* ==========================================================================
   14. LIGHTBOX OG GALLERI
   Målt over hele korpus 23. september: 2.408 billeder, heraf 1.301 i
   /galleri/. easy-fancybox gav lightbox til 22,7 % — i galleriet 13,3 % —
   fordi den kun binder til links, og 1.874 billeder har intet link.
   stds_lightbox_images() (inc/billeder.php) pakker dem ind i et link til den
   største fil, hvor det giver en større udgave, og samler albummenes løb af
   billeder i div.std-galleri. Tryk i prosaen på telefon, titler og rolig
   bevægelse styres af assets/js/lightbox.js.
   ========================================================================== */

.brxe-post-content a.std-lightbox {
	cursor: zoom-in;
}

/* WordPress' .wp-block-image a{display:inline-block} står på grundlinjen i
   figure.aligncenter (display:table) og gav 8,2 px ekstra luft under 267
   billeder på 133 sider — også resultatsider der skulle være uændrede. */
.brxe-post-content figure > a.std-lightbox {
	vertical-align: bottom;
}

/* Fokusringen på billedet, ikke på linket: et inline <a> om et blokbillede
   tegner ingen outline i Chrome. 58 nye og 106 eksisterende billedlinks
   havde usynligt fokus. Gruppelinks indeholder aldrig tekst. */
.brxe-post-content :is(a.std-lightbox, a[rel^="std-lightbox-"]):has(> img):focus-visible {
	outline: none;
}

.brxe-post-content :is(a.std-lightbox, a[rel^="std-lightbox-"]):focus-visible > img {
	outline: 3px solid var(--std-focus);
	outline-offset: 2px;
}

/* Albumsiden: griddet må gå ud over prosaspalten, op til container-wide —
   i praksis til .stds-main's bredde (container-records minus gutter, 1076 px
   ved 1280), fordi 100cqw er .stds-main (målt 2/10).
   Containerenheden (cqw) i stedet for vw, fordi 100vw tæller en fast
   rullebjælke med og ville give vandret overløb på Windows. */
.stds-main:has(.std-galleri) {
	container-type: inline-size;
}

/* To kolonner helt ned til ~300 px: med 9rem blev det én kolonne ved 320,
   billeder i fuld bredde, beskåret og op til 1,69 gange opskaleret. */
.brxe-post-content .std-galleri {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 8.5rem), 1fr));
	gap: var(--std-space-2xs);
}

@media (min-width: 768px) {
	.brxe-post-content .std-galleri {
		grid-template-columns: repeat(auto-fill, minmax(min(100%, 12rem), 1fr));
		gap: var(--std-space-xs);
	}
}

/* Udbruddet først fra 900 px: ved 768-800 gik griddet kun 4-20 px ud over
   teksten, hvilket ligner en fejl. Korte løb (under fem billeder) bliver i
   spalten og flugter med teksten i stedet for at hænge til venstre. */
@media (min-width: 900px) {
	.brxe-post-content .std-galleri:not(.std-galleri--kort) {
		--std-galleri-w: min(var(--std-container-wide), 100cqw) - 2 * var(--std-gutter);
		width: calc(var(--std-galleri-w));
		margin-inline: calc((100% - (var(--std-galleri-w))) / 2);
	}
}

/* Billeder i <p> bliver selv celler. Et <p> uden billede i griddet kan kun
   være et tomt afstandsafsnit — tekst afslutter løbet i filteret. Kun
   linjeskift MELLEM billederne skjules; dem inde i billedteksterne bærer
   teksten (uden dem stod der "2024Up-To-Stars"). */
.brxe-post-content .std-galleri > p {
	display: contents;
}

.brxe-post-content .std-galleri > p:not(:has(img)),
.brxe-post-content .std-galleri > p > br,
.brxe-post-content .std-galleri a > br {
	display: none;
}

/* align-self:start: ellers strækkes linket til rækkens højde, når naboen
   har billedtekst, og fokusring og klikflade omslutter tom plads. */
.brxe-post-content .std-galleri a,
.brxe-post-content .std-galleri > :is(figure, div) {
	display: block;
	align-self: start;
	margin: 0;
}

/* WordPress' blokbibliotek giver .wp-block-image margin-block:1em med
   specificitet (0,6,0) — fem :not(.align…) tæller hver for sig. Det gav
   34 px luft mellem rækkerne i stedet for gap'et. Samme kæde, én mere. */
.brxe-post-content .std-galleri > .wp-block-image:not(.alignleft):not(.aligncenter):not(.alignright):not(.alignwide):not(.alignfull) {
	margin-block: 0;
}

/* .wp-block-image .aligncenter er display:table og krymper figuren til
   sizes-værdien: 160 px billeder i 288 px celler ved 320. display:block
   ville gøre figcaption til sin egen smalle tabel. */
.brxe-post-content .std-galleri .wp-block-image figure {
	width: 100%;
}

/* WordPress' billedtekst bærer style="width: 810px"; inline, derfor
   !important, jf. afsnit 6. Den gamle wp-caption-ramme (1 px kant, 5 px
   polstring, max-width 96 %) gjorde 46 celler smallere og lavere end
   naboerne. Justeringsklasserne centrerer og flyder. */
.brxe-post-content .std-galleri :is(figure, .wp-caption)[style*="width"] {
	width: auto !important;
}

.brxe-post-content .std-galleri .wp-caption {
	padding: 0;
	border: 0;
	background: none;
	max-width: none;
}

.brxe-post-content .std-galleri :is(.aligncenter, .alignleft, .alignright, .alignnone) {
	float: none;
	margin: 0;
}

/* 3:2 er det hyppigste format i albummene, og 261 af 287 målte er
   liggende. Løb med overvejende stående billeder (årsrosetterne: 25 af 26)
   får stående miniaturer. Lightboxen viser altid hele billedet. */
.brxe-post-content .std-galleri img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	margin: 0;
}

.brxe-post-content .std-galleri--staaende img {
	aspect-ratio: 3 / 4;
}

.brxe-post-content .std-galleri :is(figcaption, .wp-caption-text) {
	font-size: var(--std-text-3xs);
	margin-block-start: 0.3em;
}

/* Et billede, der ikke kan hentes, markeres .is-brudt af et lille script
   (inc/billeder.php). Med sin width="1024" i en figure.aligncenter
   (display:table) skubbede det siden 720 px ud til siden på en telefon; nu
   holder figuren sig i spalten. Billeder, der kan hentes, rammes ikke. */
.brxe-post-content figure:has(img.is-brudt) {
	display: block;
	max-width: 100%;
}

.brxe-post-content img.is-brudt {
	max-width: 100%;
	height: auto;
}

/* Knib-zoom med åben lightbox. fancybox 1.5.4 sætter touch-action: none på
   html og body (jquery.fancybox.css:18). Har man zoomet ind, før man trykker
   på et billede, ligger Luk, Næste og Forrige uden for skærmen, og man kan
   ikke knibe sig ud igen — målt 24/9 i Chromes emulering ved 1,6-2,5× på
   telefon og iPad. manipulation tillader knib og panorering (siden bag kan
   ikke rulle: html og body har overflow:hidden). Ved 1× skifter et vandret
   træk billede som før; zoomet ind panorerer én finger i stedet — det sørger
   assets/js/lightbox.js for. */
html.fancybox-active:not(.fancybox-allowscroll),
html.fancybox-active:not(.fancybox-allowscroll) body {
	touch-action: manipulation !important;
}

/* fancybox drejer Luk, Næste og Forrige 360° ved hover (jquery.fancybox.css:
   .fancy-ico span{transition:transform .25s} og #fancybox-close:hover span
   {transform:rotate(360deg)}), også når brugeren har bedt om mindre
   bevægelse (audit P3 INT-11). fancybox' CSS kommer efter style.css, så
   html foran giver det ene ekstra led, der skal til. */
@media (prefers-reduced-motion: reduce) {
	html .fancy-ico span {
		transition: none;
	}

	html :is(#fancybox-close, #fancybox-next, #fancybox-prev):hover span {
		transform: none;
	}
}

/* ==========================================================================
   15. RESULTATER 2010-2013 — FREMVISEREN
   inc/htm.php læser Excel-filerne fra web-roden og skriver dem ud som ren
   datatabel: <caption> for udstillingen, <th scope="col"> for kolonnerne og
   <th scope="row"> for hundens navn. 10-11 kolonner passer i resultatspalten
   fra 900 px; mellem 768 og 880 knækkede ord som "Præmierin|g" på 64 sider,
   så under 900 px bliver hver række en blok med kolonnenavnet foran hver
   værdi — der er rigtige overskrifter at aflede dem af, modsat
   hundeweb-tabellerne, og hver række er én hund. Eksplicitte ARIA-roller i
   markup'en bevarer tabellens semantik, når rækkerne vises som blokke.
   ========================================================================== */

.brxe-post-content .std-htm__tabel {
	font-variant-numeric: tabular-nums;
}

.brxe-post-content .std-htm__tabel + .std-htm__tabel,
.brxe-post-content .std-htm__note + .std-htm__tabel {
	margin-block-start: var(--std-space-l);
}

.brxe-post-content .std-htm__tabel caption {
	caption-side: top;
	text-align: left;
	font-family: var(--std-font-head);
	font-size: var(--std-text-m);
	font-weight: 700;
	color: var(--std-neutral-900);
	padding-block-end: var(--std-space-xs);
}

.brxe-post-content .std-htm__tabel thead th {
	font-weight: 700;
	color: var(--std-neutral-900);
	vertical-align: bottom;
	border-top: 0;
	border-bottom: 2px solid var(--std-neutral-900);
}

.brxe-post-content .std-htm__tabel th[scope="row"] {
	font-weight: 700;
	color: var(--std-neutral-900);
}

/* Excels tomme rækker var skillelinjer mellem klasserne; de er ikke med,
   men rækken efter dem starter en ny gruppe. Nyt køn er den tunge linje.
   Kun som tabel — i blokvisningen er stregen på rækken, ikke på cellerne. */
@media (min-width: 900px) {
	.brxe-post-content .std-htm__tabel tbody tr.is-gruppe > * {
		border-top-color: var(--std-border-strong);
		padding-block-start: var(--std-space-xs);
	}

	.brxe-post-content .std-htm__tabel tbody tr.is-nyt-koen > * {
		border-top: 2px solid var(--std-neutral-900);
	}
}

.brxe-post-content :is(.std-htm__note, .std-htm__mangler) {
	font-size: var(--std-text-xs);
	color: var(--std-text-muted);
	margin-block-start: var(--std-space-s);
}

.brxe-post-content .std-htm__mangler {
	font-size: var(--std-text-base);
	color: var(--std-text);
}

/* Tibet 2010 er en liste uden kolonner, ikke en tabel. */
.brxe-post-content .std-htm__tekst p {
	margin-block: 0 0.25em;
}

@media (max-width: 899px) {
	.brxe-post-content .std-htm__tabel,
	.brxe-post-content .std-htm__tabel :is(caption, tbody, tr, th, td) {
		display: block;
	}

	/* Kolonneoverskrifterne står foran hver værdi; rækken selv er skjult
	   visuelt, men findes for skærmlæsere. */
	.brxe-post-content .std-htm__tabel thead,
	.brxe-post-content .std-htm__tabel tbody td:is([data-label="Han/tæve"], [data-label="Klasse"]) {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip-path: inset(50%);
		white-space: nowrap;
	}

	.brxe-post-content .std-htm__tabel tbody tr {
		padding-block: 0.55rem;
		border-top: 1px solid var(--std-neutral-100);
	}

	.brxe-post-content .std-htm__tabel tbody tr.is-gruppe {
		border-top-color: var(--std-border-strong);
	}

	.brxe-post-content .std-htm__tabel tbody tr.is-nyt-koen {
		border-top: 2px solid var(--std-neutral-900);
	}

	.brxe-post-content .std-htm__tabel tbody :is(td, th) {
		border: 0;
		padding: 0;
	}

	/* Tomme celler bliver i AX-træet med højden 0: med display:none regnede
	   Chrome kolonnerne forkert, og op til 120 af 203 værdier stod under
	   en forkert overskrift for skærmlæsere. */
	.brxe-post-content .std-htm__tabel tbody td:empty {
		height: 0;
		overflow: hidden;
	}

	.brxe-post-content .std-htm__tabel tbody td[data-label]:not(:empty)::before {
		content: attr(data-label) ": ";
		color: var(--std-text-muted);
	}

	/* Køn og klasse øverst i hver hundeblok, altid samme linje. Værdierne
	   står som data-koen/data-klasse på alle hunderækker — også dem, hvor
	   Excel skrev "som ovenfor" med en tom celle. CSS-tekst, ikke DOM-tekst:
	   indholdet er uændret, og cellerne selv findes stadig for
	   skærmlæsere. */
	.brxe-post-content .std-htm__tabel tbody tr.is-hund:is([data-koen], [data-klasse])::before {
		display: block;
		font-size: var(--std-text-3xs);
		color: var(--std-text-muted);
	}

	.brxe-post-content .std-htm__tabel tbody tr.is-hund[data-koen][data-klasse]::before {
		content: attr(data-koen) " " attr(data-klasse);
	}

	.brxe-post-content .std-htm__tabel tbody tr.is-hund[data-koen]:not([data-klasse])::before {
		content: attr(data-koen);
	}

	.brxe-post-content .std-htm__tabel tbody tr.is-hund[data-klasse]:not([data-koen])::before {
		content: attr(data-klasse);
	}

	.brxe-post-content .std-htm__tabel th[scope="row"] {
		font-size: var(--std-text-s);
		margin-block: 0.1rem 0.15rem;
	}

	.brxe-post-content .std-htm__tabel th[scope="row"]::before {
		content: none;
	}
}

/* ==========================================================================
   16. ÅRETS SHIH TZU 2022-2026 — POINTTABELLERNE
   inc/point.php læser klubbens regneark (.htm fra "Gem som webside" eller
   .xlsx) og skriver stillingen ud på konkurrencesiden: én tabel pr.
   kategori med <th scope="col"> for hver udstilling og hundens navn som
   <th scope="row">. 2-30 udstillinger pr. år (2022: 29, 2025: 30) giver op
   til 35 kolonner — mere end 1076 px kan bære. Derfor rulles tabellen
   vandret på computer, med placering og navn stående fast til venstre;
   det er sitets eneste vandret rullende tabel (PLAN.md, afsnit 2).
   Fra 1024 px passer alle fem år uden rulning (målt ved 1024, 1280 og
   1440); under 1024 px bliver hver hund et kort, og kun de udstillinger,
   hunden fik point på, står i kortet. Eksplicitte ARIA-roller i markup'en
   bevarer tabellens semantik, når rækkerne vises som blokke (samme
   greb som afsnit 15).
   ========================================================================== */

.brxe-post-content .std-point {
	margin-block: var(--std-space-l) var(--std-space-xl);
}

.brxe-post-content .std-point > h2 {
	margin-block-end: var(--std-space-2xs);
}

.brxe-post-content .std-point__meta,
.brxe-post-content .std-point__arkiv {
	font-size: var(--std-text-s);
	color: var(--std-text-muted);
	margin-block: 0 var(--std-space-s);
}

.brxe-post-content .std-point__arkiv {
	color: var(--std-text);
	background: var(--std-surface-tint);
	border-inline-start: 3px solid var(--std-link);
	padding: var(--std-space-xs) var(--std-space-s);
}

/* Kategorierne som springlinks. */
.brxe-post-content .std-point__nav ul {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem 1.1rem;
	list-style: none;
	margin: 0 0 var(--std-space-s);
	padding: 0;
	font-size: var(--std-text-s);
}

.brxe-post-content .std-point__nav li {
	margin: 0;
}

.brxe-post-content .std-point__forklaring {
	list-style: none;
	margin: 0 0 var(--std-space-m);
	padding: 0;
	font-size: var(--std-text-xs);
	color: var(--std-text-muted);
}

.brxe-post-content .std-point__forklaring li {
	margin-block: var(--std-space-3xs);
	overflow-wrap: break-word;                                              /* "udstillingsresultaterne." ved 200 % tekst */
}

/* Mærket for en ejer, der ikke er medlem: tekst, ikke kun farve (WCAG 1.4.1). */
.brxe-post-content .std-point__maerke {
	display: inline-block;
	font-family: var(--std-font-body);
	font-size: var(--std-text-3xs);
	font-weight: 700;
	line-height: var(--std-leading-snug);
	letter-spacing: 0.03em;
	text-transform: uppercase;
	white-space: nowrap;
	color: var(--std-link-hover);
	border: 1px solid currentColor;
	border-radius: 2px;
	padding: 0 0.3rem;
	vertical-align: 0.1em;
}

.brxe-post-content .std-point__type {
	font-weight: 700;
}

/* Køn i Voksne: dæmpet mærke, så "Ikke medlem" stadig er det, der springer i
   øjnene. Tekst, ikke farve (WCAG 1.4.1). */
.brxe-post-content .std-point__koen {
	display: inline-block;
	font-family: var(--std-font-body);
	font-size: var(--std-text-3xs);
	font-weight: 400;
	line-height: var(--std-leading-snug);
	letter-spacing: 0.03em;
	text-transform: uppercase;
	white-space: nowrap;
	color: var(--std-text-muted);
	border: 1px solid var(--std-border);
	border-radius: 2px;
	padding: 0 0.3rem;
	vertical-align: 0.1em;
}

/* Filteret Alle/Hanner/Tæver over Voksne (assets/js/point.js). Skjult uden
   JS; knapperne ligner søskendechipsene, den valgte som den aktuelle side. */
.brxe-post-content .std-point__filter {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.3rem;
	margin-block: 0 var(--std-space-xs);
}

.brxe-post-content .std-point__filter[hidden] {
	display: none;
}

.brxe-post-content .std-point__filter button {
	min-height: var(--std-target);
	padding: 0.5rem 0.8rem;
	border: 1px solid var(--std-border);
	border-radius: var(--std-radius);
	background: var(--std-surface);
	color: var(--std-link);
	font: inherit;
	font-size: var(--std-text-2xs);
	line-height: var(--std-leading-snug);
	cursor: pointer;
}

.brxe-post-content .std-point__filter button:hover {
	border-color: var(--std-link);
	background: var(--std-surface-tint);
}

.brxe-post-content .std-point__filter button[aria-pressed="true"] {
	background: var(--std-neutral-900);
	border-color: var(--std-neutral-900);
	color: var(--std-text-invert);
	font-weight: 700;
}

.brxe-post-content .std-point__filter-status {
	font-size: var(--std-text-xs);
	color: var(--std-text-muted);
}

/* Mobilkortene er display:flex og ville ellers overstyre hidden. */
.brxe-post-content .std-point__tabel tbody tr[hidden] {
	display: none !important;
}

/* Høj kontrast (Windows): farverne tvinges ens, så den valgte knap får
   systemets markeringsfarve. På papir kan knapperne ikke bruges;
   statuslinjen siger, hvad der vises. */
@media (forced-colors: active) {
	.brxe-post-content .std-point__filter button[aria-pressed="true"] {
		forced-color-adjust: none;
		background: Highlight;
		border-color: Highlight;
		color: HighlightText;
	}
}

@media print {
	.brxe-post-content .std-point__filter button {
		display: none;
	}
}

.brxe-post-content .std-point del {
	text-decoration-thickness: 1.5px;
	color: var(--std-text-muted);
}

.brxe-post-content .std-point__kategori {
	margin-block-start: var(--std-space-l);
}

.brxe-post-content .std-point__kategori > h3 {
	margin-block: 0 var(--std-space-2xs);
}

.brxe-post-content .std-point__antal {
	font-family: var(--std-font-body);
	font-size: var(--std-text-xs);
	font-weight: 400;
	color: var(--std-text-muted);
}

/* --- tabellerne ---------------------------------------------------------- */

.brxe-post-content .std-point__tabel,
.brxe-post-content .std-point__liste {
	font-variant-numeric: tabular-nums;
}

.brxe-post-content .std-point__liste {
	width: auto;
	min-width: min(100%, 32rem);
}

/* Listerne kan blive bredere end spalten med brugerens egen tekstafstand
   (WCAG 1.4.12): de ruller så selv, i stedet for at siden ruller. */
.brxe-post-content .std-point__listerulle {
	overflow-x: auto;
}

/* Afsnit 8 bryder hvor som helst (overflow-wrap:anywhere); i de små lister
   gav det "25|9" og "Poi|nt" ved 320-640 px. break-word bryder kun ord,
   der ikke kan stå på en linje — målt uden overløb ved 320-640. */
.brxe-post-content .std-point__liste :is(th, td) {
	overflow-wrap: break-word;
}

.brxe-post-content .std-point__fejl {
	overflow-wrap: break-word;                                              /* Safari < 15.4 kender ikke anywhere */
	overflow-wrap: anywhere;                                                /* lange filnavne uden bindestreg */
	font-size: var(--std-text-s);
	background: var(--std-surface-tint);
	border-inline-start: 3px solid var(--std-link);
	padding: var(--std-space-xs) var(--std-space-s);
}

.brxe-post-content :is(.std-point__tabel, .std-point__liste) thead th {
	font-weight: 700;
	color: var(--std-neutral-900);
	vertical-align: bottom;
	border-top: 0;
	border-bottom: 2px solid var(--std-neutral-900);
}

.brxe-post-content :is(.std-point__tabel, .std-point__liste) tbody th {
	font-weight: 700;
	color: var(--std-neutral-900);
}

.brxe-post-content :is(.std-point__tabel, .std-point__liste) .is-tal,
.brxe-post-content .std-point__tabel .is-udst {
	text-align: right;
}

.brxe-post-content .std-point__tabel .is-point {
	font-weight: 700;
	color: var(--std-neutral-900);
}

.brxe-post-content .std-point__tabel td.is-nul {
	color: var(--std-text-muted);
}

@media (min-width: 1024px) {
	/* Nødudgang, hvis et fremtidigt ark får flere udstillinger end 2025's
	   30. Chrome og Firefox gør selv en rullende flade fokuserbar; et fast
	   tabindex ville give seks tomme tabulatorstop pr. side. */
	.brxe-post-content .std-point__rulle {
		overflow-x: auto;
		overscroll-behavior-x: contain;
	}

	/* Fuld bredde, ikke max-content: så bryder navnene, før tabellen
	   rulles (max-width virker ikke på tabelceller). */
	.brxe-post-content .std-point__tabel {
		width: 100%;
	}

	.brxe-post-content .std-point__tabel :is(td, th) {
		padding-inline: var(--std-space-2xs);
		white-space: nowrap;
		overflow-wrap: normal;
	}

	/* 30 udstillinger à 22 px + navn + tal = 1.050 px: 2022-2026 passer i
	   spalten ved 1280 (målt: 2025 var 1.305 px med 28 px-kolonner). */
	.brxe-post-content .std-point__tabel :is(td, th).is-udst {
		padding-inline: var(--std-space-3xs);
		min-width: 1.35rem;
	}

	.brxe-post-content .std-point__tabel thead th.is-tal {
		white-space: normal;
	}

	/* Udstillingerne står lodret: 30 kolonner à 1,8 rem i stedet for 30
	   brede navne. Læses nedefra og op, som i regnearket. */
	.brxe-post-content .std-point__tabel thead th.is-udst {
		writing-mode: vertical-rl;
		transform: rotate(180deg);
		text-align: left;
		vertical-align: bottom;
		font-weight: 400;
		line-height: 1.15;                                                  /* ikke --std-leading-tight (1,18): i lodret skrift er linjehøjden kolonnens bredde, og 1,18 gjorde navnekolonnen 10 px smallere og tabellerne op til 119 px højere (målt 2/10) */
		padding: 0.4rem var(--std-space-3xs);                               /* fysisk: i lodret skrift er "block" vandret */
	}

	/* Placering og navn står fast, når resten rulles. */
	.brxe-post-content .std-point__tabel :is(.is-plac, .is-navn) {
		position: sticky;
		z-index: 1;
		background: var(--std-surface);
	}

	.brxe-post-content .std-point__tabel .is-plac {
		left: 0;
		min-width: 2.4rem;
	}

	.brxe-post-content .std-point__tabel .is-navn {
		left: 2.4rem;
		min-width: 9rem;
		white-space: normal;
		overflow-wrap: break-word;                                              /* Safari < 15.4 kender ikke anywhere */
		overflow-wrap: anywhere;
		box-shadow: 1px 0 0 var(--std-neutral-100);
	}

	.brxe-post-content .std-point__tabel.is-tilmeldte .is-navn {
		left: 0;
	}

	.brxe-post-content .std-point__tabel tbody tr:hover > * {
		background: var(--std-neutral-050, #f7f7f8);
	}
}

/* --- telefon og tablet: ét kort pr. hund --------------------------------- */

@media (max-width: 1023px) {
	.brxe-post-content .std-point__tabel,
	.brxe-post-content .std-point__tabel :is(caption, tbody, tr, th, td) {
		display: block;
	}

	.brxe-post-content .std-point__tabel thead {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip-path: inset(50%);
		white-space: nowrap;
	}

	/* Kortet: placeringen i venstre margen, navnet øverst, så Sum, Antal og
	   Point på én linje og til sidst de udstillinger, hunden fik point på.
	   Flex med ombrydning — i et grid ville hver celle blive sin egen række. */
	.brxe-post-content .std-point__tabel tbody tr {
		position: relative;
		display: flex;
		flex-wrap: wrap;
		align-items: baseline;
		column-gap: var(--std-space-s);
		padding: var(--std-space-xs) 0 var(--std-space-xs) 2.8rem;
		border-top: 1px solid var(--std-neutral-100);
	}

	.brxe-post-content .std-point__tabel tbody :is(td, th) {
		border: 0;
		padding: 0;
		text-align: left;
	}

	.brxe-post-content .std-point__tabel tbody .is-plac {
		position: absolute;
		left: 0;
		top: 0.55rem;
		width: 2.4rem;
		font-family: var(--std-font-head);
		font-size: var(--std-text-l);
		font-weight: 700;
		line-height: 1.1;
		color: var(--std-neutral-900);
	}

	.brxe-post-content .std-point__tabel tbody .is-navn {
		flex: 0 0 100%;
		font-size: var(--std-text-s);
		overflow-wrap: break-word;                                              /* Safari < 15.4 kender ikke anywhere */
		overflow-wrap: anywhere;
	}

	.brxe-post-content .std-point__tabel tbody td.is-tal {
		flex: 0 0 auto;
		font-size: var(--std-text-xs);
	}

	.brxe-post-content .std-point__tabel tbody td.is-tal:not(:empty)::before {
		content: attr(data-label) " ";
		color: var(--std-text-muted);
	}

	/* Udstillinger uden point og tomme celler: i træet, men ude af flowet
	   (se afsnit 15 — display:none fik Chrome til at regne kolonnerne
	   forkert, og som flex-element med bredden 0 fik en tom Sum stadig
	   mellemrummet foran sig, så linjen rykkede 14 px ind). Tilmeldte er
	   undtaget: dér er 0 en værdi fra arket. */
	.brxe-post-content .std-point__tabel:not(.is-tilmeldte) tbody td:is(.is-nul, :empty) {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip-path: inset(50%);
		white-space: nowrap;
	}

	/* Hver udstilling på egen linje, men højst 24rem bred, så etiket og tal
	   kan læses sammen på en tablet: margenen fylder resten af linjen ud
	   (max-width alene lod rækkerne dele linje med tallene). */
	.brxe-post-content .std-point__tabel tbody td.is-udst:not(.is-nul):not(:empty),
	.brxe-post-content .std-point__tabel.is-tilmeldte tbody td.is-udst {
		flex: 0 0 min(100%, 24rem);
		margin-inline-end: calc(100% - min(100%, 24rem));
		display: flex;
		justify-content: space-between;
		gap: 0.8rem;
		font-size: var(--std-text-xs);
		border-top: 1px dotted var(--std-neutral-100);
		padding-block: 0.1rem;
	}

	.brxe-post-content .std-point__tabel tbody td.is-udst:not(.is-nul):not(:empty)::before,
	.brxe-post-content .std-point__tabel.is-tilmeldte tbody td.is-udst::before {
		content: attr(data-label);
		color: var(--std-text-muted);
		text-align: left;
	}

	.brxe-post-content .std-point__tabel.is-tilmeldte tbody tr {
		padding-inline-start: 0;
	}
}

.brxe-post-content .std-point__historik {
	margin-block-start: var(--std-space-l);
	font-size: var(--std-text-s);
}

.brxe-post-content .std-point__historik summary {
	cursor: pointer;
	color: var(--std-link);
}

.brxe-post-content .std-point__historik ul {
	columns: 12rem auto;
	margin-block: var(--std-space-2xs) 0;
}

/* WCAG 2.5.8: linkene var inline og 19 px høje, og li 23,22 px ved 375, så
   194 links på 22 pointvisninger lå under 24 px fra midte til midte (målt
   1/10; ved 1280 bar li på 24,38 px dem lige over). inline-flex med
   min-height gør selve målet 24 px; teksten står, hvor den stod. */
.brxe-post-content .std-point__historik a {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
}

.brxe-post-content .std-point__vinder {
	font-size: var(--std-text-m);
}

/* ==========================================================================
   17. TABEL-BLOKKEN — WordPress' blok-CSS kommer efter style.css
   En tabel lavet i blokeditoren (core/table) lignede ikke sitets tabeller.
   WP 7.1 udskriver wp-block-table-inline-css i <head> EFTER dette ark og
   uden @layer, så .wp-block-table td{border:1px solid;padding:.5em} (0,1,1)
   vinder over afsnit 8's .brxe-post-content :is(td, th) (0,1,1) på
   rækkefølgen: fuldt gitter, thead og tfoot med 3 px streg. Og "Fast
   bredde på tabelceller" er slået TIL som standard for nye tabeller
   (hasFixedLayout: true i block.json): lige brede kolonner og
   word-break:break-word. Målt med WordPress' egen save() (WP 7.1.2's
   scripts), kørt gennem the_content og sat ind i 6378: en tabel med 8
   kolonner brød 67 ord midt i ved 320 px og 51 ved 375 ("Gustavs|ons"),
   en med 4 kolonner "Klubudstillin|g".

   Husstilen er datatabellens fra afsnit 8 (std-datatable): kun streger
   mellem rækkerne, kraftig streg under overskriftsrækken, samme polstring,
   tabelcifre. Afsnit 8's skriftstørrelser gælder, medmindre redaktøren har
   valgt en.

   Kun tabel-blokkens egne tabeller rammes. Filtrenes std-datatable (6378 —
   og kopierne i klassisk HTML på 7284, 7852 og 8597, som ikke får WP's
   blok-CSS) og std-layouttable (de tomme 1x1 på 4250 og 6951) har deres
   regler i afsnit 8 og holdes ude med :where(:not(…)), og det samme gør
   enhver tabel med role=: filter 21 sætter role="presentation" på alle 393
   paste-tabeller (hundeweb, t1, table, table-condensed), filter 22 på
   std-layouttable, og core/table udskriver aldrig role. Uden [role] ramte
   afsnittet en hundeweb-tabel, der står i en figure.wp-block-table (fx
   efter en konvertering): målt på 9914 ændrede alle 290 celler sig, og
   tabellen gik fra 3416 til 3269 px ved 375 (td.sex-header mistede sin
   2 px streg); nu 0 celler, også for table-condensed (3090) og t1 (2116).
   :where tæller 0, så cellereglerne står i (0,2,2) og slår WP's (0,1,1) og
   (0,2,1) uden !important. Tabeller uden for figure.wp-block-table rammes
   ikke.

   Redaktørens egne valg står: har tabellen fået en kant i blokken
   (.has-border-color eller style="border…"), gælder WP's gitter med
   redaktørens farve og bredde; en tekstfarve gælder også overskrifterne
   og deres kraftige streg; en skriftstørrelse gælder hele tabellen.
   Kolonnejusteringen sættes ikke her; WP's :root .has-text-align-*
   (0,2,0) slår allerede afsnit 8's text-align:left (0,1,1). Kontakten
   "Fast bredde på tabelceller" virker ikke (se layoutreglen).

   Kantgrenen hviler på rækkefølgen, ikke på specificiteten: dér overlades
   cellerne til WP's .wp-block-table td (0,1,1), som står lige med afsnit
   8's (0,1,1) og kun vinder, fordi WP's blok-CSS kommer EFTER dette ark.
   Målt med WP's ark flyttet før style.css: 24 afvigelser, alle i
   kant-tilfældene (gitteret og 0,5em polstring forsvinder). I dag indlæses
   blok-CSS'en altid efter (on demand); det holder ikke, hvis
   should_load_separate_core_block_assets bliver false.
   ========================================================================== */

/* Cellerne. Ingen lodrette streger, ingen venstrepolstring — som
   std-datatable. Første række har ingen streg over sig. */
.brxe-post-content figure.wp-block-table :where(table:not(.std-datatable, .std-layouttable, [role], .has-border-color, [style*="border"])) :is(td, th) {
	border: 0;
	border-top: 1px solid var(--std-neutral-100);
	padding: var(--std-space-2xs) 0.5rem var(--std-space-2xs) 0;
}

.brxe-post-content figure.wp-block-table :where(table:not(.std-datatable, .std-layouttable, [role], .has-border-color, [style*="border"])) :is(td, th):last-child {
	padding-inline-end: 0;
}

.brxe-post-content figure.wp-block-table :where(table:not(.std-datatable, .std-layouttable, [role], .has-border-color, [style*="border"])) > :is(thead, tbody):first-child > tr:first-child > * {
	border-top: 0;
}

/* WP's 3 px på thead og tfoot bliver husets 2 px — samme streg som under
   std-datatables kolonneoverskrifter og over td.sex-header. Farven er
   overskriftens egen (currentColor): neutral-900 som std-datatables, eller
   redaktørens tekstfarve. Med fast neutral-900 var stregen usynlig på
   redaktørens mørke baggrund (neutral-900 på neutral-900, hvid tekst). */
.brxe-post-content figure.wp-block-table :where(table:not(.std-datatable, .std-layouttable, [role], .has-border-color, [style*="border"])) > :is(thead, tfoot) {
	border: 0;
}

.brxe-post-content figure.wp-block-table :where(table:not(.std-datatable, .std-layouttable, [role], .has-border-color, [style*="border"])) > thead > tr:last-child > * {
	border-bottom: 2px solid currentColor;
}

.brxe-post-content figure.wp-block-table :where(table:not(.std-datatable, .std-layouttable, [role], .has-border-color, [style*="border"])) > tfoot > tr:first-child > * {
	border-top: 2px solid currentColor;
}

/* Overskrifter (thead og th[scope=row]) og sumrækken i tfoot: fed
   neutral-900 som std-datatables th. Overskriftsrækken står på stregen.
   Har redaktøren valgt en tekstfarve (.has-text-color), gælder den også
   overskrifterne. */
.brxe-post-content figure.wp-block-table :where(table:not(.std-datatable, .std-layouttable, [role])) {
	font-variant-numeric: tabular-nums;
}

.brxe-post-content figure.wp-block-table :where(table:not(.std-datatable, .std-layouttable, [role])) :is(th, thead td, tfoot td) {
	font-weight: 700;
}

.brxe-post-content figure.wp-block-table :where(table:not(.std-datatable, .std-layouttable, [role], .has-text-color)) :is(th, thead td, tfoot td) {
	color: var(--std-neutral-900);
}

.brxe-post-content figure.wp-block-table :where(table:not(.std-datatable, .std-layouttable, [role])) > thead > tr > * {
	vertical-align: bottom;
}

/* Redaktørens skriftstørrelse står på figuren (has-large-font-size eller
   style="font-size:18px"), men afsnit 8 giver alle tabeller text-2xs, så
   den nåede ikke cellerne: 12,5 px ved 375 med "Stor" og med 18 px.
   Tabellen arver den nu. */
.brxe-post-content figure.wp-block-table:is([class*="-font-size"], [style*="font-size"]) > :where(table:not(.std-datatable, .std-layouttable, [role])) {
	font-size: inherit;
}

/* Kolonnebredden følger indholdet. Den faste bredde er WP's standard, ikke
   et valg — i markup'en kan de to ikke skelnes, og 0 af de 3 tabel-blokke i
   korpus har den. Derfor virker kontakten "Fast bredde på tabelceller"
   ikke på frontend. Målt i husstilen, 8 kolonner: ved 1280 px 330 px høj
   med faste kolonner (et ciffer i "Plac." fik lige så meget plads som
   hundenavnet) mod 202 px med auto. Ved 320 px brød WP's faste kolonner
   67 ord midt i; uden WP's word-break løb teksten i stedet ud over
   cellerne (307 px indhold i 288). En af to regler, der også rammer
   filtrenes tabeller (den anden er bred og fuld bredde nedenfor): afsnit 8
   er målt med auto-layout, og i dag har ingen af dem klassen. */
.brxe-post-content figure.wp-block-table > table.has-fixed-layout {
	table-layout: auto;
}

/* Orddeling frem for sammenpresning. Resultattabellerne i afsnit 8
   ombrydes hvor som helst (anywhere); en tabel-blok har rigtige kolonner,
   så ord brydes kun ved stavelser, med bindestreg (dansk orddeling, som
   std-datatable). Uden orddeling blev et langt hundenavn kolonnens
   mindstebredde: en almindelig 4-kolonnetabel (Plac./Hund/Ejer/Point) med
   "GustavsonsSagaOfEusebiaTheStoryteller" var 380 px i en 288 px figur
   ved 320 og 380 i 343 ved 375, og hele Point-kolonnen stod uden for
   skærmen. Med orddeling: 288/288 og 343/343. I korpus står et ord på 20+
   tegn i en tabelcelle 85 gange (62 sider).
   Grænsen er 12 4 4, ikke std-datatables 6 3 3: dér er cellerne prosa, her
   korte etiketter, og med 6 3 3 blev "Udstil-ling", "Hund-eweb" og
   "Opdræt-ter" delt i smalle kolonner, selv om tabellen passede. Målt på
   37 tabel-blokke ved 320-1280 på 4250 og 6378: 797 mod 387 delte ord og
   de samme 34 af 296, der ruller (12-kolonnetabellerne ved 320-375, en
   tabel i en kolonneblok ved 1280 og skriftstørrelsen "Stor" ved 320-375).
   Kan et ord ikke deles (en URL, et tal), ruller tabellen i figuren i
   stedet for at skubbe siden.
   normal kræver den rullende figur nedenfor, som hænger på :has(); uden
   :has() gælder afsnit 8's anywhere stadig, så en bred justeret tabel
   (WP's display:table kan ikke rulle) aldrig skubber siden bredere. */
.brxe-post-content figure.wp-block-table :where(table:not(.std-datatable, .std-layouttable, [role])) :is(td, th) {
	-webkit-hyphens: auto;
	hyphens: auto;
	hyphenate-limit-chars: 12 4 4;
}

/* Adresser deles ikke med bindestreg: "offentligKata-log" ligner en del af
   adressen. Links og span.std-url brydes i stedet hvor som helst, uden
   bindestreg (afsnit 3). */
.brxe-post-content figure.wp-block-table :where(table:not(.std-datatable, .std-layouttable, [role])) :is(a, .std-url) {
	-webkit-hyphens: manual;
	hyphens: manual;
}

@supports selector(:has(*)) {
	.brxe-post-content figure.wp-block-table :where(table:not(.std-datatable, .std-layouttable, [role])) :is(td, th) {
		word-break: normal;
		overflow-wrap: normal;
	}
}

/* Rulning. WP giver selv .wp-block-table overflow-x:auto; reglen gentages
   for figurer uden WP's blok-CSS (sat ind som klassisk HTML, som på 7284).
   overflow-x:auto klipper også lodret, og uden venstrepolstring i første
   kolonne klippede figuren fokusringen (afsnit 2: 3 px + 2 px afstand) på
   links i første kolonne: 5 af 5 px væk ved 320, 375 og 1280. 5 px
   polstring på begge sider giver ringen plads (nu 0 px klippet, heller
   ikke af en forfader), og -5 px margen holder teksten i spaltens flugt;
   sideoverløbet er 0 ved 320-1440. */
.brxe-post-content figure.wp-block-table:not(:has(> table:is(.std-datatable, .std-layouttable, [role]))) {
	overflow-x: auto;
	padding-inline: 5px;
	margin-inline: -5px;
}

/* Venstre, centreret og højre gør WP's figur til display:table, som ikke
   kan rulle: den centrerede 8-kolonnetabel brød 67 ord ved 320 px før, og
   med auto-layout alene stadig 36 ved 320 og 9 ved 768. Som blok med
   fit-content krymper figuren om tabellen og flyder som valgt, men ruller,
   når tabellen er bredere end spalten: 0 brud i alle fire bredder,
   centreret 881 af 1076 px ved 1280. En lille tabel bliver lige så smal
   som sit indhold (2 x 2 cifre: 24 px) — justeringen giver kun mening,
   når tabellen ikke fylder spalten. Afsnit 7 sætter figurer til
   margin-inline:0, så centreringen og luften mod den flydende tekst gives
   her. */
.brxe-post-content figure.wp-block-table:is(.alignleft, .aligncenter, .alignright):not(:has(> table:is(.std-datatable, .std-layouttable, [role]))) {
	display: block;
	width: fit-content;
	max-width: 100%;
}

.brxe-post-content figure.wp-block-table.aligncenter:not(:has(> table:is(.std-datatable, .std-layouttable, [role]))) {
	margin-inline: auto;
}

/* Luften mod den flydende tekst: space-s på telefoner, space-m fra 768 px,
   minus de 5 px fokuspolstring, der allerede står på den side. Ved 320 og
   375 stod en lille flydende tabels sidste ciffer før helt op ad teksten
   (0 px; sidste kolonne har ingen højrepolstring), og hele space-m tog
   22 px fra en bred flydende tabel, der alligevel fylder spalten. */
.brxe-post-content figure.wp-block-table.alignleft:not(:has(> table:is(.std-datatable, .std-layouttable, [role]))) {
	margin-inline-end: calc(var(--std-space-s) - 5px);
}

.brxe-post-content figure.wp-block-table.alignright:not(:has(> table:is(.std-datatable, .std-layouttable, [role]))) {
	margin-inline-start: calc(var(--std-space-s) - 5px);
}

@media (min-width: 768px) {
	.brxe-post-content figure.wp-block-table.alignleft:not(:has(> table:is(.std-datatable, .std-layouttable, [role]))) {
		margin-inline-end: calc(var(--std-space-m) - 5px);
	}

	.brxe-post-content figure.wp-block-table.alignright:not(:has(> table:is(.std-datatable, .std-layouttable, [role]))) {
		margin-inline-start: calc(var(--std-space-m) - 5px);
	}
}

/* Billedteksten i en justeret figur skal ikke bestemme dens bredde: med
   fit-content alene blev en 2 x 2-tabel med en lang billedtekst 790 af
   1076 px bred ved 1280 (billedtekstens linjelængde), og så stod den
   "flydende" tabel reelt i fuld bredde. contain:inline-size tager teksten
   ud af breddeberegningen — samme greb som afsnit 8's t1-billedtekster —
   og gulvet på 15em holder den læsbar under en lille tabel: nu 203-209 px. */
.brxe-post-content figure.wp-block-table:is(.alignleft, .aligncenter, .alignright):not(:has(> table:is(.std-datatable, .std-layouttable, [role]))) > figcaption {
	contain: inline-size;
	min-inline-size: 15em;
}

/* Bred og fuld bredde (Bricks slår align-wide til). Bricks' .alignfull og
   .alignwide rykker figuren med position:relative, left:50% og width:100vw
   (120 %) og regner med negative margener, som afsnit 7's
   margin-inline:0 fjerner: målt gav "Fuld bredde" vandret overløb på hele
   siden (152 px ved 320, 632 ved 1280), "Bred" 33 px ved 1440; nu 0.
   Temaet har ingen spalte at bryde ud i, så de to står som en almindelig
   tabel og ruller i spalten. Rammer også filtrenes tabeller (0 i korpus). */
.brxe-post-content figure.wp-block-table:is(.alignwide, .alignfull) {
	position: static;
	width: auto;
	max-width: none;
}

/* Billedteksten står i figuren og ville rulle med tabellen ud til venstre. */
.brxe-post-content figure.wp-block-table:not(:has(> table:is(.std-datatable, .std-layouttable, [role]))) > figcaption {
	position: sticky;
	left: 0;
}

/* Striber (typografien "Stribet"): sitets egen stribe, neutral-050 —
   DESIGN-TOKENS.md's "stribe i tabeller" — i stedet for WP's #f0f0f0.
   På redaktørens egen baggrund er striben i stedet 7 % af tekstfarven, så
   den ses på lys og mørk bund og ikke lægger grå over farven. Stregerne
   mellem rækkerne udgår; stregen under overskriften og over tfoot bliver.
   WP's streg under figuren (også under billedteksten) bliver til en streg
   under sidste række. I båndene står teksten ikke på kanten: 0,5rem ind
   i første og sidste kolonne. */
.brxe-post-content figure.wp-block-table.is-style-stripes:not(:has(> table:is(.std-datatable, .std-layouttable, [role]))) {
	border-bottom: 0;
}

.brxe-post-content figure.wp-block-table.is-style-stripes :where(table:not(.std-datatable, .std-layouttable, [role], .has-background)) > tbody > tr:nth-child(odd) {
	background-color: var(--std-neutral-050);
}

.brxe-post-content figure.wp-block-table.is-style-stripes :where(table.has-background:not(.std-datatable, .std-layouttable, [role])) > tbody > tr:nth-child(odd) {
	background-color: color-mix(in srgb, currentColor 7%, transparent);
}

.brxe-post-content figure.wp-block-table.is-style-stripes :where(table:not(.std-datatable, .std-layouttable, [role], .has-border-color, [style*="border"])) > tbody > tr > * {
	border-top: 0;
}

.brxe-post-content figure.wp-block-table.is-style-stripes :where(table:not(.std-datatable, .std-layouttable, [role], .has-border-color, [style*="border"])) > tbody > tr:last-child > * {
	border-bottom: 1px solid var(--std-neutral-100);
}

.brxe-post-content figure.wp-block-table.is-style-stripes :where(table:not(.std-datatable, .std-layouttable, [role])) tr > :first-child {
	padding-inline-start: 0.5rem;
}

.brxe-post-content figure.wp-block-table.is-style-stripes :where(table:not(.std-datatable, .std-layouttable, [role])) tr > :last-child {
	padding-inline-end: 0.5rem;
}

/* ==========================================================================
   18. HØJ KONTRAST OG UDSKRIFT (audit 1/10, P2)
   ========================================================================== */

/* Høj kontrast (Windows): baggrunde tvinges til systemets bund, så det, der
   er tegnet med background, forsvinder — burgerens tre streger og
   lightboxens luk-kryds. Pilene er tegnet med border og klarer sig selv. */
@media (forced-colors: active) {
	.stds-burger__bars,
	.stds-burger__bars::before,
	.stds-burger__bars::after {
		forced-color-adjust: none;
		background: ButtonText;
	}

	#fancybox-close span::before,
	#fancybox-close span::after {
		forced-color-adjust: none;
		background: CanvasText;
	}

	/* Menupunkternes gennemsigtige kant (3 px forneden, i skuffen til venstre)
	   tvinges synlig på alle punkter, så det aktuelle kun skilte sig ud ved
	   fed skrift. Systemfarver: bunden for de andre, markering for det
	   aktuelle. */
	.stds-nav__link {
		border-color: Canvas;
	}

	.stds-nav__item.is-current > .stds-nav__link {
		border-color: Highlight;
	}

	/* Aktuel søskende og aktuelt sidetal er en fyldt rammegrå flade, som
	   tvinges til systemets bund, så de kun skilte sig ud ved fed skrift
	   (audit P3 TT-4). Samme behandling som pointfilterets valgte knap. */
	.stds-rail__item.is-current span,
	.stds-news__pager .current {
		forced-color-adjust: none;
		background: Highlight;
		border-color: Highlight;
		color: HighlightText;
	}

	/* Den valgte filterknap har forced-color-adjust: none (afsnit 16), som også
	   fastholdt fokusringens #d00c33 mod Highlight. */
	.brxe-post-content .std-point__filter button[aria-pressed="true"]:focus-visible {
		outline-color: CanvasText;
	}

	/* Børnelistens skillelinjer er 1 px mellemrum med stregfarvet bund, og
	   bunden tvinges væk. Her tegnes de som kanter i stedet. */
	.stds-index__list {
		gap: 0;
		border-width: 1px 0 0 1px;
		border-color: CanvasText;
	}

	.stds-index__list > li {
		border-inline-end: 1px solid CanvasText;
		border-block-end: 1px solid CanvasText;
	}
}

/* Udskrift: logo, brødkrumme, titel og indhold. Værktøjer, menu, sideliste,
   forrige/næste og footer hører til skærmen. */
@media print {
	html,
	body,
	.stds-main {
		background: none;
	}

	.skip-link,
	.stds-header__tools,
	.stds-nav,
	.stds-panel,
	.stds-rail,
	.stds-pager,
	#brx-footer,
	[id^="fancybox-"] {
		display: none !important;
	}

	.brxe-post-content :is(h2, h3, h4, .std-hw-arrangoer) {
		break-after: avoid;
	}

	.brxe-post-content :is(tr, figure, img, .std-galleri > *) {
		break-inside: avoid;
	}

	/* Papir kan ikke rulles: en rullende boks ville klippe tabellen. */
	.brxe-post-content :is(.std-tabelrulle, .std-point__rulle, .std-point__listerulle) {
		overflow: visible;
	}
}
