/* ============================================================
   BSB MECCA — CSS extracted from taxonomy-circuit.php
   Externalized Session 4 (2026-04-21) for caching across page views.
   ============================================================ */

/* --- block 0 from taxonomy-circuit.php --- */
/* Design System v4 — Editorial Newspaper */
:root {
    --tc-bg: #F5F3EE;
    --tc-beige: #EFE9DC;
    --tc-beige-dk: #E2DACB;
    --tc-dark: #222222;
    --tc-text: #1A1A1A;
    --tc-text-sec: #444444;
    --tc-muted: #888888;
    --tc-accent: #C8102E;
    --tc-accent-hover: #B84008;
    --tc-border: #1A1A1A;
    --tc-border-lt: #CCCCCC;
    --tc-dotted: linear-gradient(to right,#1A1A1A 24%,transparent 0%) bottom/4px 1px repeat-x;
}
html, body { background: var(--tc-bg) !important; }
.tc-wrap { max-width:1180px; margin:0 auto; padding:0 24px; font-family:'DM Sans',-apple-system,sans-serif; color:var(--tc-text); }

/* Breadcrumb */
.tc-crumb { padding:16px 0; color:var(--tc-muted); font-size:0.75rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; font-family:'DM Sans',sans-serif; }
.tc-crumb a { color:var(--tc-muted); text-decoration:none; }
.tc-crumb a:hover { color:var(--tc-accent); }
.tc-crumb span { color:var(--tc-text); }

/* Hero */
.tc-hero { padding:2rem 0 2.25rem; border-bottom:1px solid var(--tc-border); }
.tc-hero-split { display:grid; grid-template-columns:1fr 1fr; gap:40px; align-items:center; }
.tc-hero-centered { text-align:center; }
.tc-kicker { font-family:'Barlow Condensed',sans-serif; font-size:0.875rem; font-weight:700; letter-spacing:0.12em; text-transform:uppercase; color:var(--tc-accent); margin-bottom:14px; }
.tc-hero h1 { font-family:'Playfair Display',Georgia,serif; font-size:clamp(2.25rem,4.5vw,4rem); font-weight:400; letter-spacing:-0.046875rem; line-height:1.05; margin:0 0 14px; color:var(--tc-text); }
.tc-hero .tc-flag { font-size:2rem; margin-right:8px; vertical-align:middle; }
.tc-hero-byline { font-family:'Playfair Display',serif; font-style:italic; color:var(--tc-text-sec); font-size:1.0625rem; line-height:1.5; margin-bottom:12px; }
.tc-hero-meta { font-family:'Barlow Condensed',sans-serif; font-size:0.8125rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:var(--tc-muted); }
.tc-hero-badges { margin-top:18px; display:flex; flex-wrap:wrap; gap:8px; }
.tc-hero-centered .tc-hero-badges { justify-content:center; }
.tc-badge { display:inline-block; padding:4px 10px; font-family:'Barlow Condensed',sans-serif; font-size:0.8125rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; background:var(--tc-beige); color:var(--tc-text); }
.tc-badge-champ { background:var(--tc-text); color:var(--tc-bg); }
.tc-badge-accent { background:var(--tc-accent); color:var(--tc-bg); }
.tc-badge-note { background:var(--tc-beige-dk); color:var(--tc-text-sec); font-style:italic; text-transform:none; letter-spacing:0; font-family:'DM Sans',sans-serif; font-weight:500; }

/* Hero image */
.tc-hero-img-wrap { }
.tc-hero-img { position:relative; aspect-ratio:4/3; overflow:hidden; }
.tc-hero-img img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:opacity .5s; }
.tc-hero-img .tc-img-gray { filter: grayscale(1); mix-blend-mode: multiply; opacity:1; }
.tc-hero-img .tc-img-color { opacity:0; }
.tc-hero-img-wrap:hover .tc-hero-img .tc-img-color { opacity:1; }
.tc-photo-credit { margin-top:8px; font-family:'DM Sans',sans-serif; font-size:0.6875rem; color:var(--tc-muted); letter-spacing:0.04em; text-transform:uppercase; }

