/* Davidson County power and organisation map
   ==========================================================================
   The three-sheet map as supplied, dropped into the Quick Book. Scoped to
   .ca-orgmap so its document-level rules do not reach the page. */
.ca-orgmap {
  --ca-font-display: var(--font-display);
  --ca-font-text: var(--font-text);
  --ca-font-accent: var(--font-accent);
}
/* ------------------------------------------------------------------
   Davidson County Power & Organization Map · Broadside
   Every colour is a brand token. Red and navy never touch (white gutters
   between); gold-500 is rules and dots only, never text on light. */
.ca-orgmap{font-family:var(--ca-font-text);color:var(--ink-deep);font-size:12.5px;line-height:1.4;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"tnum" 1;}
.ca-orgmap *,.ca-orgmap *::before,.ca-orgmap *::after{box-sizing:border-box;}
.ca-orgmap p,.ca-orgmap h1,.ca-orgmap h2,.ca-orgmap h3,.ca-orgmap h4,.ca-orgmap h5,.ca-orgmap h6,.ca-orgmap ul,.ca-orgmap ol{margin:0;}
.ca-orgmap ul,.ca-orgmap ol{padding:0;list-style:none;}
.ca-orgmap svg.ic{width:1em;height:1em;flex:none;}

/* Sheet ----------------------------------------------------------- */
.ca-orgmap .sheet{width:816px;max-width:100%;margin:0 auto;background:var(--panel);padding:30px 40px 26px;
  position:relative;display:flex;flex-direction:column;container-type:inline-size;container-name:sheet;}
.ca-orgmap .render .sheet.page{height:1056px;overflow:hidden;}
.ca-orgmap .sheet-head{display:grid;grid-template-columns:58px 1fr;column-gap:16px;align-items:center;
  padding-bottom:10px;border-bottom:2px solid var(--ca-gold-500);}
.ca-orgmap .badge{width:58px;height:58px;display:block;}
.ca-orgmap .head-row{display:flex;justify-content:space-between;align-items:center;gap:12px;}
.ca-orgmap .eyebrow{font:600 11px/1.2 var(--ca-font-accent);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);}
.ca-orgmap .eyebrow-red{color:var(--link);}
.ca-orgmap .running{font:700 17px/1.2 var(--ca-font-text);color:var(--ink);margin-top:3px;}
.ca-orgmap .page-tag{font:600 11px/1 var(--ca-font-accent);letter-spacing:.06em;text-transform:uppercase;color:var(--ink);
  border:1.5px solid var(--ink);border-radius:3px;padding:5px 8px;white-space:nowrap;}
.ca-orgmap .section-title{padding:14px 0 12px;display:grid;grid-template-columns:1fr auto;column-gap:24px;align-items:end;}
.ca-orgmap .h1{font:400 30px/1.05 var(--ca-font-display);color:var(--ink);margin:6px 0 7px;letter-spacing:-.005em;}
.ca-orgmap .lead{font:400 13px/1.45 var(--ca-font-text);color:var(--ink-3);max-width:680px;}
.ca-orgmap .sheet-foot{margin-top:auto;padding-top:9px;border-top:1px solid var(--rule);display:flex;
  justify-content:space-between;gap:16px;font:400 10.5px/1.35 var(--ca-font-text);color:var(--ink-3);}
.ca-orgmap .sheet-foot b{font-weight:600;color:var(--ink);}
.ca-orgmap .sheet-foot span:last-child{white-space:nowrap;}

