/* ═══════════════════════════════════════════════════════════════════
   the chapter board — shared styles

   One copy, two hosts: the standalone page at /invoice/data/ and the
   Chapters view inside the console. Every rule is scoped under
   `.chapters` on purpose. The console already owns `.panel`, `.pill`,
   `.row`, `.track`, `.empty` and a bare `table`, and they mean
   different things there — unscoped, this file would repaint half the
   ledger. The scope also wins on specificity, so the host's own rules
   for the same names lose inside the board without either page having
   to know about the other.

   The colours a chapter needs and a ledger does not — gold for a house
   at target, the land and coastline of the map — are declared on
   `.chapters` rather than :root, so this file drops into a page
   without adding anything to that page's palette.
   ═══════════════════════════════════════════════════════════════════ */

.chapters{
  --gold:#F2C14E; --gold-soft:rgba(242,193,78,.16);
  --land:#1C1B29; --land-hi:#242334; --coast:rgba(203,208,235,.17);
  --none:#5A5E6C;
}

/* the boards stack with a gap; a host that wants them tighter can
   override --ch-gap on its own .chapters element */
.chapters{display:grid;gap:var(--ch-gap,clamp(14px,2.4vw,22px));align-content:start}
.chapters .ch-sec{min-width:0}
.chapters .ch-sec:empty{display:none}

.chapters h2{font-family:var(--display);font-weight:700;letter-spacing:-.035em;line-height:1;
  text-transform:lowercase;margin:0;font-size:1.16rem;text-wrap:balance}
.chapters .num{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.chapters .lbl{font-family:var(--mono);font-size:.63rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted-2)}
.chapters .panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--shadow);overflow:hidden}
.chapters .panel-h{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;padding:17px 18px 13px;
  border-bottom:1px solid var(--line)}
.chapters .panel-h .note{font-size:.79rem;color:var(--muted-2);margin-left:auto}

/* the six numbers -------------------------------------------------- */
.chapters .stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--r-l);overflow:hidden}
.chapters .stat{background:var(--surface);padding:13px 15px 14px}
.chapters .stat .v{font-family:var(--mono);font-size:1.3rem;font-variant-numeric:tabular-nums;
  letter-spacing:-.03em;margin-top:6px}
.chapters .stat .s{font-size:.71rem;color:var(--muted-2);margin-top:4px;min-height:1.05em;line-height:1.35}
.chapters .stat.good .v{color:var(--good)}
.chapters .stat.gold .v{color:var(--gold)}
.chapters .stat.warn .v{color:var(--owed)}
@media(max-width:1180px){.chapters .stats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.chapters .stats{grid-template-columns:repeat(2,1fr)}}

/* every house: the toolbar above the table ------------------------- */
.chapters .tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:13px 14px;
  border-bottom:1px solid var(--line)}
.chapters .tools input[type="search"]{flex:1 1 220px;min-width:0;background:var(--surface-2);
  border:1px solid var(--line);border-radius:99px;color:var(--text);font:inherit;font-size:.85rem;
  padding:8px 14px}
.chapters .tools input[type="search"]::placeholder{color:var(--muted-2)}
.chapters .tools input[type="search"]:focus{outline:none;border-color:var(--violet)}
.chapters .seg{display:inline-flex;flex-wrap:wrap;gap:4px;background:var(--surface-2);border:1px solid var(--line);
  border-radius:99px;padding:3px}
.chapters .seg button{background:transparent;border:0;color:var(--muted);font:inherit;font-size:.8rem;
  padding:5px 11px;border-radius:99px;cursor:pointer;white-space:nowrap}
.chapters .seg button:hover{color:var(--text)}
.chapters .seg button.on{background:var(--violet-soft);color:var(--text)}
.chapters .seg button u{text-decoration:none;font-family:var(--mono);font-size:.7rem;color:var(--muted-2);margin-left:3px}
.chapters .seg button.on u{color:var(--violet-hi)}

