/* Local visualization layer on the existing approved brand design. */
.visual-explorer { scroll-margin-top:20px; }
.visual-tabs { display:flex; gap:4px; border-bottom:1px solid #bec8b7; }
.visual-tabs button { border:0; border-bottom:3px solid transparent; padding:15px 24px; background:none; color:#53634f; font:600 15px/1.5 'Anek Latin',system-ui,sans-serif; cursor:pointer; }
.visual-tabs button[aria-selected=true] { color:#203c32; border-bottom-color:#a56c23; background:#e9eddf; }
.visual-shell { display:grid; grid-template-columns:minmax(0,1fr) 310px; border:1px solid #cbd2c0; border-top:0; background:#fdfbf5; }
.visual-stage { min-width:0; background:#eef1e7; }
.visual-toolbar { min-height:58px; padding:12px 20px; display:flex; align-items:center; justify-content:space-between; gap:15px; font-size:13px; color:#4e604d; border-bottom:1px solid #d5ddca; }
.visual-toolbar>div { display:flex; gap:6px; flex-shrink:0; }
.visual-toolbar button { min-width:36px; min-height:36px; border:1px solid #b5c2aa; border-radius:0; background:#fbfaf3; color:#203c32; padding:3px 10px; font:14px/1.5 system-ui,sans-serif; cursor:pointer; }
.visual-canvas { width:100%; min-height:500px; }
.visual-canvas svg { display:block; width:100%; height:auto; }
.visual-canvas [role=button] { cursor:pointer; outline:none; }
.visual-canvas [role=button]:focus .viz-dot { stroke:#a86111; stroke-width:5px; }
.visual-canvas [role=button]:focus text { text-decoration:underline; }
.visual-canvas text { font-family:'Anek Latin',system-ui,sans-serif; fill:#294337; }
.visual-canvas .map-pin-label { font-size:17px; font-weight:600; paint-order:stroke; stroke:#eef1e7; stroke-width:5px; stroke-linejoin:round; }
.visual-canvas .map-pin-sub { font-size:12px; fill:#53644c; }
.visual-detail { padding:30px 26px; border-left:1px solid #cbd2c0; min-width:0; }
.visual-detail .portal-kicker { color:#77603a; font-size:10px; }
.visual-detail h3 { font:400 35px/1.12 Georgia,serif; letter-spacing:-.03em; margin-top:14px; }
.visual-detail>p:not(.portal-kicker) { font-size:14px; line-height:1.7; margin-top:18px; color:#50604c; }
.visual-detail [data-visual-links] { margin-top:23px; }
.visual-detail [data-visual-links]>div { margin-block:19px; border-top:1px solid #dce0d1; padding-top:14px; }
.visual-detail [data-visual-links] strong { display:block; font-size:15px; line-height:1.4; font-weight:600; margin-bottom:9px; }
.visual-detail [data-visual-links] a { display:inline-block; font-size:13px; margin:0 10px 7px 0; color:#365b3e; }
.visual-detail>p.visual-note { font-size:11px; color:#5c6755; }
.visual-legend { padding:12px 20px 16px; margin:0; font-size:11px; line-height:1.6; color:#5a6954; border-top:1px solid #d5ddca; }
.visual-text-options { display:flex; flex-wrap:wrap; align-items:center; gap:10px 18px; margin-top:18px; font-size:13px; }
.visual-text-options select { max-width:100%; min-width:220px; min-height:42px; border:1px solid #bdc7b2; border-radius:0; background:#fffdf7; color:#203c32; padding:8px 12px; font:14px/1.4 'Anek Latin',system-ui,sans-serif; }
.visual-text-options button { margin-left:auto; min-height:42px; padding:8px 14px; border:1px solid #bdc7b2; background:transparent; color:#203c32; font:13px/1.5 system-ui,sans-serif; cursor:pointer; }
.visual-fallback { padding:60px 35px; }
.visual-announcement { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }
@media(max-width:1050px) { .visual-shell { grid-template-columns:minmax(0,1fr) 270px; } .visual-detail { padding:25px 20px; } }
@media(max-width:800px) { .visual-shell { grid-template-columns:1fr; } .visual-detail { border-left:0; border-top:1px solid #cbd2c0; padding:25px; } .visual-canvas { min-height:0; } .visual-detail [data-visual-links] { display:grid; grid-template-columns:1fr 1fr; gap:0 20px; } }
@media(max-width:500px) { .visual-explorer.portal-wrap { padding-inline:18px; } .visual-tabs button { padding:13px 12px; font-size:13px; flex:1; } .visual-toolbar { padding:10px 12px; gap:8px; } .visual-toolbar>span { font-size:12px; } .visual-toolbar button { padding-inline:6px; min-width:32px; } .visual-detail [data-visual-links] { display:block; } .visual-detail h3 { font-size:31px; } .visual-text-options select { width:100%; } .visual-text-options button { margin-left:0; } }

.visual-detail-jump { display:none; }
@media(max-width:800px) { .visual-detail-jump { display:block; padding:12px 20px 18px; font-size:14px; font-weight:600; color:#365b3e; } }
/* Dedicated explorer and language-edition entry points. */
.visual-explorer { color:#203c32; }
.visual-explorer h1 { font:400 clamp(35px,4vw,60px)/1.18 Georgia,serif; letter-spacing:-.035em; margin:0; }
html:not([lang=en]) .visual-explorer h1 { font-family:var(--font); font-weight:600; letter-spacing:0; }
.visual-explorer.portal-wrap { width:min(1500px,100%); }
.explore-filters { display:flex; flex-wrap:wrap; gap:20px; padding:20px; background:#e9eddf; border:1px solid #cbd2c0; margin-block:24px; align-items:end; }
.explore-filters label { font-size:13px; flex:0 1 260px; }
.explore-filters select { display:block; width:100%; min-height:44px; margin-top:5px; border:1px solid #b5c2aa; background:#fffdf5; color:#203c32; padding:8px 12px; font:15px/1.5 var(--font,system-ui); }
.explore-filters p { margin:0 0 10px; font-size:13px; color:#50604c; }
.graph-controls { border:1px solid #cbd2c0; border-top:0; padding:15px 20px; background:#fdfbf5; }
.graph-controls>div:first-child { display:flex; gap:8px; flex-wrap:wrap; }
.graph-controls button { border:1px solid #b5c2aa; background:#f4f3e9; color:#203c32; min-height:40px; padding:8px 13px; font:13px/1.5 var(--font,system-ui); cursor:pointer; }
.graph-controls button:disabled { opacity:.4; cursor:default; }
.graph-controls form { display:flex; align-items:end; gap:10px; margin-top:15px; }
.graph-controls label { font-size:12px; flex:1; max-width:450px; }
.graph-controls input { display:block; width:100%; min-height:42px; margin-top:5px; padding:8px 12px; border:1px solid #b5c2aa; background:#fffdf7; font:14px/1.5 var(--font,system-ui); color:#203c32; }
.graph-controls nav { display:flex; align-items:center; flex-wrap:wrap; gap:6px; margin-top:12px; }
.graph-controls nav button { border:0; background:none; padding:2px 5px; min-height:28px; text-decoration:underline; }
.graph-key { display:flex; gap:18px; flex-wrap:wrap; font-size:11px; margin-top:10px; color:#50604c; }
.visual-canvas .network-node:focus .node-disc { stroke:#aa702a; stroke-width:4; }
.visual-canvas .network-node text { font-size:13px; paint-order:stroke; stroke:#eef1e7; stroke-width:5px; stroke-linejoin:round; }
.visual-canvas .network-link-label { font-size:10px; paint-order:stroke; stroke:#eef1e7; stroke-width:4px; }
.graph-neighbors { margin-top:25px; border-top:1px solid #cbd2c0; padding-top:18px; }
.graph-neighbors h4 { font-size:14px; margin:0 0 10px; }
.graph-neighbors button { display:block; width:100%; text-align:left; border:0; border-bottom:1px solid #dce0d1; background:transparent; color:#365b3e; padding:10px 0; font:13px/1.5 var(--font,system-ui); cursor:pointer; }
.graph-neighbors small { display:block; color:#64705b; font-size:11px; }
.visual-detail { max-height:800px; overflow:auto; }
.explore-teaser { display:grid; grid-template-columns:1fr 1fr; gap:35px; align-items:center; padding-block:35px; margin-block:35px; border-block:1px solid #cbd2c0; }
.explore-teaser h2 { font-size:32px; }
.explore-teaser p { font-size:14px; }
.explore-teaser .button { background:#203c32; color:#fff8e7; border-radius:0; }
.explore-teaser-art { background:#e9eddf; color:#203c32; text-decoration:none; padding:15px; border:1px solid #cbd2c0; }
.explore-teaser-art svg { display:block; width:100%; max-height:180px; }
.explore-teaser-art span { display:block; font-size:14px; text-align:right; }
@media(max-width:800px) { .visual-detail { max-height:none; } .explore-teaser { grid-template-columns:1fr 1fr; gap:20px; } }
@media(max-width:500px) { .explore-teaser { grid-template-columns:1fr; } .explore-filters { gap:12px; padding:15px; } .explore-filters label { flex:1 1 100%; } .graph-controls { padding:12px; } .graph-controls button { font-size:12px; padding-inline:9px; } .visual-explorer h1 { font-size:34px; } }
.visual-explorer.portal-section { padding-block:40px; }
.graph-controls { display:grid; grid-template-columns:1fr minmax(240px,400px); gap:10px 20px; }
.graph-controls form { margin-top:0; }
.graph-controls nav { margin-top:0; }
.graph-controls .graph-key { margin-top:0; align-items:center; }
@media(max-width:900px) { .graph-controls { grid-template-columns:1fr; } }
@media(max-width:500px) { .visual-explorer.portal-section { padding-top:28px; } }
@media(max-width:500px) { .visual-canvas .network-node text { font-size:20px; } .graph-key { gap:6px 12px; } }
.visual-explorer { background:#f8f5ec; }
@media(max-width:500px) { .visual-canvas .network-link-label { display:none; } }

/* Article chronology uses native-language frontmatter; no D3 dependency. */
.article-timeline{margin:3rem 0;padding:1.5rem;border:1px solid var(--line,#c9cdbc);background:var(--paper,#f7f5ed);color:var(--ink,#233c31)}
.article-timeline-years{display:flex;flex-wrap:wrap;gap:.65rem;padding:1rem 0 1.5rem;border-bottom:2px solid #9caa86}
.article-timeline-years[hidden],.article-timeline li[hidden]{display:none}
.article-timeline-years button{font:inherit;cursor:pointer;padding:.65rem .85rem;border:1px solid #9caa86;background:transparent;color:inherit}
.article-timeline-years button[aria-pressed="true"]{background:#294c3b;color:#fff9e9;border-color:#294c3b}
.article-timeline-years button:focus-visible{outline:3px solid #aa702a;outline-offset:3px}
.article-timeline ol{list-style:none;padding:0;margin:1.5rem 0 0}
.article-timeline li h3{font:2rem Georgia,serif;margin:.5rem 0;color:inherit}
.article-timeline li p{line-height:1.8;margin:0}