/* Section structure */
.tc-section { padding:40px 0; border-bottom:1px dotted transparent; background:var(--tc-dotted); background-size:4px 1px; background-position:bottom; background-repeat:repeat-x; }
.tc-section:last-of-type { background:none; }
.tc-section-head { display:flex; align-items:baseline; justify-content:space-between; padding-bottom:10px; border-bottom:1px solid var(--tc-border); margin-bottom:24px; }
.tc-section-head h2 { font-family:'Barlow Condensed',sans-serif; font-size:1rem; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; margin:0; color:var(--tc-text); }
.tc-section-head .tc-aside { font-family:'DM Sans',sans-serif; font-size:0.75rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:var(--tc-muted); }

/* Stat grid */
.tc-stats { display:grid; grid-template-columns:repeat(6,1fr); gap:24px; }
@media (max-width:900px) { .tc-stats { grid-template-columns:repeat(3,1fr); } }
@media (max-width:520px) { .tc-stats { grid-template-columns:repeat(2,1fr); } }
.tc-stat { text-align:center; }
.tc-stat-num { font-family:'Barlow Condensed',sans-serif; font-size:clamp(2rem,3.5vw,3rem); font-weight:800; line-height:1; color:var(--tc-text); }
.tc-stat-lbl { margin-top:6px; font-family:'DM Sans',sans-serif; font-size:0.6875rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:var(--tc-muted); }

/* Two-col map */
.tc-map-grid { display:grid; grid-template-columns:2fr 1fr; gap:32px; align-items:start; }
@media (max-width:900px) { .tc-map-grid { grid-template-columns:1fr; } }
.tc-map-container { width:100%; height:360px; overflow:hidden; border-top:1px solid var(--tc-border); }
.tc-map-meta dl { margin:0; }
.tc-map-meta dt { font-family:'DM Sans',sans-serif; font-size:0.6875rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:var(--tc-muted); margin-top:14px; }
.tc-map-meta dd { margin:4px 0 0; font-family:'Playfair Display',serif; font-size:1.25rem; color:var(--tc-text); }

/* Tables */
.tc-table { width:100%; border-collapse:collapse; font-family:'DM Sans',sans-serif; }
.tc-table th { text-align:left; padding:10px 12px 10px 0; font-size:0.6875rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:var(--tc-muted); border-bottom:1px solid var(--tc-border); }
.tc-table th.tc-num { text-align:right; }
.tc-table td { padding:12px 12px 12px 0; font-size:0.9375rem; color:var(--tc-text); background:var(--tc-dotted); background-size:4px 1px; background-position:bottom; background-repeat:repeat-x; }
.tc-table td.tc-num { text-align:right; font-variant-numeric:tabular-nums; }
.tc-table tr:last-child td { background:none; }
.tc-table a { color:var(--tc-text); text-decoration:none; background-image:linear-gradient(var(--tc-accent),var(--tc-accent)); background-position:right 95%; background-size:0 1.75px; background-repeat:no-repeat; transition:background-size .3s; }
.tc-table a:hover { background-size:100% 1.75px; color:var(--tc-accent); }
.tc-pos { font-family:'Barlow Condensed',sans-serif; font-weight:800; color:var(--tc-muted); }
.tc-pos-1 { color:var(--tc-accent); }

/* Championship breakdown bars */
.tc-champ-list { display:grid; gap:14px; }
.tc-champ-row { display:grid; grid-template-columns:150px 1fr 70px; gap:14px; align-items:center; font-size:0.9rem; }
.tc-champ-name { font-family:'Barlow Condensed',sans-serif; font-size:1rem; font-weight:700; letter-spacing:0.06em; text-transform:uppercase; }
.tc-champ-bar { height:8px; background:var(--tc-beige); position:relative; }
.tc-champ-bar-fill { position:absolute; inset:0; background:var(--tc-accent); width:var(--w,0%); }
.tc-champ-count { text-align:right; font-variant-numeric:tabular-nums; color:var(--tc-text-sec); font-size:0.875rem; }