/* Nodes ----------------------------------------------------------- */
.ca-orgmap .node{border-radius:6px;padding:10px 12px;position:relative;}
.ca-orgmap .node-title{font:700 14px/1.15 var(--ca-font-accent);text-transform:uppercase;letter-spacing:.06em;display:flex;align-items:center;gap:8px;}
.ca-orgmap .node-title .ic{font-size:18px;opacity:.95;}
.ca-orgmap .node-sub{font:400 12px/1.35 var(--ca-font-text);margin-top:4px;}
.ca-orgmap .node-red{background:var(--ca-red-500);color:#fff;}                /* white on red 7.15 */
.ca-orgmap .node-navy{background:var(--inverse);color:var(--ink-inverse);}   /* paper on navy 15.9 */
.ca-orgmap .node-navy5{background:var(--ca-navy-500);color:#fff;}             /* white on navy-500 9.97 */
.ca-orgmap .node-outline{background:var(--panel);border:2px solid var(--ink);}
.ca-orgmap .node-outline .node-title{color:var(--ink);}
.ca-orgmap .node-cream{background:var(--cream);border:1px solid var(--rule);}
.ca-orgmap .node-cream .node-title{color:var(--ink);}
.ca-orgmap .node-gold{background:var(--wash-gold);border:1px solid var(--ca-gold-100);border-top:3px solid var(--ca-gold-500);}
.ca-orgmap .node-gold .node-title{color:var(--gold-ink);}                  /* gold-700 on gold-50 5.16 */
.ca-orgmap .node-navy .node-sub,.ca-orgmap .node-navy5 .node-sub{color:var(--ink-inverse-2);} /* navy-100 on navy 13.9 */
.ca-orgmap .node-red .node-sub{color:#fff;opacity:.92;}
.ca-orgmap .center{text-align:center;}
.ca-orgmap .center .node-title{justify-content:center;}

.ca-orgmap .list{margin-top:6px;font-size:12px;line-height:1.35;}
.ca-orgmap .list li{position:relative;padding-left:12px;margin:2px 0;break-inside:avoid;}
.ca-orgmap .list li::before{content:"";position:absolute;left:0;top:.5em;width:5px;height:5px;border-radius:50%;background:var(--ca-gold-500);}
.ca-orgmap .list-2{columns:2;column-gap:16px;}
.ca-orgmap .list-3{columns:3;column-gap:16px;}
.ca-orgmap .list.check li{padding-left:16px;}
.ca-orgmap .list.check li::before{width:9px;height:5px;border-radius:0;background:none;border-left:2px solid var(--gold-ink);border-bottom:2px solid var(--gold-ink);transform:rotate(-45deg);top:.35em;}
.ca-orgmap .list.num li{padding-left:18px;}
.ca-orgmap .list.num li::before{display:none;}
.ca-orgmap .list.num .n{position:absolute;left:0;top:0;font:700 12px/1.35 var(--ca-font-accent);color:var(--gold-ink);}
.ca-orgmap .node-navy .list li::before,.ca-orgmap .node-navy5 .list li::before{background:var(--ca-gold-500);}
.ca-orgmap .list.plain li{padding-left:0;}
.ca-orgmap .list.plain li::before{display:none;}

/* Charts + connectors --------------------------------------------- */
.ca-orgmap .chart{position:relative;--stacked:0;}
.ca-orgmap .chart>*{position:relative;z-index:1;}
.ca-orgmap .chart svg.conn{position:absolute;left:0;top:0;z-index:2;pointer-events:none;overflow:visible;}
.ca-orgmap .conn-label{font-family:var(--ca-font-accent);font-weight:600;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;fill:var(--ink);}
.ca-orgmap .conn-label-bg{fill:var(--panel);stroke:var(--rule);stroke-width:1;}
.ca-orgmap .legend{display:flex;flex-direction:column;gap:4px;font:400 10.5px/1.2 var(--ca-font-text);color:var(--ink-3);}
.ca-orgmap .legend div{display:flex;align-items:center;gap:8px;}
.ca-orgmap .legend svg{width:30px;height:8px;flex:none;}
.ca-orgmap .rel{display:none;font:600 10px/1 var(--ca-font-accent);letter-spacing:.06em;text-transform:uppercase;color:var(--link-alt);
  border:1px solid var(--ink-inverse-2);border-radius:3px;padding:4px 6px;margin-top:7px;}
.ca-orgmap .node-navy .rel,.ca-orgmap .node-navy5 .rel,.ca-orgmap .node-red .rel{color:#fff;border-color:rgba(255,255,255,.55);}

/* Page 1 · party ---------------------------------------------------- */
.ca-orgmap .chart-party{display:grid;grid-template-columns:200px 28px 280px 28px 200px;grid-template-rows:auto 26px auto 26px auto 26px auto 26px auto;}
.ca-orgmap #p-chair{display:flex;flex-direction:column;justify-content:center;}
.ca-orgmap #p-voters{grid-column:1/6;grid-row:1;justify-self:center;width:330px;}
.ca-orgmap #p-cec{grid-column:1/6;grid-row:3;justify-self:center;width:440px;}
.ca-orgmap #p-officers{grid-column:1;grid-row:5;}
.ca-orgmap #p-chair{grid-column:3;grid-row:5;}
.ca-orgmap #p-aux{grid-column:5;grid-row:5;}
.ca-orgmap .row-regions{grid-column:1/6;grid-row:7;display:grid;grid-template-columns:318px 390px;gap:28px;}
.ca-orgmap #p-precinct{grid-column:1/6;grid-row:9;}
.ca-orgmap .chart-party .legend{position:absolute;right:0;top:2px;z-index:1;}
.ca-orgmap .band-3{display:grid;grid-template-columns:1fr 236px;gap:20px;margin-top:16px;}
.ca-orgmap .card{background:var(--cream);border:1px solid var(--rule);border-radius:6px;padding:12px 14px;}
.ca-orgmap .card-head{font:700 13px/1.1 var(--ca-font-accent);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);
  display:flex;align-items:center;gap:8px;padding-bottom:8px;margin-bottom:10px;border-bottom:1px solid var(--rule);}
.ca-orgmap .who-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px;}
.ca-orgmap .who{display:grid;grid-template-columns:28px 1fr;column-gap:9px;font-size:11.5px;line-height:1.35;color:var(--ink-2);}
.ca-orgmap .who .dot{width:28px;height:28px;border-radius:50%;background:var(--inverse);color:var(--ink-inverse);display:flex;align-items:center;justify-content:center;font-size:15px;}
.ca-orgmap .who b{display:block;font:700 12.5px/1.2 var(--ca-font-text);color:var(--ink);margin-bottom:2px;}
.ca-orgmap .poster-card{background:var(--ca-red-500);color:#fff;border-radius:6px;padding:14px 16px;display:flex;flex-direction:column;gap:8px;}
.ca-orgmap .poster-card .kicker{font:600 10.5px/1.2 var(--ca-font-accent);letter-spacing:.14em;text-transform:uppercase;color:#fff;opacity:.9;
  display:flex;align-items:center;gap:6px;}
.ca-orgmap .poster-card .slab{font:400 24px/1.1 var(--ca-font-display);color:#fff;}            /* the one place the slab sits on red */
.ca-orgmap .poster-card p{font-size:12px;line-height:1.4;color:#fff;opacity:.95;}
.ca-orgmap .poster-card .rule{height:2px;background:var(--ca-gold-500);width:44px;border-radius:1px;}

/* Page 2 · metro ---------------------------------------------------- */
.ca-orgmap .chart-metro{display:grid;grid-template-columns:164px 44px 176px 14px 150px 14px 174px;grid-template-rows:auto 40px auto;}
.ca-orgmap #m-people{grid-column:1/8;grid-row:1;justify-self:center;width:460px;}
.ca-orgmap .branch{grid-row:3;background:var(--cream);border:1px solid var(--rule);border-radius:6px;overflow:hidden;display:flex;flex-direction:column;}
.ca-orgmap #b-exec{grid-column:1;} .ca-orgmap #b-leg{grid-column:3;} .ca-orgmap #b-jud{grid-column:5;} .ca-orgmap #b-ind{grid-column:7;}
.ca-orgmap .branch-head{padding:8px 10px;font:700 11.5px/1.15 var(--ca-font-accent);letter-spacing:.07em;white-space:nowrap;text-transform:uppercase;color:#fff;
  display:flex;align-items:center;gap:7px;}
.ca-orgmap .branch-head .ic{font-size:16px;}
.ca-orgmap .bh-exec{background:var(--ca-navy-500);}        /* white on navy-500 9.97 */
.ca-orgmap .bh-leg{background:var(--inverse);color:var(--ink-inverse);}
.ca-orgmap .bh-jud{background:var(--ca-gold-900);}         /* white on gold-900 9.8 */
.ca-orgmap .bh-ind{background:var(--ca-plum);}             /* white on plum 13.7 */
.ca-orgmap .branch-body{padding:10px;display:flex;flex-direction:column;gap:18px;flex:1;}
.ca-orgmap .bcard{background:var(--panel);border:1px solid var(--rule);border-radius:3px;padding:7px 9px 8px;}
.ca-orgmap .bcard-title{font:700 13.5px/1.15 var(--ca-font-text);color:var(--ink);display:flex;align-items:center;gap:6px;}
.ca-orgmap .bcard-title .ic{font-size:16px;color:var(--link-alt);}
.ca-orgmap .bcard-sub{font:600 10.5px/1.2 var(--ca-font-accent);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-top:2px;}
.ca-orgmap .bcard p{font-size:11.5px;line-height:1.35;color:var(--ink-2);margin-top:4px;}
.ca-orgmap .bcard .list{font-size:11.5px;margin-top:5px;line-height:1.3;}
.ca-orgmap .bcard .list li{margin:1px 0;}
.ca-orgmap .bcard .note{font-size:11px;line-height:1.35;color:var(--ink-3);margin-top:6px;padding-top:6px;border-top:1px solid var(--rule-soft);}
.ca-orgmap .bcard .note b{color:var(--plum-ink);font-weight:600;}
.ca-orgmap .band-2{margin-top:16px;display:flex;flex-direction:column;gap:14px;}
.ca-orgmap .flow-h{display:grid;grid-template-columns:repeat(5,1fr);column-gap:8px;}
.ca-orgmap .flow-h.six{grid-template-columns:repeat(6,1fr);}
.ca-orgmap .step .n{width:28px;height:28px;border-radius:50%;background:var(--ca-gold-500);color:var(--ca-navy-900);font:700 13px/1 var(--ca-font-accent);display:flex;align-items:center;justify-content:center;}
.ca-orgmap .step{display:flex;flex-direction:column;align-items:flex-start;gap:5px;font-size:11.5px;line-height:1.3;color:var(--ink-2);position:relative;padding-right:14px;}
.ca-orgmap .step .dot{width:28px;height:28px;border-radius:50%;background:var(--inverse);color:var(--ink-inverse);display:flex;align-items:center;justify-content:center;font-size:16px;}
.ca-orgmap .step b{font:700 12px/1.2 var(--ca-font-text);color:var(--ink);display:block;}
.ca-orgmap .step::after{content:"";position:absolute;right:2px;top:9px;width:8px;height:8px;border-top:2px solid var(--ca-gold-500);border-right:2px solid var(--ca-gold-500);transform:rotate(45deg);}
.ca-orgmap .step:last-child::after{display:none;}
.ca-orgmap .step:last-child{padding-right:0;}

/* Page 3 · council -------------------------------------------------- */
.ca-orgmap .p3-grid{display:grid;grid-template-columns:300px 412px;gap:24px;}
.ca-orgmap .chart-council{display:grid;grid-template-columns:138px 24px 138px;grid-template-rows:auto 30px auto 30px auto;}
.ca-orgmap #c-vm{grid-column:1/4;grid-row:1;}
.ca-orgmap #c-members{grid-column:1/4;grid-row:3;}
.ca-orgmap #c-comm{grid-column:1;grid-row:5;}
.ca-orgmap #c-full{grid-column:3;grid-row:5;}
.ca-orgmap .stepper{margin-top:14px;}
.ca-orgmap .stepper .card-head{margin-bottom:8px;}
 /* navy-900 on gold 7.09 */
.ca-orgmap .map-card{background:var(--cream);border:1px solid var(--rule);border-radius:6px;padding:12px 14px 9px;}
.ca-orgmap .map-card .card-head{margin-bottom:4px;}
.ca-orgmap .map-svg{display:block;width:100%;height:auto;}
.ca-orgmap .map-labels text{font-family:var(--ca-font-accent);font-weight:700;font-size:12px;fill:var(--ca-navy-700);text-anchor:middle;dominant-baseline:central;}
.ca-orgmap .map-neighbors text{font-family:var(--ca-font-accent);font-weight:600;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;fill:var(--ink-3);dominant-baseline:central;}
.ca-orgmap .map-north text{font-family:var(--ca-font-accent);font-weight:700;font-size:10px;fill:var(--ink);}
.ca-orgmap .map-key{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:10.5px;line-height:1.3;color:var(--ink-3);margin-top:4px;align-items:center;}
.ca-orgmap .map-key .star{color:var(--link);font-size:12px;}
.ca-orgmap .map-note{font-size:10.5px;line-height:1.35;color:var(--ink-3);margin-top:6px;padding-top:6px;border-top:1px solid var(--rule);}
.ca-orgmap .map-note a{color:var(--link-alt);}
.ca-orgmap .seats{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:14px;}
.ca-orgmap .seat{border-radius:6px;padding:10px 14px;display:grid;grid-template-columns:auto 1fr;column-gap:12px;align-items:center;}
.ca-orgmap .seat .num{font:400 34px/1 var(--ca-font-display);}
.ca-orgmap .seat b{font:700 12.5px/1.2 var(--ca-font-accent);letter-spacing:.06em;text-transform:uppercase;display:block;margin-bottom:3px;}
.ca-orgmap .seat span{font-size:11.5px;line-height:1.3;display:block;}
.ca-orgmap .seat-navy{background:var(--inverse);color:var(--ink-inverse);}
.ca-orgmap .seat-navy .num{color:var(--ca-gold-500);}   /* gold on navy 6.09 (decorative number) */
.ca-orgmap .seat-navy span{color:var(--ink-inverse-2);}
.ca-orgmap .seat-outline{background:var(--panel);border:2px solid var(--ink);color:var(--ink-deep);}
.ca-orgmap .seat-outline .num{color:var(--ink);}
.ca-orgmap .seat-outline b{color:var(--ink);}
.ca-orgmap .seat-outline span{color:var(--ink-2);}
.ca-orgmap .band-1{margin-top:12px;}
.ca-orgmap .poster-card.wide{flex-direction:row;align-items:center;gap:18px;padding:14px 18px;}
.ca-orgmap .poster-card.wide .slab{font-size:24px;white-space:nowrap;}
.ca-orgmap .poster-card.wide p{flex:1;}
.ca-orgmap .poster-card.wide .rule{width:2px;height:40px;align-self:stretch;}

/* Poster (stitched) -------------------------------------------------- */
.ca-orgmap .poster{width:816px;max-width:100%;margin:0 auto;background:var(--panel);padding:40px 40px 30px;container-type:inline-size;container-name:sheet;}
.ca-orgmap .poster .sheet-foot{margin-top:6px;}

/* Standalone page chrome -------------------------------------------- */
.ca-orgmap-page{background:var(--panel-3);padding:28px 12px;}
@media (max-width:900px){.ca-orgmap-page{padding:16px 0;}}
.ca-orgmap-page .sheet{box-shadow:0 4px 14px rgba(2,32,79,.10);margin-bottom:24px;}
.ca-orgmap-page .sheet:last-of-type{margin-bottom:0;}
.ca-orgmap .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;}

/* Printing as supplied, less two rules: @page set the whole document's page
   box, which a section of a page has no business doing, and its fixed 8.5in
   width overflowed the printable area. Each sheet still takes a page. */
@media print{
  .ca-orgmap-page{background:none;padding:0;}
    .ca-orgmap-page .sheet{box-shadow:none;margin:0;width:100%;page-break-after:always;break-after:page;}
  .ca-orgmap-page .sheet:last-of-type{page-break-after:auto;break-after:auto;}
}

/* Stacked layout for narrow containers (docs page on a phone) ------- */
@container sheet (max-width: 720px){
  .ca-orgmap .sheet,.ca-orgmap .poster{padding:22px 18px 20px;}
  .ca-orgmap .chart{--stacked:1;}
  .ca-orgmap .chart svg.conn{display:none;}
  .ca-orgmap .rel{display:inline-flex;}
  .ca-orgmap .section-title{grid-template-columns:1fr;row-gap:10px;}
  .ca-orgmap .section-title .legend{order:2;}
  .ca-orgmap .chart-party,.ca-orgmap .row-regions,.ca-orgmap .band-3,.ca-orgmap .chart-metro,.ca-orgmap .band-2,.ca-orgmap .flow-h,.ca-orgmap .p3-grid,.ca-orgmap .chart-council,.ca-orgmap .who-grid,.ca-orgmap .seats{display:flex;flex-direction:column;gap:12px;}
  .ca-orgmap .chart-party>*,.ca-orgmap .chart-metro>*,.ca-orgmap .chart-council>*{width:auto!important;justify-self:auto;}
  .ca-orgmap .chart-party .legend{position:static;flex-direction:row;flex-wrap:wrap;gap:6px 16px;}
  .ca-orgmap .list-2,.ca-orgmap .list-3{columns:1;}
  .ca-orgmap .step{padding-right:0;flex-direction:row;align-items:flex-start;gap:10px;}
  .ca-orgmap .step::after{display:none;}
  .ca-orgmap .head-row{flex-wrap:wrap;}
  .ca-orgmap .poster-card.wide{flex-direction:column;align-items:flex-start;}
  .ca-orgmap .poster-card.wide .slab{white-space:normal;}
  .ca-orgmap .poster-card.wide .rule{width:44px;height:2px;}
        .ca-orgmap .h1{font-size:26px;}
}

/* In the Quick Book
   ==========================================================================
   The sheet is drawn at 816px and its charts are grids of fixed columns, so
   there is a width below which they cannot hold: 736px of content box. Below
   that the container query unpicks the grids rather than letting the sheet
   scroll sideways. */
@media (min-width: 961px) {
  .doc .ca-orgmap {
    margin-right: min(0px, calc(var(--wrap) / 2 - var(--gutter) - 50vw));
  }
}

/* The line key and the connectors are on the sheet, which goes dark, so they
   take theme inks. The three are the same three the chart draws with, and
   their light values are the palette entries the drawing shipped with:
   --ink is navy-700, --link-alt is navy-500, --ink-3 is slate.

   Set here rather than in js/power-map.js, which used to write the stroke on
   to every path as it built them. A presentation attribute loses to any CSS
   rule, so these reach the static key in the markup as well as the drawn
   lines, and neither needs redrawing when the theme changes. */
.ca-orgmap .conn-solid,
.ca-orgmap .legend div:nth-child(1) svg path {
  stroke: var(--ink);
}
.ca-orgmap .conn-dashed,
.ca-orgmap .legend div:nth-child(2) svg path {
  stroke: var(--link-alt);
}
.ca-orgmap .conn-dotted,
.ca-orgmap .legend div:nth-child(3) svg path {
  stroke: var(--ink-3);
}
.ca-orgmap .conn-arrow-solid { fill: var(--ink); }
.ca-orgmap .conn-arrow-dashed { fill: var(--link-alt); }
.ca-orgmap .conn-arrow-dotted { fill: var(--ink-3); }
