/* A single canvas. Controls and context appear on request. */
:root { --ink:#25233d; --muted:#646175; --bg:#f8f9ff; --line:#dfdce6; --green:#5140a0; }
[hidden] { display:none !important; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
body { background:var(--bg); color:var(--ink); }
header { height:76px; padding:16px 26px; display:flex; flex-wrap:nowrap; border:0; background:transparent; position:relative; z-index:20; gap:16px; }
.brand { font-size:18px; gap:10px; }
.brandmark,.brandmark span { color:#ee595c; }
.brand-sub { font-size:10px; letter-spacing:1.8px; color:#676177; }
.header-actions { display:flex; align-items:center; gap:10px; margin-left:auto; }
.header-actions button,.government-picker select { font:inherit; font-size:14px; color:var(--ink); border:1px solid #d4d0df; background:#fff; border-radius:24px; min-height:42px; padding:8px 16px; }
.header-actions button:hover { background:#e9e5ff; border-color:#6451bf; }
.government-picker select { max-width:170px; }
#site-menu { position:absolute; right:26px; top:68px; background:#fff; border:1px solid var(--line); border-radius:16px; width:250px; padding:12px; box-shadow:0 12px 40px #25233d18; }
#site-menu nav { display:grid; width:100%; height:auto; gap:2px; overflow:visible; }
#site-menu .nav { text-align:left; padding:12px; border:0; border-radius:8px; height:auto; font-size:15px; }
#site-menu .nav.active { background:#eeeaff; }
main { padding:0; max-width:none; }
.map-page { height:100dvh; overflow:hidden; }
.map-page main { height:calc(100dvh - 76px); }
#explore { height:100%; }
.workspace { display:block; position:relative; height:100%; min-height:0; border:0; border-radius:0; background:transparent; box-shadow:none; overflow:hidden; }
.graph-area { position:absolute; inset:0; height:100%; min-height:0; background:transparent; display:block; }
#canvas { position:absolute; inset:0 0 76px; height:auto; min-height:0; overflow:hidden; background:none; }
#graph { position:absolute; inset:0; width:100%; height:100%; min-width:0; min-height:0; aspect-ratio:auto; }
.graph-toolbar { position:absolute; bottom:20px; left:26px; z-index:3; height:auto; padding:0; border:0; background:transparent; }
.graph-toolbar > div:first-child { display:none; }
.view-switch { border:1px solid #d4d0df; border-radius:24px; padding:4px; background:white; }
.view-switch button { border-radius:20px; font-size:14px; padding:8px 14px; }
.view-switch button.selected { background:#e7e2ff; box-shadow:none; color:#423575; }
.legend { position:absolute; bottom:26px; left:50%; transform:translateX(-50%); background:none; border:0; padding:0; gap:20px; font-size:13px; color:#504961; white-space:nowrap; }
.legend .line-legend { display:none; }
.legend i.elected { background:#ff817a; }
.legend i.department { background:#9ea6ff; }
.legend i.commission { background:#ffc857; }
.graph-caption { position:absolute; bottom:0; left:50%; transform:translateX(-50%); max-width:none; width:max-content; font-size:14px; color:#6d657c; background:var(--bg); padding:6px 14px; border-radius:20px; }
.zoom { position:fixed; bottom:20px; right:26px; border:1px solid #d4d0df; border-radius:24px; box-shadow:none; z-index:4; padding:4px; }
.zoom button { min-width:34px; min-height:36px; font-size:16px; border-radius:20px; }
.zoom button:hover { background:#eeeaff; }
.orbit { stroke-width:1.3; opacity:.5; stroke-dasharray:3 6; }
.orbit-label { font-size:12px; letter-spacing:2px; fill:#6e617d; stroke:var(--bg); stroke-width:8px; }
.edge.quiet { opacity:0; }
.edge.selected { stroke:#655092; stroke-width:2; opacity:.8; }
.node circle:not(.halo) { stroke-width:2; }
.node .halo { fill:transparent; stroke:transparent; }
.node.selected .halo { fill:#eee7ff; stroke:#655092; stroke-width:1; }
.node:hover circle:not(.halo),.node:focus-visible circle:not(.halo) { stroke-width:4; }
.node .initials { font-size:12px; fill:#29213c; font-weight:700; }
.node .node-label { font-size:15px; fill:#34283f; stroke:var(--bg); stroke-width:6px; font-weight:500; }
.node.dim { opacity:.16; }
.people circle { fill:#ff8fc7; stroke:#383044; stroke-width:2.5; filter:drop-shadow(0px 5px 0px #383044); }
.people:hover circle,.people:focus-visible circle { fill:#ff72b8; stroke-width:4; }
.people text { fill:#30263c; font-size:18px; font-weight:700; }
.people .people-small { font-size:9px; letter-spacing:1.5px; }
.filters,.detail { position:absolute; top:12px; bottom:84px; z-index:8; width:330px; max-height:none; min-height:0; padding:24px; background:#fff; border:1px solid #d8d3e3; border-radius:18px; box-shadow:0 12px 40px #25233d13; overflow:auto; }
.filters { left:24px; }
.detail { right:24px; width:350px; }
.panel-heading { display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; font-size:20px; }
.panel-heading button,.close-detail { font-size:25px; width:36px; height:36px; border-radius:50%; background:#f1eef8; }
.close-detail { float:right; position:sticky; top:0; z-index:2; margin:-8px -8px 8px 8px; }
.detail-type { display:block; padding-right:30px; font-size:12px; }
.detail h2 { margin-top:18px; font-size:27px; line-height:1.2; }
.detail .description,.detail p,.profile-facts { font-size:16px; line-height:1.65; }
.detail .detail-note { font-size:13px; }
.detail .detail-icon { background:#ebe6ff; color:#514096; }
.profile-action { background:#ede7ff; color:#483778; border-color:#cfc3ec; padding:12px; display:block; width:100%; text-align:left; border-radius:9px; }
#topics { display:block; overflow:visible; }
.topic { width:100%; white-space:normal; font-size:15px; padding:12px 8px; }
.topic.active { background:#eee8ff; }
.topic small { margin-left:auto; }
.filter-heading { display:block; }
.coverage,.sidebar-note { display:none; }
.search { max-width:none; margin:0 0 20px; }
#map-tooltip { position:absolute; top:8px; left:50%; transform:translateX(-50%); max-width:calc(100% - 32px); width:max-content; padding:10px 18px; background:#30283f; color:white; border-radius:24px; font-size:14px; z-index:5; pointer-events:none; box-shadow:0 5px 16px #30283f18; }
#directory { position:absolute; inset:16px 20% 90px; max-height:none; overflow:auto; border:1px solid var(--line); border-radius:16px; background:#fff; padding:12px; }
.directory-row { padding:16px; }
.map-credit { display:none; }
.map-page .map-credit { display:block; position:fixed; top:80px; left:26px; z-index:2; font-size:12px; color:#796d84; }
.map-credit span { display:block; font-size:11px; margin-top:3px; }
.map-page footer { display:none; }
.reading-page { padding:24px; }
footer { margin-top:30px; }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible { outline:3px solid #6b4fd2; outline-offset:3px; }
@media(max-width:800px) {
 header { padding:12px 14px; height:70px; gap:8px; }
 .brand-sub { display:none; }
 .brand { font-size:15px; gap:6px; }
 .brandmark,.brandmark span { font-size:26px; }
 .header-actions { gap:5px; }
 .header-actions button,.government-picker select { padding:7px 10px; font-size:13px; min-height:40px; }
 #find-toggle span { display:none; }
 .map-page main { height:calc(100dvh - 70px); }
 .map-page .map-credit { top:74px; left:16px; }
 .map-credit span { display:none; }
 #canvas { inset:10px 0 100px; }
 .graph-caption { font-size:12px; max-width:95%; text-align:center; }
 .legend { bottom:72px; gap:12px; font-size:11px; }
 .legend span { display:flex; align-items:center; gap:4px; }
 .zoom { bottom:18px; right:12px; }
 .zoom button { min-width:29px; font-size:14px; }
 .graph-toolbar { bottom:18px; left:12px; }
 .view-switch button { padding:8px; font-size:12px; }
 .view-switch span { display:inline; }
 .filters { left:12px; top:34px; width:min(330px,calc(100% - 24px)); bottom:80px; }
 .detail { top:auto; bottom:82px; left:12px; right:12px; width:auto; max-height:43%; padding:20px; border-radius:16px; }
 #map-tooltip { top:32px; font-size:12px; text-align:center; }
 #directory { inset:40px 12px 105px; }
 .node .node-label { font-size:18px !important; }
 .orbit-label { font-size:13px; }
 #site-menu { right:14px; top:62px; }
}
@media(max-width:400px) { .brand > span:last-child { font-size:13px; } .header-actions button,.government-picker select { padding:7px 8px; } .legend { gap:7px; font-size:10px; } }
@media(max-width:800px) {
 .legend { display:flex; flex-wrap:nowrap; width:max-content; max-width:100%; bottom:70px; }
 .legend span { white-space:nowrap; }
 .graph-caption { bottom:24px; }
}
/* Quiet geometry first; names and evidence appear on interaction. */
.node .initials,.node .node-label { opacity:0; pointer-events:none; }
.node.anchor-node .node-label,.node:hover .node-label,.node:focus-visible .node-label,.node.selected .node-label { opacity:1; }
.node.anchor-node .initials { opacity:1; font-size:12px; }
.node .node-shape { stroke-width:1.7; }
.node:hover .node-shape,.node:focus-visible .node-shape,.node.selected .node-shape { stroke-width:3; fill:#eee6ff; }
.node .node-label { font-size:13px; font-weight:600; }
.node:hover,.node:focus-visible { outline:none; }
.orbit-label { font-size:10px; letter-spacing:1.5px; }
.council-seat { cursor:pointer; }
.council-seat circle { fill:#fff8fb; stroke:#ef6889; stroke-width:1.7; }
.council-seat text { fill:#a93055; font:600 13px system-ui; pointer-events:none; }
.council-seat:hover circle,.council-seat:focus-visible circle,.council-seat.selected circle { fill:#ffadd2; stroke:#a93055; stroke-width:3; }
.council-seat:focus-visible { outline:none; }
.council-seat.dim { opacity:.2; }
.membership { stroke:#ef6889 !important; stroke-width:1.3 !important; opacity:.65 !important; }
.legend i.commission { background:#c557ed; }
.legend i.elected { background:#f05e78; }
.legend i.department { background:#8264da; }
.people circle { filter:none; stroke:#bd3c80; stroke-width:1.8; fill:#ffb6da; }
.people:hover circle,.people:focus-visible circle { fill:#ff9dce; stroke-width:3; }
@media(max-width:800px) { .node .node-label { font-size:17px !important; } .orbit-label { font-size:12px; } }

/* Keep all elected offices legible, including Controller and City Attorney. */
.node.elected-node .initials { opacity:1; font-size:14px; font-weight:700; }
.orbit-label { font-size:15px; font-weight:600; letter-spacing:.6px; fill:#514361; stroke:var(--bg); stroke-width:6px; paint-order:stroke; }
@media(max-width:800px) { .orbit-label { font-size:19px; letter-spacing:.2px; } .node.elected-node .initials { font-size:17px; } }
/* Reserve room below the SVG so captions never cover the outer ring. */
#graph { height:calc(100% - 44px); }
@media(max-width:800px) { .graph-caption { bottom:0; } }
/* A separate reading surface for one sourced Council decision. */
.votes-wrap { max-width:1100px; margin:0 auto; padding:12px 0 40px; }
.votes-back { padding:8px 0; color:#5140a0; margin-bottom:24px; font-size:15px; }
.votes-heading { display:flex; justify-content:space-between; align-items:center; gap:20px; }
.votes-heading h1 { font-size:clamp(28px,4vw,42px); line-height:1.15; margin:8px 0 12px; letter-spacing:-1px; }
.sample-label { display:inline-block; white-space:nowrap; border:1px solid #b24b7e; color:#822850; background:#ffe1ef; border-radius:24px; padding:9px 15px; font-size:14px; }
.votes-intro { max-width:750px; font-size:18px; line-height:1.6; }
.sample-note { font-size:14px; line-height:1.6; color:#615969; max-width:850px; margin:14px 0 24px; }
.motion-card,.votes-panel { background:white; border:1px solid #ddd6e5; border-radius:18px; padding:28px; }
.motion-card { border-top:4px solid #d95697; }
.motion-meta { display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; font-size:14px; color:#625a70; }
#votes a { color:#563b9a; text-decoration:underline; text-underline-offset:3px; }
#votes h2 { font-size:24px; line-height:1.3; margin:20px 0 12px; }
#votes h3 { font-size:18px; letter-spacing:0; margin:0 0 12px; }
#votes p { line-height:1.65; }
.motion-place { color:#675d73; font-size:15px; }
.vote-totals { display:flex; gap:30px; align-items:center; padding:24px 0; margin:16px 0 24px; border-block:1px solid #e6e0eb; }
.vote-totals div { min-width:60px; }
.vote-totals strong { font-size:42px; line-height:1.1; display:block; color:#5140a0; }
.vote-totals span { font-size:15px; }
.vote-totals p { margin:0 0 0 auto; max-width:310px; font-size:14px; }
.vote-totals b { font-size:18px; }
.motion-explanation { display:grid; grid-template-columns:1fr 1fr; gap:36px; font-size:16px; }
.votes-columns { display:grid; grid-template-columns:1fr 1fr; gap:24px; margin-top:24px; align-items:start; }
.votes-panel { margin-bottom:24px; }
.votes-panel h2:first-child { margin-top:0 !important; }
.member-votes { padding:0; list-style:none; margin:18px 0; }
.member-votes li { border-top:1px solid #eee9f1; }
.member-votes button { display:flex; gap:12px; align-items:center; width:100%; padding:13px 0; text-align:left; font-size:15px; }
.member-votes button:hover { background:#f5f1fb; }
.vote-district { color:#696073; width:44px; flex-shrink:0; font-size:13px; }
.vote-status { margin-left:auto; font-size:13px; border-radius:20px; padding:4px 9px; }
.vote-status.yes { background:#ece5fb; color:#503482; }
.vote-status.absent { background:#f0edf1; color:#62566a; }
.motion-timeline { list-style:none; padding:0; margin:24px 0; }
.motion-timeline li { border-left:2px solid #dbc7eb; padding:0 0 24px 18px; font-size:16px; line-height:1.5; }
.motion-timeline time { display:block; font-weight:650; color:#613e8e; margin-bottom:6px; }
.vote-footnote,.votes-provenance { font-size:14px; color:#615969; }
.participate-next blockquote { margin:18px 0; padding:16px; background:#faf1f6; border-left:3px solid #d95697; font-size:16px; line-height:1.6; }
.participate-next button { display:block; margin-top:18px; color:#563b9a; font-size:16px; }
@media(max-width:700px) { .votes-heading { display:block; } .sample-label { margin:6px 0 12px; } .motion-card,.votes-panel { padding:20px; } .motion-explanation,.votes-columns { grid-template-columns:1fr; gap:20px; } .vote-totals { flex-wrap:wrap; gap:20px; } .vote-totals p { max-width:none; flex-basis:100%; margin:0; } .reading-page#votes { padding:16px; } }
/* Progressive guidance; the opening graph remains quiet. */
#government-help { padding:8px; width:36px; min-width:36px; min-height:36px; }
#government-explainer { position:absolute; z-index:30; right:24px; top:68px; width:min(360px,calc(100vw - 28px)); padding:22px; background:#fff; border:1px solid #d8d3e3; border-radius:16px; box-shadow:0 12px 35px #30283f20; font-size:16px; line-height:1.55; }
#government-explainer a { color:#563b9a; text-decoration:underline; }
#connection-caption { position:absolute; z-index:6; top:12px; left:24px; width:min(360px,calc(100% - 48px)); padding:12px 16px; background:#fff; border:1px solid #d6c7e5; border-left:4px solid #8b54bb; border-radius:10px; font-size:15px; line-height:1.5; pointer-events:none; }
.edge.focused-edge { stroke:#9b3585; stroke-width:4; opacity:1; }
.node .touch-target,.council-seat .touch-target,.council-seat:hover .touch-target,.council-seat:focus-visible .touch-target,.council-seat.selected .touch-target { fill:transparent; stroke:none; pointer-events:all; }
.node .halo,.node .initials,.node .node-label { pointer-events:none; }
.trace-connection { font-size:14px; padding:10px 12px; border:1px solid #d8cbe8; border-radius:8px; color:#563b9a; margin:12px 0 3px; min-height:44px; }
.trace-connection[aria-pressed=true] { background:#eee5f7; border-color:#9766b6; }
.profile-next { margin:20px 0 14px; }
.profile-next h3 { margin-bottom:8px; font-size:14px; letter-spacing:.3px; }
.research-status { border-left:3px solid #b599cb; padding:10px 12px; background:#f8f5fb; font-size:14px !important; line-height:1.55 !important; }
.profile-sources { margin-top:24px; padding-top:16px; border-top:1px solid #ded7e6; }
.profile-sources summary { cursor:pointer; font-size:15px; min-height:44px; }
.handoff-steps { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin:22px 0; counter-reset:handoff; }
.handoff-steps span { border-top:2px solid #dd75aa; padding:14px 0; font-size:16px; }
.handoff-steps span::before { counter-increment:handoff; content:counter(handoff) '. '; color:#8f3371; font-weight:700; }
.pilot-proposal { margin-top:24px; }
#hurdles h2 { font-size:25px; line-height:1.3; margin-bottom:14px; }
#hurdles p,#hurdles li { font-size:16px; line-height:1.65; }
#hurdles ul { padding-left:20px; }
@media(max-width:800px) {
 .brandmark { display:none; }
 .header-actions { gap:4px; }
 #government-help { width:28px; min-width:28px; padding:4px; }
 #connection-caption { top:34px; left:12px; width:calc(100% - 24px); font-size:14px; padding:10px 12px; }
 .detail { max-height:48%; }
 .detail h2 { font-size:25px; }
 .handoff-steps { grid-template-columns:1fr 1fr; }
 #government-explainer { right:12px; }
 .directory-row { min-height:48px; }
}
/* A gentle invitation to move from the map to participation. */
.action-bubble { position:absolute; z-index:5; left:26px; bottom:112px; display:flex; flex-direction:column; align-items:flex-start; gap:5px; min-height:76px; padding:18px 24px; border:1px solid #c898d0; border-radius:38px 38px 38px 12px; color:#472358; background:radial-gradient(ellipse at 25% 0%,#fffffffa 0%,#fff8fcbb 28%,transparent 62%),linear-gradient(130deg,#f8d2ec,#ddd4ff 68%,#f4daee); box-shadow:inset 0 2px 2px #fff, inset 0 -3px 6px #be8ac42b,0 9px 25px #78478320; cursor:pointer; animation:bubble-drift 6s ease-in-out infinite; transition:box-shadow .25s,border-color .25s; }
.bubble-kicker { font-size:12px; font-weight:500; color:#705077; }
.bubble-title { font-size:18px; font-weight:650; letter-spacing:-.3px; }
.bubble-title > span { margin-left:8px; }
.action-bubble:hover,.action-bubble:focus-visible { animation-play-state:paused; border-color:#9b55b0; box-shadow:inset 0 2px 3px #fff,0 10px 30px #9655b13d; }
@keyframes bubble-drift { 0%,100% { transform:translateY(0) rotate(-1deg); } 50% { transform:translateY(-6px) rotate(1deg); } }
.workspace:has(.detail:not([hidden])) .action-bubble,.workspace:has(.filters:not([hidden])) .action-bubble { visibility:hidden; }
@media(max-width:800px) { .action-bubble { left:14px; top:48px; bottom:auto; min-height:54px; padding:12px 18px; border-radius:30px 30px 30px 10px; gap:2px; } .bubble-kicker { font-size:11px; } .bubble-title { font-size:16px; } }
@media(prefers-reduced-motion:reduce) { .action-bubble { animation:none; transition:none; } }
/* Quiet entry points, with the graph retained behind each panel. */
.explore-actions { position:absolute; top:42px; left:24px; z-index:22; }
#action-toggle { border:1px solid #d8cce4; background:#fff; color:#432650; border-radius:24px; padding:12px 18px; min-height:46px; box-shadow:0 4px 16px #49255d0d; font-size:15px; }
#action-toggle span { margin-left:18px; }
#action-options { display:flex; flex-direction:column; align-items:stretch; gap:2px; height:auto; max-height:calc(100dvh - 230px); overflow-y:auto; max-width:calc(100vw - 48px); margin-top:8px; width:260px; padding:8px; background:#fff; border:1px solid #ddcfe9; border-radius:18px; box-shadow:0 14px 40px #39234622; }
#action-options button { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; min-height:48px; padding:12px; text-align:left; border-radius:10px; color:#432650; font-size:15px; }
#action-options button:hover,#action-options button:focus-visible { background:#f5e9f7; }
#action-options small { color:#75697e; font-size:11px; }
#action-panel { position:absolute; z-index:20; top:100px; bottom:82px; left:24px; width:min(470px,calc(100% - 48px)); border:1px solid #d8cce4; border-radius:22px; background:#fff; box-shadow:0 18px 55px #34214026; overflow:hidden; }
.action-panel-heading { display:flex; justify-content:space-between; align-items:center; padding:12px 18px; border-bottom:1px solid #eee5f2; height:64px; }
.action-panel-heading h2 { font-size:17px; margin:0; color:#432650; }
#action-close { width:44px; height:44px; font-size:28px; border-radius:50%; flex-shrink:0; }
#action-close:hover { background:#f5e9f7; }
#action-content { height:calc(100% - 64px); overflow:auto; overscroll-behavior:contain; }
#action-content .reading-page { padding:22px !important; max-width:none; margin:0; }
#action-content h1 { font-size:26px; line-height:1.2; }
#action-content h2 { font-size:21px; }
#action-content .lead { font-size:17px; }
#action-content .start-grid,#action-content .start-form,#action-content .people-grid,#action-content .motion-explanation,#action-content .votes-columns,#action-content .participation-grid { display:grid; grid-template-columns:1fr; gap:18px; }
#action-content .vote-totals { flex-wrap:wrap; gap:18px; }
#action-content .vote-totals p { flex-basis:100%; margin:0; }
#action-content .votes-heading { display:block; }
#action-content .motion-card,#action-content .votes-panel { padding:16px; }
.action-open .workspace > .action-bubble,.action-open .detail,.action-open #find-panel,.action-open #connection-caption { visibility:hidden; }
#connection-caption { top:100px; }
@media(max-width:800px) {
 .explore-actions { left:12px; top:34px; }
 #action-toggle { font-size:14px; padding:10px 14px; }
 #action-panel { top:auto; bottom:0; left:0; width:100%; height:65%; border-radius:22px 22px 0 0; }
 .action-bubble { top:auto; bottom:116px; }
 #connection-caption { top:92px; }
 #action-content .reading-page { padding:18px !important; }
}

/* A quiet wash draws attention to the selected, sourced relationships. */
.workspace::before { content:""; position:absolute; inset:0; pointer-events:none; background:radial-gradient(ellipse at 48% 46%,#f0e8fc 0%,#f6eff9 34%,transparent 73%); opacity:0; transition:opacity 450ms ease; }
.workspace.mapping-focus::before { opacity:.8; }
.mapping-focus #graph .context-muted { opacity:.26; }
.mapping-focus #graph .context-muted:hover,.mapping-focus #graph .context-muted:focus-visible { opacity:1; }
.mapping-focus #graph .orbit { opacity:.14; }
.mapping-focus #graph .orbit-label { opacity:.55; }
.mapping-focus #graph .node.selected .node-shape { filter:drop-shadow(0 0 7px #b48ac350); }
@media(prefers-reduced-motion:reduce) { .workspace::before { transition:none; } }

/* Category color carries meaning; surfaces stay bright and neutral. */
:root { --lime:#ece8ff; }
.jurisdiction-note,.prepare-card,.scope-note { background:#f0efff; color:var(--ink); border-color:#ddd8f0; }
.search,.path-icon { background:#f5f4ff; }
.topic.active,.topic:hover,.directory-row:hover,.pathway-grid > button:hover { background:#eeebff; }
.person-card,.route-card { background:#fff; border-color:#dfdce6; }
.budget-intro { background:#302b59; }
.budget-intro p { color:#e5e2ff; }
.workspace::before { background:radial-gradient(ellipse at 48% 46%,#edefff 0%,#f4f3ff 34%,transparent 73%); }
#graph .node:hover .node-shape,#graph .node:focus-visible .node-shape,#graph .node.selected .node-shape { fill:var(--category); stroke:var(--category); }
#graph .node.selected .halo { fill:none; stroke:var(--category); opacity:.45; }
#graph .node:hover .initials,#graph .node:focus-visible .initials,#graph .node.selected .initials { fill:#241632; }
#graph .edge.selected { stroke:var(--edge-color); opacity:.85; }
#graph .edge.focused-edge { stroke:var(--edge-color); opacity:1; stroke-width:4; }
#graph .council-seat:hover circle:not(.touch-target),#graph .council-seat:focus-visible circle:not(.touch-target),#graph .council-seat.selected circle:not(.touch-target) { fill:#f05e78; stroke:#f05e78; }
#graph .council-seat.selected text { fill:#241632; }
#map-tooltip { background:#fff; color:#25233d; border:2px solid #c557ed; box-shadow:0 5px 18px #35235b14; }
.mapping-focus #graph .node.selected .node-shape { filter:none; }
/* Address-to-action stays in the graph's existing sheet. */
#location p { font-size:16px; line-height:1.6; }
#location-form { display:grid; gap:10px; margin-top:22px; }
#location-form label { font-size:15px; font-weight:650; }
#location-form label span { font-weight:400; color:#655e76; }
#location-form input { width:100%; min-height:48px; padding:12px; border:1px solid #b8accb; border-radius:10px; background:white; color:#25233d; font:inherit; font-size:16px; }
#location .location-note { font-size:14px; line-height:1.55; color:#635970; }
.location-primary,.location-secondary,.location-issues button { min-height:46px; padding:12px 16px; border-radius:12px; font-size:15px; line-height:1.4; text-align:left; }
.location-primary { background:#554098; color:white; display:block; margin:10px 0; }
.location-primary:hover { background:#402d7d; }
.location-primary:disabled { opacity:.55; cursor:wait; }
.location-secondary { border:1px solid #d3c9e2; margin:10px 0; display:block; color:#503981; }
#location-status { border-left:3px solid #c557ed; padding-left:12px; }
#location-status:empty { display:none; }
#location-map { display:block; width:100%; height:210px; border:1px solid #ddd6e8; border-radius:12px; margin:15px 0; background:#f3f1fa; }
#location-result { border-top:1px solid #e3ddeb; margin-top:20px; padding-top:12px; }
#location-matched-address { font-weight:650; }
.location-issues { display:grid; gap:8px; }
.location-issues button { border:1px solid #d5c7eb; color:#493078; background:#f4efff; }
.location-issues button:hover { background:#e9dfff; }
.location-sources { margin:24px 0; }
.location-sources summary { min-height:44px; font-size:15px; cursor:pointer; }
#location a { text-decoration:underline; text-underline-offset:3px; }
#location :focus-visible { outline:3px solid #8751c5; outline-offset:3px; }

/* Optional official resources, revealed inside the action panel. */
.local-resource { padding:14px 0; border-bottom:1px solid #e8e1ef; }
.local-resource h3 { font-size:17px; line-height:1.4; margin:0 0 8px; }
.local-resource p { font-size:15px; line-height:1.6; margin:8px 0; }
#resources h2 { font-size:18px; margin:24px 0 0; }
#resources a { color:#6533a0; text-underline-offset:3px; }
#resources a:focus-visible { outline:3px solid #6533a0; outline-offset:4px; }

#action-options[hidden] { display:none; }
#action-options button { flex:0 0 auto; min-width:0; }
#action-options small { flex-shrink:0; }

/* Quiet, optional orientation and meeting disclosure. */
#explore-cue { position:absolute; bottom:40px; left:50%; transform:translateX(-50%); max-width:90%; width:max-content; text-align:center; font-size:13px; color:#625873; pointer-events:none; transition:opacity .4s ease; }
#explore-cue.explored { opacity:0; }
.profile-meetings { margin:16px 0; padding:12px 14px; border:1px solid #ded7ef; border-radius:14px; background:#faf9ff; }
.profile-meetings summary { cursor:pointer; font-weight:600; }
.meeting-content { font-size:14px; line-height:1.5; }
.meeting-content h4 { margin-bottom:8px; }
.meeting-content a { display:block; margin:12px 0; color:#573ab4; }
.meeting-calendar { padding:10px 12px; border:1px solid #c9bce9; border-radius:10px; text-decoration:none; font-weight:600; }
.profile-meetings[open] .meeting-content { animation:meeting-reveal .18s ease-out; }
@keyframes meeting-reveal { from { opacity:0; transform:translateY(-4px); } to { opacity:1; transform:translateY(0); } }
@media(prefers-reduced-motion:reduce) { #explore-cue { transition:none; } .profile-meetings[open] .meeting-content { animation:none; } }

/* Civic Atlas identity, September 26. Keep the graph as the primary focus. */
.brand {color:#003563;gap:12px;}
.civic-logo {display:block;width:68px;height:68px;flex-shrink:0;}
.brand .brand-sub {color:#003563;font-size:9px;margin-top:4px;}
@media(max-width:800px){.brand {gap:0;}.brand .brand-name {display:none;}.civic-logo{width:48px;height:48px;}}

/* Clear entry paths; the existing category colors remain meaningful. */
:root {--ink:#123553;--muted:#536477;--bg:#fcfdff;}
header {background:#fcfdff;}
.primary-paths {position:absolute;top:14px;left:50%;transform:translateX(-50%);z-index:15;display:flex;gap:6px;height:auto;max-width:calc(100% - 32px);padding:5px;border:1px solid #dce3eb;border-radius:30px;background:#fff;box-shadow:0 4px 18px #00356308;}
.primary-paths a,.primary-paths #action-toggle {display:flex;align-items:center;justify-content:center;min-height:44px;padding:12px 20px;font-size:14px;line-height:1.3;white-space:nowrap;text-decoration:none;border:0;border-radius:24px;box-shadow:none;color:#123553;}
.primary-paths #action-toggle {background:#edf1f7;}
.primary-paths a:hover {background:#fff0f5;color:#990033;}
#canvas {top:76px;}
#action-panel {top:76px;}
#explore-cue {bottom:38px;color:#44566b;}
.graph-caption {color:#536477;}
a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible,input:focus-visible {outline:3px solid #003563;outline-offset:4px;}
.skip-link {position:fixed;top:-100px;left:16px;z-index:100;background:#fff;padding:14px;color:#003563;}
.skip-link:focus {top:10px;}
#site-menu .nav {min-height:44px;}
@media(max-width:800px){.primary-paths {top:8px;width:calc(100% - 24px);max-width:520px;gap:2px;border-radius:18px;}.primary-paths a,.primary-paths #action-toggle {flex:1;min-width:0;font-size:12px;white-space:normal;padding:10px 8px;text-align:center;border-radius:14px;}#canvas {top:78px;}#action-panel {top:auto;}header {gap:6px;padding-left:12px;padding-right:12px;}.header-actions button,.government-picker select {min-height:44px;}#explore-cue {font-size:12px;max-width:88%;}.graph-caption {font-size:11px;}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important;}}