/* every house: the rows ---------------------------------------------- */
.chapters table.houses{min-width:560px}
.chapters table.houses th[data-sort]{cursor:pointer;user-select:none}
.chapters table.houses th[data-sort]:hover{color:var(--muted)}
.chapters table.houses th.on{color:var(--text)}
.chapters table.houses th.on::after{content:"↓";margin-left:5px;color:var(--violet-hi)}
.chapters table.houses th.on.rev::after{content:"↑"}
.chapters table.houses th[data-sort="name"].on::after{content:"↑"}
.chapters table.houses th[data-sort="name"].on.rev::after{content:"↓"}
.chapters table.houses th.r{text-align:right}
.chapters table.houses th.prog-h{width:34%}
.chapters table.houses td{padding:9px 14px;vertical-align:middle}
.chapters table.houses tbody tr{cursor:pointer}
.chapters table.houses tbody tr:focus-visible{outline:2px solid var(--violet-hi);outline-offset:-2px}
.chapters table.houses td.who{font-weight:400;max-width:0;width:38%}
.chapters table.houses td.who b{display:block;font-weight:500;font-size:.87rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chapters table.houses td.who .lt{font-style:normal;color:var(--muted-2);font-weight:400;margin-right:7px}
.chapters table.houses td.who span{display:block;font-size:.76rem;color:var(--muted-2);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.chapters table.houses .pwrap{display:flex;align-items:center;gap:10px}
.chapters table.houses .pbar{flex:1;height:8px;border-radius:99px;background:var(--raise);overflow:hidden;min-width:60px}
.chapters table.houses .pbar i{display:block;height:100%;border-radius:99px;background:var(--violet)}
.chapters table.houses .pbar i.g{background:linear-gradient(90deg,var(--gold),#FFD98A)}
.chapters table.houses .pbar i.z{background:transparent}
.chapters table.houses .pp{font-family:var(--mono);font-size:.78rem;color:var(--muted);min-width:3.4em;text-align:right}
.chapters table.houses .pp.g{color:var(--gold)}
.chapters table.houses .dim{color:var(--muted-2)}
.chapters table.houses td.flags{white-space:nowrap;text-align:right;width:1%}
.chapters .tbl-foot{display:flex;align-items:center;justify-content:center;gap:12px;font-size:.8rem;color:var(--muted-2)}
.chapters .tbl-foot:not(:empty){padding:12px 14px 14px;border-top:1px solid var(--line)}
.chapters .tbl-foot button,.chapters .rank .rmore{background:var(--surface-2);border:1px solid var(--line-2);color:var(--text);
  font:inherit;font-size:.8rem;border-radius:99px;padding:6px 14px;cursor:pointer}
.chapters .tbl-foot button:hover,.chapters .rank .rmore:hover{border-color:var(--violet-hi)}
@media(max-width:620px){
  .chapters table.houses{min-width:0}
  .chapters table.houses .hide-s{display:none}
  .chapters table.houses th,.chapters table.houses td{padding-left:10px;padding-right:10px}
  .chapters table.houses td.who{width:46%}
  .chapters table.houses th.prog-h{width:auto}
  .chapters table.houses .pbar{min-width:36px}
  .chapters .seg{display:grid;grid-template-columns:1fr 1fr;width:100%;border-radius:14px}
  .chapters .seg button{border-radius:11px}
  .chapters .rrow{grid-template-columns:minmax(0,1fr) 28% 2.2em;padding:7px 14px}
}

/* who they are, where they are: ranked bars ------------------------ */
.chapters .rank{padding:8px 0 12px}
.chapters .rank .regions{display:flex;flex-wrap:wrap;gap:6px 16px;padding:6px 18px 10px;font-size:.78rem;color:var(--muted-2)}
.chapters .rank .regions b{font-family:var(--mono);font-weight:500;color:var(--text)}
.chapters .rrow{display:grid;grid-template-columns:minmax(0,1fr) minmax(60px,34%) 2.4em;gap:12px;align-items:center;
  width:100%;background:transparent;border:0;color:inherit;font:inherit;text-align:left;padding:7px 18px;cursor:pointer}
.chapters .rrow:hover{background:var(--raise)}
.chapters .rrow.on{background:var(--violet-soft)}
.chapters .rrow .rl{min-width:0}
.chapters .rrow .rl b{display:block;font-weight:500;font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chapters .rrow .rl span{display:block;font-size:.73rem;color:var(--muted-2)}
.chapters .rrow .rl em{font-style:normal;color:var(--gold)}
.chapters .rrow .rb{height:8px;border-radius:99px;background:var(--raise);overflow:hidden}
.chapters .rrow .rb i{display:block;height:100%;border-radius:99px;background:var(--violet)}
.chapters .rrow .rn{font-family:var(--mono);font-size:.82rem;text-align:right}
.chapters .rank .rmore{display:block;margin:8px auto 0}

/* callout cards ---------------------------------------------------- */
.chapters .calls{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line)}
.chapters .call{background:var(--surface);padding:15px 17px 17px;display:flex;flex-direction:column;gap:6px}
.chapters .call .cv{font-family:var(--mono);font-size:1.5rem;letter-spacing:-.04em;line-height:1}
.chapters .call .ct{font-size:.85rem;font-weight:500}
.chapters .call .cs{font-size:.78rem;color:var(--muted-2);line-height:1.45}
.chapters .call.gold .cv{color:var(--gold)}
.chapters .call.warn .cv{color:var(--owed)}
.chapters .call.good .cv{color:var(--good)}
.chapters .call.violet .cv{color:var(--violet-hi)}
.chapters .call .cs .cl{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chapters .call .cs .cl b{font-weight:500;color:var(--muted)}
@media(max-width:1000px){.chapters .calls{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.chapters .calls{grid-template-columns:1fr}}

/* the map ---------------------------------------------------------- */
.chapters .mapwrap{padding:10px 8px 4px;position:relative}
.chapters svg.usmap{display:block;width:100%;height:auto;touch-action:pan-y;cursor:grab;user-select:none}
.chapters svg.usmap.drag{cursor:grabbing}
.chapters svg.usmap .mapg{transition:transform .28s cubic-bezier(.22,.61,.36,1)}
.chapters svg.usmap.drag .mapg{transition:none}
.chapters svg.usmap path.st{fill:var(--land);stroke:var(--coast);stroke-width:.7;
  vector-effect:non-scaling-stroke;transition:fill .18s}
.chapters svg.usmap path.st.on{fill:var(--land-hi);cursor:pointer}
.chapters svg.usmap path.st.on:hover{fill:#2C2B40}
.chapters svg.usmap path.st.sel{fill:#2F2E47;stroke:var(--violet-hi);stroke-width:1.2}
/* Three states, not two. A house that has hit the 80% target is a
   different thing from one with a couple of joins, and the map said the
   same green for both. */
.chapters svg.usmap circle.dot{fill:var(--none);fill-opacity:.8;stroke:#0A0913;stroke-width:1.4;cursor:pointer;
  transition:fill .18s,fill-opacity .18s,r .18s;outline:none}
.chapters svg.usmap circle.dot.prog{fill:var(--violet);fill-opacity:.9}
.chapters svg.usmap circle.dot.goal{fill:var(--gold);fill-opacity:1}
.chapters svg.usmap circle.dot:hover{fill-opacity:1;stroke:var(--text)}
.chapters svg.usmap circle.dot:focus-visible{stroke:var(--violet-hi);stroke-width:2.4}
.chapters svg.usmap circle.halo{fill:var(--none);fill-opacity:.1;pointer-events:none;
  transition:fill-opacity .25s,r .25s}
.chapters svg.usmap circle.halo.prog{fill:var(--violet);fill-opacity:.13}
.chapters svg.usmap circle.halo.goal{fill:var(--gold);fill-opacity:.2}
.chapters svg.usmap circle.ring{fill:none;stroke:var(--gold);stroke-width:1.2;stroke-opacity:.55;pointer-events:none}
.chapters svg.usmap .dim circle.dot,.chapters svg.usmap .dim circle.halo{fill-opacity:.12}
.chapters svg.usmap circle.dot.sel{fill:var(--violet-hi);fill-opacity:1;stroke:#fff;stroke-width:1.8}
.chapters svg.usmap circle.halo.sel{fill-opacity:.3}
@keyframes ch-pop{from{opacity:0;transform:scale(.2)}to{opacity:1;transform:scale(1)}}
.chapters svg.usmap .marks>g{transform-box:fill-box;transform-origin:center;
  animation:ch-pop .42s cubic-bezier(.2,.9,.3,1.3) backwards}
@keyframes ch-pulse{0%{r:var(--r0);opacity:.30}70%{r:var(--r1);opacity:0}100%{r:var(--r1);opacity:0}}
.chapters svg.usmap circle.ping{fill:none;stroke:var(--gold);stroke-width:1.5;
  animation:ch-pulse 2.8s ease-out infinite;pointer-events:none}
@media(prefers-reduced-motion:reduce){
  .chapters svg.usmap .marks>g{animation:none}
  .chapters svg.usmap circle.ping{animation:none;opacity:0}
  .chapters svg.usmap .mapg{transition:none}
}
.chapters .mapbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:0 14px 12px}
.chapters .mapbar .zoom{display:inline-flex;border:1px solid var(--line-2);border-radius:99px;overflow:hidden}
.chapters .mapbar .zoom button{background:transparent;border:0;color:var(--muted);font:inherit;font-size:.86rem;
  width:32px;height:28px;cursor:pointer;line-height:1}
.chapters .mapbar .zoom button:hover{background:var(--raise);color:var(--text)}
.chapters .mapbar .zoom button+button{border-left:1px solid var(--line-2)}
.chapters .selchip{display:none;align-items:center;gap:9px;background:var(--violet-soft);
  border:1px solid rgba(81,106,246,.4);border-radius:99px;padding:5px 6px 5px 13px;font-size:.83rem}
.chapters .selchip.on{display:inline-flex}
.chapters .selchip b{font-weight:600}
.chapters .selchip button{background:var(--raise);border:1px solid var(--line-2);color:var(--muted);
  border-radius:99px;width:22px;height:22px;cursor:pointer;font:inherit;font-size:.8rem;line-height:1}
.chapters .selchip button:hover{color:var(--text);border-color:var(--violet-hi)}
.chapters .maphint{font-size:.74rem;color:var(--muted-2);margin-left:auto}
@media(max-width:820px){.chapters .maphint{display:none}}
.chapters .maplegend{display:flex;gap:18px;flex-wrap:wrap;align-items:center;padding:4px 14px 15px;
  font-size:.74rem;color:var(--muted-2)}
.chapters .maplegend .k{display:inline-flex;align-items:center;gap:7px}
.chapters .maplegend .k i{width:10px;height:10px;border-radius:50%;background:var(--none);flex:none}
.chapters .maplegend .k i.prog{background:var(--violet)}
.chapters .maplegend .k i.goal{background:var(--gold);box-shadow:0 0 10px var(--gold-soft)}
.chapters .maplegend .k i.sz{width:16px;height:16px;background:var(--violet);opacity:.55}

/* two panels side by side ------------------------------------------ */
.chapters .two{display:grid;grid-template-columns:1fr 1fr;gap:clamp(14px,2vw,20px)}
@media(max-width:1000px){.chapters .two{grid-template-columns:1fr}}

/* tables --------------------------------------------------- */
.chapters .tbl-scroll{overflow-x:auto}
.chapters table{width:100%;border-collapse:collapse;font-size:.86rem;min-width:640px}
.chapters th{text-align:left;font-family:var(--mono);font-size:.62rem;letter-spacing:.15em;text-transform:uppercase;
  color:var(--muted-2);font-weight:400;padding:11px 14px;border-bottom:1px solid var(--line);white-space:nowrap}
.chapters td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.chapters tr:last-child td{border-bottom:0}
.chapters tbody tr:hover{background:var(--raise)}
.chapters td.who{font-weight:500}
.chapters td.num2{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.chapters .pill{display:inline-block;font-family:var(--mono);font-size:.63rem;letter-spacing:.08em;
  text-transform:uppercase;padding:3px 7px;border-radius:99px;border:1px solid var(--line-2);color:var(--muted)}
.chapters .pill.dup{border-color:rgba(255,122,77,.45);color:var(--owed);background:var(--owed-soft)}
.chapters .pill.goal{border-color:rgba(242,193,78,.5);color:var(--gold);background:var(--gold-soft)}
.chapters .empty{padding:30px 18px;text-align:center;color:var(--muted-2);font-size:.88rem}

/* the feed banner -------------------------------------------------- */
.chapters .ch-banner{display:flex;gap:12px;align-items:flex-start;background:var(--owed-soft);
  border:1px solid rgba(255,122,77,.3);border-radius:var(--r-m);padding:13px 15px;font-size:.87rem}
.chapters .ch-banner b{font-weight:600}

/* the dot tooltip -------------------------------------------------- */
/* Fixed to the viewport and appended to <body>, so it is the one piece
   that cannot live under .chapters — it carries its own class instead. */
.ch-tip{position:fixed;z-index:60;pointer-events:none;opacity:0;transition:opacity .12s;
  background:var(--surface-2);border:1px solid var(--line-2);border-radius:10px;padding:9px 12px;
  font-size:.79rem;box-shadow:var(--shadow);max-width:270px;color:var(--text);
  font-family:var(--body);line-height:1.5}
.ch-tip.on{opacity:1}
.ch-tip b{display:block;font-weight:600;margin-bottom:3px}
.ch-tip span{display:block;color:var(--muted-2);font-size:.76rem}

/* Chapter explorer: a compact atlas, campus collection and focused directory. */
.chapters [hidden]{display:none!important}
.chapters{--atlas-bg:#111324;--atlas-text:#eaeaff;--atlas-line:#303046;--atlas-muted:#a4a5bd;
  --atlas-control:#29263e;--atlas-control-text:#cfc5ff;--atlas-glow:#282440;--atlas-grid:#ffffff05;
  --atlas-label:#777a98;--atlas-base:#080a16;--atlas-shadow:#0008;--atlas-land:#1C1B29;
  --atlas-land-active:#242334;--atlas-coast:rgba(203,208,235,.17);--atlas-hover:#2C2B40;--atlas-selected:#2F2E47;
  --atlas-idle:#758099;--atlas-progress:#b29aff;--atlas-goal:#89ebc3;--atlas-pin-edge:#0A0913;--atlas-stem:#727095;--atlas-focus:#fff;}
.chapters{--cx-accent:#ad9aff;--cx-mint:#81e9c2}
.chapters .cx-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:8px 0}
.chapters .cx-eyebrow{font:10px var(--mono);letter-spacing:.15em;color:var(--violet-hi,#ad9aff)}
.chapters .cx-heading h2{font-size:clamp(24px,3vw,40px);margin:12px 0;text-transform:none;letter-spacing:-.045em}
.chapters .cx-heading p{font-size:13px;color:var(--muted);margin:0}
.chapters .cx-heading a{font-size:12px;color:var(--muted);white-space:nowrap;text-decoration:none}
.chapters .stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;border:0;background:transparent;overflow:visible}
.chapters .stat{border:1px solid var(--line);border-radius:16px;padding:18px 20px;background:linear-gradient(135deg,var(--surface),var(--surface-2));}
.chapters .stat .v{font-size:30px;letter-spacing:-.05em}
.chapters .cx-command{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding-bottom:12px}
.chapters .cx-tabs{display:flex;gap:6px}
.chapters button,.chapters select{font:inherit}
.chapters .cx-tabs button,.chapters .cx-filters>button,.chapters .panel-h>button,.chapters table.houses th button{border:0;background:transparent;color:var(--muted);cursor:pointer;padding:10px 16px;border-radius:10px;font-size:12px}
.chapters .cx-tabs button[aria-pressed=true]{background:var(--violet-soft);color:var(--text)}
.chapters .cx-sync{font:10px var(--mono);color:var(--muted-2)}
.chapters .cx-sync:before{content:'';display:inline-block;width:6px;height:6px;background:var(--cx-mint);border-radius:50%;margin-right:8px}
.chapters .cx-filters{padding:0;border:0;gap:10px}
.chapters .cx-filters input[type=search]{border-radius:12px;padding:12px 15px}
.chapters .cx-filters select{max-width:230px;min-width:0;background:var(--surface);border:1px solid var(--line);color:var(--text);border-radius:12px;padding:11px;font-size:12px}
.chapters .cx-filters .seg{flex-basis:100%;background:none;border:none;padding:2px 0;gap:8px;border-radius:0}
.chapters .seg button{border:1px solid var(--line);padding:8px 12px}
.chapters .seg button.on{border-color:var(--violet-hi);background:var(--violet-soft)}
.chapters .cx-explore{display:grid;grid-template-columns:minmax(0,1fr) 286px;gap:16px;align-items:stretch}
.chapters .cx-map-panel{background:var(--atlas-bg);color:var(--atlas-text);border-color:var(--atlas-line);border-radius:20px}
.chapters .cx-map-panel .panel-h{border-color:var(--atlas-line);align-items:center}
.chapters .cx-map-panel .panel-h h2{font-size:16px;color:var(--atlas-text)}
.chapters .cx-map-panel .panel-h .note{font:10px var(--mono);color:var(--atlas-muted)}
.chapters .cx-map-panel .panel-h>button{background:var(--atlas-control);color:var(--atlas-control-text);padding:7px 9px}
.chapters .cx-map-stage{perspective:950px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 70%,var(--atlas-glow) 0,transparent 68%),linear-gradient(var(--atlas-grid) 1px,transparent 1px),linear-gradient(90deg,var(--atlas-grid) 1px,transparent 1px);background-size:auto,30px 30px,30px 30px;min-height:320px;display:flex;align-items:center}
.chapters .cx-map-label{position:absolute;left:20px;top:20px;font:8px var(--mono);letter-spacing:.14em;color:var(--atlas-label);z-index:1;pointer-events:none}
.chapters .cx-map-stage .mapwrap{width:100%;background:none;overflow:visible;transition:transform .5s;transform-origin:center 65%;margin:15px 0 5px;padding:15px 0;}
.chapters .cx-map-stage .mapwrap.depth{transform:rotateX(24deg) rotateZ(-3deg) scale(.96);filter:drop-shadow(0 17px 0 var(--atlas-base)) drop-shadow(0 25px 20px var(--atlas-shadow))}
.chapters .cx-map-stage svg.usmap{display:block;width:100%;height:auto;max-height:410px;touch-action:pan-y}
.chapters .cx-map-panel .st{fill:var(--atlas-land);stroke:var(--atlas-coast);stroke-width:1}
.chapters .cx-map-panel .st.on{fill:var(--atlas-land-active)}
.chapters .empty-state-label{fill:var(--atlas-muted);font:600 13px var(--sans, sans-serif);text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:var(--atlas-land);stroke-width:3px;stroke-linejoin:round;pointer-events:none;user-select:none}
.chapters .cx-map-panel .dot{fill:var(--atlas-idle);stroke:#bec8df;stroke-width:1.4;animation:none}
.chapters .cx-map-panel .dot.prog{fill:var(--atlas-progress);stroke:#e2d9ff}
.chapters .cx-map-panel .dot.goal{fill:var(--atlas-goal);stroke:#d2ffec}
.chapters .cx-map-panel .halo{opacity:.18}
.chapters .cx-map-panel .ring{stroke:var(--atlas-goal)}
.chapters .cx-map-panel .ping{display:none}
.chapters .pin-stem{stroke:var(--atlas-stem);stroke-width:5;pointer-events:none;opacity:.8}
.chapters .cx-map-panel .marks.dim g:has(.dot:not(.sel)){opacity:.12}
.chapters .cx-map-panel .dot.sel{stroke:#fff;stroke-width:3;opacity:1}
.chapters .cx-map-panel .mapbar,.chapters .cx-map-panel .maplegend{background:var(--atlas-bg);border-color:var(--atlas-line);color:var(--atlas-muted)}
.chapters .cx-map-panel .maplegend .k{font-size:10px;color:var(--atlas-muted)}
.chapters .cx-map-panel .maplegend i.goal{background:var(--atlas-goal)}
.chapters .cx-map-panel .maplegend i.prog{background:var(--atlas-progress)}
.chapters .cx-map-panel .mapbar button{color:var(--atlas-control-text);border-color:var(--atlas-line);background:var(--atlas-control)}
.chapters .cx-map-panel .maphint{font-size:10px;color:var(--atlas-muted)}
.chapters .cx-inspector{padding:24px 22px;border-radius:20px;min-width:0;background:radial-gradient(circle at 50% 35%,var(--violet-soft),transparent 65%),var(--surface)}
.chapters .cx-inspector h3{font-size:20px;line-height:1.25;letter-spacing:-.03em;margin:12px 0;text-wrap:balance}
.chapters .cx-inspector p{font-size:12px;color:var(--muted);line-height:1.7}
.chapters .cx-orbit{width:170px;height:170px;margin:22px auto;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid var(--violet-hi);border-radius:50%;box-shadow:0 0 0 10px var(--violet-soft),inset 0 0 35px var(--violet-soft);transform:rotate(-5deg)}
.chapters .cx-orbit strong{font:32px var(--mono);letter-spacing:-.06em;transform:rotate(5deg)}
.chapters .cx-orbit strong small{font-size:17px}
.chapters .cx-orbit>span{font-size:10px;color:var(--muted);margin-top:8px;transform:rotate(5deg)}
.chapters .cx-action{width:100%;text-align:left;margin-top:9px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--violet-soft);color:var(--text);font-size:11px;cursor:pointer;line-height:1.5}
.chapters .cx-action.secondary{background:transparent;color:var(--muted)}
.chapters .cx-section-heading{display:flex;gap:12px;justify-content:space-between;align-items:center;margin:8px 0 18px}
.chapters .cx-section-heading h2{font-size:18px;text-transform:none}
.chapters .cx-section-heading>span{font:10px var(--mono);color:var(--muted-2)}
.chapters .cx-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.chapters .cx-campus{min-width:0;display:flex;flex-direction:column;align-items:stretch;text-align:left;padding:20px;border:1px solid var(--line);border-radius:17px;background:linear-gradient(145deg,var(--surface),var(--surface-2));color:var(--text);cursor:pointer;transition:transform .2s,box-shadow .2s,border-color .2s}
.chapters .cx-campus:hover{transform:perspective(650px) rotateX(3deg) translateY(-4px);border-color:var(--violet-hi);box-shadow:0 12px 22px #0002}
.chapters .cx-card-top{display:flex;align-items:center;gap:10px;font-size:10px;color:var(--muted-2);margin-bottom:18px}
.chapters .cx-campus-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;color:var(--violet-hi);font:12px var(--mono);background:var(--violet-soft);box-shadow:3px 4px 0 var(--line);transform:rotate(-6deg)}
.chapters .cx-card-arrow{margin-left:auto;font-size:18px}
.chapters .cx-campus>b{font-size:15px;line-height:1.4;min-height:42px;letter-spacing:-.02em}
.chapters .cx-card-meta{font-size:11px;color:var(--muted);margin-top:8px}
.chapters .cx-track{height:5px;background:var(--line);border-radius:20px;overflow:hidden;margin:19px 0 9px}
.chapters .cx-track>i{display:block;height:100%;background:linear-gradient(90deg,#9c83ed,#81e9c2);border-radius:20px}
.chapters .cx-card-bottom{display:flex;justify-content:space-between;font:9px var(--mono);color:var(--muted-2)}
.chapters .cx-house-list{max-height:260px;overflow:auto}
.chapters .cx-house-list button{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;border:0;border-bottom:1px solid var(--line);background:none;padding:11px 0;color:var(--text);text-align:left;cursor:pointer;font-size:12px}
.chapters .cx-house-list small{display:block;color:var(--muted);font-size:10px;margin-top:4px}
.chapters .cx-house-list em{color:var(--violet-hi);font:11px var(--mono)}
.chapters .cx-detail-stats{display:flex;justify-content:space-between;gap:10px}
.chapters .cx-detail-stats b{display:block;font:21px var(--mono)}
.chapters .cx-detail-stats span{font-size:10px;color:var(--muted)}
.chapters .cx-inspector details{font-size:11px;line-height:1.6;padding:12px 0;border-top:1px solid var(--line)}
.chapters .cx-inspector summary{cursor:pointer}
.chapters .cx-method{font-size:12px;line-height:1.7;color:var(--muted);margin:20px 0}
.chapters [data-pane=insights] .two{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:20px}
.chapters table.houses th button{padding:0;color:inherit;border-radius:0;font:inherit}
.chapters button:focus-visible,.chapters select:focus-visible{outline:2px solid var(--violet-hi);outline-offset:3px}
@media(max-width:1150px){.chapters .cx-explore{grid-template-columns:minmax(0,1fr) 250px}.chapters .cx-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.chapters .cx-map-panel .panel-h .note{display:none}}
@media(max-width:800px){.chapters .cx-explore{grid-template-columns:1fr}.chapters .cx-inspector{display:block}.chapters .stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chapters .cx-sync{display:none}.chapters .cx-map-stage{min-height:240px}.chapters .cx-heading a{display:none}.chapters .cx-orbit{width:135px;height:135px;margin:20px auto}.chapters .cx-filters select{flex:1;max-width:none}.chapters .cx-section-heading{align-items:flex-start;flex-direction:column}.chapters [data-pane=insights] .two{grid-template-columns:1fr}}
@media(max-width:480px){.chapters .cx-cards{grid-template-columns:1fr}.chapters .stat{padding:14px}.chapters .stat .v{font-size:26px}.chapters .cx-tabs button{padding:9px 13px}.chapters .seg button{font-size:11px;padding:7px 9px}.chapters .cx-map-stage{min-height:205px}.chapters .cx-filters input[type=search]{flex-basis:100%}.chapters .cx-heading h2{font-size:27px}}
@media(prefers-reduced-motion:reduce){.chapters *{animation:none!important;transition:none!important;scroll-behavior:auto!important}.chapters .cx-campus:hover{transform:none}}
.chapters .cx-sync.off:before{background:#d9a35d}
.chapters .cx-review{padding:10px 12px;border:1px solid var(--gold);border-radius:10px;color:var(--text)!important;background:var(--gold-soft)}
.chapters .cx-inspector h3{text-transform:none}
.chapters{gap:16px}
.chapters .cx-heading{padding:2px 0}
.chapters .cx-heading h2{font-size:clamp(24px,2.7vw,34px);line-height:1.1;margin:8px 0}
.chapters .stat{padding:14px 18px}
.chapters .stat .v{line-height:1.15}
.chapters .cx-filters select,.chapters .cx-filters input[type=search]{height:42px;line-height:18px;box-sizing:border-box}
.chapters .cx-filters select{padding:8px 10px}
.chapters .cx-orbit{width:145px;height:145px;margin:18px auto}
.chapters .cx-inspector .cx-action{height:auto;min-height:38px;white-space:normal}
.chapters .cx-map-panel{--gold:var(--atlas-goal);--violet:var(--atlas-progress);--none:var(--atlas-idle);--land:var(--atlas-land);--land-hi:var(--atlas-land-active);--coast:var(--atlas-coast)}

/* Match Internal's existing theme control, including the OS default. */
:root[data-theme="light"] .chapters{--gold:#956908;--gold-soft:rgba(149,105,8,.1);--cx-mint:#16805c;--atlas-bg:#f8f8ff;--atlas-text:#292640;--atlas-line:#dcdbea;--atlas-muted:#615e78;
  --atlas-control:#eeebfc;--atlas-control-text:#504080;--atlas-glow:#e3def5;--atlas-grid:#716e9912;
  --atlas-label:#706b86;--atlas-base:#b5b0cf;--atlas-shadow:#64617c33;--atlas-land:#e7e7f1;
  --atlas-land-active:#d5d2e8;--atlas-coast:#aaa6c0;--atlas-hover:#c8bff0;--atlas-selected:#b6a7e6;
  --atlas-idle:#687893;--atlas-progress:#7950d0;--atlas-goal:#16805c;--atlas-pin-edge:#fff;--atlas-stem:#a19abb;--atlas-focus:#32234f;}
@media(prefers-color-scheme:light){
  :root:not([data-theme]) #ch-board.chapters{--gold:#956908;--gold-soft:rgba(149,105,8,.1);--cx-mint:#16805c;--atlas-bg:#f8f8ff;--atlas-text:#292640;--atlas-line:#dcdbea;--atlas-muted:#615e78;
  --atlas-control:#eeebfc;--atlas-control-text:#504080;--atlas-glow:#e3def5;--atlas-grid:#716e9912;
  --atlas-label:#706b86;--atlas-base:#b5b0cf;--atlas-shadow:#64617c33;--atlas-land:#e7e7f1;
  --atlas-land-active:#d5d2e8;--atlas-coast:#aaa6c0;--atlas-hover:#c8bff0;--atlas-selected:#b6a7e6;
  --atlas-idle:#687893;--atlas-progress:#7950d0;--atlas-goal:#16805c;--atlas-pin-edge:#fff;--atlas-stem:#a19abb;--atlas-focus:#32234f;}
}
.chapters .cx-map-panel svg.usmap path.st.on:hover{fill:var(--atlas-hover)}
.chapters .cx-map-panel svg.usmap path.st.sel{fill:var(--atlas-selected);stroke:var(--atlas-progress)}
.chapters .cx-map-panel svg.usmap circle.dot{stroke:var(--atlas-pin-edge)}
.chapters .cx-map-panel svg.usmap circle.dot:hover,.chapters .cx-map-panel svg.usmap circle.dot:focus-visible,.chapters .cx-map-panel svg.usmap circle.dot.sel{stroke:var(--atlas-focus)}
.chapters .cx-map-panel .maplegend i{background:var(--atlas-idle)}
.chapters .cx-map-panel .selchip{color:var(--atlas-control-text);background:var(--atlas-control);border-color:var(--atlas-line)}
