.ulg-hero{position:relative;overflow:hidden;margin:0 0 22px;padding:clamp(28px,5vw,58px);border:1px solid var(--line);border-radius:22px;background:linear-gradient(135deg,color-mix(in srgb,var(--surface) 92%,var(--accent-soft)),var(--surface));box-shadow:var(--shadow)}
.ulg-hero:after{content:"";position:absolute;right:-90px;top:-120px;width:360px;height:360px;border:1px solid color-mix(in srgb,var(--accent) 22%,transparent);border-radius:50%;box-shadow:0 0 0 36px color-mix(in srgb,var(--accent) 4%,transparent),0 0 0 82px color-mix(in srgb,var(--accent) 3%,transparent);pointer-events:none}
.ulg-hero .eyebrow{position:relative;z-index:1;margin-bottom:15px;color:var(--accent);font:600 12px/1.2 var(--font-code);letter-spacing:.13em;text-transform:uppercase}
.ulg-hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(290px,.8fr);gap:34px;align-items:end}
.ulg-hero h1{max-width:850px;margin:0 0 14px;font-size:clamp(36px,5.2vw,68px);letter-spacing:-.035em}
.ulg-hero p{max-width:840px;margin:0;color:var(--muted);font-size:clamp(16px,1.7vw,20px)}
.ulg-hero dl{display:grid;grid-template-columns:repeat(2,1fr);margin:0;border:1px solid color-mix(in srgb,var(--line) 80%,transparent);border-radius:16px;background:color-mix(in srgb,var(--surface) 82%,transparent);backdrop-filter:blur(10px)}
.ulg-hero dl div{padding:18px 20px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.ulg-hero dl div:nth-child(2n){border-right:0}.ulg-hero dl div:nth-last-child(-n+2){border-bottom:0}
.ulg-hero dt{font:600 clamp(26px,3vw,40px)/1 var(--font-display)}.ulg-hero dd{margin:7px 0 0;color:var(--muted);font:500 11px/1.25 var(--font-code);letter-spacing:.06em;text-transform:uppercase}
.ulg-contract{position:relative;z-index:1;margin-top:24px!important;padding-top:17px;border-top:1px solid var(--line);font-size:14px!important}.ulg-contract strong{color:var(--ink)}
.ulg-shell{margin-bottom:24px;border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden}
.ulg-toolbar{display:grid;grid-template-columns:auto minmax(260px,1fr) auto;gap:14px;align-items:end;padding:16px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--surface-2) 58%,var(--surface))}
.ulg-presets,.ulg-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.ulg-toolbar button{appearance:none;padding:9px 12px;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:var(--surface);font:600 12px/1.1 var(--font-body);cursor:pointer;transition:transform .15s,border-color .15s,background .15s}.ulg-toolbar button:hover{border-color:var(--accent);transform:translateY(-1px)}.ulg-toolbar button.active{border-color:var(--accent);color:var(--accent-2);background:var(--accent-soft)}
.ulg-search{display:grid;gap:6px}.ulg-search span{color:var(--muted);font:500 10px/1.1 var(--font-code);letter-spacing:.06em;text-transform:uppercase}.ulg-search input{width:100%;min-height:38px;padding:8px 12px;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:var(--surface);font:14px/1.3 var(--font-body);outline:0}.ulg-search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 13%,transparent)}
.ulg-actions span{min-width:116px;color:var(--muted);font:500 11px/1.25 var(--font-code);text-align:right}
.ulg-stage{display:grid;grid-template-columns:minmax(0,1fr) 390px;min-height:720px}
.ulg-canvas{position:relative;min-width:0;min-height:720px;overflow:hidden;border-right:1px solid var(--line);background-image:linear-gradient(color-mix(in srgb,var(--line) 36%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--line) 36%,transparent) 1px,transparent 1px);background-size:28px 28px;background-color:color-mix(in srgb,var(--paper) 68%,var(--surface));cursor:grab;touch-action:none}.ulg-canvas.dragging{cursor:grabbing}.ulg-canvas svg{display:block;width:100%;height:720px;user-select:none}.ulg-canvas>small{position:absolute;left:14px;bottom:12px;padding:6px 9px;border:1px solid var(--line);border-radius:7px;color:var(--muted);background:color-mix(in srgb,var(--surface) 88%,transparent);font:500 10px/1.25 var(--font-code);pointer-events:none}.ulg-canvas>[data-graph-empty]{position:absolute;inset:45% 20%;text-align:center;color:var(--muted)}
.ulg-edges path{fill:none;stroke:color-mix(in srgb,var(--muted) 46%,transparent);stroke-width:1.35;vector-effect:non-scaling-stroke}.ulg-edges marker path{fill:color-mix(in srgb,var(--muted) 64%,transparent);stroke:none}.ulg-node{cursor:pointer;outline:none}.ulg-node rect{fill:var(--surface);stroke:var(--line);stroke-width:1.25;filter:drop-shadow(0 7px 11px color-mix(in srgb,var(--ink) 9%,transparent));transition:stroke .15s,fill .15s}.ulg-node:hover rect,.ulg-node:focus rect{stroke:var(--accent);fill:color-mix(in srgb,var(--accent-soft) 28%,var(--surface))}.ulg-node.selected rect{stroke:var(--accent);stroke-width:2;fill:color-mix(in srgb,var(--accent-soft) 50%,var(--surface))}.ulg-node text{pointer-events:none}.ulg-node .kind{fill:var(--muted);font:600 8.5px/1 var(--font-code);letter-spacing:.08em;text-transform:uppercase}.ulg-node .label{fill:var(--ink);font:600 11px/1.25 var(--font-body)}
.ulg-node .status.compiled,.ulg-detail i.compiled,.ulg-legend i[data-status="compiled"]{fill:var(--green);background:var(--green)}.ulg-node .status.partial,.ulg-detail i.partial,.ulg-legend i[data-status="partial"]{fill:var(--yellow);background:var(--yellow)}.ulg-node .status.audited,.ulg-detail i.audited,.ulg-legend i[data-status="audited"]{fill:var(--purple);background:var(--purple)}.ulg-node .status.planned,.ulg-detail i.planned,.ulg-legend i[data-status="planned"]{fill:var(--muted);background:var(--muted)}.ulg-node .status.literature-open,.ulg-detail i.literature-open,.ulg-legend i[data-status="literature-open"]{fill:var(--red);background:var(--red)}.ulg-node .status.shared,.ulg-detail i.shared,.ulg-legend i[data-status="shared"]{fill:var(--accent);background:var(--accent)}
.ulg-detail{min-width:0;max-height:720px;overflow:auto;padding:22px;background:var(--surface);scrollbar-width:thin}.ulg-placeholder{padding:38px 10px}.ulg-placeholder span,.ulg-detail header>span{color:var(--accent);font:600 10px/1.2 var(--font-code);letter-spacing:.1em;text-transform:uppercase}.ulg-placeholder h2{margin:11px 0 8px;font-size:30px}.ulg-placeholder p{color:var(--muted)}
.ulg-detail header{position:relative;padding-bottom:18px;border-bottom:1px solid var(--line)}.ulg-detail header i{position:absolute;right:0;top:0;padding:5px 8px;border-radius:999px;color:#fff;font:600 9px/1 var(--font-code);font-style:normal;text-transform:uppercase}.ulg-detail header h2{margin:11px 0 8px;font:650 29px/1.08 var(--font-display)}.ulg-detail header p{margin:0;color:var(--muted);font-size:13px}.ulg-detail section{padding:18px 0;border-bottom:1px solid var(--line)}.ulg-detail h3{margin:0 0 10px;color:var(--muted);font:600 10px/1.2 var(--font-code);letter-spacing:.08em;text-transform:uppercase}.ulg-detail section>strong{display:block;margin-bottom:10px;font-size:15px}.ulg-formula,.ulg-equations li>div{overflow-x:auto;padding:12px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2);font-size:15px}.ulg-equations{display:grid;gap:11px;margin:0;padding:0;list-style:none}.ulg-equations li p{margin:7px 2px 0;color:var(--muted);font-size:12px}
.ulg-details{display:grid;gap:0;margin:16px 0}.ulg-details>div{display:grid;gap:5px;padding:11px 0;border-bottom:1px solid var(--line)}.ulg-details dt{color:var(--muted);font:600 9px/1.2 var(--font-code);letter-spacing:.07em;text-transform:uppercase}.ulg-details dd{margin:0;overflow-wrap:anywhere;font-size:12px;line-height:1.55}.ulg-links{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:16px 0}.ulg-links a{display:flex;justify-content:space-between;gap:8px;padding:10px;border:1px solid var(--line);border-radius:9px;text-decoration:none;font:600 11px/1.3 var(--body-font)}.ulg-links a.primary{border-color:var(--accent);color:#fff;background:var(--accent)}
.ulg-neighbors{display:grid;gap:7px}.ulg-neighbors button{display:grid;gap:3px;width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--surface);text-align:left;font:600 11px/1.35 var(--font-body);cursor:pointer}.ulg-neighbors button:hover{border-color:var(--accent)}.ulg-neighbors button span{color:var(--muted);font:500 8px/1.2 var(--font-code);letter-spacing:.08em;text-transform:uppercase}
.ulg-legend{display:flex;gap:18px;align-items:center;flex-wrap:wrap;padding:11px 16px;border-top:1px solid var(--line);color:var(--muted);font:500 10px/1.2 var(--font-code)}.ulg-legend span{display:flex;gap:6px;align-items:center}.ulg-legend i{display:inline-block;width:8px;height:8px;border-radius:50%}
.ulg-semantics{margin:0 0 28px;padding:26px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}.ulg-semantics>.section-heading{margin-bottom:18px}.ulg-semantics>div:last-child{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.ulg-semantics article{padding:17px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--surface-2) 48%,var(--surface))}.ulg-semantics article b{color:var(--accent);font:600 10px/1 var(--font-code)}.ulg-semantics article h3{margin:13px 0 7px;font-size:17px}.ulg-semantics article p{margin:0;color:var(--muted);font-size:13px}
.ulg-context{display:grid;grid-template-columns:1fr auto;grid-template-areas:"tag arrow" "label arrow";gap:3px 18px;align-items:center;margin:18px 0;padding:13px 15px;border:1px solid var(--line);border-radius:11px;color:var(--ink);background:linear-gradient(100deg,color-mix(in srgb,var(--accent-soft) 42%,var(--surface)),var(--surface));text-decoration:none}.ulg-context:hover{border-color:var(--accent)}.ulg-context span{grid-area:tag;color:var(--accent);font:600 9px/1 var(--font-code);letter-spacing:.08em;text-transform:uppercase}.ulg-context strong{grid-area:label;font-size:13px}.ulg-context b{grid-area:arrow;color:var(--accent);font-size:18px}

