/* Site atlas: radial tree (drawn by atlas-tree.js) and its always-present outline list. */
.atlas-tree-page { --at-root:#efe2ff; --at-t1:#b69dff; --at-t2:#91aeff; --at-t3:#87d9c9; --at-gold:#edcc93; --at-ink:#0d101b; width:min(1460px,calc(100% - 48px)); margin:0 auto; padding:34px 0 80px; min-width:0; }
.atlas-tree-visually-hidden { position:absolute!important; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0; }
.atlas-tree-templates { display:none; }

.atlas-tree-intro { max-width:880px; padding:12px 0 28px; }
.atlas-tree-intro h1 { margin:0 0 18px; font-size:clamp(2.3rem,5vw,4.4rem); font-weight:500; }
.atlas-tree-intro h1 em { font-family:Georgia,"Times New Roman",serif; font-weight:400; color:#c2b3ef; }
.atlas-tree-intro .lede { margin:0 0 22px; }
.atlas-tree-legend { display:flex; flex-wrap:wrap; gap:10px 24px; margin:0; padding:0; list-style:none; font-size:12px; color:#bfc4da; }
.atlas-tree-legend li { display:inline-flex; align-items:center; gap:9px; }
.atlas-tree-legend b { color:#ece6ff; font-weight:600; }
.atlas-tree-swatch { width:11px; height:11px; border-radius:50%; background:var(--swatch); box-shadow:0 0 0 3px color-mix(in srgb,var(--swatch) 18%,transparent),0 0 14px var(--swatch); }
.atlas-tree-page .tier-0 { --swatch:var(--at-root); --dot:var(--at-root); }
.atlas-tree-page .tier-1 { --swatch:var(--at-t1); --dot:var(--at-t1); }
.atlas-tree-page .tier-2 { --swatch:var(--at-t2); --dot:var(--at-t2); }
.atlas-tree-page .tier-3 { --swatch:var(--at-t3); --dot:var(--at-t3); }

/* Toolbar */
.atlas-tree-toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:14px 24px; padding:16px 18px; border:1px solid #ffffff14; border-radius:12px; background:linear-gradient(130deg,#1a2030c9,#151a29b3); }
.atlas-tree-search { display:grid; gap:6px; flex:1 1 320px; max-width:540px; min-width:0; margin:0; }
.atlas-tree-search label { font-size:10px; font-weight:600; letter-spacing:.16em; text-transform:uppercase; color:#ac9ee9; }
.atlas-tree-search-row { display:flex; gap:8px; min-width:0; }
.atlas-tree-search input { flex:1 1 auto; min-width:0; min-height:44px; padding:9px 14px; color:#eeeef7; background:#0f1322; border:1px solid #3a4160; border-radius:7px; }
.atlas-tree-search input::placeholder { color:#737b96; }
.atlas-tree-search input:focus-visible { outline:3px solid #b3c8ff; outline-offset:2px; }
.atlas-tree-search-status { display:block; min-height:1.5em; font-size:12px; color:#a9b0c8; }
.atlas-tree-zoom { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.atlas-tree-zoom .button { min-width:44px; padding:8px 14px; font-size:16px; }
.atlas-tree-zoom [data-zoom="reset"] { font-size:12px; }
.atlas-tree-zoom .button[aria-disabled="true"] { opacity:.42; cursor:not-allowed; }
.atlas-tree-zoom-level { min-width:3.6em; text-align:center; font-size:12px; font-variant-numeric:tabular-nums; color:#c9c3ea; }
.atlas-tree-hint { max-width:920px; margin:12px 2px 0; font-size:12px; color:#8e95ae; }

/* Map and detail panel */
.atlas-tree-layout { display:grid; gap:20px; align-items:start; margin-top:16px; }
.atlas-tree-viewport { position:relative; width:min(92vw,1100px,100%); aspect-ratio:1; margin:0 auto; overflow:hidden; border:1px solid #ffffff0d; border-radius:24px; background:radial-gradient(circle at 50% 50%,#2b204c70,transparent 46%),radial-gradient(circle,#151a2c,#0d101b 72%); touch-action:manipulation; }
.atlas-tree-viewport.is-zoomed { cursor:grab; touch-action:none; }
.atlas-tree-viewport.is-panning { cursor:grabbing; }
.atlas-tree-svg { display:block; width:100%; height:100%; overflow:hidden; font-family:Inter,"Segoe UI",Arial,sans-serif; -webkit-user-select:none; user-select:none; }

.atlas-tree-svg .at-ring { fill:none; stroke:#a390dc; stroke-opacity:.16; stroke-width:.8; stroke-dasharray:2 6; }
.atlas-tree-svg .at-divider { fill:none; stroke:#a390dc; stroke-opacity:.14; stroke-width:.8; stroke-dasharray:1 5; }
.atlas-tree-svg .at-glow-core { stop-opacity:.75; }
.atlas-tree-svg .at-glow-mid { stop-opacity:.2; }
.atlas-tree-svg .at-glow-edge { stop-opacity:0; }
.atlas-tree-svg .at-glow.t0 stop { stop-color:var(--at-root); }
.atlas-tree-svg .at-glow.t1 stop { stop-color:var(--at-t1); }
.atlas-tree-svg .at-glow.t2 stop { stop-color:var(--at-t2); }
.atlas-tree-svg .at-glow.t3 stop { stop-color:var(--at-t3); }

.atlas-tree-svg .at-link { fill:none; stroke-linecap:round; transition:opacity .2s,stroke .2s,stroke-width .2s; }
.atlas-tree-svg .at-link.t1 { stroke:var(--at-t1); stroke-opacity:.6; stroke-width:2.4; }
.atlas-tree-svg .at-link.t2 { stroke:var(--at-t2); stroke-opacity:.4; stroke-width:1.4; }
.atlas-tree-svg .at-link.t3 { stroke:var(--at-t3); stroke-opacity:.32; stroke-width:.9; }

.atlas-tree-svg .at-node { cursor:pointer; outline:none; transition:opacity .2s; }
.atlas-tree-svg .at-halo { transform-box:fill-box; transform-origin:center; transition:transform .25s,opacity .2s; }
.atlas-tree-svg .at-dot { transition:fill .2s,stroke .2s; }
.atlas-tree-svg .at-node.t0 .at-dot { fill:#221a3a; stroke:var(--at-root); stroke-width:1.6; }
.atlas-tree-svg .at-node.t1 .at-dot { fill:#1b1932; stroke:var(--at-t1); stroke-width:1.4; }
.atlas-tree-svg .at-node.t2 .at-dot { fill:var(--at-t2); stroke:var(--at-ink); stroke-width:1.5; }
.atlas-tree-svg .at-node.t3 .at-dot { fill:var(--at-t3); }
.atlas-tree-svg .at-label { fill:#c5cbe0; paint-order:stroke; stroke:var(--at-ink); stroke-width:3px; stroke-linejoin:round; transition:fill .2s; }
.atlas-tree-svg .at-node.t0 .at-label { fill:#f3ecff; stroke:none; font-family:Georgia,"Times New Roman",serif; }
.atlas-tree-svg .at-node.t1 .at-label { fill:#ebe5ff; stroke:none; font-weight:600; }
.atlas-tree-svg .at-node.t2 .at-label { fill:#d5dcff; font-weight:600; }
.atlas-tree-svg .at-node.t3 .at-label { fill:#b9c3da; }
.atlas-tree-svg .at-node:hover .at-label { fill:#ffffff; }

/* Lineage highlight: the hovered/focused node, its path to the centre, and (softer) its branch. */
.atlas-tree-svg.has-active .at-node:not(.is-lit):not(.is-branch),
.atlas-tree-svg.has-active .at-link:not(.is-lit):not(.is-branch) { opacity:.2; }
.atlas-tree-svg .at-link.is-lit { stroke:#f3ecff; stroke-opacity:1; stroke-width:2; filter:drop-shadow(0 0 3px #b9a2ff); }
.atlas-tree-svg .at-link.t1.is-lit { stroke-width:3.2; }
.atlas-tree-svg .at-node.is-lit .at-dot { stroke:#ffffff; stroke-width:2; }
.atlas-tree-svg .at-node.t2.is-lit .at-dot,.atlas-tree-svg .at-node.t3.is-lit .at-dot { fill:#ffffff; }
.atlas-tree-svg .at-node.is-lit .at-halo { transform:scale(1.7); }
.atlas-tree-svg .at-node.t0.is-lit .at-halo,.atlas-tree-svg .at-node.t1.is-lit .at-halo { transform:scale(1.18); }
.atlas-tree-svg .at-node.is-lit .at-label { fill:#ffffff; }

/* Search matches stay bright; everything else recedes. */
.atlas-tree-svg.is-searching .at-node:not(.is-match),
.atlas-tree-svg.is-searching .at-link:not(.is-lit) { opacity:.22; }
.atlas-tree-svg .at-node.is-match .at-dot { fill:var(--at-gold); stroke:#fff3d6; }
.atlas-tree-svg .at-node.t0.is-match .at-dot,.atlas-tree-svg .at-node.t1.is-match .at-dot { fill:#3a2f1c; stroke:var(--at-gold); stroke-width:2.4; }
.atlas-tree-svg .at-node.is-match .at-label { fill:#ffe3a8; }
.atlas-tree-svg .at-node.is-match .at-halo { transform:scale(2.1); }
.atlas-tree-svg.has-active .at-node.is-lit,.atlas-tree-svg.has-active .at-link.is-lit { opacity:1; }

.atlas-tree-svg .at-node:focus-visible .at-halo { stroke:#ffffff; stroke-width:1.4; opacity:1; }
.atlas-tree-svg .at-node.t3:focus-visible .at-halo { stroke-width:1; }
.atlas-tree-svg .at-node:focus-visible .at-label { fill:#ffffff; text-decoration:underline; }

.atlas-tree-detail { --tier-color:var(--at-root); display:grid; grid-template-columns:auto minmax(0,1fr); gap:16px; min-width:0; padding:20px; border:1px solid #ffffff14; border-radius:14px; background:linear-gradient(150deg,#211d36f0,#151a29f0); box-shadow:inset 0 1px 0 #c1b1ff30,0 18px 50px #05060c66; }
.atlas-tree-detail[data-tier="1"] { --tier-color:var(--at-t1); }
.atlas-tree-detail[data-tier="2"] { --tier-color:var(--at-t2); }
.atlas-tree-detail[data-tier="3"] { --tier-color:var(--at-t3); }
.atlas-tree-detail-icon { display:grid; place-items:center; width:76px; height:76px; border-radius:18px; color:var(--tier-color); border:1px solid color-mix(in srgb,var(--tier-color) 35%,transparent); background:radial-gradient(circle,color-mix(in srgb,var(--tier-color) 22%,transparent),transparent 70%); }
.atlas-tree-detail-icon .atlas-icon { width:58px; height:58px; }
.atlas-tree-detail-copy { min-width:0; }
.atlas-tree-detail-tier { margin:0 0 4px; font-size:10px; font-weight:600; letter-spacing:.16em; text-transform:uppercase; color:var(--tier-color); }
.atlas-tree-detail-title { margin:0; font-family:Georgia,"Times New Roman",serif; font-size:24px; line-height:1.2; color:#f1ecff; overflow-wrap:anywhere; }
.atlas-tree-detail-meta { margin:6px 0 10px; font-size:12px; color:#a4acc3; }
.atlas-tree-trail { display:flex; flex-wrap:wrap; margin:0 0 16px; padding:0; list-style:none; font-size:12px; line-height:1.4; }
.atlas-tree-trail li { display:inline-flex; align-items:center; min-width:0; }
.atlas-tree-trail li+li::before { content:"›"; content:"›" / ""; margin:0 7px; color:#6f7690; }
.atlas-tree-trail a,.atlas-tree-trail span { padding:4px 0; overflow-wrap:anywhere; }
.atlas-tree-trail a { color:#b9c6f3; }
.atlas-tree-trail [aria-current] { color:#ece6ff; }
.atlas-tree-open { width:100%; }

/* Outline: the no-script, mobile and screen-reader view of all pages. */
.atlas-tree-outline { margin-top:56px; padding-top:34px; border-top:1px solid #ffffff12; }
.atlas-tree-outline-head .eyebrow { margin-bottom:8px; }
.atlas-tree-outline-head h2 { margin:0 0 22px; }
.atlas-tree-out,.atlas-tree-out ol { margin:0; padding:0; list-style:none; }
.atlas-tree-out-link { display:inline-flex; align-items:baseline; gap:9px; overflow-wrap:anywhere; }
.atlas-tree-out-link::before { content:""; flex:none; width:8px; height:8px; border-radius:50%; background:var(--dot); box-shadow:0 0 8px var(--dot); transform:translateY(-1px); }
.atlas-tree-out-root>.atlas-tree-out-link { font-family:Georgia,"Times New Roman",serif; font-size:22px; color:#f1ecff; min-height:44px; align-items:center; }
.atlas-tree-out-fields { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr)); gap:18px; margin-top:16px!important; }
.atlas-tree-out-field { min-width:0; padding:20px; border:1px solid #ffffff13; border-radius:12px; background:linear-gradient(135deg,#22243870,#171b2888); }
.atlas-tree-out-field>.atlas-tree-out-link { min-height:36px; align-items:center; font-size:18px; font-weight:600; color:#e6dcff; }
.atlas-tree-out-field details { margin-top:4px; }
.atlas-tree-out-field summary { display:flex; align-items:center; gap:8px; min-height:36px; font-size:10px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:#9f95b8; }
.atlas-tree-out-topics>li { padding:10px 0; border-top:1px solid #ffffff0d; }
.atlas-tree-out-topic>.atlas-tree-out-link { font-size:14px; font-weight:600; color:#c8d2ff; }
.atlas-tree-out-leaves { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px!important; }
.atlas-tree-out-leaves .atlas-tree-out-link { align-items:center; min-height:30px; padding:4px 11px; border:1px solid #87d9c933; border-radius:999px; background:#87d9c90a; font-size:12px; line-height:1.3; color:#c3ebe2; }
.atlas-tree-out-leaves .atlas-tree-out-link::before { width:6px; height:6px; transform:none; }
.atlas-tree-out-link:hover { color:#ffffff; }
.atlas-tree-out-leaves .atlas-tree-out-link:hover { border-color:#87d9c999; background:#87d9c91c; }

@media (prefers-reduced-motion:no-preference) {
  .atlas-tree-svg .at-scene { transform-box:fill-box; transform-origin:center; animation:at-bloom .9s cubic-bezier(.2,.7,.2,1) both; }
  .atlas-tree-svg .at-link.is-lit { stroke-dasharray:6 4; animation:at-flow 1.4s linear infinite; }
  .atlas-tree-svg .at-node.is-lit .at-halo { animation:at-pulse 1.8s ease-in-out infinite; }
}
@keyframes at-bloom { from { opacity:.25; transform:scale(.9) rotate(-6deg); } }
@keyframes at-flow { to { stroke-dashoffset:-20; } }
@keyframes at-pulse { 50% { opacity:.55; } }

@media (min-width:1200px) {
  .atlas-tree-layout { grid-template-columns:minmax(0,1100px) minmax(260px,300px); justify-content:center; }
  .atlas-tree-viewport { width:100%; }
  .atlas-tree-detail { position:sticky; top:110px; grid-template-columns:minmax(0,1fr); }
}
@media (min-width:700px) and (max-width:1199px) {
  .atlas-tree-detail { position:sticky; bottom:12px; z-index:2; width:min(100%,860px); margin:0 auto; backdrop-filter:blur(14px); }
  .atlas-tree-detail-meta { margin-bottom:6px; }
  .atlas-tree-trail { margin-bottom:10px; }
  .atlas-tree-open { width:auto; }
}
@media (max-width:699px) {
  .atlas-tree-page { width:calc(100% - 32px); padding-top:22px; }
  .atlas-tree-intro h1 { font-size:clamp(2rem,10vw,2.8rem); }
  .atlas-tree-intro .lede { font-size:15px; }
  .atlas-tree-toolbar { padding:14px; }
  .atlas-tree-search { flex-basis:100%; max-width:none; }
  .atlas-tree-viewport { width:100%; border-radius:16px; }
  .atlas-tree-detail { grid-template-columns:56px minmax(0,1fr); gap:12px; padding:16px; }
  .atlas-tree-detail-icon { width:56px; height:56px; border-radius:14px; }
  .atlas-tree-detail-icon .atlas-icon { width:42px; height:42px; }
  .atlas-tree-detail-title { font-size:20px; }
  .atlas-tree-out-field { padding:16px; }
}
@media (forced-colors:active) {
  .atlas-tree-svg :is(.at-link,.at-ring,.at-divider) { stroke:CanvasText; }
  .atlas-tree-svg .at-node .at-dot { fill:CanvasText; stroke:Canvas; }
  .atlas-tree-svg .at-node .at-label { fill:CanvasText; stroke:none; }
  .atlas-tree-svg .at-node:is(:focus-visible,.is-lit) .at-dot { fill:Highlight; }
}
@media (prefers-reduced-motion:reduce) {
  .atlas-tree-page *,.atlas-tree-page *::before { animation:none!important; transition:none!important; }
}
@media print {
  .atlas-tree-stage,.atlas-tree-templates { display:none!important; }
  .atlas-tree-out-field { break-inside:avoid; background:none; border-color:#999; }
  .atlas-tree-page a { color:#174b99; }
}
