:root { --ink:#333333; --ink-strong:#1f1f1f; --band:#e4f2ff; --band-line:#c9ddf5; --accent:#0057e1; --accent-dark:#0047b8; --muted:#4d4d4d; --line:#d9d9d9; }
* { box-sizing: border-box; }
[hidden] { display:none !important; } /* r2.1: filtered cards must disappear even where a rule sets display */
html { -webkit-text-size-adjust: 100%; }
body { margin:0; color:var(--ink); background:#ffffff; font-family: Helvetica, "Helvetica Neue", Arial, "Liberation Sans", sans-serif; font-size:17px; line-height:1.55; }
a { color: var(--accent); }
a:hover { color: var(--accent-dark); }
:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
.skip { position:absolute; left:-9999px; top:0; background:#ffffff; padding:10px 14px; z-index:30; }
.skip:focus { left:8px; top:8px; }
.notice { background:#ffffff; border-bottom:1px solid var(--band-line); font-size:13px; }
.notice p { margin:0 auto; max-width:1200px; padding:6px 40px; }
.notice a { color:var(--accent-dark); }
.wrap { max-width:1200px; margin:0 auto; padding:0 40px; }
.header-row { display:flex; justify-content:space-between; align-items:center; min-height:72px; gap:24px; }
.site-title { font-weight:bold; font-size:20px; color:var(--ink-strong); text-decoration:none; line-height:1.2; padding:8px 0; }
.site-nav ul { list-style:none; margin:0; padding:0; display:flex; gap:32px; }
.site-nav a { color:var(--ink); text-decoration:none; display:inline-block; padding:12px 2px; border-bottom:2px solid transparent; }
.site-nav a:hover { border-bottom-color: var(--band-line); }
.site-nav a[aria-current="page"] { color:var(--accent); border-bottom-color:var(--accent); }
.menu-toggle { display:none; }
.hero { background:var(--band); padding:44px 0 40px; }
.hero-grid { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); gap:48px; align-items:start; }
.kicker { margin:0 0 10px; font-size:14px; letter-spacing:.08em; text-transform:uppercase; font-weight:bold; color:var(--muted); }
h1, h2, h3 { color:var(--ink-strong); }
.hero h1 { font-size:50px; line-height:1.08; margin:0 0 20px; letter-spacing:-0.01em; }
.lead { font-size:20px; line-height:1.5; margin:0 0 12px; max-width:620px; }
.cta-row { display:flex; flex-wrap:wrap; gap:12px; margin:24px 0 0; }
.btn { display:inline-block; padding:12px 18px; border-radius:4px; font-weight:bold; font-size:16px; line-height:1.3; text-decoration:none; border:2px solid var(--accent); }
.btn-primary { background:var(--accent); color:#ffffff; }
.btn-primary:hover { background:var(--accent-dark); border-color:var(--accent-dark); color:#ffffff; }
.btn-secondary { background:#ffffff; color:var(--accent); }
.hero-panel { background:#ffffff; border:1px solid var(--band-line); border-radius:6px; padding:22px 26px 20px; }
.hero-panel h2 { font-size:20px; line-height:1.3; margin:0 0 6px; }
.questions { list-style:none; margin:0; padding:0; }
.questions li { display:flex; gap:14px; align-items:flex-start; padding:13px 0; border-bottom:1px solid var(--line); }
.q-num { flex:0 0 32px; height:32px; border-radius:50%; background:var(--accent); color:#ffffff; font-weight:bold; display:flex; align-items:center; justify-content:center; font-size:16px; margin-top:1px; }
.q-body { font-size:16px; line-height:1.45; }
.q-body strong { display:block; font-size:18px; color:var(--ink-strong); margin-bottom:2px; }
.panel-note { font-size:15px; line-height:1.45; color:var(--muted); margin:14px 0 0; }
.path { padding:34px 0 10px; }
.path h2, .guides h2 { font-size:26px; line-height:1.25; margin:0 0 14px; }
.cards { list-style:none; margin:0; padding:0; }
.card { position:relative; background:#ffffff; border:1px solid var(--band-line); border-radius:6px; padding:16px 18px; display:flex; flex-direction:column; }
.card:hover { border-color:var(--accent); }
.card:focus-within { outline:3px solid var(--accent); outline-offset:2px; }
.card h3, .card .card-title { font-size:18px; line-height:1.3; margin:0 0 6px; }
.card h3 a, .card .card-title a { text-decoration:none; color:var(--accent-dark); }
.card h3 a::after, .card .card-title a::after { content:""; position:absolute; inset:0; }
.card a:focus-visible { outline:none; }
.card p { margin:0; font-size:15px; line-height:1.45; }
.card .meta-small { margin-top:auto; padding-top:10px; font-size:13px; color:var(--muted); }
.step { margin:0 0 4px !important; font-weight:bold; color:var(--accent); font-size:14px !important; }
.path-list { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.more { margin:16px 0 0; font-size:15px; }
.guides { padding:30px 0 40px; }
.section-intro { margin:0 0 14px; }
.guide-list { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.band { background:var(--band); padding:36px 0 40px; }
.measure { max-width:860px; }
.about h2 { font-size:26px; margin:0 0 12px; }
.about p { margin:0 0 12px; }
.page { padding:40px 0 48px; }
.column { max-width:860px; }
.page h1 { font-size:42px; line-height:1.15; margin:0 0 20px; }
.prose h2, .page-resources main h2 { font-size:26px; line-height:1.3; margin:28px 0 8px; }
.prose p, .page-resources main p { margin:0 0 12px; }
.prose table { border-collapse:collapse; width:100%; font-size:14px; }
.prose th, .prose td { border:1px solid var(--line); padding:6px 8px; text-align:left; vertical-align:top; }
.prose td code { word-break:break-all; font-size:13px; }
.filters { display:flex; gap:32px; flex-wrap:wrap; margin:22px 0 10px; }
.filters label { display:block; font-size:14px; font-weight:bold; margin-bottom:6px; }
.filters select { width:300px; max-width:100%; height:48px; border:1px solid var(--ink); border-radius:4px; background:#ffffff; font:inherit; padding:0 12px; color:var(--ink); }
.count { font-size:14px; color:var(--muted); margin:8px 0 14px !important; }
.list { display:grid; gap:12px; }
.list-card .card-title { font-size:19px; }
.item-column { max-width:780px; }
.back { margin:0 0 10px; font-size:15px; }
.back a { text-decoration:none; }
.item h1 { font-size:38px; line-height:1.15; margin:0 0 12px; }
.item .summary { font-size:19px; line-height:1.5; margin:0 0 12px; }
.item .meta { font-size:14px; color:var(--muted); margin:0 0 4px; }
.read-time { font-size:14px; color:var(--muted); margin:0 0 20px !important; padding-bottom:14px; border-bottom:1px solid var(--line); }
.nowrap { white-space:nowrap; }
.toc { background:#ffffff; border:1px solid var(--band-line); border-radius:6px; padding:12px 18px; margin:0 0 22px; }
.toc h2 { font-size:15px !important; margin:0 0 6px !important; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); }
.toc ol { margin:0; padding-left:22px; columns:2; column-gap:28px; font-size:15px; }
.toc li { margin:0 0 4px; break-inside:avoid; }
.rich { font-size:17px; line-height:1.65; }
.rich h2 { font-size:24px; line-height:1.3; margin:30px 0 10px; scroll-margin-top:12px; }
.rich p { margin:0 0 14px; }
.rich ul, .rich ol { margin:0 0 14px; padding-left:26px; }
.rich li { margin:0 0 8px; }
.prevnext { display:flex; justify-content:space-between; gap:16px; margin:36px 0 10px; padding-top:18px; border-top:1px solid var(--line); }
.prevnext a { display:block; max-width:48%; text-decoration:none; padding:8px 0; }
.prevnext a[rel="next"] { text-align:right; margin-left:auto; }
.pn-label { display:block; font-size:13px; color:var(--muted); text-transform:uppercase; letter-spacing:.06em; }
.pn-title { display:block; font-weight:bold; }
.site-footer { border-top:1px solid var(--line); padding:26px 0 40px; font-size:14px; color:var(--muted); }
.site-footer p { margin:0 0 10px; max-width:640px; }
@media (max-width: 1080px) {
  .path-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 900px) {
  .hero-grid { grid-template-columns:1fr; gap:24px; }
  .guide-list { grid-template-columns:1fr; }
}
@media (max-width: 760px) {
  body { font-size:16px; }
  .wrap { padding:0 20px; }
  .notice p { padding:6px 20px; }
  .header-row { min-height:60px; }
  .site-title { font-size:17px; }
  .js .menu-toggle { display:inline-block; min-height:44px; min-width:44px; background:#ffffff; border:1px solid var(--ink); border-radius:4px; color:var(--ink); font:inherit; padding:8px 12px; }
  .js .site-nav ul { display:none; }
  .js .site-nav.open ul { display:flex; }
  .site-nav { position:relative; }
  .site-nav ul { flex-direction:column; gap:0; position:absolute; right:0; top:52px; background:#ffffff; border:1px solid var(--band-line); border-radius:6px; padding:6px 0; z-index:5; min-width:200px; box-shadow:0 6px 18px rgba(0,0,0,.08); }
  .site-nav a { display:block; padding:12px 18px; border-bottom:0; }
  html:not(.js) .site-nav ul { position:static; box-shadow:none; border:0; }
  .hero { padding:26px 0 26px; }
  .hero h1 { font-size:34px; }
  .lead { font-size:18px; }
  .cta-row .btn { display:block; width:100%; text-align:center; }
  .hero-panel { padding:16px 18px; }
  .path-list, .guide-list { grid-template-columns:1fr; }
  .page h1 { font-size:32px; }
  .item h1 { font-size:30px; }
  .item .summary { font-size:17px; }
  .toc ol { columns:1; }
  .rich { font-size:16px; }
  .rich h2 { font-size:21px; }
  .filters select { width:100%; }
  .filters > div { width:100%; }
  .prevnext a { max-width:50%; }
}
/* ---- r3 additions ---------------------------------------------------------------------------------------- */
.js-only { display:none !important; }
/* r3.1: the JavaScript controls are shown on screen only, so the print rule below always hides them. */
@media screen {
  .js .js-only { display:block !important; }
  .js form.search-form.js-only { display:flex !important; }
}
.start { margin-top:22px; }
.start-label { margin:0 0 8px; font-size:14px; font-weight:bold; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
.start .cta-row { margin:0 0 18px; }
.routes { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; max-width:620px; }
.routes a { display:flex; align-items:center; min-height:48px; height:100%; padding:10px 14px; border:2px solid var(--accent); border-radius:4px; background:#ffffff; color:var(--accent-dark); font-weight:bold; text-decoration:none; line-height:1.3; }
.routes a:hover { background:#ffffff; }
.chip { display:inline-block; vertical-align:middle; font-size:12px; font-weight:bold; letter-spacing:.05em; text-transform:uppercase; line-height:1.4; padding:1px 8px; border-radius:999px; background:#ffffff; white-space:nowrap; }
.chip-open { color:var(--ink-strong); border:1px dashed var(--ink-strong); }
.chip-record { color:var(--accent-dark); border:1px solid var(--accent-dark); }
h2 .chip { margin-left:8px; position:relative; top:-3px; }
.q-body .chip { margin:2px 0 4px; }
.q-ans { display:block; }
.panel-link { margin:12px 0 0; font-size:15px; font-weight:bold; }
.find { padding:34px 0 30px; }
.find-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:48px; align-items:start; }
.find h2 { font-size:26px; line-height:1.25; margin:0 0 14px; }
.find h3 { font-size:19px; margin:0 0 10px; }
.search-form { flex-wrap:wrap; gap:8px; align-items:stretch; margin:0 0 6px; max-width:620px; }
.search-form label { flex:0 0 100%; font-weight:bold; font-size:15px; }
.search-form input[type=search], .filters input[type=search] { flex:1 1 220px; min-width:0; height:48px; border:1px solid var(--ink); border-radius:4px; padding:0 12px; font:inherit; color:var(--ink); background:#ffffff; }
.form-hint { flex:0 0 100%; margin:4px 0 0 !important; font-size:14px; color:var(--muted); }
.find-links { margin:14px 0 0; font-size:15px; }
.qlist { margin:0; padding-left:20px; }
.qlist li { margin:0 0 8px; }
.money-teaser { padding:30px 0 32px; }
.teaser-grid { display:flex; gap:32px; align-items:center; justify-content:space-between; flex-wrap:wrap; }
.teaser-grid h2 { font-size:26px; margin:0 0 8px; }
.teaser-grid p { margin:0; max-width:680px; }
.deeper { padding:30px 0 36px; }
.deeper h2 { font-size:26px; margin:0 0 12px; }
.deeper-list { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px 28px; }
.deeper-list li { padding:8px 0; border-bottom:1px solid var(--line); }
.deeper-list a { font-weight:bold; text-decoration:none; color:var(--accent-dark); }
.deeper-list .meta-small { display:block; font-size:13px; color:var(--muted); }
.start-card { margin:0 0 18px; }
.start-card h3 { font-size:20px; margin:0 0 6px; }
.start-card h3 a, .guide-card h4 a { text-decoration:none; color:var(--accent-dark); }
.start-card h3 a::after, .guide-card h4 a::after { content:""; position:absolute; inset:0; }
.guides-title { font-size:19px; margin:0 0 10px; }
.guide-list.four { grid-template-columns:repeat(2,minmax(0,1fr)); margin:0 0 24px; }
.guide-card h4 { font-size:18px; line-height:1.3; margin:0 0 6px; }
.callout-line { font-size:15px; margin:0 0 6px !important; }
.callout { border-left:4px solid var(--accent); background:#ffffff; padding:10px 14px; margin:0 0 20px; font-size:15px; }
.callout p { margin:0; }
.filters { grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto; gap:14px 20px; align-items:end; margin:20px 0 6px; }
@media screen { .js .filters.js-only { display:grid !important; } }
.filters .f-search { grid-column:1 / -1; }
.filters .f-search input { width:100%; }
.filters select { width:100%; }
.f-clear .btn { height:48px; }
.empty-state { border:2px dashed var(--ink-strong); border-radius:6px; padding:16px 18px; margin:6px 0 16px; }
.empty-state p { margin:0 0 10px; }
.empty-state p:last-child { margin:0; }
.also { border:1px solid var(--band-line); border-radius:6px; background:#ffffff; padding:12px 16px; margin:0 0 16px; }
.also-title { font-size:15px !important; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); margin:0 0 6px !important; }
.also-cols { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; font-size:15px; }
.also-cols p { margin:0 0 4px; font-weight:bold; }
.also-cols ul { margin:0; padding-left:18px; }
.also-cols li { margin:0 0 4px; }
.match-note { margin-top:6px !important; font-size:13px !important; color:var(--muted); font-style:italic; }
.finder { border:1px solid var(--band-line); border-radius:6px; background:#ffffff; padding:12px 16px 14px; margin:0 0 18px; }
.finder label { display:block; font-weight:bold; font-size:15px; margin:0 0 6px; }
.finder-row { display:flex; gap:8px; flex-wrap:wrap; }
.finder-row input { flex:1 1 220px; min-width:0; height:44px; border:1px solid var(--ink); border-radius:4px; padding:0 12px; font:inherit; background:#ffffff; }
.finder-row .btn { height:44px; padding:8px 16px; }
.finder-count { margin:8px 0 0; font-size:14px; color:var(--muted); }
.finder-empty { margin:8px 0 0; font-weight:bold; }
.finder-empty button { font:inherit; font-weight:bold; color:var(--accent-dark); background:none; border:0; padding:0; text-decoration:underline; cursor:pointer; }
.is-target { outline:3px solid var(--accent); outline-offset:4px; border-radius:2px; }
/* the visual explainer */
.money .kicker { margin-top:4px; }
.money h1 { font-size:42px; line-height:1.15; margin:0 0 12px; }
.money .summary { font-size:19px; max-width:820px; margin:0 0 16px; }
.status-box { border:2px solid var(--ink-strong); border-radius:6px; padding:14px 18px; margin:0 0 26px; max-width:980px; }
.status-box p { margin:0 0 8px; }
.status-box p:last-child { margin:0; font-size:15px; color:var(--muted); }
.part { margin:0 0 34px; }
.part > h2 { font-size:28px; line-height:1.25; margin:0 0 10px; }
.legend { font-size:15px; margin:0 0 14px; color:var(--muted); }
.key { display:inline-block; width:44px; height:0; vertical-align:middle; margin:0 4px 0 0; }
.key-pay { border-top:3px solid var(--accent); }
.key-fin { border-top:3px dashed var(--ink-strong); }
.legend-item { display:inline-block; margin-right:18px; }
.flow-block { border:1px solid var(--band-line); border-radius:6px; padding:14px 18px 12px; margin:0 0 16px; break-inside:avoid; }
.flow-block h3 { font-size:20px; margin:0 0 4px; }
.flow { display:flex; align-items:stretch; margin:12px 0 10px; }
.node { flex:0 0 180px; border:2px solid var(--ink-strong); border-radius:6px; padding:10px 12px; background:#ffffff; display:flex; flex-direction:column; justify-content:center; text-align:center; }
.node-name { font-weight:bold; color:var(--ink-strong); line-height:1.3; }
.node-note { font-size:14px; color:var(--muted); line-height:1.35; margin-top:2px; }
.node-center { border-width:3px; }
.edge { flex:1 1 0; min-width:120px; display:flex; flex-direction:column; justify-content:center; padding:0 12px; }
.edge-label { font-size:15px; line-height:1.35; text-align:center; margin-bottom:6px; }
.edge-line { position:relative; display:block; height:0; border-top:3px solid var(--accent); margin-right:12px; }
.edge-line::after { content:""; position:absolute; right:-14px; top:-9px; border-left:14px solid var(--accent); border-top:7px solid transparent; border-bottom:7px solid transparent; }
.edge-fin .edge-line { border-top-style:dashed; border-top-color:var(--ink-strong); }
.edge-fin .edge-line::after { border-left-color:var(--ink-strong); }
.edge-rev .edge-line { margin-right:0; margin-left:12px; }
.edge-rev .edge-line::after { right:auto; left:-14px; border-left:0; border-right:14px solid var(--ink-strong); }
.flow-caption p { margin:0 0 8px; font-size:16px; }
.no-return { border-left:4px solid var(--ink-strong); padding:4px 0 4px 12px; }
.flow-sources { font-size:14px; margin:6px 0 0; color:var(--muted); }
.src-label { font-weight:bold; }
.part-decisions { border-top:3px solid var(--ink-strong); padding-top:22px; }
.decisions { list-style:none; margin:14px 0 16px; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.decision { border:2px dashed var(--ink-strong); border-radius:6px; padding:14px 16px; background:#ffffff; }
.decision p { margin:0 0 10px; font-size:16px; }
.d-head { display:grid; grid-template-columns:32px minmax(0,1fr); gap:10px; align-items:start; }
.d-q { display:flex; flex-wrap:wrap; align-items:center; gap:6px; padding-top:3px; }
.d-head strong { font-size:18px; color:var(--ink-strong); }
.attach { max-width:980px; }
.attach p { margin:0 0 12px; }
.more-list { margin:0 0 12px; padding-left:20px; }
.more-list li { margin:0 0 6px; }
@media (max-width: 1080px) {
  .decisions { grid-template-columns:1fr; }
  .deeper-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 900px) {
  .find-grid { grid-template-columns:1fr; gap:24px; }
  .flow { flex-direction:column; align-items:stretch; }
  .node { flex:none; }
  .edge { flex:none; min-height:72px; padding:8px 0 8px 40px; justify-content:center; position:relative; }
  .edge-label { text-align:left; margin:0; }
  .edge-line { position:absolute; left:18px; top:0; bottom:12px; height:auto; border-top:0; border-left:3px solid var(--accent); margin:0; }
  .edge-line::after { right:auto; left:-9px; top:auto; bottom:-14px; border-left:7px solid transparent; border-right:7px solid transparent; border-top:14px solid var(--accent); border-bottom:0; }
  .edge-fin .edge-line { border-left-style:dashed; border-left-color:var(--ink-strong); }
  .edge-fin .edge-line::after { border-top-color:var(--ink-strong); border-left-color:transparent; }
  .edge-rev .edge-line { top:12px; bottom:0; margin:0; }
  .edge-rev .edge-line::after { top:-14px; bottom:auto; left:-9px; border-top:0; border-bottom:14px solid var(--ink-strong); border-left:7px solid transparent; border-right:7px solid transparent; }
}
@media (max-width: 760px) {
  .routes { grid-template-columns:1fr; }
  .deeper-list { grid-template-columns:1fr; }
  .guide-list.four { grid-template-columns:1fr; }
  .js .filters.js-only { grid-template-columns:1fr !important; }
  .f-clear .btn { width:100%; }
  .also-cols { grid-template-columns:1fr; }
  .money h1 { font-size:32px; }
  .part > h2 { font-size:23px; }
  .teaser-grid .cta-row .btn { width:100%; }
}
@media print {
  .notice, .skip, .site-nav, .menu-toggle, .js-only, .filters, .finder, .toc, .prevnext, .also, .empty-state, .back { display:none !important; }
  /* r3.1 second guard: more specific than any screen rule for these controls */
  html.js .js-only, html.js form.search-form.js-only, html.js form.filters.js-only, html.js .finder, html.js .menu-toggle { display:none !important; }
  /* r3.1: button-styled links keep legible black text when backgrounds are not printed */
  a.btn, a.btn-primary, a.btn-secondary { color:#000000 !important; background:none !important; border:1px solid #000000 !important; }
  /* r3.1.1 print polish (print only): headings stay with what follows; short question rows, decisions and cards stay whole;
     the footer is one unbreakable box, and the web-only bottom padding of the page and the footer is dropped in print so the
     footer fits under the last block instead of starting a page of its own. */
  h1, h2, h3, h4, .kicker, .start-label, .guides-title { break-after:avoid; page-break-after:avoid; }
  .questions li, .decision, .card, .start-card, .guide-card, .status-box, .legend, .panel-note, .attach p { break-inside:avoid; page-break-inside:avoid; }
  .page { padding-bottom:0; }
  .part { margin-bottom:16px; }
  .part:last-child, .more-list { margin-bottom:6px; }
  .decisions { margin-bottom:10px; }
  .more-list li { margin-bottom:3px; }
  .site-footer { break-inside:avoid; page-break-inside:avoid; padding:8px 0 0; margin-top:8px; }
  .site-footer p { margin-bottom:4px; }
  .site-footer p:last-child { margin-bottom:0; }
  body { font-size:11pt; color:#000000; }
  .hero, .band, .callout, .also, .finder, .status-box { background:none !important; }
  a { color:#000000; }
  .rich a[href^="http"]::after, .flow-sources a[href^="http"]::after { content:" <" attr(href) ">"; font-size:8.5pt; word-break:break-all; }
  .flow-block, .decision, .node, .card { break-inside:avoid; }
  .site-footer { border-top:1px solid #000000; }
}