/* Weather */
.tc-weather-wrap { display:grid; grid-template-columns:2fr 1fr; gap:32px; align-items:center; }
@media (max-width:768px) { .tc-weather-wrap { grid-template-columns:1fr; } }
.tc-weather-bar { display:flex; height:36px; overflow:hidden; border-top:1px solid var(--tc-border); }
.tc-w-dry   { background:#9CB59E; }
.tc-w-mixed { background:#D9A441; }
.tc-w-wet   { background:#6B8CA8; }
.tc-weather-legend { display:flex; flex-direction:column; gap:8px; font-family:'DM Sans',sans-serif; font-size:0.875rem; }
.tc-weather-legend span b { font-family:'Barlow Condensed',sans-serif; font-size:1.125rem; font-weight:800; margin-right:6px; }
.tc-weather-avg { margin-top:18px; font-family:'Playfair Display',serif; font-style:italic; color:var(--tc-text-sec); font-size:1rem; }

/* Rivalries */
.tc-rivalries { display:grid; gap:18px; }
.tc-rivalry { display:grid; grid-template-columns:1fr auto 1fr; gap:16px; align-items:center; padding:14px 0; background:var(--tc-dotted); background-size:4px 1px; background-position:bottom; background-repeat:repeat-x; }
.tc-rivalries > .tc-rivalry:last-child { background:none; }
.tc-rivalry-rider { font-family:'Playfair Display',serif; font-size:1.125rem; }
.tc-rivalry-rider a { color:var(--tc-text); text-decoration:none; }
.tc-rivalry-rider a:hover { color:var(--tc-accent); }
.tc-rivalry-left  { text-align:right; }
.tc-rivalry-right { text-align:left; }
.tc-rivalry-score { font-family:'Barlow Condensed',sans-serif; font-size:0.9375rem; font-weight:700; color:var(--tc-muted); letter-spacing:0.08em; text-align:center; }
.tc-rivalry-score b { color:var(--tc-accent); font-size:1.375rem; display:block; }

/* Race history by year */
.tc-history { }
.tc-year-block { padding:22px 0; background:var(--tc-dotted); background-size:4px 1px; background-position:bottom; background-repeat:repeat-x; }
.tc-year-block:last-child { background:none; }
.tc-year-head { font-family:'Playfair Display',serif; font-size:2.25rem; font-weight:400; letter-spacing:-0.02em; color:var(--tc-text); margin:0 0 14px; }
.tc-year-rows { display:grid; gap:6px; }
.tc-year-row { display:grid; grid-template-columns:170px 160px 1fr; gap:20px; align-items:baseline; font-family:'DM Sans',sans-serif; font-size:0.9375rem; padding:6px 0; }
@media (max-width:680px) { .tc-year-row { grid-template-columns:1fr; gap:2px; } }
.tc-year-row .tc-cell-champ { font-family:'Barlow Condensed',sans-serif; font-size:0.9375rem; font-weight:700; letter-spacing:0.06em; text-transform:uppercase; color:var(--tc-text-sec); }
.tc-year-row a { color:var(--tc-text); text-decoration:none; background-image:linear-gradient(var(--tc-accent),var(--tc-accent)); background-position:right 95%; background-size:0 1.75px; background-repeat:no-repeat; transition:background-size .3s; }
.tc-year-row a:hover { background-size:100% 1.75px; color:var(--tc-accent); }
.tc-year-winner { color:var(--tc-text-sec); }
.tc-year-winner b { color:var(--tc-text); font-weight:500; }

/* Nearby */
.tc-nearby-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:22px; }
@media (max-width:900px) { .tc-nearby-grid { grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px) { .tc-nearby-grid { grid-template-columns:1fr; } }
.tc-nearby-card { }
.tc-nearby-dist { font-family:'Barlow Condensed',sans-serif; font-size:0.75rem; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; color:var(--tc-accent); }
.tc-nearby-name { font-family:'Playfair Display',serif; font-size:1.3125rem; margin:4px 0 4px; }
.tc-nearby-name a { color:var(--tc-text); text-decoration:none; }
.tc-nearby-name a:hover { color:var(--tc-accent); }
.tc-nearby-meta { font-family:'DM Sans',sans-serif; font-size:0.8125rem; color:var(--tc-muted); }

/* Empty state */
.tc-empty { font-family:'Playfair Display',serif; font-style:italic; color:var(--tc-muted); padding:12px 0; }

/* Country-type term fallback */
.tc-country-note { padding:16px 18px; background:var(--tc-beige); font-family:'Playfair Display',serif; font-style:italic; font-size:0.9375rem; color:var(--tc-text-sec); margin-bottom:24px; }