/* Relation-aware focus: preserve context while making the selected formal branch legible. */
.ulg-edge{transition:opacity .16s ease,stroke .16s ease,stroke-width .16s ease}.ulg-edge.formal-edge{stroke-dasharray:none;opacity:.52}.ulg-edge.overlay-edge{stroke-dasharray:7 5;opacity:.38}.ulg-edge.related{stroke:var(--accent);stroke-width:2.55;opacity:1}.ulg-edge.related.overlay-edge{stroke-dasharray:8 5}.ulg-edge.muted{opacity:.075}.ulg-edge.related.incoming{stroke:color-mix(in srgb,var(--accent) 78%,var(--ink))}.ulg-edge.related.outgoing{stroke:var(--accent)}
.ulg-arrow-marker path{fill:color-mix(in srgb,var(--muted) 70%,transparent);stroke:none}.ulg-arrow-marker.focus path{fill:var(--accent)}
.ulg-node{transition:opacity .16s ease}.ulg-node.related rect{stroke:color-mix(in srgb,var(--accent) 72%,var(--line));stroke-width:1.9;fill:color-mix(in srgb,var(--accent-soft) 24%,var(--surface))}.ulg-node.muted{opacity:.24}.ulg-node.selected,.ulg-node.related{opacity:1}
.ulg-line-key{display:inline-block;width:28px;height:0;border-top:2px solid color-mix(in srgb,var(--muted) 72%,transparent);border-radius:0!important}.ulg-line-key.overlay{border-top-style:dashed}.ulg-line-key.formal{border-top-style:solid}.ulg-legend .edge-semantics{padding-left:9px;border-left:1px solid var(--line)}

