@font-face {
  font-family: "Noto Sans CJK TC";
  src: local("Noto Sans CJK TC"), local("PingFang TC");
  font-display: swap;
}

:root {
  --bg: #f2f2ef;
  --surface: #fff;
  --surface-2: #e9e9e6;
  --ink: #161410;
  --muted: #555550;
  --line: #c9c9c5;
  --line-strong: #777770;
  --red: #9f1623;
  --red-soft: #f4e8e2;
  --gold: #e3ac2f;
  --radius: 8px;
  color: var(--ink);
  background: var(--bg);
  font-family: "Noto Sans CJK TC", "PingFang TC", system-ui, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: #f4f3ef; font-size: 17px; line-height: 1.6; }
a { color: inherit; text-underline-offset: 3px; }
button, input, select { font: inherit; }
button { color: inherit; }
[hidden] { display: none !important; }
:focus-visible { outline: 3px solid #e5b23b; outline-offset: 3px; }

.skip-link {
  position: absolute;
  z-index: 20;
  top: 8px;
  left: 8px;
  padding: 10px 14px;
  border: 2px solid var(--ink);
  background: var(--surface);
  font-weight: 900;
  transform: translateY(-160%);
}
.skip-link:focus { transform: translateY(0); }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; clip-path: inset(50%); }

.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px 16px;
  width: calc(100% - 32px);
  max-width: 1088px;
  margin: 0 auto;
  padding: 12px 0;
  border-bottom: 1px solid #c9c9c5;
  color: #181818;
  font-family: "Noto Sans CJK TC", "Noto Sans CJK", "PingFang TC", system-ui, sans-serif;
  font-size: 18px;
  line-height: 1.6;
}
.topbar nav { display: flex; align-items: center; gap: 12px; }
.topbar nav a { display: inline-flex; flex: 0 0 auto; min-height: 44px; align-items: center; justify-content: center; padding: 0 8px; border-bottom: 3px solid transparent; color: #181818; font: 700 14px/1.3 "Noto Sans CJK TC", "Noto Sans CJK", "PingFang TC", system-ui, sans-serif; text-decoration: none; white-space: nowrap; }
.topbar nav a[aria-current="page"] { border-bottom-color: #b20d27; }
.site-identity { display: flex; min-width: 0; align-items: center; gap: 16px; }
.site-mark { color: #181818; font: 900 18px/1.2 Georgia, "Noto Serif TC", serif; letter-spacing: 0; text-decoration: none; white-space: nowrap; }
.top-maker { display: inline-flex; align-items: center; gap: 5px; color: #181818; font: 600 14px/1.3 "Noto Sans CJK TC", "Noto Sans CJK", "PingFang TC", system-ui, sans-serif; text-decoration: none; white-space: nowrap; }
.top-maker img { display: block; width: 22px; height: 22px; object-fit: contain; }
.topbar .donate { margin-left: 4px; padding: 0 12px; border: 0; border-radius: 4px; background: #b20d27; color: #fff; }

.wrap { max-width: 1120px; margin: auto; padding: 24px 16px 72px; }
.load-state, .noscript-note {
  margin-bottom: 18px;
  padding: 18px;
  border: 2px solid var(--ink);
  border-left: 8px solid var(--gold);
  background: #fff8df;
}
.load-state h2 { margin: 0; font-family: serif; }
.load-state p { margin: 4px 0 0; }
.load-state button { min-height: 46px; margin-top: 12px; padding: 8px 16px; border: 2px solid var(--ink); background: var(--surface); font-weight: 900; cursor: pointer; }
.load-failed .load-state { border-left-color: var(--red); background: var(--red-soft); }
.noscript-note { border-left-color: var(--red); }
.hero { padding: 0 0 20px; color: #181818; }
.eyebrow { margin: 0 0 5px; color: var(--red); font-size: 14px; font-weight: 800; letter-spacing: .14em; }
.hero h1 { margin: 0; font-family: Georgia, "Noto Serif TC", serif; font-size: 48px; font-weight: 900; line-height: 1.18; }
.hero h1 .title-prefix { white-space: nowrap; }
.hero h1 .title-break { display: block; color: inherit; white-space: nowrap; }
.lead { max-width: 44em; color: var(--muted); }
.manifesto { max-width: 46em; margin: 14px 0 0; color: #181818; font: 400 16px/1.7 "Noto Sans CJK TC", "Noto Sans CJK", "PingFang TC", system-ui, sans-serif; }
.manifesto p { margin: 0; word-break: normal; overflow-wrap: normal; text-wrap: pretty; }
.search-form { margin-top: 12px; }
.search-row { position: relative; display: block; width: min(100%, 736px); height: 52px; font: 400 18px/1.6 "Noto Sans CJK TC", "Noto Sans CJK", "PingFang TC", system-ui, sans-serif; }
.search-row:focus-within { outline: 3px solid #e5b23b; outline-offset: 3px; }
.search { display: block; width: 100%; height: 52px; min-height: 0; padding: 12px 64px 12px 16px; border: 1px solid #181818; border-radius: 4px; background: #fff; color: #181818; font: 400 16px/1.4 "Noto Sans CJK TC", "Noto Sans CJK", "PingFang TC", system-ui, sans-serif; outline: none; }
.search::placeholder { color: #4a4a47; opacity: 1; }
.search-row button { position: absolute; top: 0; right: 0; display: inline-flex; width: 52px; height: 52px; align-items: center; justify-content: center; padding: 0; border: 0; border-radius: 0 4px 4px 0; background: transparent; color: #181818; cursor: pointer; }
.search-row button:hover { color: #b20d27; }
.task-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 12px; }
.report-section { margin-top: 18px; }
.task-links > div { display: block; min-width: 0; min-height: 90px; padding: 12px 14px; border: 1.5px solid var(--line); background: var(--surface); }
.task-links strong { display: block; font-weight: 800; }
.task-links span { display: block; color: var(--muted); font-size: 14px; font-weight: 400; }
.task-links a { display: inline-flex; min-height: 44px; align-items: center; margin-top: 4px; font-size: 14px; font-weight: 800; }
.report-contact { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-top: 12px; padding: 8px 12px; border-left: 2px solid var(--line-strong); background: var(--surface); }
.report-contact > span { font-size: 13px; font-weight: 400; }
.report-contact > a { overflow-wrap: anywhere; font-size: 13px; font-weight: 700; }

.type-browse, .map-panel, .filters, .results, .method, .support {
  margin-top: 18px;
  padding: 18px;
  border: 2px solid var(--ink);
  background: var(--surface);
}
.type-browse { padding: 16px 24px; border: 0; border-radius: 16px; background: #e9e9e6; color: #161410; font: 400 18px/1.6 "Noto Sans CJK TC", "Noto Sans CJK", "PingFang TC", system-ui, sans-serif; }
.hero + .type-browse { margin-top: 0; }
.map-panel h2, .section-head h2, .method h2, .support h2 { margin: 0; font-family: serif; }

.type-browse-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.type-browse .eyebrow { margin: 0 0 4px; color: #b01020; font: 700 14px/22.4px "Noto Sans CJK TC", "Noto Sans CJK", "PingFang TC", system-ui, sans-serif; letter-spacing: 0; }
.type-browse h2 { margin: 0; color: #161410; font: 700 18px/22.5px "Noto Serif CJK TC", "Noto Serif CJK", "Source Han Serif TC", "Songti TC", serif; }
.type-region { white-space: nowrap; }
.type-note { margin: 8px 0 12px; color: #4a4a47; font: 400 15px/24px "Noto Sans CJK TC", "Noto Sans CJK", "PingFang TC", system-ui, sans-serif; }
.type-choices { display: flex; flex-wrap: wrap; gap: 8px; }
.type-choices button, #clearType { min-height: 44px; padding: 8px 12px; border: 0; border-radius: 8px; background: #fff; color: #161410; cursor: pointer; }
.type-choices button { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 0; text-align: center; font: 700 17px/21.25px "Noto Sans CJK TC", "Noto Sans CJK", "PingFang TC", system-ui, sans-serif; }
.type-choices button strong { font-weight: 700; }
.type-choices button span { color: #4a4a47; font: 400 12px/15px "Noto Sans CJK TC", "Noto Sans CJK", "PingFang TC", system-ui, sans-serif; }
.type-choices button[aria-pressed="true"] { background: #b20d27; color: #fff; }
.type-choices button[aria-pressed="true"] span { color: #fff; }
#clearType { flex: 0 0 auto; font-weight: 700; }

.stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; margin-top: 24px; padding: 14px 20px; border: 0; border-radius: 16px; background: #e9e9e6; color: #161410; font: 400 18px/1.6 "Noto Sans CJK TC", "Noto Sans CJK", "PingFang TC", system-ui, sans-serif; }
.stats div { padding: 0 8px 4px 0; }
.stats strong { display: block; font: 900 28px/1.1 Georgia, "Noto Serif TC", serif; }
.stats span { color: #4a4a47; font-size: 13px; }
.stats p { grid-column: 1 / -1; margin: 4px 0 0; color: #4a4a47; font-size: 13px; }

.map-panel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; margin-bottom: 16px; }
.map-hint { margin: 3px 0 0; color: var(--muted); font-size: 15px; }
.locate-btn, .locate-manual {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 46px;
  padding: 9px 14px;
  border: 1.5px solid var(--ink);
  border-radius: var(--radius);
  background: var(--surface);
  font-weight: 800;
  cursor: pointer;
}
.locate-btn:hover, .locate-manual:hover { border-color: var(--red); color: var(--red); }
.locate-btn:disabled { cursor: wait; opacity: .6; }
.locate-result { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 0 0 16px; padding: 12px 14px; border-radius: var(--radius); background: var(--bg); }
.locate-result p { margin: 0; }
.locate-result p[data-tone="ok"] { color: var(--ink); }
.locate-result p[data-tone="warning"] { color: #714d00; }
.locate-result p[data-tone="error"] { color: var(--red); }
.locate-manual { flex: 0 0 auto; min-height: 44px; padding: 7px 12px; }

.map-layout { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(280px, .8fr); gap: 20px; }
.map-stage { display: flex; min-height: 420px; flex-direction: column; align-items: center; justify-content: center; padding: 12px; border-radius: var(--radius); background: var(--bg); }
.taiwan-map { width: min(100%, 390px); height: auto; }
.map-nation path { fill: #e2e2de; stroke: none; pointer-events: none; }
.map-insets path { fill: none; stroke: var(--ink); stroke-width: 1.1; stroke-dasharray: 3 2; pointer-events: none; }
.region { fill: #e2e2de; stroke: var(--ink); stroke-width: 1.15; stroke-linejoin: round; cursor: pointer; transition: fill .12s, stroke .12s, opacity .12s; }
.region.has-records { fill: #d3d3ce; }
.region:hover, .region:focus-visible, .region.sync-hover { fill: #efd8d3; stroke-width: 1.8; outline: none; }
.region.active { fill: var(--red-soft); stroke: var(--red); stroke-width: 2.2; opacity: 1; }
.taiwan-map.has-selection .region:not(.active) { opacity: .52; }
.taiwan-map.has-selection .map-label:not(.hot) { opacity: .52; }
.map-label { fill: var(--ink); font-family: inherit; font-size: 13px; font-weight: 800; text-anchor: middle; pointer-events: auto; cursor: pointer; }
.map-label.small { font-size: 12px; }
.map-label.hot { fill: var(--red); }
.map-leader { stroke: var(--ink); stroke-width: 1; pointer-events: none; }
.map-caption { margin: 4px 0 0; color: var(--muted); font-size: 13px; text-align: center; }
.city-rail { display: flex; min-height: 0; flex-direction: column; gap: 8px; }
.rail-title { margin: 0; color: var(--muted); font-size: 14px; font-weight: 800; letter-spacing: .08em; }
.city-list { display: flex; max-height: 520px; flex-direction: column; gap: 6px; overflow: auto; padding-right: 4px; }
.city-btn { display: flex; width: 100%; min-height: 50px; align-items: center; gap: 9px; padding: 9px 11px; border: 1.5px solid var(--line); border-radius: var(--radius); background: var(--surface); font-weight: 800; text-align: left; cursor: pointer; }
.city-btn > span:nth-child(2) { white-space: nowrap; }
.city-btn:hover, .city-btn.sync-hover { border-color: var(--line-strong); background: var(--bg); }
.city-btn.active { border: 2px solid var(--red); background: var(--red-soft); color: var(--red); }
.city-swatch { width: 9px; height: 9px; flex: none; border: 1px solid var(--ink); border-radius: 50%; background: var(--line); }
.city-btn.has-records .city-swatch { background: var(--ink); }
.city-btn.active .city-swatch { border-color: var(--red); background: var(--red); }
.city-btn small { margin-left: auto; color: var(--muted); font-size: 12px; font-weight: 400; }

.filters { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: end; gap: 12px; scroll-margin-top: 16px; }
.filters label { font-size: 14px; font-weight: 800; }
.filters select { display: block; width: 100%; min-height: 48px; margin-top: 4px; padding: 7px; border: 1.5px solid var(--ink); background: #fff; }
.filters button { min-height: 48px; padding: 8px 14px; border: 1.5px solid var(--ink); background: var(--bg); font-weight: 800; }
.filter-note { grid-column: 1 / -1; margin: 0; color: var(--muted); font-size: 13px; }

.section-head { display: flex; justify-content: space-between; gap: 20px; padding-bottom: 10px; border-bottom: 2px solid var(--ink); }
.person-context { margin-top: 16px; padding: 14px; border-left: 5px solid var(--red); background: var(--red-soft); }
.person-context p { margin: 0 0 8px; }
.person-context-actions, .share-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.context-link, .share-actions a, .share-actions button {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  justify-content: center;
  padding: 8px 12px;
  border: 1.5px solid var(--ink);
  border-radius: var(--radius);
  background: var(--surface);
  font-weight: 800;
  text-decoration: none;
}
.share-tools { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px 24px; margin-top: 16px; padding: 14px; border: 1.5px solid var(--line-strong); background: var(--bg); }
.share-tools h3, .share-tools p { margin: 0; }
.share-card-preview { display: block; grid-column: 1 / -1; width: min(300px, 100%); height: auto; border: 1px solid var(--line); background: var(--surface); }
.share-save-hint { grid-column: 1 / -1; color: var(--muted); font-size: 14px; }
.share-actions a[aria-disabled="true"] { opacity: .55; pointer-events: none; }
.share-tools > div:first-child p { color: var(--muted); font-size: 14px; }
.share-actions button { cursor: pointer; }
.share-feedback, .copy-fallback { grid-column: 1 / -1; }
.share-feedback:not(:empty) { padding: 8px 10px; background: var(--surface); font-weight: 800; }
.copy-fallback label { display: block; margin-bottom: 5px; font-weight: 800; }
.copy-fallback input { width: 100%; min-height: 46px; padding: 8px 10px; border: 2px solid var(--ink); background: var(--surface); }
.cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: start; gap: 22px; margin-top: 18px; }
.person-card { min-width: 0; overflow: hidden; border: 0; border-radius: var(--radius); background: #fff; box-shadow: 0 0 0 1px var(--line); }
.portrait { display: flex; width: 100%; aspect-ratio: 1 / 1; align-items: center; justify-content: center; overflow: hidden; border-bottom: 1px solid var(--line); background: var(--red-soft); }
.portrait img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: var(--portrait-position, 50% 0%); }
.person-card[data-person="person-1d9e86333e3f53"] .portrait,
.person-card[data-person="person-541a014ac85b4d"] .portrait { position: relative; aspect-ratio: 1 / 1; }
.person-card[data-person="person-2a5f8eed7cd0d7"] .portrait { position: relative; aspect-ratio: 1 / 1; }
.person-card[data-person="person-1d9e86333e3f53"] .portrait img,
.person-card[data-person="person-541a014ac85b4d"] .portrait img,
.person-card[data-person="person-2a5f8eed7cd0d7"] .portrait img { position: absolute; max-width: none; height: auto; object-fit: fill; }
/* Original-pixel display windows: Zhang (430,20,480,480); Duan (425,130,410,410); Chen (245,425,525,700). */
.person-card[data-person="person-1d9e86333e3f53"] .portrait img { left: -89.583333%; top: -4.166667%; width: 250%; }
.person-card[data-person="person-541a014ac85b4d"] .portrait img { left: -103.658537%; top: -31.707317%; width: 305.853659%; }
.person-card[data-person="person-2a5f8eed7cd0d7"] .portrait img { left: -46.666667%; top: -80.952381%; width: 219.428571%; }
.portrait-placeholder { display: grid; width: 100%; height: 100%; place-content: center; gap: 4px; color: var(--red); text-align: center; }
.portrait-placeholder b { font-family: serif; font-size: 54px; line-height: 1; }
.portrait-placeholder small { color: var(--muted); font-size: 13px; font-weight: 700; letter-spacing: .08em; }
.person-body { min-width: 0; padding: 16px; }
.person-body h3 { margin: 0; font-family: serif; font-size: 28px; line-height: 1.2; }
.location { margin: 4px 0 12px; color: var(--muted); font-size: 14px; }
.record { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }
.record-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.record-badges { display: flex; flex-wrap: wrap; gap: 5px; }
.record-type { color: var(--red); font-size: 13px; font-weight: 800; }
.finality { flex: 0 0 auto; padding: 2px 6px; border: 1px solid var(--line); font-size: 12px; }
.finality-note { margin: 4px 0 0; font-size: 13px; line-height: 1.6; color: var(--muted, #565656); }
.offense { margin: 7px 0; font-size: 17px; font-weight: 800; overflow-wrap: anywhere; }
.sentence { margin: 0; color: var(--red); }
.case-number { color: var(--muted); font-size: 13px; overflow-wrap: anywhere; }
.source-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.source-links a { display: inline-flex; min-height: 44px; align-items: center; font-size: 14px; font-weight: 800; }
.source-gap { color: var(--red); font-size: 13px; }
.person-share-link { display: inline-flex; min-height: 44px; align-items: center; margin-top: 14px; padding: 7px 12px; border: 1.5px solid var(--red); border-radius: var(--radius); color: var(--red); font-size: 14px; font-weight: 900; text-decoration: none; }
.person-share-link:hover { background: var(--red-soft); }
.empty { padding: 30px; text-align: center; }

.method li + li { margin-top: 8px; }
.support {
  display: grid;
  grid-template-columns: max-content max-content;
  align-items: center;
  justify-content: center;
  gap: clamp(40px, 8vw, 104px);
  margin-top: 28px;
  padding: 36px 40px;
  border: 1px solid var(--line);
  background: #faf8f3;
  color: var(--ink);
}
.support > div { min-width: 0; }
.support h2, .support .support-lead {
  margin: 0;
  font-family: serif;
  font-size: clamp(24px, 6.667vw, 32px);
  font-weight: 700;
  line-height: 1.45;
  letter-spacing: .02em;
}
.support .support-lead { color: var(--red); }
.support .support-action { display: grid; justify-items: center; gap: 12px; }
.support .support-action p { margin: 0; color: var(--muted); font-size: 17px; line-height: 1.6; }
.support a {
  display: inline-flex;
  min-width: 176px;
  min-height: 48px;
  align-items: center;
  justify-content: center;
  padding: 10px 24px;
  border: 2px solid var(--red);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--red);
  font-size: 17px;
  font-weight: 900;
  text-decoration: none;
}
.support a:hover { background: var(--red-soft); }
.record-hidden { display: none !important; }

body[data-page-kind="person"] .hero,
body[data-page-kind="person"] .stats,
body[data-page-kind="person"] .map-panel,
body[data-page-kind="person"] .filters,
body.is-person-page .hero,
body.is-person-page .stats,
body.is-person-page .map-panel,
body.is-person-page .filters { display: none; }
body[data-page-kind="person"] .results,
body.is-person-page .results { max-width: 920px; margin: 0 auto; }
body[data-page-kind="person"] .cards,
body.is-person-page .cards { grid-template-columns: minmax(0, 1fr); }
body[data-page-kind="person"] .person-card,
body.is-person-page .person-card { display: grid; grid-template-columns: minmax(240px, 320px) minmax(0, 1fr); }
body[data-page-kind="person"] .portrait,
body.is-person-page .portrait { border-right: 1px solid var(--line); border-bottom: 0; }

.network-footer { margin-top: 40px; padding: 40px 24px 24px; border-top: 1px solid var(--line); background: var(--bg); color: #4a4a47; font-size: 16px; line-height: 1.65; }
.footer-inner { display: grid; max-width: 1080px; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 32px; margin: 0 auto; }
.footer-brand { display: flex; min-width: 0; flex-direction: column; gap: 12px; }
.footer-logo { display: inline-flex; min-height: 44px; align-items: center; align-self: flex-start; gap: 8px; color: #4a4a47; font-size: 22px; font-weight: 900; letter-spacing: 1px; text-decoration: none; white-space: nowrap; }
.footer-logo > img { display: block; width: auto; height: 36px; max-width: 52px; object-fit: contain; }
.footer-brand > p { margin: 0; font-weight: 500; }
.footer-subscribe { margin-top: 8px; }
.footer-subscribe strong { display: block; margin-bottom: 8px; }
.footer-subscribe a { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; padding: 10px 24px; border-radius: 999px; background: var(--gold); color: #2b1f45; font-weight: 800; text-decoration: none; }
.footer-column { min-width: 0; }
.footer-column h2 { margin: 0 0 8px; color: #4a4a47; font-family: inherit; font-size: 16px; font-weight: 900; letter-spacing: 1px; }
.footer-column a { display: flex; min-height: 44px; align-items: center; padding: 8px 0; color: #4a4a47; text-decoration: none; }
.footer-inner a:hover, .footer-bottom a:hover { text-decoration: underline; }
.footer-bottom { max-width: 1080px; margin: 32px auto 0; padding-top: 18px; border-top: 1px solid var(--line); font-size: 14px; line-height: 1.7; text-align: center; }
.party-links { display: flex; align-items: stretch; justify-content: center; flex-wrap: wrap; gap: 12px; margin-bottom: 14px; }
.party-links a { display: flex; min-height: 46px; align-items: center; justify-content: center; padding: 0 16px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface-2); font-weight: 700; text-decoration: none; }
.footer-maker { display: inline-flex; min-height: 44px; align-items: center; gap: 6px; margin-bottom: 8px; color: var(--muted); font: 600 14px/1.3 system-ui, sans-serif; letter-spacing: .06em; text-decoration: none; }
.footer-maker img { width: 22px; height: 22px; object-fit: contain; }
.footer-maker:hover { color: var(--ink); text-decoration: underline; }
.footer-bottom p { margin: 0; }
.footer-bottom p > span { display: inline; }
.footer-bottom p > span:first-child::after { content: " · "; }
.footer-bottom p a { display: inline-flex; min-height: 44px; align-items: center; text-decoration: underline; white-space: nowrap; }

@media (max-width: 900px) {
  .cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .map-layout { grid-template-columns: minmax(0, 1fr) minmax(250px, .8fr); }
  .footer-inner { grid-template-columns: 1.5fr 1fr 1fr; }
  .footer-brand { grid-column: 1 / -1; }
}

@media (max-width: 760px) {
  body { font-size: 16px; }
  .cards { grid-template-columns: 1fr; }
  .task-links { gap: 8px; }
  .task-links > div { min-height: 120px; padding: 10px; }
  .task-links span { font-size: 13px; line-height: 1.5; }
  .stats div { padding: 10px 8px; }
  .stats strong { font-size: 27px; }
  .map-panel { padding: 16px; }
  .map-panel-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
  .map-panel-head > div { display: contents; }
  .map-panel-head .eyebrow { grid-column: 1; grid-row: 1; }
  .map-panel-head h2 { grid-column: 1; grid-row: 2; }
  .map-panel-head .map-hint { grid-column: 1 / -1; grid-row: 3; }
  .locate-btn { grid-column: 2; grid-row: 1 / 3; align-self: center; max-width: 156px; }
  .locate-result { display: block; }
  .locate-manual { width: 100%; margin-top: 10px; }
  .map-layout { display: flex; flex-direction: column; gap: 16px; }
  .city-rail { order: -1; width: 100%; }
  .city-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); max-height: none; overflow: visible; padding: 0; gap: 8px; }
  .city-btn { display: grid; grid-template-columns: 9px minmax(0, 1fr); min-height: 68px; align-content: center; column-gap: 7px; row-gap: 2px; padding: 8px; font-size: 15px; }
  .city-btn small { grid-column: 2; max-width: none; margin-left: 0; font-size: 11px; line-height: 1.25; text-align: left; }
  .map-stage { width: 100%; min-height: 0; }
  .taiwan-map { max-height: 300px; }
  .filters { grid-template-columns: 1fr 1fr; }
  .filters label:nth-child(3), .filters button { grid-column: 1 / -1; }
  .section-head { display: block; }
  .share-tools { grid-template-columns: 1fr; }
  .share-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .share-feedback, .copy-fallback { grid-column: 1; }
  .record-head { display: block; }
  .finality { display: inline-block; margin-top: 4px; }
  .support { grid-template-columns: minmax(0, 1fr); gap: 28px; padding: 32px 16px; text-align: center; }
  .network-footer { margin-top: 32px; padding: 32px 18px calc(64px + env(safe-area-inset-bottom, 0px)); }
  .footer-inner { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .footer-brand { grid-column: auto; }
  .footer-bottom p > span { display: block; }
  .footer-bottom p > span:first-child::after { content: none; }
  body[data-page-kind="person"] .person-card,
  body.is-person-page .person-card { display: block; }
  body[data-page-kind="person"] .portrait,
  body.is-person-page .portrait { border-right: 0; border-bottom: 1px solid var(--line); }
}

@media (max-width: 1099px) {
  .type-browse { padding: 12px 16px; }
  .type-choices button { padding-inline: 8px; }
  .stats { margin-top: 10px; padding: 4px 16px; }
}

@media (max-width: 767px) {
  .topbar { flex-wrap: wrap; gap: 8px; margin-top: 16px; }
  .site-identity { width: 100%; justify-content: space-between; gap: 8px; }
  .topbar nav { width: 100%; justify-content: space-between; gap: 8px; }
  .wrap { padding: 24px 16px 50px; }
  .hero h1 { font-size: 32px; }
}

@media (max-width: 390px) {
  .site-mark, .topbar nav a { white-space: nowrap; }
  .type-browse h2 { font-size: 16px; line-height: 20px; }
  .task-links > div { min-height: 74px; }
  .locate-btn { max-width: 142px; padding-inline: 9px; font-size: 14px; line-height: 1.3; }
  .party-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .party-links a { padding-inline: 8px; line-height: 1.35; }
  .share-actions { grid-template-columns: 1fr; }
}

@media (max-width: 359px) {
  .topbar nav { gap: 4px; }
  .topbar nav a { padding-inline: 6px; font-size: 13px; }
  .topbar .donate { margin-left: 0; padding-inline: 9px; }
  .hero h1 { font-size: 28px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .region { transition: none; }
}

/* 授權與引用說明（2026-10-02）：按鈕維持 44px 點擊高度；聯絡信箱固定原有連結樣式。 */
.network-footer .footer-copyright a { display: inline-flex; min-height: 44px; align-items: center; text-decoration: underline; white-space: nowrap; }
.network-footer .footer-license{margin-top:10px;font-size:13px;color:#4a4a47;line-height:1.7}
.network-footer .footer-license-line{margin:0}
.network-footer .footer-license-more{max-width:720px;margin:2px auto 0;text-align:left}
.network-footer .footer-license-more summary{min-height:44px;box-sizing:border-box;cursor:pointer;text-align:center;text-decoration:underline;padding:10px 0}
.network-footer .footer-license-more h4{margin:12px 0 4px;font-size:14px}
.network-footer .footer-license-more p{margin:0 0 8px}
.network-footer .footer-bottom .footer-license-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:12px}
.network-footer .footer-bottom .footer-license-actions a{min-height:44px;padding:0 16px;border:1px solid #c9c9c5;border-radius:999px;background:#e9e9e6;text-decoration:none;white-space:nowrap}

/* 當事人說明入口：與原回報表單分開 */
.response-entry{display:flex;align-items:center;flex-wrap:wrap;gap:4px 16px;margin:12px 0 0;font-size:14px;line-height:1.6;color:#565656}
.response-entry a,.party-response-link{color:#9b241e;font-weight:700;text-decoration:underline;text-underline-offset:4px}
.response-entry a{display:inline-flex;align-items:center;min-height:44px;flex-shrink:0}
.party-response-link{display:inline-flex;align-items:center;min-height:44px;font-size:14px;line-height:1.5;margin-left:16px}
.person-card-actions{display:flex;align-items:center;flex-wrap:wrap;gap:4px 16px}
.person-card-actions .party-response-link{margin-left:0}
@media(max-width:480px){.response-entry{gap:0 12px}.response-entry span{flex-basis:100%}.card-actions{flex-wrap:wrap}}

.office-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.office-tabs a{padding:10px 16px;border:1px solid #bbb;border-radius:6px;color:#222;text-decoration:none;font-weight:700;min-height:44px}.office-tabs a:hover,.office-tabs a:focus{background:#eee}.office-tabs a[aria-current="page"]{background:#161410;color:#fff;border-color:#161410}.scope-note{max-width:880px;line-height:1.8;margin:24px 0}.person-card-actions{display:flex;gap:16px;flex-wrap:wrap}#favorable{margin:40px 0}

.office-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.office-tabs a{padding:10px 16px;border:1px solid #bbb;border-radius:6px;color:#222;text-decoration:none;font-weight:700;min-height:44px}.office-tabs a:hover,.office-tabs a:focus{background:#eee}.office-tabs a[aria-current="page"]{background:#161410;color:#fff;border-color:#161410}.scope-note{max-width:880px;line-height:1.8;margin:24px 0}.person-card-actions{display:flex;gap:16px;flex-wrap:wrap}#favorable{margin:40px 0}

/* Shared local2026 primary navigation */
.topbar nav[aria-label="主要導覽"]{display:flex;align-items:center;gap:6px}
.topbar nav[aria-label="主要導覽"] a{padding:0 6px;white-space:nowrap;min-height:44px;text-overflow:clip;overflow:visible}
.topbar nav[aria-label="主要導覽"] a.donate{margin-left:0;padding:0 10px}
@media(max-width:767px){.topbar nav[aria-label="主要導覽"]{width:100%;justify-content:space-between;gap:4px}.topbar nav[aria-label="主要導覽"] a{font-size:14px;padding:0 4px}.topbar nav[aria-label="主要導覽"] a.donate{padding:0 8px}}
@media(max-width:359px){.topbar nav[aria-label="主要導覽"]{gap:2px}.topbar nav[aria-label="主要導覽"] a{font-size:13px;padding:0 3px}.topbar nav[aria-label="主要導覽"] a.donate{padding:0 5px}}

/* Three office entrances below the home introduction. */
.office-switcher{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:1088px;margin:24px 0 20px}
.office-switcher>a{display:flex;flex-direction:column;justify-content:center;gap:8px;min-height:88px;padding:16px;border:1px solid #999;border-radius:8px;color:#161410;background:#fff;text-decoration:none;font-size:18px;line-height:1.5}
.office-switcher-title{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:20px;font-weight:800}
.office-switcher-count{font-size:16px;white-space:normal;overflow-wrap:normal}
.office-switcher .current-office{font-size:16px;font-weight:700;line-height:1.5}
.office-switcher>a[aria-current="page"]{background:#161410;color:#fff;border-color:#161410}
.office-switcher>a:hover,.office-switcher>a:focus-visible{outline:3px solid #9f1623;outline-offset:3px}
@media(max-width:767px){.office-switcher{grid-template-columns:1fr;gap:10px;margin-top:20px}.office-switcher>a{min-height:76px;padding:12px 16px;gap:4px}.office-switcher-title{font-size:18px}}