@media(max-width:1180px){.ulg-stage{grid-template-columns:minmax(0,1fr) 340px}.ulg-toolbar{grid-template-columns:1fr 1fr}.ulg-actions{grid-column:1/-1;justify-content:flex-end}}
@media(max-width:900px){.ulg-hero-grid{grid-template-columns:1fr}.ulg-stage{grid-template-columns:1fr}.ulg-canvas{border-right:0;border-bottom:1px solid var(--line)}.ulg-detail{max-height:none}.ulg-semantics>div:last-child{grid-template-columns:repeat(2,1fr)}}
@media(max-width:650px){.ulg-hero{padding:26px 20px;border-radius:14px}.ulg-hero h1{font-size:36px}.ulg-hero dl{grid-template-columns:1fr 1fr}.ulg-toolbar{grid-template-columns:1fr}.ulg-actions{grid-column:auto;justify-content:flex-start}.ulg-stage,.ulg-canvas{min-height:620px}.ulg-canvas svg{height:620px}.ulg-links,.ulg-semantics>div:last-child{grid-template-columns:1fr}.ulg-detail{padding:18px}.ulg-toolbar button{font-size:11px}}
/* Conceptual transport cards retain the shared reader palette. */
.ulg-functor-links { display:flex; flex-wrap:wrap; gap:.5rem; margin:1rem 0; }
.ulg-functor-links button { font:inherit; color:var(--ink); background:var(--surface); border:1px solid var(--line); border-radius:8px; padding:.65rem .8rem; cursor:pointer; }
.ulg-functor-links button:focus-visible { outline:2px solid var(--accent); }
.ulg-hyperedge small { display:block; margin:.3rem 0; }

/* Larger labels for the compact conceptual atlas; the proof views are unchanged. */
.ulg-canvas[data-view="functor"] .ulg-node .label { font-size:20px; }
.ulg-canvas[data-view="functor"] .ulg-node .kind { font-size:11px; }
.ulg-canvas[data-view="functor"] .ulg-node.muted { opacity:.48; }

/* Membership is an independent channel: status dots and edge style retain truth. */
.ulg-scope-controls { display:flex; flex-wrap:wrap; gap:12px; align-items:center; margin:12px 0; }
.ulg-scope-controls label { display:flex; align-items:center; gap:8px; font-weight:650; }
.ulg-scope-controls select { font:inherit; padding:7px 12px; border:1px solid var(--line,#cbd5df); border-radius:8px; background:var(--bg,#fff); color:inherit; max-width:100%; }
.ulg-scope-controls p { flex:1 1 330px; margin:0; font-size:12px; color:var(--muted,#5b6471); }
.ulg-scope-legend { display:flex; flex-wrap:wrap; gap:9px 18px; padding:10px 0 16px; }
.ulg-scope-legend[hidden] { display:none; }
.ulg-scope-legend span { display:inline-flex; align-items:center; gap:6px; font-size:12px; }
.ulg-scope-legend i { width:12px; height:12px; border-radius:3px; display:inline-block; }
.ulg-column-title { fill:var(--muted,#5b6471); font-size:11px; font-weight:700; letter-spacing:1px; }
.ulg-scope-note { border-left:3px solid #167ba6; padding-left:10px; }
.ulg-scope-note small { display:block; line-height:1.6; }
/* The taxonomy overview uses a wide canvas; selecting a node opens details below. */
.ulg-stage:has(.ulg-canvas[data-view="perspectives"]) { grid-template-columns:minmax(0,1fr); }
.ulg-canvas[data-view="perspectives"] { border-right:0; border-bottom:1px solid var(--line); }
.ulg-canvas[data-view="perspectives"] .ulg-node .label { font-size:16px; }
.ulg-canvas[data-view="perspectives"] .ulg-node .kind { font-size:9px; }
.ulg-stage:has(.ulg-canvas[data-view="perspectives"]) .ulg-detail { max-height:none; }
.ulg-toolbar .ulg-scope-controls,.ulg-toolbar .ulg-scope-legend { grid-column:1/-1; }
.ulg-toolbar .ulg-scope-controls { margin:0; }
.ulg-detail dl.ulg-details { display:block; }
.ulg-detail dl.ulg-details > div { display:block; width:auto; }
.ulg-detail dl.ulg-details dd { margin-top:5px; }
/* Companion proof targets are red, independently of library-affiliation colour. */
.ulg-detail header h2,.ulg-detail header p,.ulg-neighbors button{overflow-wrap:anywhere}
.ulg-hero .ulg-hero-grid>dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));min-width:0}
.ulg-hero .ulg-hero-grid>dl>div{min-width:0;display:block}
.ulg-hero .ulg-hero-grid dt{white-space:nowrap}
.ulg-stage:has(.ulg-canvas[data-local="true"]){grid-template-columns:minmax(0,1fr)}
.ulg-canvas[data-local="true"]{border-right:0;border-bottom:1px solid var(--line)}
.ulg-canvas[data-local="true"] .ulg-node .label{font-size:15px}
.ulg-canvas[data-local="true"] .ulg-node .kind{font-size:11px}
.ulg-node .status.compiled,.ulg-detail i.compiled,.ulg-legend i[data-status="compiled"]{fill:#2563eb;background:#2563eb}
.ulg-node .status.planned,.ulg-detail i.planned,.ulg-legend i[data-status="planned"]{fill:var(--red,#ba3535);background:var(--red,#ba3535)}
.ulg-node[data-id^="tech:"] .status.planned,
.ulg-node[data-id^="case:ASTIS-SW-SPHMC"] .status.planned,
.ulg-node[data-id="case:ASTIS-SW-PBPS-2026"] .status.planned { fill:var(--red,#ba3535); }
.ulg-node[data-id^="lineage:"] .status { fill:var(--muted,#747b86); }
